Simucube 2 on Linux

This is a ‘Extraction’ from this topic: Driving Simulator for Vehicle Research which has become to big and easy to get lost, so I extracted the most vital info to make simucube 2 work on Linux, based on my own experience as I’m using the Simucube2 Sport for some time now on Linux, the credits for me being able to write this guide goes to all that commented on the above thread.

The latest released(upcomming) driver: 2022.10 (https://granitedevices.com/wiki/Simucube_2_True_Drive_releases) added some missing descriptors needed by Linux, so this guide only works with upcomming latest firmware >= 2022.10

Install Wine, preferably wine >= 7.17

To isolate this truedrive setup we will use a WINEPREFIX, you can use whatever wineprefix name you want.

mkdir ~/simucube
WINEPREFIX="~/simucube" wine regedit

In the windows registry opened with the command above:
Create “Enable SDL” in [HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\winebus], which must be added with right click->New->DWORD value, and set to “0”

Create “DisableInput” in [HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\winebus], which must be added with right click->New->DWORD value, and set to “1”

Install truedrive:
WINEPREFIX="~/simucube" wine Simucube_2_True_Drive_2022.10.exe

Create the bellow file, (make sure the double quotes get pasted correctly):
The hidraw user access for SC in Linux can be enabled by placing a file “72-simucube.rules” in “/etc/udev/rules.d/” with the following content:

Simucube 1; USB

KERNEL=="hidraw*", ATTRS{idVendor}=="16d0", ATTRS{idProduct}=="0d5a", MODE="0660",                
TAG+="uaccess"

Simucube 2 Sport; USB

KERNEL=="hidraw*", ATTRS{idVendor}=="16d0", ATTRS{idProduct}=="0d61", MODE="0660",    
TAG+="uaccess"

Simucube 2 Pro; USB

KERNEL=="hidraw*", ATTRS{idVendor}=="16d0", ATTRS{idProduct}=="0d60", MODE="0660", 
TAG+="uaccess"

Simucube 2 Ultimate; USB

KERNEL=="hidraw*", ATTRS{idVendor}=="16d0", ATTRS{idProduct}=="0d5f", MODE="0660", 
TAG+="uaccess"

Power one the simucube base, open true drive, see it if connects.

Install steam, go to steam settings and set it to use proton.
Game should install and wheel work.

For Raceroom you want to use Proton version 6 (you can change proton version per game)

Usefull other apps:

2 Likes

We’ve set up a wiki page to document this, as it gets easily lost on the forum. PM me if you want to write this there.

https://granitedevices.com/wiki/Using_Simucube_wheel_base_in_Linux

2 Likes

Wasn’t Mika tinkering with a linux version of Truedrive in the early days?

I did, at one point, get a native Linux build of the Simucube 1 Configuration Tool to work. But it was in a virtual machine. And no FFB things were tested.

What is going to be possible in the upcoming release with proton/wine and such things, will already be much better and no need to get a native build to work.

But is it safe to do e.g. a FW Update using wine and hidraw?

I have not tried yet as I have a multiboot. It’s quite an expensive hardware to become ‘adventurous’… :slight_smile:

Exactly :wink:

Especially, since I have a SC1 and there are no replacement parts anymore.

I’m preparing a patch to systemd to remove the deadzone on the devices. One question to the Simucube 2 users: do these devices also exhibit 8 analogue axes like the Simucube 1, or is it different?
How many axes should be addressed? Only the steering axis? (which is axis 0)
To find out, run e.g.:

evdev-joystick --showcal /dev/input/by-id/usb-Granite_Devices_SimuCUBE_0123456789-event-joystick

That’ll give something like this:

Supported Absolute axes:
  Absolute axis 0x00 (0) (X Axis) (value: 0, min: 0, max: 65535, flatness: 0 (=0.00%), fuzz: 0)
  Absolute axis 0x01 (1) (Y Axis) (value: 0, min: 0, max: 65535, flatness: 4095 (=6.25%), fuzz: 255)
  Absolute axis 0x02 (2) (Z Axis) (value: 0, min: 0, max: 65535, flatness: 4095 (=6.25%), fuzz: 255)
  Absolute axis 0x03 (3) (X Rate Axis) (value: 0, min: 0, max: 65535, flatness: 4095 (=6.25%), fuzz: 255)
  Absolute axis 0x04 (4) (Y Rate Axis) (value: 0, min: 0, max: 65535, flatness: 4095 (=6.25%), fuzz: 255)
  Absolute axis 0x05 (5) (Z Rate Axis) (value: 0, min: 0, max: 65535, flatness: 4095 (=6.25%), fuzz: 255)
  Absolute axis 0x06 (6) (Throttle) (value: 0, min: 0, max: 65535, flatness: 4095 (=6.25%), fuzz: 255)
  Absolute axis 0x07 (7) (Rudder) (value: 0, min: 0, max: 65535, flatness: 4095 (=6.25%), fuzz: 255)

I think for the Simucube 1 it’ll make sense to set the deadzone to 0 for all axes, since it supports analogue input via the X11 upper/lower connectors.

How is are the wireless wheels handled? For the new version, I think there are analogue inputs as well, are these additional axes in the Simucube or are they added as an additional device?

The interface is exactly the same in both Simucube devices.

btw, that patch for wine was merged, so for the next Proton Experimental, it should be included.
And of course Proton-7.0-6 or whatever the next stable Proton version will be.

Furthermore, for systemd 253 or later, setting the deadzones should not be required anymore. They merged my patch to hwdb for that:

I have added the definitions in my local systemd-hwdb and it indeed removed a small deadzone I had, thanks!

Cannot edit the main post, but if you cannot open the online profile on the simucube padock software, you need to import the .exe from the wineprefix you used on the above tuto, and also set the steam simucube entre to use proton in compatibility mode.