Skip to content

Releases: marthofdoom/oversteer

Oversteer 0.14.2

Choose a tag to compare

@github-actions github-actions released this 28 Sep 08:12

Added

  • Assetto Corsa Rally: Oversteer ships each of the game's 18 cars' engine
    and gearing, derived from the game's own files (torque curve, limiter,
    gear sets, final drive, tyre radius, mass, drivetrain, the game's own
    shift-light rpms). The best upshift per gear is then exact from the
    first drive: for the Skoda Fabia RS Rally2, the limiter in every gear.
    The learnt gear ratios pick the gear set in use and stay as a check:
    where they are more than 4 % off every gear set the game gives the car
    (and wheelspin does not explain it), the game's data is set aside and
    the best upshifts are learnt, which the Telemetry tab says.
  • Best upshifts per surface: a gear whose measured drive at full throttle
    (wheelspin included, over several pulls) stays well below what the
    engine gives in it (1st on gravel, say) is grip-limited there, and its
    best upshift is lowered to where the next gear reaches the same grip;
    from there up to the engine's best, changing up costs nothing, and all
    of that range is on target. The rev lights in Auto use the best for the
    surface of the stage being driven (from the stage tables), the
    Telemetry tab's shift table says which surface it shows and marks each
    best as from the game's data or lowered for grip, with its range.

Changed

  • Coaching measures each change up against the best for the run's
    surface and that gear, and says whether that best comes from the game's
    engine data or was learnt. Early changes on a loose surface (gravel,
    snow, ice, a mixed stage) are coached only once that gear's grip there
    is measured over a few full-throttle pulls: against the game's engine
    data or the learnt best where it does not limit, against the best
    lowered for grip where it does. Until then the coach says once that it
    is waiting for that.
  • Some learnt shift points are learnt again after the update: a car's
    pooled power curve learnt on hills without the slope taken out is
    dropped (the per-gear curves stay), and the drive samples that measure
    grip per surface are measured again.

