Skip to content

Wheel runs to full lock in pause menu: FFB pass-through not released when telemetry pauses (G923 / Forza Horizon 6) #13

Description

@aakanojia

Environment

  • Wheel: Logitech G923 (PlayStation 4/PC variant), native mode, PID 0x046D:0xC266
  • Game: Forza Horizon 6
  • Plugin: TrueForce For All v0.1.18
  • SimHub: 9.11.13 (Free), running as Administrator (needed for USBPcap)
  • USBPcap: 1.5.4.0
  • OS: Windows 11

Summary

While driving, everything works great. The moment I open the pause menu, the wheel turns hard to full lock (left or right) and holds there until I unpause. In the pause menu the plugin shows "Waiting for telemetry" ('FH6' is detected but no telemetry is arriving. You may be in a menu or paused), so the UDP telemetry has clearly stopped, but the wheel is still being driven to lock.

Steps to reproduce

  1. G923 in native mode, plugin bound, FFB pass-through active (log shows UsbPcapFfbTap started).
  2. Drive in free roam or a race. FFB feels correct.
  3. Open the pause menu.
  4. Wheel snaps to full lock on one side and stays there.
  5. Unpause. Back to normal immediately.

Relevant log lines

[Trueforce] Found Logitech G923 (PS/PC)  (VID 0x046D, PID 0xC266).
[Trueforce] UsbPcapFfbTap started: \\.\USBPcap2 dev 39
[Trueforce] Forza UDP source listening on 0.0.0.0:5300.
(on pause) UI: "'FH6' is detected but no telemetry is arriving. You may be in a menu or paused."

Root cause (from reading the code)

  • The FFB pass-through (UsbPcapFfbTap) mirrors raw HID++ FFB to the wheel and is not gated by the telemetry/pause state. TryGetFreshFfbTarget(maxAgeMs) only checks sample age, and as the code notes the tap cannot distinguish a game that is still sending a steady force from a game that stopped sending. In the FH6 pause menu Forza keeps sending an FFB packet (behaves like an auto-center), so the tap keeps treating it as fresh and the wheel is driven to lock.
  • There is no watchdog that zeros or centers FFB when telemetry pauses. The telemetry source already knows data stopped (that is what flips the UI to "Waiting for telemetry"), but that state does not reach the pass-through path (FfbTargetProvider keeps reading _ffbTap.TryGetFreshFfbTarget regardless).

Suggested fix

  • When the active telemetry source reports paused / no-data (the same condition behind the "Waiting for telemetry" banner), force cur to 0x8000 (silence center) in the pass-through, or fade it out, until telemetry resumes. In short, gate FfbTargetProvider on the paused state. That releases the wheel in menus without touching in-game FFB.
  • Nice to have: expose SkipFfbPassthrough (or a dedicated "release FFB on pause" toggle) in the UI for non-native-TrueForce games too, so users can opt in without hand-editing TrueforcePlugin.GeneralSettings.json.

Notes

Happy to test a build. Repro setup is G923 PS/PC + Forza Horizon 6 + SimHub running as admin. Great plugin otherwise, the telemetry effects feel excellent.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions