Linux & Logitech G27 steering wheel (plus Steam Proton)

Updated: January 19, 2024

In the last year, even since I got myself the Slimbook Titan laptop, I wrote about a dozen games-related articles, showing how to install, configure and run various technically Windows-only game titles using the Steam Proton compatibility layer. The results are surprisingly good. In fact, my 2023 report has only success after success in it. A huge, happy milestone.

Recently, only a few weeks ago, I also published a guide on how to get the soft-physics car simulator BeamNG.drive to run in Linux using, you guessed it, Steam and Proton. Once again, it worked really well. But I only tested in-game driving using the keyboard and mouse. I promised I would test playability with a steering wheel set, so here we are. Not only will I attempt to drive with my wheel-and-pedals Logitech G27 unit, I will do that for a Proton title, too. Let's see what gives.

Teaser

Connect, check

I wanted to see whether the G27 would work without any manual tweaks. This is the main thing. If I want to migrate away from Windows, the functionality should be seamless. Easy and transparent. That means no command-line wizardry, no manual compiling and similar. The steering wheel should be a plug 'n' play affair.

Well, I did that. I connected the wheel, and true enough, it did its initialization, which means spin all the way left then right, and finally center itself. Now, the centering depends on many factors, but even in Windows machines, depending on your driver and such, the wheel may not always dead-center, it may actually tilt a few degrees to one side (without harming the turning symmetry, mind).

In Linux, the exact same thing happened. Good. Hint, Linux, I mean Kubuntu 22.04, which powers the Titan machine. I also opened the command line, to see what the system says about the hardware detection. I promised no command line, and indeed, you don't need this step. Purely informative:

cat /proc/bus/input/devices

...

I: Bus=0003 Vendor=046d Product=c29b Version=0111
N: Name="G27 Racing Wheel"
P: Phys=usb-0000:06:00.3-2.2/input0
S: Sysfs=/devices/pci0000:00/0000:00:08.1/0000:06:00.3/usb1/1-2/1-2.2/
1-2.2:1.0/0003:046D:C29B.0005/input/input20
U: Uniq=
H: Handlers=event17 js0
B: PROP=0
B: EV=20001b
B: KEY=7f 0 0 0 0 0 0 ffff00000000 0 0 0 0
B: ABS=30027
B: MSC=10
B: FF=300040000 0

Out of the box. Groovy. On to the next step, then.

BeamNG.drive testing

I opened the game, and it auto-detected the hardware. Great. It also auto-assigned the keys, including the X,Y axes, plus the paddle shifters. Very neat. But then, this isn't enough. You also want to see whether the set is correctly calibrated. I wrote an article on this topic, too.

Steering wheel auto-detected

You can see the games sees WINE keyboard and mouse. The Nvidia graphics are correctly detected, too.

I launched a driving scenario and started playing. I did have to tweak a few things, mostly the throttle and braking curves for the pedals. But then, I had to spend quite a bit of time sorting out the steering wheel response. For some reason, the force feedback default strength is not like in Windows.

This required some trial 'n' error until I got the wheel to behave like it should. But I wasn't able to solve the "weak" resistance when turning. But wait! Now, this sounds like a problem, but then, here's what I have in a typical Windows 10 machine (without using the Logitech software):

If I connect the wheel after logging into Windows - not at boot time - the response strength is 2X.

In contrast, Linux, the following happens:

In both cases, the G27 set behaves in a slightly erratic manner, and the results depend on what you do. This means the "issue" isn't purely in Linux or Steam or Proton, but there's also a hardware element. In Windows, you can solve this by installing the actual program to manage the set. In Linux, there's no official tool, but there's a bunch of free unofficial utilities you can download and use for the same purpose. However, in this article, I want to avoid any nerdy solutions, on purpose, thus no names. We will explore those in the future.

Additional steering & FFB tweaks

I spent a bit more time fiddling with the force feedback options, but nothing really made a difference. The wheel would not become stiffer and harder to turn. Changing the turn rate and the response curve did help, but not how much the wheel resists the turning action. Fully playable, but feels a bit mellow. It's like driving a car with a 100% electronic steering, and with no real sensation of what your wheels are doing.

Wheel settings

Wheel settings, FFB

Results

For me, the "optimal" setup was a 720-degree steering angle, which does not map 1:1 with what the wheel does, plus a pretty significant end deadzone. However, this configuration gives the most realistic behavior given the very weak force feedback. Once I find a simple and elegant way of making the wheel respond accurately, I may change these values. That aside, the G27 set worked really well. You can drive and drive and crash and enjoy the best of BeamNG.drive (and possibly other games, too).

Steering wheel works 1

Steering wheel works 2

Conclusion

This would be the end of my first article on how to use the G27 set in Linux. The early results are quite good. One, the steering wheel is auto-detected by the system. Two, BeamNG.drive, running under Steam Proton, also correctly identified and initialized the unit. Three, I was able to configure most of the parameters to my liking.

I still need to figure out how to make the FFB element behave correctly. That should be another article. I'd also like to configure my machine to initialize the wheel and pedals on boot, and make sure that the behavior in all usage scenarios (boot, on login, after wake) is identical. But for now, you have it. The G27 set works. You can play, you can do fun stuff. We didn't do any nerdy hax0ring, either. Solid, pretty solid. OK, enough for today, see you around, my speed-loving nerds.

Cheers.