Support us on Patreon to keep GamingOnLinux alive. This ensures all of our main content remains free for everyone. Just good, fresh content! Alternatively, you can donate through PayPal. You can also buy games using our partner links for GOG and Humble Store.
Installing a driver from GitHub (to try using a Fanatec DD1 racing wheel)
Page: 1/2»
  Go to:
Pompesdesky Dec 22, 2023
Hello,

I've borrowed a Fanatec Podium DD1 wheel and am trying to make it work.

First I've managed to install Oversteer by following the Build and Install instructions found at https://github.com/berarma/oversteer , that one is quite clear and straightforward.

However to get the wheel to work I need to install the Fanatec driver and here the instructions found at https://github.com/gotzl/hid-fanatecff are quite cryptic to me and I didn't succeed to do anything so far.

Would someone be able to explain in layman's terms how I should proceed to install those drivers ? I've been using Linux for around 7 years now but I must say that GitHub often puzzles me. Sometimes there's a handy file to download that does all the job by itself (like a Windows driver ), sometimes you need to go the Terminal route but there are clear instructions and often it is assumed that you know everything about compiling things in Linux and you should be able to work it out. This is where I'm getting lost.

Any simple tips would be much appreciated :)
whizse Dec 23, 2023
There's no easy way I'm afraid, aside from using a distro that's already shipping the driver. Arch in this case.

Anyhow to build the driver:

You need to either check out the code with git (through the command line), or, possibly easier in your case, download the zip of the source file: click the green "Code" button, select "Download ZIP".

Since you're using Mint, I think installing the "dkms" package would install everything that's neede to compile a kernel module. (hid-fanatecff does not use dkms for some reason, but you need the same dependencies).

Extract the .zip archive, navigate to the directory with a terminal, and follow the instructions in the readme:

make
sudo make install

Hopefully things will work at this point, otherwise you need to read error messages, google, or ask for help....
Pompesdesky Dec 24, 2023
Thanks whizse for your answer.

Unfortunately following your advice I ran into some errors (see below). I've tried checking the web for these but there's nothing I can comprehend

I think I'll wait a couple more years before checking again if using a Fanatec wheel is a viable option, maybe some day they will notice there are potential customers and start supporting their products on Linux...

