Sticks, Throttles, & Pedals - starcitizen-lug/knowledge-base GitHub Wiki

Compatibility

In general, you can expect any hardware to work on linux but third-party software tied to the device can be an issue. In some cases, a VM may be required for configuring the device.

Troubleshooting:
See the section at the end of this page for specific issues and workarounds.

Recommendations

Virpil and VKB-sim are widely recommended for their build quality at their respective prices. It isn't recommended to go cheaper than these price ranges if you want something that will last.

Virpil has distribution centers in the EU and USA.
North America
Europe
Russia

VKB has distribution centers in the EU, USA, and Australia. VKB also sells parts through their site as replacements or upgrades.
North America
Europe
Russia
Australia, New Zealand
India (AUS distribution)

VKB Devices

Tip

Wine 9.22+ has enabled HIDRAW for VKB devices. This removes the 79 button limit and may provide better device support. To enable hidraw access to your VKB devices, create a rules file in /etc/udev/rules.d named 40-starcitizen-joystick-uaccess.rules with the following content:

# Set the "uaccess" tag for raw HID access for VKB Devices in wine
KERNEL=="hidraw*", ATTRS{idVendor}=="231d", ATTRS{idProduct}=="*", MODE="0660", TAG+="uaccess"

Important

After adding the udev rule, unplug and replug your device. The event joystick device may still show in the wine joystick control panel and will need to be disabled so that only the raw hid device is presented to the game. Follow the instructions in Accessing Wine Game Controllers Settings, select the device(s) that has Sim (C) Alex Oz in the name, and click the Disable button.

Important

HIDRAW is recommended for VKB devices running older firmware with a © symbol in the name, or consider upgrading your firmware You can check the device name using lsusb or evdev-joystick --list.

VKB Gladiator

The Gladiator series can be calibrated without needing to use any special software.

They store their configuration on-board but the configuration software is only native to Windows. You can run the software in a virtual machine (VirtualBox, GNOME Boxes, etc) and pass the USB device to the windows environment to configure it that way.

VKB Gunfighter

Requires a windows-only software for calibration and configuration. Link

Virpil Devices

Requires a windows-only software for calibration and configuration. Link; scroll down

Tip

Wine 9.22+ has enabled HIDRAW for Virpil devices. This removes the 79 button limit and may provide better device support. To enable hidraw access to your Virpil devices, create a rules file in /etc/udev/rules.d named 40-starcitizen-joystick-uaccess.rules with the following content:

# Set the "uaccess" tag for raw HID access for Virpil Devices in wine
KERNEL=="hidraw*", ATTRS{idVendor}=="3344", ATTRS{idProduct}=="*", MODE="0660", TAG+="uaccess"

Important

After adding the udev rule, unplug and replug your device. The event joystick device may still show in the wine joystick control panel and will need to be disabled so that only the raw hid device is presented to the game. Follow the instructions in Accessing Wine Game Controllers Settings, select the device(s) that has Virpil Controls in the name, and click the Disable button.

Thrustmaster T-16000

The yaw potentiometer on these sticks tends to fail after a time. It may be possible to prevent or fix the issue, otherwise a new potentiometer can be soldered on.

Configuration Tips

Find Device Info

Use udevadm to retrieve the Vendor ID, Model Name, and Model ID that the device reports to the system.

udevadm info -n /dev/input/by-id/usb-your-joystick-name | grep -E 'ID_VENDOR_ID|ID_MODEL_ID|ID_MODEL'

Example:

$ udevadm info -n /dev/input/by-id/usb-VKB-Sim_©_Alex_Oz_2021_VKBsim_Space_Gunfighter-event-joystick | grep -E 'ID_VENDOR_ID|ID_MODEL_ID|ID_MODEL'
E: ID_VENDOR_ID=231d
E: ID_MODEL=VKBsim_Space_Gunfighter
E: ID_MODEL_ENC=\x20VKBsim\x20Space\x20Gunfighter\x20
E: ID_MODEL_ID=0126

HIDRAW

Removes the 79 button limit and may provide better device support

  • Create a rules file in /etc/udev/rules.d named 40-starcitizen-joystick-uaccess.rules with the following content:
# Set the "uaccess" tag for raw HID access for Virpil Devices in wine
KERNEL=="hidraw*", ATTRS{idVendor}=="<Your Vendor ID>", ATTRS{idProduct}=="*", MODE="0660", TAG+="uaccess"

Example:

# Set the "uaccess" tag for raw HID access for VKB Devices in wine
KERNEL=="hidraw*", ATTRS{idVendor}=="231d", ATTRS{idProduct}=="*", MODE="0660", TAG+="uaccess"

Important

After adding the udev rule, unplug and replug your device. The event joystick device may still show in the wine joystick control panel and will need to be disabled so that only the raw hid device is presented to the game. Follow the instructions in Accessing Wine Game Controllers Settings, select the device(s) that do not match the results of the udevadm and click disable

Mappings

A collection of mappings contributed by our community can be found here.
Mappings for Saitek / Logitech x56 HOTAS are maintained individually by @PaladinTitus here.

The third party tool, input-remapper, can be used to change the behavior of input devices. Note that, while some of our Penguins have had success using this tool, we have not fully vetted its functionality or safety. Some basic profile examples contributed by our community can be found here.