Fixed

  • The learnt best upshift of a car driven where the game sends no slope
    (the Fabia's 5100–5200 rpm, 800 rpm below where it should be): power is
    no longer pooled over the gears unless the slope is taken out, bands
    need more samples while hills are left in, and the slope now also comes
    from how the car's position climbs (Assetto Corsa Rally sends it now).
  • Gear ratios are no longer learnt while coasting or braking.
  • The rev lights in Auto no longer freeze for a moment every 2 s: working
    out a best upshift took up to a second with many samples learnt; it is
    now kept until what it depends on changes and worked out off the
    telemetry thread.
  • A car whose slope comes from its position (Assetto Corsa and ACC over
    the bridge) no longer flickers between two ways of learning its power
    below about 24 km/h.

Oversteer 0.14.1

Choose a tag to compare

@github-actions github-actions released this 26 Sep 06:42

Fixed

  • Assetto Corsa Rally: the distance along the stage is read (it was
    always 0), and steering, clutch, acceleration, speed and yaw are
    decoded with signs confirmed on real stages, so counter-steer and the
    car's balance are measured. The first packets of a stage, before the
    game names the car, no longer start a session for an unknown car.
  • When a game sends to the other telemetry port (5300 or 5310), the
    Telemetry tab's live line says so and how to fix it; it was only
    shown under Settings, and noticed rarely.

Added

  • The web page accepts this computer's Tailscale name, so
    tailscale serve can give it real HTTPS, which a phone's browser
    needs to keep the screen on.

Oversteer 0.14.0

Choose a tag to compare

@github-actions github-actions released this 26 Sep 02:11

Added

  • Rev lights: Learn the limiter at each launch. A rally stage starts
    with clutch in, handbrake up and the throttle floored, which holds the
    engine on its limiter; Oversteer learns that RPM at every standing
    launch and the % shift point applies to it, so each car on each stage
    gets its own shift light even when the game reports no maximum or the
    wrong one. It is raised if the car is later held on a higher limiter
    flat out (a launch control capping the revs at the line), never by a
    moment past it, and forgotten when the telemetry stops between stages.
    With no handbrake fitted, clutch in and throttle floored is the launch.
  • Rev lights: Shift lights at the learnt best upshift for each gear:
    once Oversteer knows the car's power curve and gearing, the lights
    complete where the next gear starts pulling harder; a gear that pulls
    to the limiter still flashes as it gets there.
  • Telemetry tab: the shift table has a column per way of changing gear
    (H-pattern, sequential, paddles) once you have used it. How each change
    was made comes from the control you pressed: a shifter gear, the
    sequential plate or a paddle.
  • EA SPORTS WRC telemetry: the game's default structure, or Oversteer's own
    (car and stage ids, session start/end/pause), set up with two Copy
    buttons under the Telemetry tab's Settings.
  • scripts/telemetry-capture.py --write records raw telemetry to a file;
    scripts/telemetry-replay.py plays it back through the shift learner,
    re-sends it over UDP, or cuts a piece out of it.
  • Telemetry history: every drive is kept as runs (a stage attempt, a lap
    session, a stretch of free driving) with their corners, a 10 Hz trace
    and every change of gear up or down, flagged when a gate was missed,
    a gear skipped, the engine over-revved or a paddle double-tapped. Each
    run is judged a discipline (rally stage, hillclimb, circuit,
    rallycross, time attack, free roam) with the evidence that decided it,
    or left unknown when there is none. Each gearing a car was driven with
    is kept as a tune.
  • Coaching from that history in the Telemetry tab: what the last session
    was and why Oversteer thinks so, the habit to work on first, up to
    three tips with their numbers (changing up early or late per gear and
    way of changing, the limiter, missed gates and double taps, bogged
    launches, both pedals at once on tarmac, coasting and corners against
    your best run of a stage) and praise when a habit improves. A tip
    shown on two occasions (hours apart) goes quiet until it gets worse. Changing up early waits
    until the surface is known, since short-shifting on gravel can be
    right.
  • Tuning advice from the runs on the car's current setup: a final drive
    too short or too long for a stage, a gear too long out of corners, and
    oversteer or understeer fitted to how you drive, always "if the setup
    allows" and with the driving alternative first.
  • "Label last session…" in the Telemetry tab: say what a session was
    (discipline, surface, wet, shifter), for Oversteer to learn surfaces
    from.
  • A read-only web page for a phone or another computer (off by default,
    TCP 5301, under the Telemetry tab's Settings): the live gear and revs
    against the shift point, the shift tables, coaching, setup advice and
    recent sessions with their evidence. Nothing can be changed from it;
    anyone on the same network can read it, so it can be limited to this
    computer. Clients with a public address are refused.
  • "Learn from game telemetry": learn shift points and keep the history
    with the rev lights off, or with a wheel that has none.
  • "Record raw telemetry" under the Telemetry tab's Settings (off by
    default): what the game sends is kept as it arrived, a file per drive,
    in Oversteer's data folder, up to a size you choose (1 GB by default;
    the oldest go first). Labelling a session also labels its captures and
    keeps them.
  • Telemetry tab: the best upshift of each gear shows the range it is
    known to.
  • Stage tables for WRC Generations (all 21 rallies, 165 stages), Assetto
    Corsa Rally (46 stages to update 0.6) and DiRT Rally 2.0 (every rally
    stage, rallycross track and DirtFish): a run on a known stage has its
    name, rally and surface from the first drive, without labelling. The
    WRC Generations and Assetto Corsa Rally tables come from the games'
    own data (exact lengths, names, surface shares); WRC Generations sends
    each stage's exact length, which identifies it, stage and reverse
    alike. DiRT Rally 2.0's data is encrypted: its table is the community
    one, checked against the game's stage counts.
  • The Assetto Corsa family bridge (oversteer-run) sends more: the
    stage's length and the progress along it, wheel speeds, suspension
    travel and the game's current rev limit. OVERSTEER_BRIDGE_VERBOSE=1
    in a game's launch options logs the rest once a second, for checking a
    game's layout.
  • Oversteer reopens the profile last used when it starts (unless
    --profile or a setting on the command line says otherwise): cars
    and history are kept per profile, and starting on none showed an
    empty Telemetry tab.

