Git Product home page Git Product logo

hid-fanatecff's Introduction

Linux kernel driver that aims to add support for FANATEC devices

Known devices

The Wheel Base should be set to 'PC mode' for the driver to be selected (CSL Elite and CSL DD: red LED)

  • 0EB7:0E03 FANATEC CSL Elite Wheel Base
  • 0EB7:0005 FANATEC CSL Elite Wheel Base PS4
  • 0EB7:0020 FANATEC CSL DD / DD Pro / ClubSport DD Wheel Base
  • 0EB7:6204 FANATEC CSL Elite Pedals
  • (experimental: 0EB7:0001 FANATEC ClubSport Wheel Base V2)
  • (experimental: 0EB7:0004 FANATEC ClubSport Wheel Base V2.5)
  • (experimental: 0EB7:183b FANATEC ClubSport Pedals V3)
  • (experimental: 0EB7:0006 Podium Wheel Base DD1)
  • (experimental: 0EB7:0007 Podium Wheel Base DD2)
  • (experimental: 0EB7:0011 CSR Elite/Forza Motorsport Wheel Base)

Installation

Compile and install the driver

make
sudo make install

Reload the new udev rules, depending on the Linux distribution, without rebooting:

sudo udevadm control --reload-rules && sudo udevadm trigger

This installs the kernel module hid-fanatec.ko in the hid dir of the running kernel and puts fanatec.rules into /etc/udev/rules.d. These rules allows access to the device for users group and sets deadzone/fuzz to 0 so that any wheel input is detected immediately. The driver should get loaded automatically when the wheel is plugged.

Packaging

If you don't want to compile and install manually, following is a list of known packaged distributions.

System Package
AUR hid-fanatecff-dkms

Status

General

