Wheel Steering Deadzone

Post Reply
Berniyh
Posts: 107
Joined: 24 Sep 2017 14:11

Wheel Steering Deadzone

#1 Post by Berniyh » 01 Nov 2020 19:21

Hi,

so far I've used ATS and ETS2 under Windows 7 mostly, but in the future I want to run it under Linux.
While it runs mostly fine (just a bit slower than DX11 on Windows), I've run into issues with my steering wheel.

I'm using a Granite Devices SimuCUBE and it's working fine without any deadzone on Windows.
On Linux however I do experience a significant deadzone of about 10% of the total range even if I set the reaction slider for the wheel completely to the left. If I move it to the right, the deadzone is increased.
This deadzone is not inflicted by the device itself as far as I can see (and as I said under Windows it's working fine together with ATS/ETS2) and it also does not seem to come from Linux itself.
To verify that I've used evtest-qt to test the event device and there the X axis is responding without any deadzone.

I've also checked the controls_linux.sii file and modified the _dz variables (changed most of the to 0.0000 for testing purposes), but that didn't help either and also does not seem to be necessary, since they are not 0 on my Windows profile.

Any ideas to get rid of that? Right now I have a pretty huge deadzone of about 90° left and right, which makes driving rather tedious, tbh.

Edit: I'm sure the event interface is used and not joydev, since I blacklisted the joydev module as it is causing problems when running X-Plane 11. I also checked it's not loaded, hence evdev must be used.
Berniyh
Posts: 107
Joined: 24 Sep 2017 14:11

Re: Wheel Steering Deadzone

#2 Post by Berniyh » 01 Nov 2020 19:53

Nevermind, I got it worked out. It was the evdev API after all. I don't quite understand why evtest-qt did show different results than what was happening in the game, but so be it.
Here is how to fix it:
1. install linuxconsole (which contains a program named evdev-joystick)
2. get a list of devices using (run as normal user)

Code: Select all

evdev-joystick --l
3. set the deadzone for the device (axis 0 is my steering axis)

Code: Select all

evdev-joystick --evdev /some/path/output/by/the/previous/command --axis 0 --deadzone 0
4. proceed with other axis if necessary. Can also set for all axis if you just omit the '--axis 0' part
Berniyh
Posts: 107
Joined: 24 Sep 2017 14:11

Re: Wheel Steering Deadzone

#3 Post by Berniyh » 11 Nov 2020 21:41

In case anybody is wondering how to make that permanent …
There are a couple of suggestions floating around suggesting to use udev rules combined with some shell scripts making use of the command above, which in my opinion isn't really optimal.
It's better here to use hwdb provided by systemd.
Just create a file /etc/udev/hwdb.d/61-evdev-local.hwdb containing:

Code: Select all

evdev:name:*Simucube*:*
EVDEV_ABS_00=:::0:0
The *Simucube* part has to match the name (as output e.g. by dmesg) for the controller, otherwise it won't properly apply the rule. It's possible to use the IDs as well, but I didn't yet fully understand the syntax there yet.
_ABS defines an absolute axis and _00 is axis 0, _01 would be axis 1.
The entries afterwards are MIN:MAX:STEP:FUZZ:DEADZONE where you can leave out the settings that you do not want to adjust (meaning I set FUZZ and DEADZONE here).
If you want to do a calibration, like I did for my pedals, you can also do it here, e.g.:

Code: Select all

evdev:name:*HE SIM PEDALS*:*
 EVDEV_ABS_00=480:1300::0:0
 EVDEV_ABS_01=100:1800::0:0
 EVDEV_ABS_02=300:1500::0:0
This sets the MIN and MAX boundaries for my throttle, brake and clutch.
STEP is more of a thing for touchpads, so it's usually safe to ignore it.

Afterwards update the hwdb:

Code: Select all

systemd-hwdb update
Maybe that helps someone at some point. ;)
Post Reply

Return to “Linux Beta Testing”

Who is online

Users browsing this forum: No registered users and 5 guests