Linux Support - Limited › X56
Star Citizen · Linux · Bazzite
Logitech X56 HOTAS on Linux
Logitech’s twin-unit HOTAS works through Linux’s standard joystick driver: nothing to install. This page takes you from a fresh Bazzite install to flying with our X56 profile.
evdevBazziteLUG Helper v4.17
At a glance
What this setup involves
| Linux talks to it through | Standard Linux joystick driver (evdev) |
|---|---|
| USB IDs to look for | 0738:2221 (stick), 0738:a221 (throttle) |
| How the game should see it | Joystick 1 = stick, joystick 2 = throttle |
| Our profile | layout_AbsoluteGaming_X56.xml · same file as the Windows kit |
| Extra Linux setup | None required; optional deadzone fix in Step 3 |
Step 1
Install Star Citizen with the LUG Helper
Do this once for any controller. The full walkthrough on our Linux Support page goes screen by screen; here is the checklist.
-
Done these?
- LUG Helper AppImage downloaded and allowed to run (how).
- Preflight Check (System Optimization) passes.
- Install Star Citizen Launcher finished, with the default prefix
~/Games/star-citizen. - The game is installed from the RSI Launcher at its default path, and starts.
Step 2
Plug it in and make sure Linux sees it
-
Plug it straight into the PC
Use a USB port on the PC itself rather than an unpowered hub. Two devices means two cables: plug in both.
-
Confirm Linux sees it
Open a terminal and run:
lsusb | grep -iE '0738:2221|0738:a221'
You should get one line per device:
0738:2221= stick,0738:a221= throttle. Nothing printed? Try another USB port and cable before going further.
Step 3
Nothing to install (one optional tweak)
Logitech devices work through Linux’s standard joystick driver. You can go straight to Step 4.
-
Optional: remove Linux’s extra deadzone
Linux’s joystick driver adds a small center deadzone and anti-jitter smoothing on top of the hardware. Most pilots never notice. If the throttle “hitches” in the middle or the stick won’t settle exactly on center, the LUG’s fix is a udev rule that runs
evdev-joystick. On Bazzite that tool isn’t installed, so this is the advanced route: layer thelinuxconsoletoolspackage and reboot, then create the rule.rpm-ostree install linuxconsoletools systemctl reboot
After the reboot, save this as
/etc/udev/rules.d/99-evdev-joystick.rules(for example withsudo nano), then unplug and replug:# Custom Joystick Udev Rules (Logitech X56 HOTAS) ACTION=="add", SUBSYSTEM=="input", KERNEL=="event*", \ ENV{ID_VENDOR_ID}=="0738", ENV{ID_MODEL_ID}=="2221", \ RUN+="/usr/bin/evdev-joystick --e %E{DEVNAME} --d 0 --f 0" ACTION=="add", SUBSYSTEM=="input", KERNEL=="event*", \ ENV{ID_VENDOR_ID}=="0738", ENV{ID_MODEL_ID}=="a221", \ RUN+="/usr/bin/evdev-joystick --e %E{DEVNAME} --d 0 --f 0"Bazzite’s own advice is to layer packages only when you need to; skip this if your controls feel fine.
Step 4
Check it in Wine
-
Open Wine’s controller configuration
In the LUG Helper choose Maintenance and Troubleshooting › Open Wine controller configuration. This is Wine’s version of Windows’ joy.cpl, running inside your game’s Wine prefix.
-
Make sure it’s a joystick, not xinput
Both units should be listed. If one shows as Connected (xinput), select it and click Override so it is treated as a dinput joystick, as the LUG recommends. Missing entirely? Unplug, replug and reopen the window.
-
Test every axis and button
Use the window’s test view: move every axis through its full range and press each button. Flip the throttle’s mode switch (M1, M2, S1) and watch the button numbers change, exactly as on Windows. Leave it on M1 for our profile.
Step 5
Install our profile into the game
These lines create Star Citizen’s mappings folder inside your Wine prefix if it’s missing and download our profile straight into it. Change the prefix if you didn’t use the default. Built your own profile with the generator? Copy that file into the same folder instead.
~ and run
Devices the wrong way round? Run pp_resortdevices joystick 1 2 in the console, then run the pp_rebindkeys line again.
Prefer to do it by hand? Download layout_AbsoluteGaming_X56.xml and copy it into ~/Games/star-citizen/drive_c/Program Files/Roberts Space Industries/StarCitizen/LIVE/user/client/0/controls/mappings.
Step 6
Load it and check it in the game
-
Load the profile
Start the game, open the console with
~and runpp_rebindkeys layout_AbsoluteGaming_X56(no.xml). Or use Options › Keybindings › Advanced Controls Customization › Control Profiles. -
Check the device order
Take off and push the stick forward: the nose should pitch down. If the throttle moves your nose instead, the units are swapped: run
pp_resortdevices joystick 1 2, then the pp_rebindkeys line again. -
Check the directions
Our profile carries the same axis inverts as on Windows, but Wine can report a device under a slightly different name, and then those settings don’t attach. If an axis comes out backwards, go to Options › Keybindings, pick the joystick, open Inversion Settings and flip it there.
-
Fly a test circuit
In the hangar or on a pad: power on, flight ready, lift off, every main axis, fire, landing gear, then quantum mode. Compare with the control map below. Anything off? Rebind it in the game or fix it in the form and regenerate.
Stick: flight and weapons.
Throttle: power, systems and modes.
Step 7
Good to know for the X56
- The mode switch. One of M1, M2 and S1 is always held, so our profile leaves it unbound. It also changes which buttons the throttle reports: keep it on M1.
- Knobs and the speed limiter. The throttle knobs are unbound on purpose: a knob bound to the speed limiter and turned down caps your ship near zero.
- NAV mode. Hold SW3 (throttle button 8) to switch to NAV mode for full speed.
- No Logitech software. Logitech’s X56 software is Windows-only. You don’t need it to fly; you only lose its RGB and curve settings.
- Community mappings. The LUG lists X56 mappings maintained by PaladinTitus if you want a second opinion on layout.
Troubleshooting
If something’s not right
- A device is missing in the game? Thrustmaster: redo Step 3 and check the rule file and Wine version. Anything else: in Wine’s controller configuration, select it and click Override (dinput).
- An axis does nothing? Check the game hasn’t set that axis’s deadzone to 100% under Options › Keybindings.
- Everything broke after a game or Wine update? Check the LUG wiki news first; fixes usually land there.
- Still stuck? Use the LUG Helper’s Maintenance and Troubleshooting › Show logs, then ask in the LUG’s channels (game on Linux) or on our Discord (our profiles).