You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
docs: record native-mode TrueForce verification (compat no longer required)
SDK-driven game TrueForce under Proton was packet-confirmed on the RS50
in native mode (046d:c276) driving AC EVO on 2026-07-08: Wine's HID
backend opened interface 2 on the native PID and the SDK streamed ~2 kHz
of type-0x01 packets (239k OUT / 120s) on ep 0x03, and it was felt. This
disproves the earlier assumption that the SDK requires the G PRO compat
PID (c272).
Update every place that stated or implied compat mode is required for
TrueForce: the two setup recipes (README + GETTING_STARTED) now mark the
compat-mode switch optional with native as the verified default, the
protocol doc and sdk README record both modes verified, the udev comment
drops the "borrows the PID so the SDK accepts it" rationale, and the
README "State of the driver" stamp moves to v0.11.0 / 2026-07-08.
Copy file name to clipboardExpand all lines: docs/TRUEFORCE_PROTOCOL.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,7 +2,7 @@
2
2
3
3
> **Status**: the kernel driver leaves interface 2's hidraw node open for userspace. Two userspace paths consume that node:
4
4
>
5
-
> -**Proton sims (verified working)**: `tools/install-tf-shim.sh` copies Logitech's own Authenticode-signed SDK DLLs (`trueforce_sdk_x64.dll`, `logi_steering_wheel_x64.dll`) into each Wine prefix and registers the CLSIDs. The unmodified DLLs run inside Wine and write to the wheel via Wine's HID stack, which reaches our kernel driver. No shim, no IAT hooks, no certificate spoofing. End-to-end verified against **Assetto Corsa Competizione** and **Assetto Corsa EVO** on RS50 in G PRO compatibility mode (both 2026-04-26 / 2026-04-29).
5
+
> -**Proton sims (verified working)**: `tools/install-tf-shim.sh` copies Logitech's own Authenticode-signed SDK DLLs (`trueforce_sdk_x64.dll`, `logi_steering_wheel_x64.dll`) into each Wine prefix and registers the CLSIDs. The unmodified DLLs run inside Wine and write to the wheel via Wine's HID stack, which reaches our kernel driver. No shim, no IAT hooks, no certificate spoofing. End-to-end verified against **Assetto Corsa Competizione** and **Assetto Corsa EVO**under Proton on RS50 in **both modes**: G PRO compatibility mode (`046d:c272`, 2026-04-26 / 2026-04-29) and **native mode** (`046d:c276`, AC EVO, 2026-07-08). The native run was usbmon-confirmed: Wine's HID backend opened interface 2 on the native PID and the SDK streamed ~2 kHz of type-0x01 packets (239k OUT over ~120 s) on ep 0x03. The SDK DLLs open and drive the wheel identically at either PID, so compat mode is not required for TrueForce.
6
6
> -**Native Linux apps**: `userspace/libtrueforce/` is a native C reimplementation of the same protocol described below. Useful for Linux apps that want to drive TrueForce directly (telemetry-driven haptic generators, custom test rigs, etc.).
7
7
>
8
8
> Originally reverse-engineered from [issue #5](https://github.com/mescon/logitech-trueforce-linux-driver/issues/5) captures (BeamNG.drive + G Pro, contributed by [@SandSeppel](https://github.com/SandSeppel)) and re-verified 2026-04-21 against an RS50 + ACC capture on the same host. The two wheels use byte-for-byte identical init and streaming packets.
Copy file name to clipboardExpand all lines: sdk/README.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -105,7 +105,7 @@ Both channels coexist at runtime: the SDK sets both KF (slow, steering feel) and
105
105
106
106
### How we use this in practice
107
107
108
-
- The Proton recipe in the project README installs the unmodified, Logitech-signed Trueforce DLL into each Wine prefix and registers its CLSID. The DLL talks to Wine's HID stack rather than the (nonexistent on Linux) G HUB Agent named pipe; Wine's HID stack reaches our kernel driver. End-to-end verified against ACC. See `tools/install-tf-shim.sh`.
108
+
- The Proton recipe in the project README installs the unmodified, Logitech-signed Trueforce DLL into each Wine prefix and registers its CLSID. The DLL talks to Wine's HID stack rather than the (nonexistent on Linux) G HUB Agent named pipe; Wine's HID stack reaches our kernel driver. End-to-end verified against ACC and AC EVO, on RS50 in both G PRO compatibility mode and native mode (`046d:c276`, AC EVO 2026-07-08, usbmon-confirmed). See `tools/install-tf-shim.sh`.
109
109
- For native Linux apps that want to drive Trueforce directly (no Wine in the loop), `userspace/libtrueforce/` is a from-scratch C reimplementation of the same protocol; `include/trueforce.h` mirrors the 62 named exports of the Windows DLL.
110
110
-`logiTrueForceSetStreamTF` suggested a bulk-upload path in addition to per-sample. libtrueforce supports streaming writes via `write(2)` on the wheel's interface-2 hidraw node rather than a single ioctl per sample, matching the wire-level format.
0 commit comments