Support for steering wheels is under heavy development. Consider this wiki page an early look. Join #steering-wheels on Discord to contribute or to follow latest updates.
Steering wheel controllers
If you've ever been to an arcade before, chances are you've seen or played on one of the sit-down driver cab games where the conventional steering wheel of a car is used to control a virtual car on-screen as opposed to a regular controller. From Batocera and up, steering wheel controllers are supported. Menu navigation is performed by and configuration on supported emulated systems is automatic.
Supported wheels
Max range | FFB | Gear shifter | Notes | |
---|---|---|---|---|
HORI Racing Wheel APEX | 270° | ✘ | ✘ | Mapping is incomplete |
HORI Racing Wheel Overdrive | 270° | ✘ | ✘ | (v40) Must be on mode 2 to work |
Logitech Driving Force | 200° | ✔ | ✘ | |
Logitech Driving Force GT | 900° | ✔ | ✔ | |
Logitech Driving Force Pro | 900° | ✔ | ✔ | (v40) |
Logitech G25 Racing Wheel | 900° | ✔ | ✔ | |
Logitech G27 Racing Wheel | 900° | ✔ | ✔ | |
Logitech G29 Driving Force | 900° | ✔ | ✔ | Must be on PS3/PC mode to work |
Logitech G920 Driving Force | 900° | ✔ | ✔ | |
Logitech G923 Driving Force | 900° | ✔ | ✔ | |
Logitech Momo Racing | 240° | ✔ | ✔ | |
Microsoft SideWinder Force Feedback Wheel | 220° | ✔ | ✘ | |
Microsoft SideWinder Precision Racing Wheel | 270° | ✘ | ✘ | (v41) |
MOZA Racing R9 | None | ✔ | ✔ | Mapping is incomplete |
ThrustMaster Ferrari 458 Spider | 240° | ✘ | ✘ | FFB unsupported yet |
Thrustmaster Ferrari Wireless F430 Cockpit | 270° | ✘ | ✘ | |
Thrustmaster Ferrari F430 Force Feedback | 270° | ✔ | ✘ | |
Thrustmaster Ferrari SF1000 (Advance Racer) | ? | ? | ? | |
Thrustmaster Ferrari GT 2 in 1 Rumble Force Racing Wheel | 240° | ✘ | ✘ | (v40) Must be on 3-axis mode (default) |
Thrustmaster T300 RS | 1080° | ✔ | ✘ | |
Thrustmaster T150 RS | 1080° | ✔ | ✔ | (v40) Must be on PS3 mode to work |
Thrustmaster T80 | 240° | ✘ | ✘ | (v40) Must be on gamepad mode to work |
PXN-V10 | 900° | ✔ | ✔ | (v40) Must be on x-input mode, switch to 270° and FFB disabled in PXN phone app |
Unsupported wheels
Wheel | Notes |
---|---|
Thrustmaster T128 | No compatible linux drivers as of today |
Thrustmaster TMX | No compatible linux drivers as of today |
Mad Catz Wireless Racing Wheel for XBox 360 | Unfortunately, seen as a plain XBox360 controller only |
Supported systems (WIP)
System | Emulator | Out of the box? | Native Wheel support | Working FFB? | Notes |
---|---|---|---|---|---|
3DO | libretro:opera | ✘ | ✔ | — | |
Atari 2600 | libretro:stella | ✘ | ✘ | — | |
Atari 5200 | libretro:atari800 | ✘ | ✘ | — | |
Atomiswave | libretro:flycast | ✔ | ✔ | ✘ | |
ColecoVision | libretro:bluemsx | ✘ | ✘ | — | No support in blueMSX yet |
Dreamcast | libretro:flycast | ✔ | ✔ | — | |
FBNeo | libretro:fbneo | ✘ | ✔ | ✘ | Not optimized |
GameCube | Dolphin | ✔ | ✔ | ✔ | |
MAME | MAME | ✔ | ✘ | Not optimized | |
Model 2 | model2emu | ✘ | ✔ | ✔ | Not optimized |
Model 3 | Supermodel | ✘ | ✔ | ✔ | Not optimized |
Naomi | libretro:flycast | ✔ | ✔ | ✘ | |
Naomi 2 | libretro:flycast | ✔ | ✔ | ✘ | |
Namco 2×6 | Play! | ✘ | ✔ | Not optimized | |
Nintendo 64 | Mupen64 | ✔ | ✘ | — | |
Playstation | libretro:pcsx_rearmed | ✘ | — | Not optimized | |
Playstation 2 | PCSX2 | ✔ | ✔ | ✔ | |
Playstation 3 | RPCS3 | ✘ | ✔ | ✘ | Not optimized |
Sega Saturn | libretro:beetle-saturn | ✔ | ✔ | — | |
Triforce | Dolphin | ✘ | ✘ | — | |
Wii | Dolphin | ✘ | — | Not optimized | |
Wiiu | cemu | ✘ | — | Not optimized | |
Xbox | xemu | — | Not optimized | ||
Xbox 360 | xenia | ✘ | — | Not optimized |
Force feedback is supported with the PCSX2 and Dolphin (GameCube) emulators.
You can test the wheel force feedback from command line by (type evtest
to find your XX value):
ffcfstress -d /dev/input/eventXX
Adding a wheel not yet supported by Batocera
Before trying to add a steering wheel you believe is not yet supported, verify the list above. If it's there but undetected in Batocera, upgrade to latest version.
If coming from an upgrade and the steering wheel is detected, but no buttons are working, simply delete the file /userdata/system/configs/emulationstation/es_input.cfg
and reboot. This will generate a new es_input.cfg
with the latest additions. Do not remap the steering wheel, this will break the pre-configured generator.
To test a new steering wheel controller in Batocera:
- Configure the wheel as a normal pad in EmulationStation with the following convention:
- LEFT ANALOG LEFT to the rotation of the steering wheel (skip LEFT ANALOG UP by holding any button)
- If possible, LEFT SHOULDER and RIGHT SHOULDER to gear down and up respectively
- LEFT TRIGGER to the brake pedal, and
RIGHT TRIGGER
to the acceleration/gas pedal - START as a button (required)
- Additional buttons if possible, the more that can be assigned the more compatibility. For example:
D-PAD
and , , , ( could probably follow a guideline similar to configure_a_controller)
- Create a file in
/userdata/system/udev/rules.d/
called99-wheels.rules
(or any other name if you already have one) with the content below, replacingmy wheel name
by the actual wheel name, reported by theevtest
command.- 99-wheels.rules
SUBSYSTEM=="input", ATTRS{name}=="my wheel name", MODE="0666", ENV{ID_INPUT_JOYSTICK}="1", ENV{ID_INPUT_WHEEL}="1", ENV{WHEEL_ROTATION_ANGLE}="270"
- Reboot. Your wheel should work. Some wheels require tweaking. Please contact the Batocera team via discord in case of any issue.
- Don't forget to send the two files
/userdata/system/configs/emulationstation/es_last_input.cfg
and99-wheels.rules
to the Batocera team so that the wheel becomes pre-configured for everybody in the next Batocera release.
Wheel zones
The wheel has three properties that can be adjusted ( where?): rotation angle, midzone and deadzone.
Rotation angle
This will multiply the sent value by a factor to match the specified angle. This is the maximum rotation angle in degrees the wheel will respond to (in red on the picture). Most games would label this setting as “sensitivity”. If set to a value lower than the wheel's physical limits, it allows you to more easily reach the maximum input before turning the wheel all the way. It helps to convert a 900° rotation wheel to a 180° rotation wheel for example. Some games like Mario Kart 64 intended to play with a joystick need to switch very quickly from full left to full right which can be difficult to do on a 900° wheel without changing this setting.
If set to value higher than the wheel's physical limits, it will allow for more precise adjustment, however it will become physically impossible to reach the maximum input.
A common value is 180°. The value on the picture is around 225°.
Midzone
When the wheel is not being touched, it rests in the neutral position. While in this position, no input values should be being sent to the game. However, the wheel's sensor may become misaligned and start sending a turning signal even when in neutral position; the midzone is a small section near the middle where inputs will be ignored (hopefully meaning only actual turning actions are responded to).
A common value is 5°.
Reverse deadzone
On real hardware, games made for consumer hardware would sometimes have a built-in deadzone in the game itself, meaning if small turning values are sent they will be ignored. This is common on home consoles such as the Nintendo 64. Unfortunately, this means the wheel (which is usually more accurate than a standard joystick) will feel very unresponsive as even after leaving its midzone, it will still be in the deadzone of the game itself. We can defeat the game's built-in deadzone by instantly snapping to a higher value after leaving the midzone instead; this is the “reverse deadzone”.
A common value is 45°.
Demonstration
On the following animated image, you can see:
- On the top, the real 270° wheel movement, from center, to maximum left, then to maximum right
- On the bottom, the wheel in game behavior.
- In the midzone, the input sent is dramatically reduced.
- When entering or exiting the midzone there is a jump caused by the reverse deadzone so the game properly reacts to the input.
- The real wheel movement doesn't have impact on extremities (from 180° to 270°).
- Configuration is: 180° maximum movement, 5° midzone and 25° deadzone.
Troubleshooting
My steering wheel is stuck to the left/right because of the feedback!
Try each of the following:
- Go to the in-game settings and calibrate.
- Turn off force feedback.
- Start a race and hit anything.
My calibrated steering wheel is not centered after launching a game
Turn the steering wheel to the left as far as it will go, then do the same to the right. This will update the maximum range read by the emulator.
I've launched a race in-game, but my wheel is not working! It works fine in its menus.
- Always check in-game settings if the controls are set to the steering wheel device and not the controller. Some games require the user to change it. You can save to memory card after that to keep the settings.
The game doesn't respond to any buttons on my steering wheel
- Some emulators use shifters to navigate and pedals to start or select. Some other games require a controller for menu navigation. Therefore, the steering wheel is limited to gameplay only.
Some games had no native steering wheel support. Therefore, playing those will be in controller-mode. Given that steering wheel support is still under development, controller-mode is not yet fully implemented and some games are simply unplayable without manual setup.
- emulators/wheel_games.txt
- Last modified: 3 weeks ago
- by tovarichtch