Jump to content

# Logitech Racing Wheel

From ArchWiki

This article describes how to set up a Logitech racing wheel, such as a Formula Force GP or a G27/G29 racing wheel, with Arch Linux.

## Installing

### Identifying

When the wheel is plugged in, the following commands can be used to identify the wheel:

    # dmesg

    usb 5-2: new low speed USB device using uhci_hcd and address 6

    $ lsusb

    Bus 005 Device 006: ID 046d:c293 Logitech, Inc. WingMan Formula Force GP

If using a Logitech Wheel, make sure it is set to PS3 mode otherwise it will not work.

### Checking input device

    $ cat /proc/bus/input/devices

    I: Bus=0003 Vendor=046d Product=c293 Version=0100
    N: Name="Logitech Inc. WingMan Formula Force GP"
    P: Phys=usb-0000:00:1a.2-2/input0
    S: Sysfs=/devices/pci0000:00/0000:00:1a.2/usb5/5-2/5-2:1.0/input/input30
    U: Uniq=
    H: Handlers=event15 js0
    B: EV=20001b
    B: KEY=3f 0 0 0 0 0 0 0 0 0
    B: ABS=3
    B: MSC=10
    B: FF=1 40000 0 0

If you do not see your Logitech listed as an input device, you need to install usb_modeswitch package. Please memorize the Handlers, here event15 and js0, as these will be necessary to call the tools for testing and configuring the wheel.

### Testing

For testing the wheel there are multiple tools that can be accessed via the command-line. One common tool is `jstest` which can be installed via the joyutils or the linuxconsole packages. An alternative is `evtest` which can be installed via the evtest package. A graphical version of `jstest` is available in the AUR as jstest-gtk-gitAUR.

To test the wheel with `jstest` simply call it with the device handler (in this case with a G29 wheel and js0):

    $ jstest /dev/input/js0

    Driver version is 2.1.0.
    Joystick (Logitech G29 Driving Force Racing Wheel) has 6 axes (X, Y, Z, Rz, Hat0X, Hat0Y)
    and 25 buttons (Trigger, ThumbBtn, ThumbBtn2, TopBtn, TopBtn2, PinkieBtn, BaseBtn, BaseBtn2, BaseBtn3, BaseBtn4, BaseBtn5, BaseBtn6, ?, ?, ?, BtnDead, (null), (null), (null), (null), (null), (null), (null), (null), (null)).
    Testing ... (interrupt to exit)
    Axes:  0:  -923  1: 32767  2: 32767  3: 32767  4:     0  5:     0 Buttons:  0:off  1:off  2:off  3:off  4:off  5:off  6:off  7:off  8:off  9:off 10:off 11:off 12:off 13:off 14:off 15:off 16:off 17:off 18:off 19:off 20:off 21:off 22:off 23:off 24:off

Whenever the input is changed, `jstest` will print the full state of the device. In case that only events should be displayed, `--event` can be added as flag.

When using `evtest` for testing, instead of the js0 as device handler eventX is needed, which in this case is event15 for a Formula Force GP wheel. `evtest` then shows the events coming from the wheel:

    $ evtest /dev/input/event15

    Input driver version is 1.0.0
    Input device ID: bus 0x3 vendor 0x46d product 0xc293 version 0x100
    Input device name: "Logitech Inc. WingMan Formula Force GP"
    Supported events:
     Event type 0 (Reset)
       Event code 0 (Reset)
       Event code 1 (Key)
       Event code 3 (Absolute)
       Event code 4 (?)
       Event code 21 (ForceFeedback)
     Event type 1 (Key)
       Event code 288 (Trigger)
       Event code 289 (ThumbBtn)
       Event code 290 (ThumbBtn2)
       Event code 291 (TopBtn)
       Event code 292 (TopBtn2)
       Event code 293 (PinkieBtn)
     Event type 3 (Absolute)
       Event code 0 (X)
         Value    438
         Min        0
         Max     1023
         Fuzz       3
         Flat      63
       Event code 1 (Y)
         Value    124
         Min        0
         Max      255
         Flat      15
     Event type 4 (?)
       Event code 4 (?)
     Event type 21 (ForceFeedback)
       Event code 82 (?)
       Event code 96 (?)
    Testing ... (interrupt to exit)
    Event: time 1295173625.476950, type 3 (Absolute), code 0 (X), value 439
    Event: time 1295173625.476983, type 0 (Reset), code 0 (Reset), value 0
    Event: time 1295173625.484827, type 3 (Absolute), code 0 (X), value 428