Changed

  • Profiles saved before this version get both new rev light switches
    (the launch limiter, the learnt upshifts) turned on, as new profiles
    do: the lights then follow the car rather than the fixed percentage.
    Untick them under the Telemetry tab's Settings for the old behaviour.
    A profile that never stored a shift point keeps 97 %; new ones start
    at 95 %.
  • The shift learner compares each gear's own power curve where it knows
    both, takes the slope out of the acceleration where the game says
    which way is up, ignores turbo lag and wheelspin, and gives each best
    change up a range. Its database moves to a new layout (a copy of the
    old file is kept as telemetry.db.v1.bak), and writing it no longer
    happens on the telemetry thread.
  • A driving session now ends after two minutes without telemetry, not
    two seconds, so pausing mid-stage no longer splits it. Forgetting a car
    starts its learning over but keeps its history.
  • The telemetry port is now UDP 5310 for new profiles and
    oversteer-run. Forza Horizon 6 binds its own socket in 5200–5300 and
    asks Data Out to stay clear of that range. Profiles that saved 5300 keep
    it. When nothing arrives, Oversteer listens on the other port for a
    second now and then and says so if a game is sending there.
  • The listener takes telemetry from one source at a time (the first one
    heard, until it goes quiet), so a bridge left running next to a game
    no longer mixes two cars.
  • The Telemetry tab is laid out like the other tabs, in two views.
    Car and coaching: the car, a one-line live status with a coloured
    dot, the shift points in a framed table (the best upshift in bold),
    coaching one row per tip with a Focus / Tip / Better tag, the last
    session with "Why Oversteer thinks so" and "Label…", recent sessions
    one row each, the setup. Settings: framed lists for receiving
    telemetry, the rev lights (no longer one crowded row), the web page
    and recording, each row a title with a short explanation or its status
    under it.
  • The web page is a dark live dashboard for a phone or laptop next to
    the rig: shift lights, the gear huge, speed, rpm, where to change up in
    this gear and the stage by name with its progress, updated four times
    a second; then coaching, the shift points with the current gear
    highlighted, the setup and recent sessions. It fits portrait and
    landscape phones and puts the live panel beside the rest on a laptop.
    It keeps the screen on: with the browser's wake lock where allowed
    (HTTPS or the same computer), otherwise after a first tap with a tiny
    muted video made in the page. A chip at the top says whether the screen
    is being kept on.

Fixed

  • Telemetry packets arriving in a burst, or a reset after a crash, were
    taken for a teleport and split one stage into several runs.
  • WRC Generations sends its stage's length where DiRT sends progress: it
    was read as progress, so no stage finished.
  • DiRT Rally 2.0 (and DiRT Rally, DiRT 4): engine rpm was read 4.7 % too
    high (the game sends rad/s, not rpm / 10), and with it the shift light
    and everything learnt. Cars already learnt are corrected once when the
    telemetry database opens (a backup is kept as telemetry.db.v0.bak).
  • Reverse in DiRT Rally and WRC Generations, and neutral in Forza, were
    read as "unknown gear"; H-pattern changes through neutral are now seen
    in Forza Horizon.
  • Gear ratios are learnt only at part throttle, where the tyres barely
    slip: a first run spinning up gravel no longer leaves a car with wrong
    ratios and a false "re-tuned" note.

Oversteer 0.13.1

Choose a tag to compare

@github-actions github-actions released this 24 Sep 17:54

Fixed

  • On Plasma, starting Oversteer opened System Settings on the Shortcuts page every time. Plasma's portal does that whenever an app declares its shortcuts, so on Plasma a start now only reads the keys already assigned (they keep working), and declaring waits for Set keyboard keys… (first use, or when a new version adds actions).
  • GNOME and other desktops keep global shortcuts per session, so they still declare at start, silently once they know every action.
  • A retry after a dismissed or failed shortcut request now opens a fresh portal session instead of failing the same way again.

Oversteer 0.13.0

Choose a tag to compare

@github-actions github-actions released this 24 Sep 02:39

Hotkeys while you drive

