diff --git a/CHANGELOG.md b/CHANGELOG.md index b31ab7f..d93d197 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,17 @@ the contract is "it works on RS50 and G Pro as listed here". ## Unreleased +**Assetto Corsa Rally takes the SDK route.** The registry listed it as plain +force feedback with nothing to do, and on a G PRO that gave nothing: with +raw HID off the game did not see the wheel, and with it on by hand the stock +Logitech library took the wheel and returned only its own damping +([#105](../../issues/105)). On a G923 Xbox edition with Logitech's files in +the prefix and raw HID on, its force feedback and TrueForce were confirmed +working ([#83](../../issues/83)). The game now gets the same route as +Assetto Corsa EVO: `logi-launch` turns raw HID on, stages the proxy that +answers the SDK's rotation question and resets the wheel first, and the +app's Setup page offers the shim install for it. + **Inertia no longer renders the encoder's grain, and the per-class levels reach past 100.** `FF_INERTIA` was fed the per-tick velocity difference, which on a quantised encoder is an impulse train: a rim turning smoothly diff --git a/docs/GAME_SETUP.md b/docs/GAME_SETUP.md index 6c73cc6..b6ae2f4 100644 --- a/docs/GAME_SETUP.md +++ b/docs/GAME_SETUP.md @@ -56,7 +56,7 @@ instead of wrapping it. | Assetto Corsa (original) | Proton | Native FFB | Turn on simulated TrueForce | Turn on simulated TrueForce | | Assetto Corsa Competizione | Proton | TrueForce shim | Install the shim
`logi-launch %command%` | Turn on simulated TrueForce
and leave `PROTON_ENABLE_HIDRAW` unset | | Assetto Corsa EVO (early access) | Proton | TrueForce shim | Install the shim
`logi-launch %command%` | Turn on simulated TrueForce
and leave `PROTON_ENABLE_HIDRAW` unset | -| Assetto Corsa Rally (early access) * | Proton | Native FFB | Nothing to do | Nothing to do | +| Assetto Corsa Rally (early access) * | Proton | TrueForce shim | Install the shim
`logi-launch %command%` | Plain force feedback
leave `PROTON_ENABLE_HIDRAW` unset | | Automobilista 2 | Proton | Native FFB | Turn on simulated TrueForce | Turn on simulated TrueForce | | BeamNG.drive * | Native Linux | Native FFB | Turn on simulated TrueForce | Turn on simulated TrueForce | | CarX Drift Racing Online | Proton | Native FFB | Nothing to do | Nothing to do | @@ -144,5 +144,5 @@ app's Setup page afterwards. - **verified** (4 titles): confirmed end to end by this project - **documented** (16 titles): documented by the vendor or a reliable community source -- **expected** (6 titles): expected to work, not confirmed -- **unknown** (4 titles): genuinely unknown +- **expected** (7 titles): expected to work, not confirmed +- **unknown** (3 titles): genuinely unknown diff --git a/tools/setup.sh b/tools/setup.sh index a63112b..90032d8 100755 --- a/tools/setup.sh +++ b/tools/setup.sh @@ -72,7 +72,7 @@ TF_PFX_DIR_REL="drive_c/Program Files/Logi/Trueforce" # their force feedback, so the copy is guarded rather than trusted. # # Sims that load Logitech's TrueForce SDK: ACC, AC EVO. -SDK_SIM_APPIDS="805550 3058630" +SDK_SIM_APPIDS="805550 3058630 3917090" # Sims driven through DirectInput, i.e. logi-ffb: rFactor 2, Le Mans Ultimate, # iRacing, RaceRoom. PROTON_ENABLE_HIDRAW must NOT be set for these. DINPUT_SIM_APPIDS="365960 2399420 266410 211500" diff --git a/userspace/logi-wheel/crates/logi-wheel-core/src/games.rs b/userspace/logi-wheel/crates/logi-wheel-core/src/games.rs index fb7b4ba..7e68074 100644 --- a/userspace/logi-wheel/crates/logi-wheel-core/src/games.rs +++ b/userspace/logi-wheel/crates/logi-wheel-core/src/games.rs @@ -494,7 +494,19 @@ impl GameCompat { if self.linux == Linux::Unsupported { return self.setup; } - if self.ffb == Ffb::TrueForceShim && !caps.sdk_trueforce { + if self.ffb == Ffb::TrueForceShim + && !caps.sdk_trueforce + && self.simulated_tf.live_id().is_none() + { + // An SDK title with no telemetry: the simulated route below + // has nothing to synthesise from, so it must not be offered. + "Leave PROTON_ENABLE_HIDRAW unset: on this wheel it costs you \ + force feedback, and this game publishes no telemetry yet, so \ + there is no simulated TrueForce to turn on either. Installing \ + the shim WITH --proxy carries the game's own TrueForce to the \ + wheel instead (tools/install-tf-shim.sh --proxy). Steam Input \ + off." + } else if self.ffb == Ffb::TrueForceShim && !caps.sdk_trueforce { // Worded as "not available on this wheel" rather than "this // wheel has no SDK TrueForce", because it also covers the // unidentified wheel, about which we know only that we cannot @@ -826,11 +838,20 @@ logi-tf-sim.", GameCompat { name: "Assetto Corsa Rally (early access)", linux: Linux::Proton, - ffb: Ffb::NativeEvdev, - native_trueforce: Support::No, + // The same SDK route as Assetto Corsa EVO. Listed as plain force + // feedback until 2026-09: with raw HID left off, the game did not + // see a G PRO at all, and with it on by hand, the stock library + // took the wheel and gave back only its own damping (#105). On a + // G923 Xbox edition with Logitech's files in the prefix and raw + // HID on, its force feedback and TrueForce were confirmed working + // (#83), which is what this route arranges. + ffb: Ffb::TrueForceShim, + native_trueforce: Support::Yes, simulated_tf: SimTf::No, - setup: "Plain force feedback; watch for telemetry as it matures.", - confidence: Confidence::Unknown, + setup: "Install the TrueForce shim once, from the app's Setup page; launch options `logi-launch %command%` (it turns raw HID on, stages the proxy that answers the SDK's rotation question, and resets the wheel first, the same recipe as Assetto Corsa EVO); turn Steam Input off. No telemetry yet, so nothing to feed the lights.", + // Confirmed on a G923 Xbox edition (#83); a direct-drive wheel has + // not yet been reported on this route. + confidence: Confidence::Expected, }, GameCompat { name: "Euro Truck Simulator 2", diff --git a/userspace/logi-wheel/crates/logi-wheel-core/tests/game_setup_doc.rs b/userspace/logi-wheel/crates/logi-wheel-core/tests/game_setup_doc.rs index 33463af..a2de8e8 100644 --- a/userspace/logi-wheel/crates/logi-wheel-core/tests/game_setup_doc.rs +++ b/userspace/logi-wheel/crates/logi-wheel-core/tests/game_setup_doc.rs @@ -46,9 +46,16 @@ fn recipe_cell(g: &GameCompat, caps: WheelCaps) -> String { // having seen the other column say to set a variable, and needs telling // that doing so on their wheel is not merely pointless. if g.ffb == Ffb::TrueForceShim && !caps.sdk_trueforce { - return "Turn on simulated TrueForce
and leave \ - `PROTON_ENABLE_HIDRAW` unset" - .to_string(); + // Simulated TrueForce is only on offer where the game publishes + // telemetry to synthesise it from; a title without any has plain + // force feedback on this wheel and nothing to add to it. + return if g.simulated_tf.live_id().is_some() { + "Turn on simulated TrueForce
and leave \ + `PROTON_ENABLE_HIDRAW` unset" + } else { + "Plain force feedback
leave `PROTON_ENABLE_HIDRAW` unset" + } + .to_string(); } let action = match g.setup_action(caps) { SetupAction::InstallShim => "Install the shim",