Motion evdev

From Dolphin Emulator Wiki
Revision as of 12:59, 3 March 2023 by Infirit (talk | contribs) (Add a note about dolphin combining IMU on switch controllers.)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Dolphin supports the motion evdev devices but setting it up is a bit awkward. Nintendo Switch controllers (Joy-Con and Pro controller) are supported through the hid-nintendo driver. Sony DualShock 4 and DualSense through hid-sony/hid-playstation.

The HID kernel driver exposes 2 (or more) evdev devices, one for the buttons and another for the accelerators/gyroscopes. The hid-nintendo driver exposes the motion axis on an "IMU" device while hid-playstation named it "Wireless Controller Motion Sensors". Do note that Nintendo Joy-Cons will have 2 devices each (4 in total).

You may need to add the users to a specific group to be allowed access. On Arch Linux this group is input.

It took me a bit of time figuring out which axis corresponds with the right motion control in Dolphin. These axis might change in the future when evdev standardizes them.

Dolphin motion Switch controllers Sony DualSense/DualShock4
Accel Up Accel Z+ Accel Y+
Accel Down Accel Z- Accel Y-
Accel Left Accel Y+ Accel X-
Accel Right Accel Y- Accel X+
Accel Forward Accel X+ Accel Z-
Accel Backward Accel X- Accel Z+
Pitch Up Gyro Y- Gyro X+
Pitch Down Gyro Y+ Gyro X-
Roll Left Gyro X- Gyro Z+
Roll Right Gyro X+ Gyro Z-
Yaw Left Gyro Z+ Gyro Y+
Yaw Right Gyro Z- Gyro Y-

As the default buttons are all wrong reset all buttons in the Wii Remote configuration. To configure the motion controls you have to use the advanced config window. Right click on each motion button in the Wii Remote configure window. Select the appropriate IMU device at the top in the device selection.

NOTE: Dolphin has been combining the IMU device with the "regular" device for my Switch controllers so there is no need to change the to the IMU device (it also doesn't show up anymore).

Select imu device.png

Select the corresponding Accel or Gyro axis, select it and click OK. For example for Accel Up in Dolphin you need to select Accel Z+. The end result should look like below.

Advanced config result.png

Repeat this for every motion.