:: Compiling Fanatec kernel module
========================================
make -C /lib/modules/`uname -r`/build M=$PWD
make[1]: Entering directory '/usr/src/linux-headers-5.15.0-91-generic'
CC [M] /home/pedro/Téléchargements/hid-fanatecff-next/hid-ftecff.o
/home/pedro/Téléchargements/hid-fanatecff-next/hid-ftecff.c: In function ‘ftec_set_display’:
/home/pedro/Téléchargements/hid-fanatecff-next/hid-ftecff.c:375:9: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement]
375 | int bufIndex = 0;
| ^~~
/home/pedro/Téléchargements/hid-fanatecff-next/hid-ftecff.c:377:9: error: ‘for’ loop initial declarations are only allowed in C99 or C11 mode
377 | for(int valueIndex = 4; valueIndex <= 6 && bufIndex < count; valueIndex++) {
| ^~~
/home/pedro/Téléchargements/hid-fanatecff-next/hid-ftecff.c:377:9: note: use option ‘-std=c99’, ‘-std=gnu99’, ‘-std=c11’ or ‘-std=gnu11’ to compile your code
make[2]: *** [scripts/Makefile.build:297: /home/pedro/Téléchargements/hid-fanatecff-next/hid-ftecff.o] Error 1
make[1]: *** [Makefile:1909: /home/pedro/Téléchargements/hid-fanatecff-next] Error 2
make[1]: Leaving directory '/usr/src/linux-headers-5.15.0-91-generic'
make: *** [Makefile:8: default] Error 2
pedro@xxxxx:~/Téléchargements/hid-fanatecff-next$ sudo make install
[sudo] password for pedro:
-e
:: Installing Fanatec kernel module/udev rule
=====================================================
cp: cannot stat 'hid-fanatec.ko': No such file or directory
make: *** [Makefile:18: install] Error 1
pedro@xxxxx:~/Téléchargements/hid-fanatecff-next$
pedro@xxxxx:~/Téléchargements/hid-fanatecff-next$
BlackBloodRum Dec 25, 2023
Quoting: PompesdeskyThanks whizse for your answer.

Unfortunately following your advice I ran into some errors (see below). I've tried checking the web for these but there's nothing I can comprehend

I think I'll wait a couple more years before checking again if using a Fanatec wheel is a viable option, maybe some day they will notice there are potential customers and start supporting their products on Linux...

:: Compiling Fanatec kernel module
========================================
make -C /lib/modules/`uname -r`/build M=$PWD
make[1]: Entering directory '/usr/src/linux-headers-5.15.0-91-generic'
CC [M] /home/pedro/Téléchargements/hid-fanatecff-next/hid-ftecff.o
/home/pedro/Téléchargements/hid-fanatecff-next/hid-ftecff.c: In function ‘ftec_set_display’:
/home/pedro/Téléchargements/hid-fanatecff-next/hid-ftecff.c:375:9: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement]
375 | int bufIndex = 0;
| ^~~
/home/pedro/Téléchargements/hid-fanatecff-next/hid-ftecff.c:377:9: error: ‘for’ loop initial declarations are only allowed in C99 or C11 mode
377 | for(int valueIndex = 4; valueIndex <= 6 && bufIndex < count; valueIndex++) {
| ^~~
/home/pedro/Téléchargements/hid-fanatecff-next/hid-ftecff.c:377:9: note: use option ‘-std=c99’, ‘-std=gnu99’, ‘-std=c11’ or ‘-std=gnu11’ to compile your code
make[2]: *** [scripts/Makefile.build:297: /home/pedro/Téléchargements/hid-fanatecff-next/hid-ftecff.o] Error 1
make[1]: *** [Makefile:1909: /home/pedro/Téléchargements/hid-fanatecff-next] Error 2
make[1]: Leaving directory '/usr/src/linux-headers-5.15.0-91-generic'
make: *** [Makefile:8: default] Error 2
pedro@xxxxx:~/Téléchargements/hid-fanatecff-next$ sudo make install
[sudo] password for pedro:
-e
:: Installing Fanatec kernel module/udev rule
=====================================================
cp: cannot stat 'hid-fanatec.ko': No such file or directory
make: *** [Makefile:18: install] Error 1
pedro@xxxxx:~/Téléchargements/hid-fanatecff-next$
pedro@xxxxx:~/Téléchargements/hid-fanatecff-next$

Couple of things here, you've tried to run make install after a build error - this is doomed to fail in any case. Before trying make install, verify the module is compiled.

To rule out the code, I tried it on my system:
Quotehid-fanatecff % make

:: Compiling Fanatec kernel module
========================================
make -C /lib/modules/`uname -r`/build M=$PWD
make[1]: Entering directory '/usr/src/linux-6.6.7-gentoo'
warning: the compiler differs from the one used to build the kernel
The kernel was built by: x86_64-pc-linux-gnu-gcc (Gentoo 13.2.1_p20230826 p7) 13.2.1 20230826
You are using: gcc (Gentoo 13.2.1_p20230826 p7) 13.2.1 20230826
CC [M] /home/(user)/hid-fanatecff/hid-ftec.o
CC [M] /home/(user)/hid-fanatecff/hid-ftecff.o
LD [M] /home/(user)/hid-fanatecff/hid-fanatec.o
MODPOST /home/(user)/hid-fanatecff/Module.symvers
CC [M] /home/(user)/hid-fanatecff/hid-fanatec.mod.o
LD [M] /home/(user)/hid-fanatecff/hid-fanatec.ko
make[1]: Leaving directory '/usr/src/linux-6.6.7-gentoo'

So, we know the code can compile! This is the type of output you should expect[1], if it compiles successfully.

The error you're getting is quite odd, the system should be setting it by default. Try recompiling with:
Quote% make CFLAGS='-std=c11'

Only proceed to make install if you get a successful build as shown above.

[1] Minus the compiler differs warning... that's my fault for not rebuilding my kernel after updating gcc (oops!)

Last edited by BlackBloodRum on 25 December 2023 at 12:51 am UTC
Pompesdesky Dec 25, 2023
Thanks BlackBloodRum for taking the time to check. Unfortunately no luck either using make CFLAGS='-std=c11' which gives me the below output.

I've tried with " instead of ', without any quotes, I've tried with c99, with gnu11, always getting the same.

------

pedro@xxxxx:~/Téléchargements/hid-fanatecff-next$ make CFLAGS='-std=c11'
-e
:: Compiling Fanatec kernel module
========================================
make -C /lib/modules/`uname -r`/build M=$PWD
make[1]: Entering directory '/usr/src/linux-headers-5.15.0-91-generic'
CC [M] /home/pedro/Téléchargements/hid-fanatecff-next/hid-ftecff.o
/home/pedro/Téléchargements/hid-fanatecff-next/hid-ftecff.c: In function ‘ftec_set_display’:
/home/pedro/Téléchargements/hid-fanatecff-next/hid-ftecff.c:375:9: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement]
375 | int bufIndex = 0;
| ^~~
/home/pedro/Téléchargements/hid-fanatecff-next/hid-ftecff.c:377:9: error: ‘for’ loop initial declarations are only allowed in C99 or C11 mode
377 | for(int valueIndex = 4; valueIndex <= 6 && bufIndex < count; valueIndex++) {
| ^~~
/home/pedro/Téléchargements/hid-fanatecff-next/hid-ftecff.c:377:9: note: use option ‘-std=c99’, ‘-std=gnu99’, ‘-std=c11’ or ‘-std=gnu11’ to compile your code
make[2]: *** [scripts/Makefile.build:297: /home/pedro/Téléchargements/hid-fanatecff-next/hid-ftecff.o] Error 1
make[1]: *** [Makefile:1909: /home/pedro/Téléchargements/hid-fanatecff-next] Error 2
make[1]: Leaving directory '/usr/src/linux-headers-5.15.0-91-generic'
make: *** [Makefile:8: default] Error 2
whizse Dec 25, 2023
Quoting: PompesdeskyThanks BlackBloodRum for taking the time to check. Unfortunately no luck either using make CFLAGS='-std=c11' which gives me the below output.

I've tried with " instead of ', without any quotes, I've tried with c99, with gnu11, always getting the same.
Did you run "make clean" before?

You might also want to try posting the error message in a bug report. The maintainer seem to e quite helpful:
https://github.com/gotzl/hid-fanatecff/issues/new

Quoting: Pompesdeskymaybe some day they will notice there are potential customers and start supporting their products on Linux...
Let's just add an "Amen" to this and hope the Gods of FLOSS listen!


Last edited by whizse on 25 December 2023 at 10:37 pm UTC
Pompesdesky Dec 26, 2023
Hadn't run "make clean" but running it now doesn't change the outcome of the make CFLAGS='-std=c11' command.

Thanks again but I'll leave it there this time. That's too much hassle for my taste, especially for a gear I have to give back in a couple of days

Better luck next time
tuubi Dec 26, 2023
Well that's a shame. These Fanatec wheels look pretty sweet.

Just out of interest I tried building on Mint as well and had no trouble at all. I'm running a more recent kernel than you and thus the driver is built on more recent kernel headers, but otherwise the build environment should be clean.
damarrin Dec 26, 2023
There's like a 1% chance it'll help, but you could try putting the build directory in a path that doesn't include accented characters.
BlackBloodRum Dec 26, 2023
That's peculiar that didn't fix it. I think your toolchain is messed up somehow, perhaps re-installing the development tools may help (such as re-installing make, gcc, kernel-headers etc).

Quoting: whizseYou might also want to try posting the error message in a bug report.
This is a toolchain issue, not a bug in the software itself as confirmed by other people being able to build it. Please don't suggest opening bug reports for help requests on any project, most developers would find that annoying. Discussions/Forums/Discord (whatever a particular project prefers) are a better place for support, such as:
https://github.com/gotzl/hid-fanatecff/discussions

It just helps keep bug trackers clear of clutter, as they should be.

(This isn't intended to sound rude or anything like that, just a general observation. )
whizse Dec 26, 2023
Quoting: BlackBloodRumThis is a toolchain issue, not a bug in the software itself as confirmed by other people being able to build it. Please don't suggest opening bug reports for help requests on any project, most developers would find that annoying. Discussions/Forums/Discord (whatever a particular project prefers) are a better place for support, such as:
https://github.com/gotzl/hid-fanatecff/discussions
I did poke around for a forum but I'm blind when it comes to github. I swear they move things around just for me!
While you're here, please consider supporting GamingOnLinux on:

Reward Tiers: Patreon. Plain Donations: PayPal.

This ensures all of our main content remains totally free for everyone! Patreon supporters can also remove all adverts and sponsors! Supporting us helps bring good, fresh content. Without your continued support, we simply could not continue!

You can find even more ways to support us on this dedicated page any time. If you already are, thank you!
Login / Register


Or login with...
Sign in with Steam Sign in with Google
Social logins require cookies to stay logged in.