A downloadable tool for Linux

pyLinuxWheel is a graphical program developed in gtk3 to configure your Logitech Steering Wheel in Linux. Currently it supports the following features:

  • Range: allows you to change the default wheel range.
  • Resistance: set the strength needed to turn the steering wheel.
  • Gain: adjust the overall strength of the force feedback effects.
  • Combine pedals: useful for old games which can do not work with separate accelerator/brake axis.
  • Alternate modes: with this option your wheel can emulate other Logitech models. For example, a G29 steering wheel can emulate a G27 model. Useful only when a game does not support your steering wheel model.
  • Test: you can check the force feedback, buttons and pedals of your steering wheel with pyLinuxWheel.
  • Profiles: create, modify, import and export profiles of your steering wheel settings. You can also get a set of profiles made by us using the premade-profiles.zip file.
  • Auto Adaptive Interface: pyLinuxWheel enables only those options from its interface that are supported for your steering wheel.
  • Automatic installation udev rules: pyLinuxWheel can automatic install or update udev rules for your wheel, so you don't need root permission to change your Logitech driver configuration.
  • Models supported: Driving Force (EX, RX, Pro, GT), G25, G27, G29, G920, Logitech Racing Wheel USB, WingMan Formula (Yellow, GP, Force GP) and MOMO (Force, Racing).
  • AppImage support: you don't need to install pyLinuxWheel, only make it executable, and run thanks to the AppImage support.
  • Deb package: if you use Debian or a Ubuntu based distribution you can install pyLinuxWheel using a deb package. This package has been made using as reference the pyLinuxWheel package created by MX Linux developers.
  • Tested in many distributions: Ubuntu, Debian, OpenSuse, Manjaro, etc.
  • Free software: pyLinuxWheel is published under GPL3 license.
  • Multi language: English, French, Spanish and Turkish translations.
  • Source available: if you don't like use AppImage packages you can download the source from the pyLinuxWheel gitlab repository
Rated 5.0 out of 5 stars
(1 total ratings)
Tagsappimage, DRM Free, logitech, Open Source, steering-wheel
Code licenseGNU General Public License v3.0 (GPL)
Average sessionA few seconds
LanguagesEnglish, Spanish; Castilian, French
LinksSource code

Install instructions

Before running the AppImage, it is necessary to make it executable. You can make it executable using your file manager or from the command line with chmod u+x pyLinuxWheel-v0.6.1-x86_64-glibc_2.27.AppImage.

If you use an old distribution or a new distribution but with a glibc version less than glibc-2.27, you have to download the  pyLinuxWheel-v0.6.1-x86_64-glibc_2.23.AppImage package. Users with a modern distribution (from Ubuntu 18.04 to the last Ubuntu version), that supports glibc_2.27 or newer they should download and use the pyLinuxWheel-v0.6.1-x86_64-glibc_2.27.AppImage package


pyLinuxWheel-v0.6.1-x86_64-glibc_2.27.AppImage 47 MB
pyLinuxWheel-v0.6.1-x86_64-glibc_2.23.AppImage 42 MB
pylinuxwheel_0.6.1.deb 308 kB
premade-profiles.zip 3 kB
pyLinuxWheel-v0.6.0-x86_64-glibc_2.27.AppImage 47 MB
pyLinuxWheel-v0.6.0-x86_64-glibc_2.23.AppImage 42 MB
pylinuxwheel_0.6.0-1.deb 306 kB
pyLinuxWheel-v0.5.2-x86_64-glibc_2.27.AppImage 47 MB
pyLinuxWheel-v0.5.2-x86_64-glibc_2.23.AppImage 42 MB
pyLinuxWheel-v0.5.1-x86_64-glibc_2.27.AppImage 47 MB
pyLinuxWheel-v0.5.1b-x86_64-glibc_2.23.AppImage 42 MB
pyLinuxWheel-v0.4-x86_64.AppImage 53 MB


Log in with itch.io to leave a comment.