Evdev Deadzones

On Linux, evdev adds deadzones to every axis for each controller you plug into your system. This is good for inexpensive controllers that don't have any form of internal calibration or programming. However, with higher end programmable sticks like those from VKB and Virpil, evdev's deadzone adds to the programmed deadzone for those devices. This can also impact throttle devices, where you can get a "hitch" at 50% throttle when it passes through the middle of the axis.

To eliminate this problem, you want to create a udev rule that removes the evdev deadzone from your devices when they're plugged in.

  1. Install evdev-joystick. This utility is provided by different packages depending on your distribution.
    See the list below for your distribution:

    • Arch - linuxconsole
    • Debian/Ubuntu - joystick
    • Fedora - linuxconsoletools
  2. Create a udev rules file in
    /etc/udev/rules.d/ and plug your device info into the following template:

# Custom Joystick Udev Rules

# Sample
ACTION=="add", SUBSYSTEM=="input", KERNEL=="event*", \
  ENV{ID_VENDOR_ID}=="<Vendor ID>", ENV{ID_MODEL_ID}=="<Model ID>", \
  RUN+="/usr/bin/evdev-joystick --e %E{DEVNAME} --d 0" 

This will keep things very specific to just the devices you want to change, and not impact any other devices you use.

Here is an example rules file for 3 VKB devices and one Virpil device:
/etc/udev/rules.d/99-evdev-joystick.rules

# Custom Joystick Udev Rules

# VKB SEM
ACTION=="add", SUBSYSTEM=="input", KERNEL=="event*", \
  ENV{ID_VENDOR_ID}=="231d", ENV{ID_MODEL_ID}=="2204", \
  RUN+="/usr/bin/evdev-joystick --e %E{DEVNAME} --d 0" 

# VKB Gunfighter L
ACTION=="add", SUBSYSTEM=="input", KERNEL=="event*", \
  ENV{ID_VENDOR_ID}=="231d", ENV{ID_MODEL_ID}=="0127", \
  RUN+="/usr/bin/evdev-joystick --e %E{DEVNAME} --d 0" 

# VKB Gunfighter R
ACTION=="add", SUBSYSTEM=="input", KERNEL=="event*", \
  ENV{ID_VENDOR_ID}=="231d", ENV{ID_MODEL_ID}=="0126", \
  RUN+="/usr/bin/evdev-joystick --e %E{DEVNAME} --d 0" 

# Virpil Rudder Pedals
ACTION=="add", SUBSYSTEM=="input", KERNEL=="event*", \
  ENV{ID_VENDOR_ID}=="3344", ENV{ID_MODEL_ID}=="01f8", \
  RUN+="/usr/bin/evdev-joystick --e %E{DEVNAME} --d 0" 

Troubleshooting

Accessing Wine Game Controllers Settings

  • If using Lutris, Select the game then click the arrow next to the wine glass button -> Wine Control Panel -> Game Controllers
    Screenshot from 2024-09-13 19-45-26
  • Use the LUG Helper's Maintenance menu Open Wine controller configuration button
  • For other install methods, run WINEPREFIX=/path/to/your/prefix wine control joy.cpl

Some of your joysticks disappear / aren't recognized in the game

  • If you are using wine 9.22+ with a VKB or Virpil device, you may need to enable HIDRAW access. See VKB Devices or Virpil Devices above for instructions.
  • If you are using Lutris, make sure "Autoconfigure joypads" is turned off in the game settings for Lutris
    • Right click the game -> Configure -> Runner options -> Autoconfigure joypads
  • Try setting your joysticks to "dinput" instead of "xinput" in Wine's
  • Joysticks can be configured manually in the wine joystick control panel
    • Click the arrow next to the wine glass button -> Wine Control Panel -> Game Controllers
  • Try disabling the Lutris Runtime
    • Right click the game -> Configure -> System options -> Disable Lutris Runtime

Some of your joystick axis aren't recognized / don't map

  • Check that the game has not set the deadzone for this axis to 100%

Rudder pedals not recognized

If your pedals aren't being recognized by Star Citizen but work on Linux, it may be that it has been classified as something else than rudder pedals. This often happens because there are no buttons, and various OS functions assume it might be an accelerometer or similar.

There are two possible workarounds for this:

  • The following Python script creates a virtual device from the real device, adding a few more capabilities to make Star Citizen not discard it as an invalid device: https://github.com/beniwtv/evdev-spoof-device

  • Another solution is to create a Kernel udev rule to change the classification of your device.

    • Create a file /etc/udev/rules.d/90-pedals-workaround.rules and plug your device info into the following template:
      ACTION=="add|change", KERNEL=="event[0-9]*", ENV{ID_VENDOR_ID}=="<Your Vendor ID>", ENV{ID_MODEL_ID}=="<Your Model ID>", ENV{ID_INPUT_ACCELEROMETER}="", ENV{ID_INPUT_JOYSTICK}="1", TAG+="uaccess"
      

Note

Consider contributing your rules to the LUG knowlege-base if your device needs any rules to function properly

Also consider having the rule added to systemd.

⚠️ **GitHub.com Fallback** ⚠️