Releases: marthofdoom/oversteer
Release list
Oversteer 0.14.2
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
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 servecan give it real HTTPS, which a phone's browser
needs to keep the screen on.
Oversteer 0.14.0
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 --writerecords raw telemetry to a file;
scripts/telemetry-replay.pyplays 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
--profileor 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 astelemetry.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 astelemetry.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
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
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
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
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
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
Oversteer 0.12.0
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:
- Tools tab → Shared-memory games → Copy
- 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.jsonnow 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