I have a Logitech Wingman Formula Force GP wheel and pedal set. When I first got it, it worked on just a couple games. I tried to make it more usable, but I am failing miserably. In Pylinuxwheel, the throttle pedal reads as the clutch, and vice-versa. NEITHER actually works in Supertuxkart, my go-to game for a 4yo. Got any ideas? I'm about to give up and buy a different set of cheap controls, like a Zion-2700. I read somewhere that the red ffgp set was made for xbox, and has different axes.

Hi odintdh (Alberto). I'm trying to use my G27 with the shifter in Grand Prix Legends under Manjaro. The problem I have is that GPL uses an intermediate program (gplshift) to allow that old sim to recognize the H-shifters. As a result, I don't know why, but under Linux, it requires the button "300" to be the first (i.e. the button1) the 301, the second, and so.

I could remap them but in js0 under joystick api instead than as an event* under evdev api, used by most of the support for Logitech wheels under Linux.  Do you think is there something I could do to overcame this problem?  I thought that maybe changing the udev rules, after your program write them, but don't know why, if possible.

Thanks a lot in advance. Marcos

Hi odintdh just installed PyLinuxWheel and the  udev rules by the book did the test and set profile then execute the ffb the wheel just went to 180 degress with no force feed back what am i doing wrong do i ned to install new-lg4ff tried to install that with no luck the kernel i am running is xanmod 5.8.14 on pop OS  1660 TI with ryzen 5 1600 24gb ddr4 mem at 2666mhz 1terabyte hdd.

(1 edit)


To configure your steering wheel you have to set your desired values in the "Wheel" tab. "Test" tab is only to check if your wheel is working properly. Execute button from Test tab is only to test force feedback and it does not activate nor deactivate it. Force feedback support and other features are provided by the kernel driver.

PyLinuxWheel can set values as autocenter (resistance), gain, range, which are provided by the kernel driver and you don't have to install any driver as is included it by default.

new-lg4ff is a more advanced driver than the included in the kernel. Some windows games emulated with proton works better with new-lg4ff as it supports more force feedback effects. So new-lg4ff is a very good driver  and better than default kernel driver, but it is not mandatory to install it to have support for your steering wheel.

(1 edit)

I am using G920 steering wheel with 0.6.1 & glib 2.23 both from ./AppImage or debian package on Ubuntu 16.04. I get the error - 'Unsupported model'. How is it? The documentation says that it is supported.

(2 edits)

Did you let to pyLinuxWheel install the udev rules for your steering wheel?  pyLinuxwheel could show "Unsuported model" message if you don't have the udev rules installed for your wheel or if your kernel is too old to detect and support your model.

pyLinuxWheel install these rules at the begining of the execution but only if you give it permission. Other possibility is execute pyLinuxwheel with sudo.

Check if you have the udev rules properly installed, and check if Linux is detecting you steering wheel (you can use the lsusb command for this).If these two things are ok, but pyLinuxWheel does not work, open an issue in my gitlab page with the output of the pyLinuxWheel and the lsusb command.

On the other hand take in account that Ubuntu 16.04 is an old distribution and therefore with an old kernel. So you can have problems with your steering wheel that with a newer version could be fixed, as you can read for example in articles like this

Hi great app, I tested it for a friend that's new in Linux but after executing the appimage we get

DEBUG:pyLinuxWheel:{'file_name': 'pyLinuxWheel_preferences', 'version': '0.6.0', 'check_udev_rules': True, 'load_last_value': True}
INFO:pyLinuxWheel:Installing logitech wheel rules
ERROR:pyLinuxWheel:HTTP Error 403: Forbidden

And without the udev rules we can't change anything =(


If you can't install the udev rules you can execute pyLinuxWheel with sudo or root to give to pyLinuxWheel the enough privileges to configure Logitech driver.