A new Hotkeys tab binds a wheel button or a keyboard key to settings you want to change mid-session:

  • Rev LEDs: shift point up/down (1 % or 100 rpm a press), rev LEDs on/off
  • Force feedback: on/off, overall strength, centering spring, spring, damper, friction, rumble, and the FFB switches
  • Wheel: rotation range ±10° / ±90°, sensitivity
  • Profiles: next / previous (app-wide, so a profile with other buttons can't strand you)

A hotkey moves the same control you'd move by hand, and the rev LEDs show the new level for a moment.

  • Wheel buttons are saved with the profile. Click the button next to an action, then press a button on the wheel. The game still sees the button, so pick ones it doesn't use.
  • Keyboard keys go through the desktop's GlobalShortcuts portal: assign them in System Settings → Shortcuts → Oversteer on Plasma ("Set keyboard keys…" opens it). The desktop matches the keys, so they work over a full-screen game and Oversteer never reads the keyboard.

Expects new-lg4ff 0.7.0 or later (older drivers work; controls they lack are greyed out, and so are their hotkeys).

Oversteer 0.12.4

Choose a tag to compare

@github-actions github-actions released this 23 Sep 05:52

Oversteer 0.12.4

  • The rotation range slider printed the same degrees as the preset buttons
    right below it. Its marks are plain ticks now, so each range appears once —
    on the button that sets it.
  • A preset the wheel can't reach (900° on a 270° wheel) is hidden rather than
    silently clamping when clicked.
  • README rewritten for this fork, with new screenshots of the Controls and
    Devices tabs; the software-centre listing points at them too.

Install

flatpak install --user -y --reinstall Oversteer-0.12.4.flatpak

Oversteer 0.12.3

Choose a tag to compare

@github-actions github-actions released this 22 Sep 22:05

Oversteer 0.12.3

A display change on the Controls tab, following 0.12.2's pedal work.

The bars show each axis as a game receives it

They used to show a pedal's position, worked out from the axis range and the invert setting. That meant ticking Invert changed nothing on screen — your foot hasn't moved — and, worse, a pedal that games read backwards still looked perfectly normal. Hiding it behind a flipped display is what made the problem invisible in the first place.

Now a bar shows where the reading sits in its axis:

  • Invert on — a Logitech pedal rests empty and fills as you press it.
  • Invert off — it rests full and empties as you press, which is exactly what a game reads.

So ticking a box flips the bar where you can see it, and a wrongly-read pedal is obvious at a glance. The handbrake bar follows the same rule, and the pedal group has a tooltip explaining why a bar can sit full at rest.

Install

flatpak install --user -y --reinstall Oversteer-0.12.3.flatpak

Oversteer 0.12.2

Choose a tag to compare

@github-actions github-actions released this 22 Sep 21:25

Oversteer 0.12.2

Two releases in one day: 0.12.1 fixed the Controls tab, 0.12.2 fixes the pedals.

Pedals are straightened out instead of being hidden

Logitech pedals report their released position at the far end of the axis. Oversteer used to flip that for its own display only, so the Controls tab looked right while games received a pedal that reads fully pressed when released — Assetto Corsa Rally reads it exactly that way.

On a wheel whose driver can invert pedals (new-lg4ff), Oversteer now inverts the ones that need it, so games get 0 released / full pressed. It only does this while the driver's setting is untouched, and a profile that carries invert_pedals always wins — that's how to keep the raw direction. --invert-pedals is left alone too.

Invert boxes on the Controls tab

One under each pedal, ticked when that pedal is inverted, plus one for the handbrake. Each box drives the axis the driver associates with that pedal, which isn't always the one Oversteer displays it as — a G29 in DFP or DFGT emulation, a G920, the T150/TMX/T248 and the G PRO all report their pedals on other axes. The bars are drawn from where each axis really rests, so they stay correct whichever way the boxes are set, and toggling one redraws immediately.

The handbrake's box overrides the direction the combined device gives it; changing that reinstalls the combined device, so it asks for the administrator password. (A prompt-free version is planned.)

Handbrake on the Controls tab

A Handbrake column next to the pedals, shown when the device has one. Which axis that is comes from the proxy's own spec when a combined device presents the wheel, so it stays right whatever else is folded in.

Also fixed

  • A profile saved before the driver could invert pedals no longer greys the Invert boxes out.
  • Axis readings come from the kernel rather than the snapshot taken when the device was opened.
  • An error handling one input event no longer stops Oversteer reading the wheel for the rest of the session.
  • The Controls tab no longer goes dead after the combined device is rebuilt (0.12.1).
  • A shifter's sequential positions reach the combined device (0.12.1).

Install

flatpak install --user -y --reinstall Oversteer-0.12.2.flatpak

v0.12.1

Choose a tag to compare

@github-actions github-actions released this 22 Sep 20:52
Oversteer 0.12.1

Oversteer 0.12.0

Choose a tag to compare

@github-actions github-actions released this 22 Sep 05:06

Oversteer 0.12.0

Shared-memory games under Proton (Assetto Corsa, Competizione, Rally)

These games publish telemetry only through Windows shared memory inside the Proton prefix. Oversteer now ships oversteer-shm-bridge.exe, a tiny helper that runs next to the game in the prefix and forwards RPM / redline / gear / speed to the rev lights, and oversteer-run, a Steam launch-options wrapper that starts it automatically:

  1. Tools tab → Shared-memory games → Copy
  2. Steam → game → Properties → Launch options → paste (…/oversteer-run %command%)

The bridge is windowless, exits by itself when the game does, and logs to <compatdata>/oversteer-shm-bridge.log. Assetto Corsa Rally reports no redline, so use the RPM shift-point mode for it.

Rev lights

  • Shift point, per profile: as % of the game's max RPM (default 97) or as an RPM figure (dropdown, converted when the game has reported its max). All five LEDs on at the shift point, flashing above it. Rally/turbo cars shift well below the limiter.
  • WRC Generations telemetry (Codemasters layout, longer packet) is recognised.
  • OutGauge's learnt redline no longer turns a steady cruise into a limiter flash.

Devices / proxy

  • /run/oversteer/proxies.json now lists the force-feedback effect types a game has uploaded and which are playing.

Fixed

  • Changing the shift point no longer restarts the listener (LED blink, redline forgotten); old profiles load with the previous 97 %.

Install

flatpak install --user -y --reinstall Oversteer-0.12.0.flatpak