A Linux kernel driver and userspace tools for three Logitech racing wheels: the direct-drive RS50 and G PRO Racing Wheel, and the gear-driven G923. It brings force feedback, TrueForce haptics, a live RPM rev-light display, LIGHTSYNC LED control, and G HUB-equivalent wheel settings to Linux, including in Proton/Wine sims.
This is the first TrueForce implementation on Linux. TrueForce is Logitech's high-frequency haptic layer - engine note, road surface and tyre texture felt through the rim, on top of ordinary force feedback - and until this project it did not exist here at all. It arrives two ways:
- Native, in sims that support Logitech's SDK. The haptics are the game's own TrueForce signal, carried to the wheel unchanged: what you feel is what the developers authored, not an approximation of it.
- Simulated, in everything else. Where a game has no TrueForce,
logi-tf-simsynthesises it from that game's live telemetry - engine RPM, speed, surface - so wheels still get texture in titles that never shipped support for it.
The G923 matters as much here as the direct-drive wheels. It is the only Linux driver that gives it TrueForce, and the only one that gives the PlayStation edition force feedback at all - that edition had none on Linux before this. See G923 support.
The older G920 is already served by the in-tree
hid-logitech-hidppdriver and does not need this one.
Four steps, whichever of these wheels you own.
1. Install it. One command on most distributions: find yours in Install below.
2. Plug the wheel in and open Logi Wheel. logi-wheel-gui for the desktop
app, logi-wheel for the terminal one. It finds the wheel and shows every
setting that wheel supports.
3. Set your games up from its Setup page. It lists the sims it found across Steam, Lutris and Heroic, and each row has the buttons for that game:
-
Install relay puts the telemetry relay into that game's Proton folder. This is what feeds simulated TrueForce and the rev lights in sims that keep their telemetry in shared memory (the Assetto Corsa family, iRacing, RaceRoom, rFactor 2, Le Mans Ultimate).
-
Install TrueForce files puts Logitech's own TrueForce files into that game's Proton folder, for sims with TrueForce built in (Assetto Corsa Competizione, Assetto Corsa EVO) on a direct-drive wheel. This needs a one-time copy first; see below. A G923 does not use this route and can skip it, because that wheel does not answer Logitech's SDK.
With these files installed, this is the configuration to want: the game's own TrueForce reaches the wheel, which is what its developers authored rather than the engine note this project synthesises.
Without them, do not switch the raw HID interface on. Reaching that interface is what lets Logitech's SDK deliver TrueForce, and switching it on replaces the ordinary path force feedback arrives by. The raw interface offers no force feedback of its own, so with it on and the files missing you get neither.
logi-launchwill not make that trade: it leaves the raw interface alone until the files are there, so force feedback keeps working and you get simulated TrueForce meanwhile.
The one-time copy: Logitech's TrueForce files. They cannot be redistributed, so you supply them from a Windows G HUB installation. Copy the whole
Logifolder to~/.local/share/logitech-trueforce/sdk, keeping its own layout, so you end up with:~/.local/share/logitech-trueforce/sdk/Logi/Trueforce/<version>/trueforce_sdk_x64.dll ~/.local/share/logitech-trueforce/sdk/Logi/wheel_sdk/<version>/logi_steering_wheel_x64.dllWhatever version numbers your G HUB shipped are the right ones. The Setup page's TrueForce files section shows the folder it is reading and says whether it found them, so you can check before installing to a game. To keep them somewhere else, set the folder there.
4. Put one launch option on each sim. In Steam: Properties, General, Launch Options.
logi-launch %command%
That line is the same for every game and every wheel, and for most people it
is the only setup step. logi-launch works out what this game needs on the
wheel you have plugged in, and does it: force feedback for older DirectInput
sims, the game's own TrueForce where it supports it, simulated TrueForce and
live rev lights everywhere else. Logi Wheel's Setup page shows what it will do
for each of your games, which differs by wheel. Full detail in
docs/LAUNCH_OPTIONS.md.
One thing it cannot do for you: turn Steam Input off for the game (Properties, Controller, "Disable Steam Input"). Left on, it hides the wheel behind a virtual gamepad and force feedback never arrives.
lsusb | grep -i 046d| Product id | Wheel | What you get |
|---|---|---|
c276 |
RS50 | Everything: force feedback, the game's own TrueForce and simulated TrueForce, rev lights, every setting. |
c272 |
RS50 in compatibility mode, or a G PRO (Xbox/PC) | Same as above. The two share this id; Logi Wheel names which one it found. |
c268 |
G PRO Racing Wheel (PS/PC) | Same as above. |
c266, c267 |
G923 PlayStation edition | Force feedback (no other Linux driver gives this wheel any), simulated TrueForce, rev lights, and the core settings. |
c26d, c26e |
G923 Xbox edition | Force feedback and TrueForce, both confirmed on a real unit. Rev lights are implemented and awaiting an owner's confirmation in a game. Needs usb_modeswitch installed; see G923 support. |
A wheel that plugs in as c267 or c26d is switched to its PC mode
automatically, so a different id after plugging in is expected, not a fault.
If nothing above matches, this driver is not for your wheel. The G920 is
already handled by the kernel's own hid-logitech-hidpp, and the older
G25/G27/G29 by hid-logitech-hidpp and hid-lg4ff.
Logi Wheel is how you drive all of this. It is this project's answer to G
HUB: every setting your wheel supports, in one place. Wheels differ in what
they offer, and a few settings only apply in one of the wheel's modes, so
anything unavailable is greyed out with a note saying why. It runs as a
desktop app (logi-wheel-gui) or in a terminal (logi-wheel), and both are
built from the same core, so they behave identically.
Beyond the settings, it has a G HUB-style curve editor for the pedals, a LIGHTSYNC editor whose changes reach the wheel as you make them, a Setup page that finds your sims across Steam, Lutris and Heroic and turns the per-game TrueForce helpers on and off, and an Info / Testing page with live input and cancelable force tests.
Force feedback, TrueForce haptics, LEDs, pedals, the RS Shifter & Handbrake, and the full set of G HUB wheel settings all work. The RS50 is the development hardware and is verified directly; the G PRO runs the same code path and is expected to work, with a few items awaiting an owner's confirmation.
Legend: ✅ verified on hardware · 🟢 shares the verified code path, expected
to work · 🟡 needs a tester · - not applicable.
| Capability | RS50 | G PRO |
|---|---|---|
| Steering, pedals, buttons, D-pad | ✅ | 🟢 |
| Force feedback (full evdev effect suite) | ✅ | 🟢 |
Force feedback in DirectInput sims (via logi-ffb) |
🟡 | 🟡 |
| TrueForce haptics (Proton + Logitech's signed SDK) | ✅ | 🟢 |
| Rotation range (90 to 2700°), strength, damping, filters | ✅ | 🟢 |
| Pedal response curves, sensitivity, deadzones, combined pedals | ✅ | 🟢 |
| RS Shifter & Handbrake (shift, digital + analog handbrake) | ✅ | 🟢 |
| LIGHTSYNC RGB LEDs (slots, colors, direction; edits apply live) | ✅ (faceplate strip, see note) | 🟡 (rev lights) |
| RPM rev-light display (level fill, direction-aware) | ✅ | 🟡 |
If the strip stays dark, check which onboard profile is active. The wheel stores five, and a profile can keep the strip off entirely. Every LED write still reports success on such a profile, so the driver looks broken when the wheel is simply doing what that profile says. The four built-in sweeps also play a colour pattern held in the wheel's own firmware, which it never reports, so the app previews their motion but not their colours; pick a custom slot to choose colours yourself. | Simulated TrueForce from game telemetry (
logi-tf-sim) | ✅ (sweep-verified) | 🟢 | | Centre calibration, mode / profile switching, computer-side profiles | ✅ | 🟢 |
USB IDs covered: RS50 (046d:c276 native, 046d:c272 compatibility mode),
G PRO Racing Wheel (046d:c272 Xbox/PC, 046d:c268 PS/PC), and the G923
(046d:c266/c267 PlayStation edition, 046d:c26d/c26e Xbox edition -
see G923 support).
Everything below is built from this repository:
-
The kernel driver (
hid-logitech-dd) makes the wheel work: games get standard Linux force feedback, and every wheel setting appears under/sys/.../wheel_*. Your other Logitech devices stay on their usual drivers. It drives the G923 too, through a separate force-feedback engine suited to that wheel (see G923 support). -
Logi Wheel, described above, is the app you configure the wheel with.
logi-wheel-guiis the desktop version, with a LIGHTSYNC editor whose per-slot colors and animation direction reach the wheel immediately, computer-side profile presets, a Setup page for your sims, and an Info / Testing page with a rotating wheel diagram, button and pedal readouts and cancelable force tests.logi-wheelis the terminal version: the same settings and the same G HUB-style curve editor, so you never have toechovalues into sysfs by hand. -
logi-ffb restores force feedback in DirectInput sims under Wine/Proton (Le Mans Ultimate, for example). One launch option and it works: see Force feedback in games.
-
logi-tf-sim gives you TrueForce engine haptics and a live RPM rev-light display in games with no native TrueForce, using the game's own UDP telemetry. Supported games are auto-detected (DiRT Rally 2.0 and the classic Codemasters format, Automobilista 2 / Project CARS 2, F1, BeamNG.drive and EA Sports WRC); enable and tune it per game from the Setup page.
-
libtrueforce lets native Linux apps drive TrueForce without Wine: a C library reimplementing Logitech's TrueForce SDK. Optional; not needed for the Proton recipe.
The distribution packages install the driver plus the logi-wheel,
logi-wheel-gui, logi-ffb and logi-tf-sim tools, the TrueForce shim
installer, and the helpers games load themselves: the SDK proxy, the
telemetry relay and the truck-sim plugin. The intent is that installing a
package leaves you needing only Logitech's own DLLs, which cannot be
redistributed. libtrueforce has its own build under
userspace/libtrueforce/.
The G923 gets something no other Linux driver offers: force feedback and TrueForce on the same wheel. TrueForce has never been available for it on Linux before, and the PlayStation edition had no force feedback at all - the in-tree drivers do not cover it.
It is gear-driven and speaks an older Logitech protocol, so internally it takes a different path than the RS50 and G PRO above, but the result is the same: real forces in games, engine haptics through the rim, working rev lights, and the settings app.
Both editions are now verified on hardware. The Xbox edition was confirmed by an owner over the course of issue #27, on a wheel none of the maintainers own (see CREDITS.md).
PlayStation edition (046d:c266/c267) is fully supported and verified on
hardware:
- Force feedback in games. No launch options are needed: just turn Steam
Input off. Do not set
PROTON_ENABLE_HIDRAWfor this wheel, it is meant for the direct-drive wheels and it disables the G923's force feedback. - TrueForce engine haptics through
logi-tf-sim, driven by game telemetry. Logitech's own SDK cannot deliver TrueForce here (it hands the haptics to G HUB, which does not exist on Linux), so this driver streams them itself. - Rev lights, driven from telemetry or controllable as ordinary Linux LEDs. These need the udev rules from 0.29.0 or later: before that their brightness files were root-owned and every write failed silently.
- Settings: rotation range, force strength, autocenter and combined pedals,
through
logi-wheelor Oversteer.
Since 0.29.0 that engine note also covers Assetto Corsa Competizione and Assetto Corsa EVO, which is new. Those two have real TrueForce of their own, but it travels through a Logitech SDK the G923 does not answer, so it never reached the wheel. Their telemetry is read from the game's shared memory instead and synthesized into an engine note (see docs/SHARED_MEMORY_RELAY.md). Confirmed on a c266: stationary in the pit box with the engine revving, the wheel buzzes, which force feedback alone cannot do.
Xbox edition (046d:c26e) has force feedback and TrueForce, both
confirmed on a real unit, and rev lights. Neither the forces nor the
haptics existed for this wheel on Linux before this project.
The rev lights are new in 0.34.0 and are the one part not yet confirmed in a
game: the strip has been lit on a real Xbox wheel, but nothing has driven it
from live telemetry yet. It exposes the same five ::RPM1..::RPM5 LED
devices the PlayStation edition does, so anything that drives those works
here unchanged.
This edition ships in a console-only mode that Linux cannot use, and has to
be switched into PC mode. The packages handle it: a udev rule does the switch
on plug-in, using usb_modeswitch, which comes in as a recommended
dependency on Debian, Ubuntu, Fedora and openSUSE. On Arch it is an
optional dependency, so install it yourself there:
sudo pacman -S usb_modeswitchIf the wheel never leaves console mode, the out-of-tree xone driver has
probably claimed it first.
One known limitation: some sims lock the steering to 90 degrees (45 each way). That is not the wheel or this driver. Logitech's TrueForce SDK asks G HUB for your wheel's rotation over a local pipe, nothing answers that under Proton, and the game falls back to 90, which is the minimum of the wheel's legal range. The troubleshooting section below has the workaround, and the shim that aims to remove the need for one. Tracked in #27.
Two notes for the curious: the wheel plugs in as c267 (PlayStation) or c26d
(Xbox) and the driver switches it to its PC mode automatically, and the G923's
sysfs settings use the classic Oversteer-compatible names rather than the
wheel_* names the direct-drive wheels use. The
wiki
has the details, including the LED devices and the driver-precedence rule.
Pick your distribution. The full step-by-step is on the Installation wiki page, and the one-time TrueForce SDK setup is on Force feedback in games.
| Distribution | Install |
|---|---|
| Arch, CachyOS, Manjaro | paru -S logi-wheel-gui (AUR, or your AUR helper; pulls logi-wheel and the driver. Headless box: paru -S logi-wheel). Or the signed binary repo below, which does not depend on the AUR being reachable. |
| Debian, Ubuntu, Mint, Pop!_OS | download the .debs from Releases, then sudo apt install ./logitech-trueforce-dkms_*.deb ./logi-wheel_*.deb ./logi-wheel-gui_*.deb (skip the gui one on a headless box) |
| Fedora, Nobara | COPR akmod: sudo dnf copr enable mescon/logitech-trueforce && sudo dnf install akmod-logitech-trueforce logi-wheel-gui (headless box: logi-wheel instead of logi-wheel-gui) |
| openSUSE | OBS repo home:mescon (see the Installation page) |
| NixOS | add this repo as a flake input, import nixosModules.default, and set hardware.logitech-trueforce.enable = true; That builds the module against your own kernel and installs the tools, the udev rules and the helpers. Full snippet on the Installation page. |
| From source (any distro) | git clone this repo, then sudo ./tools/setup.sh: DKMS build, udev rules, the helper scripts, and the apps themselves (logi-wheel, logi-ffb, logi-tf-sim, and the window when it can be built). Needs cargo. ./tools/setup.sh doctor health-checks it and says when an app is missing or older than your checkout. The window also needs pkg-config and the fontconfig headers: libfontconfig-dev on Debian/Ubuntu, fontconfig-devel on Fedora, fontconfig on Arch; without them everything else still installs. |
The AUR and Debian packages are DKMS-based and rebuild automatically on kernel
upgrades; the NixOS module builds against whichever kernel your configuration
selects and is rebuilt with the system. After installing, plug in the wheel and check dmesg for a line naming
your wheel model. The packages install a udev rule, so settings are writable
right away, no group membership needed.
The AUR is the normal route, and when it is up nothing here is needed. It has had extended outages during which no Arch user could get anything newer than whatever was last pushed, so every release also publishes a signed pacman repository as release assets. It is served by GitHub, so it works whenever GitHub does.
Import the signing key, then add the repository:
curl -fsSL -O https://github.com/mescon/logitech-trueforce-linux-driver/releases/latest/download/logitech-trueforce-signing-key.asc
sudo pacman-key --add logitech-trueforce-signing-key.asc
sudo pacman-key --lsign-key 4B5BDD7802723B289FA934CACD77C00A443B9E79Check the fingerprint printed by --lsign-key matches the one above before
signing it. The full fingerprint rather than a short id, because short ids can
be collided and this is a key you are telling your package manager to trust.
It signs nothing but this repository's packages.
The key is served from the release rather than a keyserver so that installing
depends on nothing beyond GitHub. If you would rather use a keyserver,
sudo pacman-key --recv-keys 4B5BDD7802723B289FA934CACD77C00A443B9E79 --keyserver keyserver.ubuntu.com works once it has propagated.
# /etc/pacman.conf, at the end
[logitech-trueforce]
Server = https://github.com/mescon/logitech-trueforce-linux-driver/releases/latest/downloadsudo pacman -Sy logi-wheel-gui # headless box: logi-wheelUpdates then arrive through pacman -Syu like anything else. latest/download
always resolves to the newest release, so the Server line never needs
changing.
The packages are the same ones the AUR recipe builds, from the same tag, built
and signed in public CI. If you would rather not add a third-party repository,
the individual .pkg.tar.zst files are attached to every release and install
with sudo pacman -U <url>.
logi-launch %command% already does everything in this section. It is
covered here because knowing what it does makes it possible to check it, and
because some people would rather set things up themselves.
The recipe is per game and per wheel: the same title needs opposite settings on an RS50 and a G923, which is why one launch option that works it out beats a line copied from someone else's post. Every game and wheel this project knows about is in docs/GAME_SETUP.md, generated from the same registry the app uses, so the two cannot disagree.
-
Native and most Proton sims: force feedback works out of the box; games see a standard Linux wheel. No setup beyond binding controls in game.
-
TrueForce haptics (the high-frequency texture layer, on top of normal FFB) in SDK-aware sims: stage Logitech's signed SDK DLLs into the game's Proton prefix, and launch with
PROTON_ENABLE_HIDRAW=1if you are not usinglogi-launch, which sets it for you on the wheels that want it. The DLLs are the one part nobody can automate, because Logitech's files cannot be redistributed. The one-time recipe is on the Force feedback in games wiki page. Verified end to end on Assetto Corsa Competizione and Assetto Corsa EVO.On a G923 the recipe is different, not absent. That wheel does not answer the TrueForce SDK, so
PROTON_ENABLE_HIDRAWmust stay unset: there it does not add TrueForce, it takes away the force feedback you already had. Install the shim with--proxyinstead. That puts this project's own SDK proxy in the game's path, where it copies the TrueForce the game is already producing and streams it to the wheel directly, so a G923 gets the game's real haptics without the SDK needing to cooperate. New, and not yet confirmed by anyone driving it. See G923 support.Where the SDK files go. Copy the
Logifolder out of a Windows G HUB install into~/.local/share/logitech-trueforce/sdk, keeping its own layout, so you end up with:~/.local/share/logitech-trueforce/sdk/Logi/Trueforce/<version>/trueforce_sdk_x64.dll ~/.local/share/logitech-trueforce/sdk/Logi/wheel_sdk/<version>/logi_steering_wheel_x64.dllWhatever version numbers your G HUB shipped are the right ones; nothing here assumes a particular pair. To keep them somewhere else, set
LOGITECH_TRUEFORCE_SDK_DIRto that directory, or pass--sdk-dirto the installer, or set the folder on the app's Setup page.setup.sh doctorprints the directory it checked, so if it disagrees with you, that line tells you where it looked.Side effects to know about. With
PROTON_ENABLE_HIDRAWset, some games read the wheel's raw HID reports instead of the normal Linux input layer, and the two use opposite conventions for a control at rest. Nothing is wrong with the wheel or the driver, and all of it goes away if you unset the variable.- Pedals read the other way up: resting registers as fully pressed. Turn on the game's own "invert axis" option for the affected pedals. Seen on Assetto Corsa EVO.
- A control can read as permanently held, for example a constant "up" that makes menus impossible to navigate. Rebinding in the game usually clears it. Reported on Assetto Corsa EVO under GE-Proton9-27.
If either makes a game unusable and you would rather have force feedback than the game's own TrueForce, tell the wrapper so for that game in
~/.config/logi-wheel/games.conf:3058630 hidraw=0 tfsim=1 relay=ac-evo -
DirectInput sims (Le Mans Ultimate, for example):
logi-launchroutes these throughlogi-ffbfor you. By hand it islogi-ffb %command%in the game's Steam launch options. It presents a virtual wheel the game can drive force feedback on and passes the forces through to the real one; do not setPROTON_ENABLE_HIDRAWyourself,logi-ffbhandles it. The game sees a "logi-ffb Virtual Wheel" (its own name and IDs, not the real wheel's), so it may need a one-time manual binding. Hardware-validated, but still waiting on an in-game tester; if you run such a sim, reports are very welcome.
The one line to put in a game's launch options is:
logi-launch %command%
That is the whole setup for most people. It works out what the game needs on
the wheel you actually have and applies it: the raw-HID setting only where
that wheel wants it, the logi-ffb proxy for DirectInput games, the
simulated-TrueForce daemon, and the telemetry relay inside the game's Proton
prefix for the sims that need one. Games with their own TrueForce keep it and
get nothing layered on top. It knows 29 titles by their Steam appid, and you
can teach it others. Full details, including how to add a game yourself, are
in docs/LAUNCH_OPTIONS.md.
-
Simulated TrueForce for games without native support: enable the game in Setup's "Simulated TrueForce" panel and switch on the game's own UDP telemetry setting.
logi-tf-simthen plays engine haptics from live RPM and throttle, and drives the rev LEDs to match. Intensity and felt rev rate (pitch) are tunable, and a built-in test sweep (the app asks before running it) lets you feel the effect without launching a game. Hardware-verified with those test sweeps; in-game reports welcome.Two kinds of game need a helper before they can feed it.
sudo ./tools/setup.shinstalls both for you, into every Proton prefix and into both truck sims, and the settings app can install the relay per game from its Setup page, so there is normally nothing to fetch or copy. They are also packaged and downloadable if you would rather place them yourself: Euro Truck Simulator 2 and American Truck Simulator use a native Linux plugin (docs/SCS_PLUGIN.md); iRacing, RaceRoom, the Assetto Corsa family, rFactor 2 and Le Mans Ultimate publish to shared memory that a small in-prefix relay forwards (docs/SHARED_MEMORY_RELAY.md). The Assetto Corsa family's decoders were confirmed against running games; the others are written against published layouts but nobody has driven them yet, which is why those titles carry the provisional marker in the table.Beyond the engine note there is a haptic effects layer: both limiters, gear shifts, the ABS pump, traction loss, surface texture, impacts and DRS. Tune it in Setup, under "Simulated TrueForce": in the GUI, "Extra effects" then "Adjust individual levels"; in the terminal app,
xtoggles the layer andllists it, with[]to pick a layer andvto set its level.How much of it you feel depends on what your game's telemetry carries, and each slider tells you which games feed it. Only the engine note and the rev limiter work in every supported game. The gear, the pedals and the ABS and traction lamps come from OutGauge, which among these games means BeamNG.drive, so the pit limiter, gear shifts, ABS and traction are silent elsewhere. Surface texture, airborne, impacts and DRS have no source at all yet: the effects are written, the missing piece is a decoder field.
All of this applies only to games you switched simulated TrueForce on for.
Games with built-in TrueForce (ACC, Assetto Corsa EVO) normally get their effects from the game itself and are not affected by any of it. The G923 is the exception, and the reason simulated TrueForce covers those two titles at all: their TrueForce goes through a Logitech SDK that wheel does not answer, so on a G923 it never arrives, and a synthesized engine note is the difference between haptics and silence. On a direct-drive wheel, keep using the shim and leave these switches alone.
The same settings live in
tf-sim.confaseffects=0/1andeffect_<layer>=0-100, where<layer>is one ofengine,rev_limiter,pit_limiter,gear_shift,abs,traction_loss,road_bumps,airborne,collision,drs.effect_airborneis a depth rather than a level: it sets how far the road is quieted with the wheels off the ground. Only the engine layer is hardware-validated so far, so if something feels wrong, turn that one layer down and please say so in an issue.With a G923 and a direct-drive wheel plugged in together, say which one simulated TrueForce should drive: the Setup page has a picker, or set
wheel=ddorwheel=g923intf-sim.conf. Left onautoit takes a G923 whenever it finds one, so the direct-drive wheel would never get it.
Run logi-wheel-gui (or logi-wheel in a terminal) and edit settings live: rotation range, force-feedback strength and filters, TrueForce level, LIGHTSYNC LEDs, profiles, and per-pedal / steering response curves through a G HUB-style curve editor.
More than one wheel plugged in? Both apps manage all of them. The window
puts a button for each next to the title; the terminal app switches with w.
The settings you see, the values you write and the tests all belong to the
wheel currently picked, and wheels of the same model are numbered so you can
tell them apart. Nothing is shared between them: each wheel keeps its own
settings on its own hardware.
The RS Shifter & Handbrake is supported too. Plug it into the wheel base and its settings appear on their own; unplug it and they go away again. The app also reads the physical three-position switch on its base and greys out whatever does not apply: below it is in analog-handbrake mode, so the handbrake curve is live while the two trigger points are not.
The Info / Testing page doubles as a live input tester (does this button reach the computer?), and the Setup page manages the game helpers:
cd userspace/logi-wheel && cargo build --release
./target/release/logi-wheel-gui # desktop app; ./target/release/logi-wheel for the TUIlogi-wheel is the recommended way to configure these wheels: it covers
every setting. Everything it sets is also a plain sysfs attribute under
/sys/class/hidraw/hidrawX/device/wheel_*, so you can script it directly; the
complete reference is docs/SYSFS_API.md. If you
already run Oversteer across a
collection of Logitech wheels, it recognizes the basics here too, since the
attribute names it expects are exposed as well.
Assetto Corsa Competizione and Assetto Corsa EVO run under Proton with
steering, force feedback and TrueForce at once on a direct-drive wheel. Put
logi-launch %command% in the launch options and turn Steam Input off; it
applies the rest. Most other sims work out
of the box with standard force feedback, or need logi-ffb in their launch
options; the full per-game table, and which needs what, is in
docs/GAME_SETUP.md and on the
Force feedback in games
wiki page.
A couple of game-side behaviors (rotation-range reset at session start, and keeping hands clear during AC EVO map loads) are covered under Troubleshooting below.
Filing a bug? Start with this, and paste what it prints:
logi-wheel --reportSome games drive force feedback the older Windows way, which needs a part of the HID protocol these wheels do not implement. On the raw HID interface those games have nowhere to send force, so force feedback goes silent while everything else keeps working.
There is no fix for this yet. The driver has a inject_pid option that
adds the missing part, and it does deliver force feedback, but it also breaks
steering and pedals on these wheels, so it is off and should stay off. The
reason is structural: these wheels send their input reports without a report
id, and the added part declares several, after which the kernel expects an id
on every report and misreads the ones the wheel is sending correctly. Making
it usable needs the driver to rewrite incoming reports too.
What works today is to leave the raw interface off for that game, which
keeps force feedback and loses the game's own TrueForce. In
~/.config/logi-wheel/games.conf:
3058630 hidraw=0
The project wiki
is the friendliest place to start: a Users section (install, force feedback
in games, configuring the wheel, simulated TrueForce, troubleshooting) and a
Developers section (architecture, the sysfs API, the protocol
specification, libtrueforce, and the internals of logi-ffb and the
simulated-TrueForce daemon).
The wheel_* attribute reference for scripting,
docs/SYSFS_API.md, ships in the repo so it always
matches your installed version. The protocol and button-mapping references
live under docs/ as well, including
docs/FEATURE_MATRIX.md, what each wheel
reports it can do against what this driver uses, and
docs/STATUS.md, which says plainly which claims here
are measured, which are argued from the code, and which are neither, along
with the problems we know about and have not fixed.
Contributions are welcome: code, testing on hardware this project cannot reach
(a real G PRO, a DirectInput sim with logi-ffb), and USB captures of wheel
variants that are not yet fully supported. The kernel driver is a fork of
JacKeTUs/hid-logitech-hidpp;
changes that apply to other Logitech devices are worth contributing upstream too.
Open an issue with your kernel version, distribution, and relevant dmesg output.
- Kernel driver (
mainline/), tooling, and everything else: GPL-2.0-only (seeCOPYING). - libtrueforce (
userspace/libtrueforce/): LGPL-2.1-or-later, so native Linux apps may link it while changes to the library itself stay open.
Logitech's TrueForce SDK DLLs are not part of this project and are not redistributed here; you supply them from your own G HUB installation.
What this project has worked out about the hardware and Logitech's own software, kept current as things are proven or disproven:
- docs/PROTOCOL_SPECIFICATION.md - the wheel's HID++ surface: features, settings, LEDs, force feedback.
- docs/TRUEFORCE_PROTOCOL.md - the haptic stream, the operating-range packet, and why a sim under Proton is told the wheel turns 90 degrees.
- docs/SDK_ABI_NOTES.md - how to call Logitech's SDK correctly, taken from its machine code, with what is verified and what is still assumed marked as such.
- docs/SYSFS_API.md - every attribute this driver exposes.
Most of what this driver knows about the hardware came from people who tested wheels the maintainers do not own and reported what happened. They are credited individually in CREDITS.md, which is where the work that never shows up in a commit log is recorded.
The projects this one is built on:
- Based on JacKeTUs/hid-logitech-hidpp, which adds G PRO wheel support and improved force feedback.
- Upstream Linux hid-logitech-hidpp by Benjamin Tissoires and contributors.
- Oversteer by Bernat Arlandis, prior art for Linux wheel configuration; the Oversteer-compatible attribute names are exposed for it.
- new-lg4ff, also by Bernat Arlandis: source of the classic force-feedback engine that drives the PlayStation G923 here.
- TF4ALL by Mhytee, a Windows SimHub plugin whose protocol analysis (issue #20) confirmed the G923 shares the RS50/G PRO TrueForce stream protocol.