`ffcfstress`, which is provided by joyutils, can be used to test the force feedback. The wheel should start to oscillate:

    # ffcfstress -d /dev/input/event15

             position                   center                     force
     <-----------|****+------> <-----------|*******----> <-----------|**+-------->^C

## Configuration

### Oversteer

Logitech wheels can be configured via the `oversteer` tool from the oversteerAUR package. For general gamepad or joystick settings that may also apply to Logitech wheels, please refer to the Gamepad wiki page.

As of version 0.6.0, `oversteer` contains compatibility modes for the following wheels:

- Driving Force / Formula EX
- Driving Force Pro
- Driving Force GT
- G25 Racing Wheel
- G27 Racing Wheel
- G29 Racing Wheel

Besides testing the wheel, `oversteer` allows to configure the following aspects of the wheels:

- Steering hardware lock (in degrees)
- Combining pedals into one axis
- Global force feedback strength
- Manual auto-center force

### new-lg4ff

For older wheels, that use the driver lg4ff and Logitech Classic HID mode, additional settings might be enabled by installing the new-lg4ff-dkms-gitAUR device driver. Especially the steering hardware lock is useful in certain racing games such as F1 2017 and Dirt Rally to allow for a more realistic steering experience by setting the hardware lock angle to the value of the actual vehicle (e.g. 360 for F1 cars and 540 for modern rally cars).

Recent wheels, such as the G920, and the G923 Xbox edition, use the new HID++ protocol and hid_logitech_hidpp Logitech driver, and are not compatible with new-lg4ff.

## Wheel specific configuration

### Logitech G923 Xbox Edition

This racing wheel requires signals to be sent to change its usb mode every time it is plugged in. To accomplish this:

- Install usb_modeswitch
- When the wheel is plugged in run:

    # usb_modeswitch -v 046d -p c26d -M 0f00010142 -C 0x03 -m 01 -r 81

The wheel will then reset itself to the centered position and be available as a racing wheel in games.

## Games

### Flatout 2

The Wheel works without any wine configuration in flatout2. Just the following in-game configuration is needed:

- Force Feedback: On
- Force level: 100%
- Sensitivity: 100%
- Deadzone: 0%
- Controller: Logitech Inc...

- Throttle: Y-Axis left
- Brake: Y-Axis right
- Steer left: X-axis left
- Steer right: X-axis right

### rFactor 2

rFactor 2 does not have functional force feedback with the built-in lg4ff driver (for wheels that use the hid_logitech_hidpp driver, it works as expected). To make it work, the aforementioned new-lg4ff-dkms-gitAUR driver must be installed. The driver may not load after rebooting. You can check in the journal:

    logitech 0003:046D:C24F.000B: Force feedback support for Logitech Gaming Wheels (0.2b)

If there is no version number written after `Force feedback support for Logitech Gaming Wheels` and the FFB still does not work, the driver likely has not loaded and you will need to regenerate the initramfs.

After that, the FFB should work, but it may be inverted. You can fix this by going to `path-to-game/rFactor 2/UserData/player/` and editing `Controller.JSON`. Find line `"Steering effects strength"` and invert its value (typically going from `10000` to `-10000`).

## See also

Sourceforge wiki: CheckForceFeedback

Categories:

- Input devices
- Gaming

Logitech Racing Wheel
Add topic