Also you can manually install the udev rules to avoid use sudo or root to execute pyLinuxWheel.  Download the udev rules from this link 99-logitech-wheel-perms.rules and copy to the rules directory using this command sudo cp 99-logitech-wheel-perms.rules /etc/udev/rules.d/
When you have finished the copy you have to update udev rules with sudo udevadm control --reload-rules && udevadm trigger

If you follow these instructions you will have the udev rules installed and activated, so you will can use pyLinuxWheel without sudo or root.

I could  reproduce your bug so I created a new AppImage (pyLinuxWheel-v0.6.1-x86_64-glibc_2.27.AppImage) and deb ( pylinuxwheel_0.6.1.deb) packages that fix the error.

Excellent, this release worked without any issues, thanks!!

Hi, I tried the 0.6.0-1.deb on Ubuntu 18.04.3 and it detected my G27 correctly. However when I go to the test tab and execute the force feedback test, it gives the following error:

Traceback (most recent call last):
  File "/usr/bin/pyLinuxWheel", line 1083, in on_test_rumble_clicked
  File "/usr/bin/pyLinuxWheel", line 551, in test_rumble
    effect_id = input_device.upload_effect(effect)
  File "/usr/lib/python3/dist-packages/evdev/device.py", line 309, in upload_effect
    data = bytes(buffer(effect)[:])
NameError: name 'buffer' is not defined

Out of curiosity I installed the glibc 2.27 version and it seems to execute the force feedback test correctly.

(1 edit)


just found your app for Debian and tried it. Looks very promising,  but im having little trouble with my wheel - Momo Force feedback - 2 pedals.

In the Test Menu the wheel goes from 0 to 17 degrees and thats it. When pressing throttle  the program shows clutch and when pressing brake, program shows throttle. Both pedals go from 0 to 100 correctly.

Also my wheel is detected as Momo Racing and not as Momo Force.

Full name of the wheel: Logitech 3 MOMO Force Feedback Racing Wheel

Can you pls check the issue.



 Thanks for your comment!

Could you open an issue in my gitlab with the following information:

  • the output of the lsusb command
  • the button clicked number that pyLinuxWheel shows in its Test tab when you push your throttle and brake pedals
  • the output of evtest command

To know how to use  lsusb and evtest to get the information of your steering wheel you can follow this guide from the arch wiki

(2 edits)

thank you very much.

This is a nice app and work fine with debian.

just a little problem, in test page when press brake pedal only go at 99, clutch pedal make same problem 

Update: lost feedback when project cars 2 start


thanks for your comment!

I made a new version to fix the problem with the pedals values (it was an error in how the values are stored and calculated) . Now you can press throttle and clutch pedals and get 100, but depending  on the hardness of the pedals of your steering wheel you may not get the maximum value (100). For example I never get 100 with the brake pedal in my Logitech G29 but I get easy 100 in clutch and throttle pedals.

On the other hand, about your problem with project cars 2. I don't have this game, but I think the force feedback with proton does not work in project cars 2 as there is an issue about force feedback for this game in the proton github. I have project cars 1 and force feedback works properly but keep in mind that PyLinuxWheel is not a driver for Logitech wheels. PyLinuxWheel is only a program to configures the values of the Logitech kernel driver. So the support of your steering wheel in a game with proton depends on proton and the kernel driver. 


now I try project cars because I use this game too.

Another thing, in assetto corsa comeptizione there is same problem then solved with reload after game launch because after game launch lost FFB

Thanks for work

Sorry for my bad English

Hi! Very important and nice project, thank you for this! But will there be a snap package for it?? I just can't seem to ever get these Appimage packages to run :/

Do you mark the excutable bit in the file?


Before to create a new release I have been study how to package PyLinuxWheel with  snap and flatpak. The problem is PyLinuxWheel needs to write in the sys interface to configure the steering wheel.  In flatpak this is not possible due to the sandbox design and with snap, only is possible if I use the classic confinement, but in this mode you need a manual approval to publish in the snapstore. 

So in the end, for this release, I tried to create a more compatible AppImage. If you have a problem executing this new appimage, please, open an issue in my gitlab repository so I can fix it.