Support for a bunch of effects, mostly copy-pasted from new-lg4ff. Currently not properly supported effects: FF_FRICTION, FF_INERTIA (note that most games don't use these effects anyways).

Note: With Proton 7/8, in some games the wheel is not detected properly when starting it for the first time (ie, when a new proton-prefix is created). The current workaround is to first start the game with Proton 6, and then switch to a later one. (See also #67)

FFB in specific Games

Games that are expected to work (tested by me and others more or less regularly):

  • AC / ACC (*)
  • Automobilista 2
  • DiRT 4
  • DiRT Rally 2 / WRC (**)
  • F1 22/23 (***)
  • rFactor2
  • Rennsport
  • RRRE

Games that don't work properly:

  • F1 2020/2021 (#22)
  • BeamNG.drive (proton) (#23)

(* input devices can get mixed-up in ACC; best have only the wheel-base connected and always use the same USB-slot)
(** uses FF_FRICTION)
(*** unsure if all effects are present)

Device specific

Advanced functions of wheels/bases are available via sysfs. Base sysfs path:

/sys/module/hid_fanatec/drivers/hid:fanatec/0003:0EB7:0005.*/

Common

  • set/get range: echo number in degrees to range
  • get id of mounted wheel: wheel_id
  • tuning menu (experimental): tuning_menu/*
    • get/set tuning menu slot: echo number into SLOT
    • values get/set: BLI DPR DRI FEI FF FOR SEN SHO SPR ... (files depend on wheel-base)
    • reset all tuning sets by echoing anything into RESET

CSL Elite Base

  • RPM LEDs: leds/0003:0EB7:0005.*::RPMx/brightness (x from 1 to 9)

ClubSport Forumla1 wheel

  • RPM LEDs (combined with base)
  • display: display (negative value turns display off)

CSL Elite pedals

  • loadcell adjustment: load (no readback yet)

ClubSport Pedals V3

  • pedal vibration: rumble
    • 0xFFFF00 -> both pedals should rumble
    • 0xFF0000 -> throttle pedal rumble
    • 0xFF00 -> break pedal rumble
    • 0 -> stop rumble

To access advanced functions from user space please see the hid-fanatecff-tools project which also aims to support LED/Display access from games.

Planned

  • support more effects
  • support more devices / advances functions of devices
  • support different wheels-rims and their quirks
  • packaging for more distros

Contact

If you have an issue, feature request or a general question, feel free to open a ticket on github.

Disclaimer

I am not associated with Endor AG/Fanatec. I take absolutly no responsibility for any malfunction of this driver and their consequences. If your device breaks or your hands get ripped off I'm sorry, though. ;)

hid-fanatecff's People

Contributors

coolbho3k avatar gotzl avatar kozr avatar mcoffin avatar melroy89 avatar mkoreneff avatar zakmckrack3n avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

hid-fanatecff's Issues

`AE SPORTS WRC` crashes when fanatec base connected

Game: https://store.steampowered.com/app/1849250/EA_SPORTS_WRC/
ProtonDB: https://www.protondb.com/app/1849250

This https://www.protondb.com/app/1849250#cl6HSkl-qE comment says that proton GE Proton 8-20 and GE Proton 8-21 works.
What I found personally, that GE 8-20, 8-21, 8-25 does not work for me.

If fanatec base (CSL Elite) connected and game started, then game will crash at the end of first video when AE logo displayed.
If I run game with NO base connected, then game will start and will be playable with keyboard.
If I connect base in game menu, or in game - game will crash.

From other comments (from protondb), looks like Logitech wheels does not have this issue.

While testing I deleted wine (proton) prefix few times and now I get You can no longer authenticate on new devices It means, with new prefix game things that he is installed on new device. And now I reached 5 new devices per day limit.

Custom Force Feedback with Clubsport Wheelbase V2.5 from Ubuntu 18

Hi,

I want to achieve custom force feedback with my Fanatec Clubsport Wheelbase V2.5 from Ubuntu 18. Something similar as is done in the "Joystick" package's ffcfstress script.
https://github.com/flosse/linuxconsole/blob/master/utils/ffcfstress.c

I tried running this with my Fanatec wheel plugged in, but get

ERROR: device (or driver) has no constant force feedback support

Running fftest also gives me unsupported functions only:

Force feedback test program.
HOLD FIRMLY YOUR WHEEL OR JOYSTICK TO PREVENT DAMAGES

Device /dev/input/event19 opened
Features:
  * Absolute axes: X, Y, Z, RX, RY, RZ, Throttle, Rudder, Hat 0 X, Hat 0 Y, 
    [FF 00 03 00 00 00 00 00 ]
  * Relative axes: 
    [00 00 ]
  * Force feedback effects types: 
    Force feedback periodic effects: 
    [00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ]
  * Number of simultaneous effects: 0

Uploading effect #0 (Periodic sinusoidal) ... Error:: Function not implemented
Uploading effect #1 (Constant) ... Error: Function not implemented
Uploading effect #2 (Spring) ... Error: Function not implemented
Uploading effect #3 (Damper) ... Error: Function not implemented
Uploading effect #4 (Strong rumble, with heavy motor) ... Error: Function not implemented
Uploading effect #5 (Weak rumble, with light motor) ... Error: Function not implemented
Enter effect number, -1 to exit

I have the feeling the driver implemented in this repo could achieve this. However, I am not sure how to use it. Do ( or @mcoffin ) you have an advice for me on how to use it from a C Code application?

Thanks!

EDIT

Here are the steps that worked for me in the end:
I can now run the "Joystick" package's ffcfstress and fftest scripts. (get the expected event from your wheel using cat /proc/bus/input/devices | less - search for the Handlers with (usually) js0 for your device - this was always all the way at the bottom for me).

In summary, to build, sign the module (following https://ubuntu.com/blog/how-to-sign-things-for-secure-boot ) and thus use the driver in Secure Mode, I did:

  • Build driver (I was on the next branch)
    make
  • For signing the module, install mokutil
    sudo apt-get install mokutil
  • Create the config (I did this in the directory of this repository)
    touch openssl.cnf
  • edit this file and paste
    HOME                    = .
    [ req ]
    distinguished_name      = req_distinguished_name
    x509_extensions         = v3
    string_mask             = utf8only
    prompt                  = no
    
    [ req_distinguished_name ]
    countryName             = CA
    stateOrProvinceName     = Quebec
    localityName            = Montreal
    0.organizationName      = cyphermox
    commonName              = Secure Boot Signing
    emailAddress            = [email protected]
    
    [ v3 ]
    subjectKeyIdentifier    = hash
    authorityKeyIdentifier  = keyid:always,issuer
    basicConstraints        = critical,CA:FALSE
    extendedKeyUsage        = codeSigning,1.3.6.1.4.1.311.10.3.6,1.3.6.1.4.1.2312.16.1.2
    nsComment               = "OpenSSL Generated Certificate"
    
  • changed the section "req_distinguished_name" with my details. As it threw an error, I also removed the line
    RANDFILE = $ENV::HOME/.rnd(from the linked instructions)
  • Created keys, running
    openssl req -config ./openssl.cnf \
            -new -x509 -newkey rsa:2048 \
            -nodes -days 36500 -outform DER \
            -keyout "MOK.priv" \
            -out "MOK.der"
    
  • Enroll the key (with a simple key that will be asked a minute later)
    sudo mokutil --import MOK.der
  • reboot - blue screen comes up (output was buggy for me, but I was still able to navigate the menu using the up/down keys): Random key to enter -> "Enroll MOK" -> "Continue" -> "Yes" -> enter simple key from before -> Reboot
  • Being logged in again, sign the module
    • Optionally run:
      hexdump -Cv hid-fanatec.ko | tail -n 5
    • Sign:
      kmodsign sha512 MOK.priv MOK.der hid-fanatec.ko
    • Check signature with above hexdump command from above, see how the module now as a "signature appended"
  • Install the module
    sudo make install
  • Replug wheel
  • Check Wheel is in PC Mode ("0eb7:0004") - using lsusb:
    Bus 001 Device 005: ID 0eb7:0004 Endor AG
  • check the driver got loaded using dmesg - look for lines similar to
    [  795.344947] usb 1-1: USB disconnect, device number 5
    [  800.486152] usb 1-1: new full-speed USB device number 6 using xhci_hcd
    [  800.635656] usb 1-1: New USB device found, idVendor=0eb7, idProduct=0004, bcdDevice= 6.28
    [  800.635662] usb 1-1: New USB device strings: Mfr=1, Product=3, SerialNumber=0
    [  800.635666] usb 1-1: Product: FANATEC ClubSport Wheel Base V2.5
    [  800.635669] usb 1-1: Manufacturer: Fanatec
    [  800.638954] /home/user/Downloads/hid-fanatecff/hid-ftec.c: ftec_probe: ifnum 0
    [  800.639290] hid_map_usage: 34 callbacks suppressed
    [  800.639292] Fanatec FANATEC ClubSport Wheel Base V2.5: Invalid code 768 type 1
    [  800.639294] Fanatec FANATEC ClubSport Wheel Base V2.5: Invalid code 769 type 1
    [  800.639296] Fanatec FANATEC ClubSport Wheel Base V2.5: Invalid code 770 type 1
    [  800.639298] Fanatec FANATEC ClubSport Wheel Base V2.5: Invalid code 771 type 1
    [  800.639299] Fanatec FANATEC ClubSport Wheel Base V2.5: Invalid code 772 type 1
    [  800.639301] Fanatec FANATEC ClubSport Wheel Base V2.5: Invalid code 773 type 1
    [  800.639303] Fanatec FANATEC ClubSport Wheel Base V2.5: Invalid code 774 type 1
    [  800.639305] Fanatec FANATEC ClubSport Wheel Base V2.5: Invalid code 775 type 1
    [  800.639306] Fanatec FANATEC ClubSport Wheel Base V2.5: Invalid code 776 type 1
    [  800.639308] Fanatec FANATEC ClubSport Wheel Base V2.5: Invalid code 777 type 1
    [  800.639465] input: Fanatec FANATEC ClubSport Wheel Base V2.5 as /devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.0/0003:0EB7:0004.0004/input/input26
    [  800.640129] ftec_csl_elite 0003:0EB7:0004.0004: input,hiddev0,hidraw1: USB HID v1.11 Joystick [Fanatec FANATEC ClubSport Wheel Base V2.5] on usb-0000:00:14.0-1/input0
    [  800.640137] /home/user/Downloads/hid-fanatecff/hid-ftec.c:  ... 1 1 1 56
               -128 127 -128 127
    
    [  800.640140] /home/user/Downloads/hid-fanatecff/hid-ftecff.c:  ... setting FF bits
    [  800.640145] /home/user/Downloads/hid-fanatecff/hid-ftecff.c: setting range to 900
    [  800.640640] ftec_csl_elite 0003:0EB7:0004.0004: Hires timer: period = 2 ms
    
  • (no more hid-generic - as I got before - see comments below.)

fanatec csl dd + csl pedal support

hi,
i've got the ready to race bundle csl dd + p1 v2 wheel + normal pedals.
i installed oversteer for testing and ffb seems to work, steering recognises and all buttons work. Great work so far!
(i wanted to test it ingame but raceroom doesen't even start and f1 23 crashes after i power on the wheel).

but the pedals are not working correct. noticed when pushed, late and only sometimes, but that's it. there is no constant screening of it.

i'm offering my help with it ofc. even a discord-call. i'm sure i can track the usb traffic with usbmon or something and share it. it's your call.
cheers

next branch fails to compile due to unused variables in GCC >= 10

It seems that some code was commented out that relies on some other variables, that are consequently no longer used:

hid-fanatecff/hid-ftecff.c

Lines 930 to 935 in f4b80a3

// if (usbhid->outhead != usbhid->outtail) {
// current_period = timer_msecs;
// timer_msecs *= 2;
// hid_info(drv_data->hid, "Commands stacking up, increasing timer period to %d ms.", timer_msecs);
// return current_period;
// }

I've tested GCC 10 and 11, and both appear to set -Werror=unused-variable by default, so it won't compile.

If this isn't just a temporary change, this can be fixed by removing lines:

struct usbhid_device *usbhid = drv_data->hid->driver_data;
and
int current_period;

Or workaround by not treating it as an error with something like:
make "CFLAGS_MODULE=-Wno-error=unused-variable"

I'm happy to open a PR if needed.

New release?

I'm wondering, we are on this next branch for about 3 years? What about creating a new release :)?

The new release doesn't need to be 'perfect', it will never be "perfect" but always an ongoing journey. Software development always is like that.

Anyhow, I hope you will just merge the next branch into the master branch. Switch the default branch, and create a tagged/release version in GitHub. This helps you maybe mentally but also it shows the commitment and creating a new release shows activity of the project for the outside world.

And continue creating feature branches or if you wish a develop branch. But I think just a master/main branch should be sufficient.

Test it with the Fanatec CSL DD with compatibility mode

Hi,

first of all kudos for starting that here.
Is a shining light to eventually play the native Codemasters sims with a Fanatec wheel on Linux.

Now that I have a CSL DD, I'd like to get that running on Linux.
First with compatibility mode; then later natively.

However, I have no experience in writing drivers.
If I can assist in any way, let me know.

VG Brody

Unable to send strings like " 1 ", " 2 ", " N ", " R ", "91" to the driver

I've been messing around with the fanatec led python file to do some stuff with the gearing and to my dismay I found that there's several issues at foot.

For one I cannot center the gear on the LED display and it will instead shows 00X numbers and neutral (N) as well as reverse (R) cannot be sent. Whenever there's a 9 to be displayed, it will also not be sent to the display and I will instead see "X X" or "XX " or "X " or something in that vein (where X are numbers). As an alternative I can use 0, but similarly I can also not send a -1 to the driver.

The thing I was working on was displaying gear switches as well as actual speed. I got something implemented, but I'm kinda fighting with this bug.

Try Earlier Commit - 9525d77

How can I try an earlier commit?

I want to try again commit: 9525d77

As I have the feeling something is missing in the forcefeedback, but not sure what it is.

Support for Fanatec CSR Wheel

Hello,
I would like to get support for the CSR Wheel (silver plate), not the CSR Elite (black plate). The Button layout on the wheel is identical, but the motor and everything else is different.
Currently dmesg shows:
[ 2381.152929] usb 1-1.2: New USB device found, idVendor=0eb7, idProduct=0011, bcdDevice=12.22 [ 2381.152932] usb 1-1.2: New USB device strings: Mfr=1, Product=3, SerialNumber=0 [ 2381.154988] input: HID 0eb7:0011 as /devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.2/1-1.2:1.0/0003:0EB7:0011.0007/input/input26 [ 2381.155280] ftec_csl_elite 0003:0EB7:0011.0007: input,hidraw0: USB HID v1.11 Joystick [HID 0eb7:0011] on usb-0000:00:1a.0-1.2/input0 [ 2381.155479] ftec_csl_elite 0003:0EB7:0011.0007: Hires timer: period = 2 ms
jstest-gtk detects the device as a 6 Axes 27 Buttons Joystick, but when I press the buttons nothing happens. The Steering Wheel gets somehow detected, but calibration is not correct. After a calibration is done, the movement is "luck".
Trying to set the wheel up in speed dreams. I get Left Steer = Axis2-0 and Right Steer = Axis 0-0.

Would be great if you could support me getting to the correct driver.

CSL Elite Pedals

Hi, id like to use this with CSL Elite Pedals. Ultimatly i need to read brake and gas values from the pedals. I have a Clubsport-USB-Adapter to connect it to my PC.

The Pedals show up as:

Bus 003 Device 003: ID 0eb7:1a95 Endor AG ClubSport USB Pedal

So i changed the following in the driver:
qdlmcfresh@cf581c3
dmesg output:

[ 2041.931873] input: FANATEC ClubSport USB Pedal as /devices/pci0000:00/0000:00:15.0/0000:03:00.0/usb3/3-2/3-2:1.0/0003:0EB7:1A95.0004/input/input11
[ 2041.932016] ftec_csl_elite 0003:0EB7:1A95.0004: input,hidraw1: USB HID v1.11 Joystick [FANATEC ClubSport USB Pedal] on usb-0000:03:00.0-2/input0
[ 2041.932018] /home/qdl/Bectec/fork_hid_fanatec/hid-ftec.c:  ... 0 1 1 16
               0 255 0 0

[ 2041.932020] ftec_csl_elite 0003:0EB7:1A95.0004: not enough values in HID_OUTPUT_REPORT 0 field 0
[ 2041.932021] ftec_csl_elite 0003:0EB7:1A95.0004: hw init failed
[ 2041.968830] ftec_csl_elite: probe of 0003:0EB7:1A95.0004 failed with error -1

FFB in ACC and others (Proton 7)

Hi,

Using a CSL DD I can only get FFB in AC (the original one) while in ACC, Project Cars 2, Dirt Rally 2.0 and others it doesn't work.
At this point I'm not sure if in ACC it worked and then stopped or if it never worked in the 1st place.
I wanted to see if anyone else has this issue, if there are any known workarounds, and if there's anything I can do to help/troubleshoot.

Thanks!

Compilation errors on NixOS

I'm trying to build this on NixOS and getting the following errors. Is the next branch compiling for others at the moment? Just want to check before I dive into to figuring out the problem:

build flags: SHELL=/nix/store/q1c2flcykgr4wwg5a6h450hxbk4ch589-bash-5.2-p15/bin/bash KVERSION=6.1.65 KDIR=/nix/store/742mzxqii65p20l30bcbjaa49q88qs1m-linux-6.1.65-dev/lib/modules/6.1.65/build MODULEDIR=\$\(out\)

:: Compiling Fanatec kernel module
========================================
make -C /nix/store/742mzxqii65p20l30bcbjaa49q88qs1m-linux-6.1.65-dev/lib/modules/6.1.65/build M=$PWD
  CC [M]  /build/source/hid-ftec.o
  CC [M]  /build/source/hid-ftecff.o
/build/source/hid-ftecff.c: In function 'ftec_set_display':
/build/source/hid-ftecff.c:372:9: warning: ISO C90 forbids mixed declarations and code [8;;https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wdeclaration-after-statement-Wdeclaration-after-statement8;;]
  372 |         int bufIndex = 0;
      |         ^~~
/build/source/hid-ftecff.c: In function 'ftec_init_led':
/build/source/hid-ftecff.c:713:17: error: 'struct ftec_drv_data' has no member named 'led_state'
  713 |         drv_data->led_state = 0;
      |                 ^~
/build/source/hid-ftecff.c:715:25: error: 'struct ftec_drv_data' has no member named 'led'
  715 |                 drv_data->led[j] = NULL;
      |                         ^~
/build/source/hid-ftecff.c:731:39: error: 'ftec_led_get_brightness' undeclared (first use in this function); did you mean 'led_set_brightness'?
  731 |                 led->brightness_get = ftec_led_get_brightness;
      |                                       ^~~~~~~~~~~~~~~~~~~~~~~
      |                                       led_set_brightness
/build/source/hid-ftecff.c:731:39: note: each undeclared identifier is reported only once for each function it appears in
/build/source/hid-ftecff.c:732:39: error: 'ftec_led_set_brightness' undeclared (first use in this function); did you mean 'led_set_brightness'?
  732 |                 led->brightness_set = ftec_led_set_brightness;
      |                                       ^~~~~~~~~~~~~~~~~~~~~~~
      |                                       led_set_brightness
/build/source/hid-ftecff.c:734:25: error: 'struct ftec_drv_data' has no member named 'led'
  734 |                 drv_data->led[j] = led;
      |                         ^~
/build/source/hid-ftecff.c:742:47: error: 'struct ftec_drv_data' has no member named 'led'
  742 |                                 led = drv_data->led[j];
      |                                               ^~
/build/source/hid-ftecff.c:743:41: error: 'struct ftec_drv_data' has no member named 'led'
  743 |                                 drv_data->led[j] = NULL;
      |                                         ^~
/build/source/hid-ftecff.c: At top level:
/build/source/hid-ftecff.c:683:12: warning: 'ftec_init_led' defined but not used [8;;https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wunused-function-Wunused-function8;;]
  683 | static int ftec_init_led(struct hid_device *hid) {
      |            ^~~~~~~~~~~~~
make[2]: *** [/nix/store/742mzxqii65p20l30bcbjaa49q88qs1m-linux-6.1.65-dev/lib/modules/6.1.65/source/scripts/Makefile.build:250: /build/source/hid-ftecff.o] Error 1
make[1]: *** [/nix/store/742mzxqii65p20l30bcbjaa49q88qs1m-linux-6.1.65-dev/lib/modules/6.1.65/source/Makefile:2014: /build/source] Error 2
make: *** [Makefile:8: default] Error 2
error: builder for '/nix/store/d19zllji2zzmrbcqyzfqcgxljhad0zan-hid-fanatecff.drv' failed with exit code 2

Thanks.

make error when module-source path contains white-space

Hi, I am running Ubuntu 22.04.2 in a VM on Windows 10. I was attempting to make a quick dry run on installing the drivers before I do it for real on a workstation running the same with a FANATEC CSL Elite Wheel Base PS4. I cd-ed to the folder with the Makefile and code and issued the make command which resulted in:

-e 
:: Compiling Fanatec kernel module
========================================
make -C /lib/modules/`uname -r`/build M=$PWD
make[1]: Entering directory '/usr/src/linux-headers-6.2.0-39-generic'
make[1]: *** No rule to make target 'Drivers/hid-fanatecff'.  Stop.
make[1]: Leaving directory '/usr/src/linux-headers-6.2.0-39-generic'
make: *** [Makefile:8: default] Error 2

I am running KVERSION 6.2.0-39-generic.

Please advise?

Thanks!
Sean

GT DD Pro support

Thanks for your efforts to bring Fanatec hardware support to Linux.

Can anyone confirm if the new GT DD Pro works with this driver? It seems internally similar to the CSL DD, which was straightforward to add. Hope Fanatec continues to use a common USB data format across their wheel bases.

Beyond FFB support, what can we expect on LED and digital display functions for this wheel?

Please Help

Hello, I happily found your driver for force feedback support. But I just can't get it to work. That's why I need to ask for help from you devs.
Little foreword... I just recently went Linux only, after a few attempts over the last years trying to do so. Since Linux is so much more than windows... I am learny every day something new.

I finaly got the driver package installed after the challenge of installing the missing library usbhid and compiling the module ff-memless.
Currently I am running on 4.19.0-13-amd64 #1 SMP Debian 4.19.160-2 (2020-11-28) x86_64 GNU/Linux.

Whenever I plugin the wheel dmesg tells me:

[12245.933330] usb 4-1.8: new full-speed USB device number 5 using ehci-pci
[12246.043570] usb 4-1.8: New USB device found, idVendor=0eb7, idProduct=0e03, bcdDevice= 6.56
[12246.043575] usb 4-1.8: New USB device strings: Mfr=1, Product=8, SerialNumber=0
[12246.043577] usb 4-1.8: Product: FANATEC CSL Elite Wheel Base
[12246.043579] usb 4-1.8: Manufacturer: Fanatec
[12246.045229] hid_map_usage: 34 callbacks suppressed
[12246.045232] Fanatec FANATEC CSL Elite Wheel Base: Invalid code 768 type 1
[12246.045236] Fanatec FANATEC CSL Elite Wheel Base: Invalid code 769 type 1
[12246.045241] Fanatec FANATEC CSL Elite Wheel Base: Invalid code 770 type 1
[12246.045243] Fanatec FANATEC CSL Elite Wheel Base: Invalid code 771 type 1
[12246.045245] Fanatec FANATEC CSL Elite Wheel Base: Invalid code 772 type 1
[12246.045247] Fanatec FANATEC CSL Elite Wheel Base: Invalid code 773 type 1
[12246.045248] Fanatec FANATEC CSL Elite Wheel Base: Invalid code 774 type 1
[12246.045255] Fanatec FANATEC CSL Elite Wheel Base: Invalid code 775 type 1
[12246.045261] Fanatec FANATEC CSL Elite Wheel Base: Invalid code 776 type 1
[12246.045265] Fanatec FANATEC CSL Elite Wheel Base: Invalid code 777 type 1
[12246.045387] input: Fanatec FANATEC CSL Elite Wheel Base as /devices/pci0000:00/0000:00:1d.0/usb4/4-1/4-1.8/4-1.8:1.0/0003:0EB7:0E03.0012/input/input32
[12246.045604] hid-generic 0003:0EB7:0E03.0012: input,hidraw12: USB HID v1.11 Joystick [Fanatec FANATEC CSL Elite Wheel Base] on usb-0000:00:1d.0-1.8/input0

Which is ok like that?

But, lsmod does not show me that hid_fanatec.ko or ff_memless.ko is running.

So I go to /lib/modules/4.19.0-13-amd64/misc/ and start ff-memless.ko and hid_fanatec.ko --- check lsmod and see that both are running.

That is pretty much how far I get here and do not know what else to do.

I would really appreciate it, if someone could take on my issue, not only from the perspective that I wish for the force feedback to work, but also that I can learn something again about the process getting it to work.

Thanks alot in adavance. Linux for the Win!

Greetings Thomas

Wheel not recognized in F1 23

The game starts with 'default' Steam Input settings, but it does not recognize the wheel.
When setting Disable Steam Input, the game doesn't start at all.

CSL Steering Wheel P1 V2 support

Thanks to you excellent driver I got the fanatec bundle with the CSL Steering Wheel P1 V2.

I dont know how similar it is to the WRC wheel, so will report my findings anyway:

  • LED is initialized as 'green' when turning the wheel base on
  • driver reports all LEDs as 0
  • setting any LED to 1 then back to 0 turns it off completely
  • RPM 1-3 all turn on the GREEN LED
  • RPM 4-6 all turn on the RED LED
  • RPM 7-9 all turn on the BLUE LED
  • any combination is possible , so GREEN / YELLOW / RED / PURPLE / BLUE / CYAN and WHITE can be set mixing the appropriate colored LEDs
  • 3x7 segment display: sending numbers work as expected and -1 turns it of, initialized off.

How do I go about to find out the wheel ID ? Is this already accessible in the wheel node of the device ?
-> this reports it as 0008 for me

#define CSL_STEERING_WHEEL_P1_V2 0x0008
#define CSL_ELITE_STEERING_WHEEL_WRC_ID 0x0112

Please provide an akmod package

On rpm-ostree based distros like Fedora Kinoite/Silverblue, dkms is not supported, and manually recompiling the module every time the kernel is updated (very frequently) is a massive pain. akmod is the officially supported way to install kernel modules on these distros. Supporting a copr repo for the akmod would also be fantastic, but might be too much to ask, I don't know.

possible code source for friction / inertia effects ?

so i kept thinking how you could implement it correctly and then i stumbled upon openffbboard. i used it prevously (2-3 years ago) with a motor from one of these hoverboards :D. it has its own opensource software so i started searching the code and found a hint


#define FFB_EFFECT_CONSTANT     0x01
#define FFB_EFFECT_RAMP         0x02
#define FFB_EFFECT_SQUARE       0x03
#define FFB_EFFECT_SINE         0x04
#define FFB_EFFECT_TRIANGLE     0x05
#define FFB_EFFECT_SAWTOOTHUP   0x06
#define FFB_EFFECT_SAWTOOTHDOWN 0x07
#define FFB_EFFECT_SPRING       0x08
#define FFB_EFFECT_DAMPER       0x09
#define FFB_EFFECT_INERTIA      0x0A
#define FFB_EFFECT_FRICTION     0x0B
#define FFB_EFFECT_CUSTOM       0x0C
 

here is the link to the file i found that https://ultrawipf.github.io/OpenFFBoard/doxygen/ffb__defs_8h_source.html

my programming skills are non existent so i dont know what im searching exactly for but maybe thats a good source for you ?

https://github.com/Ultrawipf/OpenFFBoard

Setting force feedback gain with FF_GAIN

Does the driver support setting FF_GAIN? I am creating a non-gaming software in python3:evdev with a GT DD PRO. I am able to control FF_PERIODIC and FF_SPRING. However, setting the FF_GAIN field doesn't do anything. This is how I'm doing it:

device = InputDevice(INPUT_PATH)
device.write(ecodes.EV_FF, ecodes.FF_GAIN, 100)
# device.write(ecodes.EV_FF, ecodes.FF_GAIN, 1)

Any help is appreciated. Thanks

Question: After Kernel Update run "make && make install"

If I observed correctly my wheels forcefeedback stops working after kernel update. To fix it I have to run "make && make install" again, so far so good. Is it possible to have the system compile the code directly after a Kernel update and install it again?

udev rule

Hello,
I installed the driver for my csl elite wheelbase. If I set deadzone and fuzz manuel to 0 everything is ok but the udev rule doesn't work.

The reason for this is that line 8 contains 0E03 as an 'idProduct', among others. But it must be 0e03, with a lowercase e.
Now it works for me.

FFB in F1 2020 / F1 2021

FFB in F1 2020 and F1 2021 is not working properly. It is very week and there are no centering forces at all.

FFB no longer working after OS update

I updated my Pop_OS! desktop and FFB is no longer working. I've tried reinstalling/reloading via the following:

sudo rmmod hid-fanatec
make
sudo make install

When I run sudo dmesg, I now see the following:

hid_fanatec: disagrees about version of symbol module_layout

What am I missing to get this working again?

cannot locate "usbhid/usbhid.h" -

Sorry to ask here as I know it's (probably) not the right place, however i'm at a loss.
I cannot find the ubshid header files package for ubuntu 1804.
I'm getting this error when trying to make.

/home/mickie/Documents/code/hid-fanatecff/hid-ftec.c:6:10: fatal error: usbhid/usbhid.h: No such file or directory
 #include "usbhid/usbhid.h"
          ^~~~~~~~~~~~~~~~~
compilation terminated.

Raceroom Racing Experience - no ffb

is this something thats fixeable by you? or can i contribute in some way to make it happen ?

game detects wheel and pedals, i can drive, just with no ffb at all.

game runs only with proton GE 6.25 for me.

Let's test it with the Fanatec Podium DD1

lsusb:
Bus 005 Device 010: ID 0eb7:0006 Endor AG FANATEC Podium Wheel Base DD1

The Pedals Clubsport V3 are plugged into my Wheel-Base.
I can later attach it by usb and check it out.

Let's see if we can bring solid simracing to linux finally. ;)

Support for CSR Elite

Hello. Thank you for your work. I was trying to get CSR Elite working, but to no avail.

vendor:product_id
0EB7:0011

Here is what I've tried.
kozr@1b794c4
echo 500 | sudo tee /sys/module/hid_fanatec/drivers/hid\:ftec_csl_elite/0003\:0EB7\:0011.0013/range does nothing.

To be honest I'm not very familiar with low level stuff but it seems like we ran into something? implement() called with too large value from dmesg -w. It is attached below.

[ 9999.153262] input: HID 0eb7:0011 as /devices/pci0000:00/0000:00:01.2/0000:02:00.0/0000:03:08.0/0000:0b:00.1/usb3/3-3/3-3:1.0/0003:0EB7:0011.0013/input/input44
[ 9999.213220] ftec_csl_elite 0003:0EB7:0011.0013: input,hidraw10: USB HID v1.11 Joystick [HID 0eb7:0011] on usb-0000:0b:00.1-3/input0
[ 9999.213227] /home/nicholaswong/Documents/wheel/hid-fanatecff/hid-ftec.c:  ... 0 1 1 56
               0 255 0 255

[ 9999.213231] /home/nicholaswong/Documents/wheel/hid-fanatecff/hid-ftecff.c:  ... setting FF bits
[ 9999.213233] /home/nicholaswong/Documents/wheel/hid-fanatecff/hid-ftecff.c: setting range to 1080
[ 9999.213236] ftec_csl_elite 0003:0EB7:0011.0013: implement() called with too large value -11 (n: 8)! (systemd-udevd)
[ 9999.213282] ------------[ cut here ]------------
[ 9999.213283] WARNING: CPU: 18 PID: 59158 at drivers/hid/hid-core.c:1432 implement.cold+0x5e/0x68 [hid]
[ 9999.213296] Modules linked in: hid_fanatec(OE+) veth xt_nat xt_tcpudp xt_conntrack nft_chain_nat xt_MASQUERADE nf_nat nf_conntrack_netlink nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 xfrm_user xfrm_algo nft_counter xt_addrtype nft_compat nf_tables nfnetlink br_netfilter bridge stp llc rfcomm ccm cmac algif_hash algif_skcipher af_alg overlay bnep nls_iso8859_1 intel_rapl_msr intel_rapl_common snd_hda_codec_realtek edac_mce_amd snd_hda_codec_generic ledtrig_audio snd_hda_codec_hdmi snd_hda_intel snd_intel_dspcfg soundwire_intel soundwire_generic_allocation soundwire_cadence snd_hda_codec snd_hda_core snd_hwdep soundwire_bus snd_soc_core iwlmvm snd_compress ac97_bus snd_pcm_dmaengine mac80211 snd_pcm snd_seq_midi snd_seq_midi_event libarc4 btusb snd_rawmidi btrtl btbcm iwlwifi input_leds btintel joydev kvm snd_seq bluetooth snd_seq_device eeepc_wmi snd_timer asus_wmi ecdh_generic sparse_keymap ecc rapl wmi_bmof efi_pstore snd video cfg80211 ccp k10temp soundcore mac_hid sch_fq_codel msr
[ 9999.213355]  parport_pc ppdev lp parport ip_tables x_tables autofs4 dm_crypt raid10 raid456 async_raid6_recov async_memcpy async_pq async_xor async_tx xor raid6_pq libcrc32c raid1 raid0 multipath linear system76_io(OE) system76_acpi(OE) hid_generic usbhid hid amdgpu iommu_v2 gpu_sched i2c_algo_bit drm_ttm_helper ttm drm_kms_helper syscopyarea crct10dif_pclmul sysfillrect sysimgblt crc32_pclmul fb_sys_fops cec ghash_clmulni_intel rc_core aesni_intel drm crypto_simd cryptd glue_helper ahci xhci_pci libahci i2c_piix4 r8169 nvme xhci_pci_renesas realtek nvme_core wmi [last unloaded: hid_fanatec]
[ 9999.213395] CPU: 18 PID: 59158 Comm: systemd-udevd Tainted: G        W  OE     5.11.0-7620-generic #21~1626191760~21.04~55de9c3-Ubuntu
[ 9999.213399] Hardware name: System manufacturer System Product Name/TUF GAMING X570-PLUS (WI-FI), BIOS 3801 04/07/2021
[ 9999.213401] RIP: 0010:implement.cold+0x5e/0x68 [hid]
[ 9999.213408] Code: bf d0 18 00 00 89 d9 48 c7 c6 80 95 33 c0 65 48 8b 14 25 c0 7b 01 00 4c 8d 8a e8 0a 00 00 48 c7 c2 88 f4 32 c0 e8 87 20 4e e3 <0f> 0b 44 21 fb e9 13 49 ff ff 48 8b bb f0 b0 01 00 48 c7 c6 b8 95
[ 9999.213411] RSP: 0018:ffffb72d460938e0 EFLAGS: 00010046
[ 9999.213413] RAX: 0000000000000000 RBX: 00000000fffffff5 RCX: 0000000000000000
[ 9999.213415] RDX: 00000000ffffffd8 RSI: 0000000000000027 RDI: ffff918bcee98ac0
[ 9999.213417] RBP: ffffb72d46093908 R08: 0000000000000000 R09: ffffb72d460935f0
[ 9999.213419] R10: ffffb72d460935e8 R11: ffffffffa4953568 R12: ffff9184d7d07590
[ 9999.213420] R13: 0000000000000008 R14: 0000000000000000 R15: 00000000000000ff
[ 9999.213422] FS:  00007f6de8be28c0(0000) GS:ffff918bcee80000(0000) knlGS:0000000000000000
[ 9999.213424] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 9999.213426] CR2: 0000278440517430 CR3: 0000000295f5e000 CR4: 0000000000350ee0
[ 9999.213428] Call Trace:
[ 9999.213431]  hid_output_report+0xef/0x160 [hid]
[ 9999.213439]  __usbhid_submit_report+0x263/0x340 [usbhid]
[ 9999.213445]  usbhid_request+0x47/0x80 [usbhid]
[ 9999.213450]  ftec_set_range+0xc8/0x1e0 [hid_fanatec]
[ 9999.213456]  ftecff_init+0xf1/0x580 [hid_fanatec]
[ 9999.213460]  ? printk+0x58/0x6f
[ 9999.213467]  ftec_probe+0x1a8/0x1f0 [hid_fanatec]
[ 9999.213471]  hid_device_probe+0x10e/0x170 [hid]
[ 9999.213479]  really_probe+0xff/0x460
[ 9999.213483]  driver_probe_device+0xe9/0x160
[ 9999.213486]  __device_attach_driver+0x71/0xd0
[ 9999.213489]  ? driver_allows_async_probing+0x50/0x50
[ 9999.213492]  bus_for_each_drv+0x84/0xd0
[ 9999.213494]  __device_attach+0xde/0x1e0
[ 9999.213497]  ? __hid_register_driver+0x80/0x80 [hid]
[ 9999.213503]  device_attach+0x10/0x20
[ 9999.213506]  device_reprobe+0x4a/0x90
[ 9999.213509]  __hid_bus_reprobe_drivers+0x6e/0x70 [hid]
[ 9999.213515]  bus_for_each_dev+0x7e/0xc0
[ 9999.213517]  ? hid_destroy_device+0x60/0x60 [hid]
[ 9999.213524]  __hid_bus_driver_added+0x2c/0x40 [hid]
[ 9999.213530]  bus_for_each_drv+0x84/0xd0
[ 9999.213533]  __hid_register_driver+0x77/0x80 [hid]
[ 9999.213539]  ? 0xffffffffc0fa2000
[ 9999.213541]  ftec_csl_elite_init+0x23/0x1000 [hid_fanatec]
[ 9999.213546]  do_one_initcall+0x48/0x1d0
[ 9999.213550]  ? kmem_cache_alloc_trace+0xf6/0x200
[ 9999.213555]  ? do_init_module+0x28/0x290
[ 9999.213559]  do_init_module+0x62/0x290
[ 9999.213561]  load_module+0x6fd/0x780
[ 9999.213564]  __do_sys_finit_module+0xc2/0x120
[ 9999.213567]  __x64_sys_finit_module+0x1a/0x20
[ 9999.213570]  do_syscall_64+0x38/0x90
[ 9999.213573]  entry_SYSCALL_64_after_hwframe+0x44/0xa9
[ 9999.213577] RIP: 0033:0x7f6de909af6d
[ 9999.213579] Code: 28 0d 00 0f 05 eb a9 66 0f 1f 44 00 00 f3 0f 1e fa 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d cb de 0c 00 f7 d8 64 89 01 48
[ 9999.213582] RSP: 002b:00007ffd09a06108 EFLAGS: 00000246 ORIG_RAX: 0000000000000139
[ 9999.213584] RAX: ffffffffffffffda RBX: 00005614e9d2a160 RCX: 00007f6de909af6d
[ 9999.213586] RDX: 0000000000000000 RSI: 00007f6de9240e2d RDI: 0000000000000006
[ 9999.213588] RBP: 0000000000020000 R08: 0000000000000000 R09: 00005614e7d2c8dd
[ 9999.213589] R10: 0000000000000006 R11: 0000000000000246 R12: 00007f6de9240e2d
[ 9999.213591] R13: 0000000000000000 R14: 00005614e9cf16b0 R15: 00005614e9d2a160
[ 9999.213593] ---[ end trace 65a585eb499ccb81 ]---

implementing missing ff_eventcodes

General
Support for a bunch of effects, mostly copy-pasted from new-lg4ff. Note: only tested with CSL Elite Wheelbase. Currently not supported effects: FF_FRICTION, FF_INERTIA

and i thought, its only me, coz i do not have the newest firmware..
ye, im stupid.. i should have just read the fukin descrition.. xD
(i deleted the other post about it ^^)

so again im offering my help/input/tests with this whenever! since its the most important feedback u want to have as a driver ^^ (and tbh, im still completely shocked that no one has ever even mentioned it before Oo). i mean, driving with sensing the current grip is way easier and faster than just trail and error and try memorise it (especially in f1 23, where u dont even have the audio input for it). than u r able to handle the over-understeer way better. and its creates a way more realistic immersion ofc ^^

i saw that @dtran11 did something similar here as well. https://github.com/gotzl/hid-fanatecff/issues/45#issuecomment-1787556135
it might help a bit. actually, ive heard that AI is really strong in these kind of thinks btw ^^

@gotzl i can close the other thread, no? im asking, coz i dont know the behavior here on github. and speaking about behavior, is this even the right tap or should i created it at pull requests?

Fanatec Porsche GT2 and other older devices

Hi there,
I do own one of the old neat GT2 wheels and am curious whether the driver does work with it or what info/data would be required to get being compatibility.
Would appreciate if anyone could get me started or point out which data I can collect/provide.
Thx!

Makefile issues

Provided makefile tries to invoke Makefile from /usr/lib/modules/<kernel>/build, despite never copying anything to that location, so nothing actually happens.

root@john-deb:/home/john/hid-fanatecff# make
-e 
:: Compiling Fanatec kernel module
========================================
make -C /lib/modules/`uname -r`/build M=$PWD
make[1]: Entering directory '/usr/lib/modules/6.0.0-5-amd64/build'
make[1]: *** No targets specified and no makefile found.  Stop.
make[1]: Leaving directory '/usr/lib/modules/6.0.0-5-amd64/build'
make: *** [Makefile:8: default] Error 2

Deadzone Issue CSL Elite PS4

Today I tried version 170326d at Kubuntu 20.10 and followed the install instructions

After following your instructions the device was recognized.

But it has an unusable high deadzone of like 75° to each side. I heard that there was a fix going arround in fanatec forum which seemed to be implemented already.

I tested the device using the KDE Gamectonroller Tool.

BTW: Are there any loadcell adjustment file seems to be missing here.
What is the accepted value range for "BLI DPR DRI FEI FF FOR SEN SHO SPR" , same as in fanatec windows?
This is my last needed step to screw windows though it is an important one since I love Assetto corsa and the CSL.

Please have mercy since I'm very new to linux for home usage!

Great work btw!

ClubSport V2.5

Continuation of the discussion from #3 about supporting the v2.5 clubsport wheelbase. Right now, the limiting factor seems to be disabling the centering spring that happens on startup.

@gotzl - here's the USB pcap from Windows. I think I did this correctly, but if not, then let me know how, and I'll snag a new one. Wheel was off at the start of the capture, was then turned on and I waited until the centering spring force was completely released, and gave the wheel a few turns before stopping the capture.

wheel2.zip

No FF with CSL elite and F1 esports wheel

Hello :)
First, thanks for the incredible work!
Please have some mercy, I am still new to the linux environment and I have no idea where else I should post this.

I am currently running a CSL Elite base alongside the F1 esports wheel and the csl elite pedals. (Pedals work flawlessly)
This combination results in strange FF behavior. Namely I only get speed wobble, curb rumble and off track effects, the regular FF doesn't seem to work. I currently tried F1 2020 and BeamNG drive.
The second game has some "FF" but it's behavior is extremely strange.
My guess is that the driver somehow can't access my wheel settings as my range is off as well.

I tried fiddling with the code to somehow force the driver to use 100% FF to see if that somehow does something but to no success. If you have any advice at all it would be appreciated.
If you need more info I will gladly provide, right now I have no Idea what else to post.

dmesg:
[ 2552.577314] usb 1-7: Product: FANATEC CSL Elite Wheel Base
[ 2552.577315] usb 1-7: Manufacturer: Fanatec
[ 2552.579231] hid_map_usage: 34 callbacks suppressed
[ 2552.579232] Fanatec FANATEC CSL Elite Wheel Base: Invalid code 768 type 1
[ 2552.579233] Fanatec FANATEC CSL Elite Wheel Base: Invalid code 769 type 1
[ 2552.579233] Fanatec FANATEC CSL Elite Wheel Base: Invalid code 770 type 1
[ 2552.579234] Fanatec FANATEC CSL Elite Wheel Base: Invalid code 771 type 1
[ 2552.579234] Fanatec FANATEC CSL Elite Wheel Base: Invalid code 772 type 1
[ 2552.579234] Fanatec FANATEC CSL Elite Wheel Base: Invalid code 773 type 1
[ 2552.579235] Fanatec FANATEC CSL Elite Wheel Base: Invalid code 774 type 1
[ 2552.579235] Fanatec FANATEC CSL Elite Wheel Base: Invalid code 775 type 1
[ 2552.579236] Fanatec FANATEC CSL Elite Wheel Base: Invalid code 776 type 1
[ 2552.579236] Fanatec FANATEC CSL Elite Wheel Base: Invalid code 777 type 1
[ 2552.579258] input: Fanatec FANATEC CSL Elite Wheel Base as /devices/pci0000:00/0000:00:14.0/usb1/1-7/1-7:1.0/0003:0EB7:0E03.000D/input/input38
[ 2552.579389] hid-generic 0003:0EB7:0E03.000D: input,hidraw10: USB HID v1.11 Joystick [Fanatec FANATEC CSL Elite Wheel Base] on usb-0000:00:14.0-7/input0
[ 2552.645412] /home/dashie/gits/hid-fanatecff/hid-ftec.c: ftec_probe: ifnum 0
[ 2552.645479] input: Fanatec FANATEC CSL Elite Wheel Base as /devices/pci0000:00/0000:00:14.0/usb1/1-7/1-7:1.0/0003:0EB7:0E03.000D/input/input39
[ 2552.697447] ftec_csl_elite 0003:0EB7:0E03.000D: input,hidraw10: USB HID v1.11 Joystick [Fanatec FANATEC CSL Elite Wheel Base] on usb-0000:00:14.0-7/input0
[ 2552.697450] /home/dashie/gits/hid-fanatecff/hid-ftec.c: ... 0 1 1 56
-128 127 -128 127

[ 2552.697451] /home/dashie/gits/hid-fanatecff/hid-ftecff.c: ... setting FF bits
[ 2552.697452] /home/dashie/gits/hid-fanatecff/hid-ftecff.c: setting range to 1080
[ 2552.697535] ftec_csl_elite 0003:0EB7:0E03.000D: Hires timer: period = 2 ms

image

Cheers.

Support Podium Wheel Base DD1/DD2

What's the state of support for the Podium?
What does experimental mean exactly? Is it usable (maybe without some minor features)?

Refactor driver name from ftec_csl_elite to s.t. more generic

The development of this kernel module started off with the aim to support the CSL Elite wheel. It turned out that the driver can easily support a bunch of other Fanatec devices. Therefore, the initial name for the module ftec_csl_elite should be changed to s.t. more generic.

get raw data and ForceFeedBack Control on Linux

force_feedback_test

Hello.

For the purpose of developing remote control for autonomous driving
As I'm looking for force feedback control (handle control) and raw data of the steering wheel as shown in the image above, I'm asking you because the racing wheel most similar to the actual car seems to be Fanatec's dd series.

Do you have any advice on controlling the handle with force feedback and how to get raw data for the handle and pedal?

https://github.com/kuriatsu/ros-g29-force-feedback
Referring to the link above, it seems to be based on linux/input.h.
Can Fanatec's product also control raw data acquisition and handle with force feedback based on that library?

Issue with pfx'es created by proton7/8

A number of games crash when proton prefix was created by proton7/8 and a wheel is connected.
The following games I've found to suffer from this problem

AMS2 - crash on startup
DR2 - crash on loading stage
EA WRC - crash on startup
F1 22/23 - crash on startup

As mentioned in the README, the workaround is to start the game once with proton6 to create the pfx, then switch to proton7/8.

I'm currently investigating the issue, but no conclusion yet. I'll update the ticket with my findings...

Note: Some games seem to work fine for me with prefix created by proton7/8. So far, these are ACC, rF2, R3E, PC2.

Related issues: #46 #66

Errors when switching on CSL DD

Hi @gotzl ,

I managed to get the drivers compiled and installed in NixOS (thanks) but I'm getting the following when switching on my CSL DD:

Dec 08 20:21:39 spruce kernel: usb 1-8.3: new full-speed USB device number 21 using xhci_hcd
Dec 08 20:21:40 spruce kernel: usb 1-8.3: New USB device found, idVendor=0eb7, idProduct=0020, bcdDevice= 3.05
Dec 08 20:21:40 spruce kernel: usb 1-8.3: New USB device strings: Mfr=1, Product=3, SerialNumber=0
Dec 08 20:21:40 spruce kernel: usb 1-8.3: Product: FANATEC Wheel
Dec 08 20:21:40 spruce kernel: usb 1-8.3: Manufacturer: Fanatec
Dec 08 20:21:40 spruce kernel: Fanatec FANATEC Wheel: Invalid code 768 type 1
Dec 08 20:21:40 spruce kernel: Fanatec FANATEC Wheel: Invalid code 769 type 1
Dec 08 20:21:40 spruce kernel: Fanatec FANATEC Wheel: Invalid code 770 type 1
Dec 08 20:21:40 spruce kernel: Fanatec FANATEC Wheel: Invalid code 771 type 1
Dec 08 20:21:40 spruce kernel: Fanatec FANATEC Wheel: Invalid code 772 type 1
Dec 08 20:21:40 spruce kernel: Fanatec FANATEC Wheel: Invalid code 773 type 1
Dec 08 20:21:40 spruce kernel: Fanatec FANATEC Wheel: Invalid code 774 type 1
Dec 08 20:21:40 spruce kernel: Fanatec FANATEC Wheel: Invalid code 775 type 1
Dec 08 20:21:40 spruce kernel: Fanatec FANATEC Wheel: Invalid code 776 type 1
Dec 08 20:21:40 spruce kernel: Fanatec FANATEC Wheel: Invalid code 777 type 1
Dec 08 20:21:40 spruce kernel: input: Fanatec FANATEC Wheel as /devices/pci0000:00/0000:00:14.0/usb1/1-8/1-8.3/1-8.3:1.0/0003:0EB7:0020.0014/input/input39
Dec 08 20:21:40 spruce kernel: input: Fanatec FANATEC Wheel as /devices/pci0000:00/0000:00:14.0/usb1/1-8/1-8.3/1-8.3:1.0/0003:0EB7:0020.0014/input/input40
Dec 08 20:21:40 spruce kernel: hid-generic 0003:0EB7:0020.0014: input,hiddev99,hidraw17: USB HID v1.11 Joystick [Fanatec FANATEC Wheel] on usb-0000:00:14.0-8.3/input0
Dec 08 20:21:40 spruce mtp-probe[2449]: checking bus 1, device 21: "/sys/devices/pci0000:00/0000:00:14.0/usb1/1-8/1-8.3"
Dec 08 20:21:40 spruce mtp-probe[2449]: bus: 1, device: 21 was not an MTP device
Dec 08 20:21:40 spruce mtp-probe[2466]: checking bus 1, device 21: "/sys/devices/pci0000:00/0000:00:14.0/usb1/1-8/1-8.3"
Dec 08 20:21:40 spruce mtp-probe[2466]: bus: 1, device: 21 was not an MTP device

Also, if I run fftest /dev/input/by-id/usb-Fanatec_FANATEC_Wheel-event-joystick I get:

Force feedback test program.
HOLD FIRMLY YOUR WHEEL OR JOYSTICK TO PREVENT DAMAGES

Device /dev/input/by-id/usb-Fanatec_FANATEC_Wheel-event-joystick opened
Features:
  * Absolute axes: X, Y, Z, RX, RY, RZ, Throttle, Rudder, Hat 0 X, Hat 0 Y,
    [FF 00 03 00 00 00 00 00 ]
  * Relative axes:
    [00 00 ]
  * Force feedback effects types:
    Force feedback periodic effects:
    [00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ]
  * Number of simultaneous effects: 0

Uploading effect #0 (Periodic sinusoidal) ... Error:: Function not implemented
Uploading effect #1 (Constant) ... Error: Function not implemented
Uploading effect #2 (Spring) ... Error: Function not implemented
Uploading effect #3 (Damper) ... Error: Function not implemented
Uploading effect #4 (Strong rumble, with heavy motor) ... Error: Function not implemented
Uploading effect #5 (Weak rumble, with light motor) ... Error: Function not implemented
Enter effect number, -1 to exit

Has it picked up the wrong driver or something? Any ideas?

No FFB Gran Turismo DD

Hi,
I am trying to use this driver for FFB, but it doesn't seem to work on my side.
The driver seems to load but I got no FFB
dmesg:

[ 1097.389284] usb 1-2: new full-speed USB device number 12 using xhci_hcd
[ 1097.708840] usb 1-2: New USB device found, idVendor=0eb7, idProduct=0020, bcdDevice= 6.25
[ 1097.708851] usb 1-2: New USB device strings: Mfr=1, Product=3, SerialNumber=0
[ 1097.708854] usb 1-2: Product: FANATEC Wheel
[ 1097.708858] usb 1-2: Manufacturer: Fanatec
[ 1097.732736] hid_map_usage: 34 callbacks suppressed
[ 1097.732740] Fanatec FANATEC Wheel: Invalid code 768 type 1
[ 1097.732746] Fanatec FANATEC Wheel: Invalid code 769 type 1
[ 1097.732748] Fanatec FANATEC Wheel: Invalid code 770 type 1
[ 1097.732751] Fanatec FANATEC Wheel: Invalid code 771 type 1
[ 1097.732753] Fanatec FANATEC Wheel: Invalid code 772 type 1
[ 1097.732755] Fanatec FANATEC Wheel: Invalid code 773 type 1
[ 1097.732758] Fanatec FANATEC Wheel: Invalid code 774 type 1
[ 1097.732760] Fanatec FANATEC Wheel: Invalid code 775 type 1
[ 1097.732762] Fanatec FANATEC Wheel: Invalid code 776 type 1
[ 1097.732765] Fanatec FANATEC Wheel: Invalid code 777 type 1
[ 1097.732863] input: Fanatec FANATEC Wheel as /devices/pci0000:00/0000:00:01.2/0000:02:00.0/usb1/1-2/1-2:1.0/0003:0EB7:0020.000E/input/input29
[ 1097.733118] ftec_csl_elite 0003:0EB7:0020.000E: input,hiddev98,hidraw5: USB HID v1.11 Joystick [Fanatec FANATEC Wheel] on usb-0000:02:00.0-2/input0
[ 1097.733383] ftec_csl_elite 0003:0EB7:0020.000E: Hires timer: period = 2 ms

lsusb -t

/:  Bus 04.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 10000M
/:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 480M
    |__ Port 1: Dev 2, If 0, Class=Human Interface Device, Driver=usbhid, 12M
    |__ Port 1: Dev 2, If 1, Class=Human Interface Device, Driver=usbhid, 12M
    |__ Port 1: Dev 2, If 2, Class=Human Interface Device, Driver=usbhid, 12M
    |__ Port 2: Dev 3, If 0, Class=Human Interface Device, Driver=usbhid, 12M
    |__ Port 2: Dev 3, If 1, Class=Human Interface Device, Driver=usbhid, 12M
    |__ Port 3: Dev 4, If 0, Class=Video, Driver=uvcvideo, 480M
    |__ Port 3: Dev 4, If 1, Class=Video, Driver=uvcvideo, 480M
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/3p, 10000M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/9p, 480M
    |__ Port 1: Dev 2, If 0, Class=Vendor Specific Class, Driver=xone-wired, 12M
    |__ Port 1: Dev 2, If 1, Class=Vendor Specific Class, Driver=xone-wired, 12M
    |__ Port 1: Dev 2, If 2, Class=Vendor Specific Class, Driver=, 12M
    |__ Port 2: Dev 12, If 0, Class=Human Interface Device, Driver=usbhid, 12M
    |__ Port 3: Dev 4, If 0, Class=Wireless, Driver=btusb, 12M
    |__ Port 3: Dev 4, If 1, Class=Wireless, Driver=btusb, 12M
    |__ Port 4: Dev 5, If 0, Class=Human Interface Device, Driver=usbhid, 12M
    |__ Port 6: Dev 6, If 0, Class=Audio, Driver=snd-usb-audio, 12M
    |__ Port 6: Dev 6, If 1, Class=Audio, Driver=snd-usb-audio, 12M
    |__ Port 6: Dev 6, If 2, Class=Audio, Driver=snd-usb-audio, 12M
    |__ Port 6: Dev 6, If 3, Class=Human Interface Device, Driver=usbhid, 12M

The fanatec wheels seems to be Port 2: Dev 12, If 0, Class=Human Interface Device, Driver=usbhid, 12M (it's the one that appear and disappear when I plug and unplug the device)

fftest report no ffb effect implemented too.

I tried with the AUR package and manually compiling it.

If it can help, I got the 8nm upgrade and the additional clutch. I also have some experience with C++ (but none with kernel/driver development). So if I can help, I will happily try to.

Mac Port?

Can you give me please a hint in how to port this to mac (mojave currently)

I want to run force feedback on f1 2012 and 2013 an other games in my old mid 2012 macbook pro ..

Thanks!

Wheel: Fanatec CSL Elite for PC and PS4

CSL Elite Racing Wheel + ClubSport Pedals V3

Hi,

i have CSL Elite Racing Wheel - officially licensed for PlayStation™ and ClubSport Pedals V3 and it works very good. It's much better then Lohitech G29 :) BIG thanks for you job here.

What works:

  • stearing
  • FFB
  • all buttons
  • pedals

What NOT works:

  • RPM LEDs on base
  • LED on wheel (it's always green)
  • these pedals has small motors, who can spin and generate vibration to pedals (ABS effect)

My question here, it's posible some how enable/disable pedals vibration from command line?

And if you need any help with these my devices, please ask. I have windows only on VirtualBox

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.