-
Notifications
You must be signed in to change notification settings - Fork 6
DSU Motion Server
PadForge includes a built-in DSU motion server that streams gyroscope and accelerometer data from your physical controllers to emulators over your local network. This lets you use motion controls in Wii, Wii U, and Switch games running in emulators like Dolphin, Cemu, and Ryujinx.
DSU stands for "DualShock UDP" -- a network protocol originally created by the cemuhook project for Cemu (the Wii U emulator). Despite the "DualShock" name, it is not limited to PlayStation controllers. Any controller with motion sensors works.
The protocol has become the standard way emulators receive motion data. Instead of each emulator implementing its own driver for every controller brand, they all connect to a DSU server as a single, universal motion source. PadForge acts as that server.
Which emulators support DSU?
| Emulator | Platform | DSU Support |
|---|---|---|
| Cemu | Wii U | Built-in |
| Dolphin | Wii / GameCube | Built-in (called "DSUClient") |
| Ryujinx | Switch | Built-in (called "CemuHook compatible motion") |
| Yuzu (discontinued) | Switch | Built-in |
| Lime3DS / Citra | 3DS | Built-in |
If an emulator or application asks for a "cemuhook motion server" or "DSU server," it is referring to this protocol.
Not all controllers include gyroscopes and accelerometers. Only controllers with these sensors can provide motion data to the DSU server.
Controllers with motion sensors:
- Sony DualSense (PS5)
- Sony DualShock 4 (PS4)
- Nintendo Switch Pro Controller
- Nintendo Switch 2 Pro Controller
- Nintendo Joy-Con (left and right)
- Steam Deck built-in controller
- Other SDL3-compatible devices that report motion capability
Controllers without motion sensors:
- Xbox 360 controllers
- Xbox One controllers
- Xbox Series controllers
- Most third-party and generic USB gamepads
You can check whether your controller has motion sensors on the Devices page. Controllers with gyro/accel capability will show motion sensor data in their input state display.
- Connect a motion-capable controller to your PC.
- Open PadForge and go to the Dashboard.
- In the Motion Server section, check Enable DSU motion server (cemuhook).
- The status indicator turns green and shows the port (default: 26760).
- Configure your emulator to connect to
127.0.0.1port26760(see setup guides below). - Motion data from your controller is now streaming to the emulator.
The PadForge input engine must be running (click the play button on the Dashboard) for motion data to be available.
All of these guides assume PadForge's DSU server is enabled and running on the default port 26760. If you changed the port, substitute your port number.
Note: The server address
127.0.0.1means "this computer" (localhost). This is the correct address when PadForge and the emulator are running on the same machine.
- Open Cemu and go to Options > GamePad motion source > DSU1 > By Slot.
- Set the server address to
127.0.0.1and port to26760. - Select Slot 1 (this corresponds to PadForge's first virtual controller slot).
- Start a Wii U game that uses motion controls (e.g., Splatoon, The Legend of Zelda: Breath of the Wild).
- Motion data from your controller will now control the in-game gyro aiming or motion puzzles.
- Open Dolphin and go to Controllers.
- For a Wii Remote, set it to "Emulated Wii Remote" and click Configure.
- In the controller configuration window, find the Motion Simulation or Motion Input section.
- Set the source to DSUClient.
- Click Configure next to the DSUClient source and enter the server address
127.0.0.1:26760. - You can now use motion controls in Wii games (e.g., The Legend of Zelda: Skyward Sword, Wii Sports).
- Open Ryujinx and go to Options > Settings > Input.
- Select your controller from the controller list.
- Under Motion, enable Use CemuHook compatible motion.
- Set the server address to
127.0.0.1and port to26760. - Click Save and launch a Switch game with motion controls (e.g., Splatoon 2, Super Mario Odyssey).
- Open Yuzu and go to Emulation > Configure > Controls.
- Under Motion, click Configure.
- Add a CemuHook motion server at
127.0.0.1:26760. - Click OK and save.
The DSU protocol has a hard limit of 4 controller slots. This is a limitation of the protocol specification itself, not PadForge.
PadForge supports up to 16 virtual controller slots, but only the first 4 slots broadcast motion data via DSU. Slots 5 through 16 are skipped for DSU purposes.
What this means in practice:
- If you have one controller, assign it to slot 1 -- it will stream motion data as DSU slot 1.
- If you are doing local multiplayer with motion controls, you can use up to 4 controllers for motion.
- If you need motion data and have a controller assigned to slot 5 or later, move it to one of the first 4 slots.
Most single-player use cases only need one slot, so this limit rarely matters.
The UDP port defaults to 26760, which is the standard cemuhook port that virtually all emulators expect by default. You can change it in the Dashboard if needed.
When choosing a port:
- Make sure the port matches what your emulator is configured to connect to.
- Make sure the port is not already in use by another application (e.g., another DSU server like BetterJoy or DS4Windows).
- The DSU server binds to localhost only (
127.0.0.1), so firewall rules are not needed when the emulator runs on the same machine.
If you see a "port already in use" error, another application is likely running a DSU server on port 26760. Either stop that application or change PadForge's port to a different number (e.g., 26761) and update your emulator settings to match.
PadForge automatically translates motion sensor data from SDL3's coordinate system to the DSU/DualShock 4 coordinate convention that emulators expect. This mapping has been tested with DualSense, DualShock 4, and Switch Pro Controller and works universally across supported devices. No manual axis configuration is needed.
| Problem | Solution |
|---|---|
| Emulator does not detect motion | Make sure the DSU server is enabled and shows "Running" on the Dashboard. Also confirm the input engine is running (play button). |
| Port already in use | Another DSU server (BetterJoy, DS4Windows, etc.) may be using port 26760. Stop it or change PadForge's port. |
| Motion works but directions are wrong | This should not happen with supported controllers. If it does, please report it as a bug with your controller model. |
| Motion only works for the first controller | The DSU protocol is limited to 4 slots. Make sure your motion-capable device is assigned to one of the first 4 virtual controller slots. |
| No motion sensors on my device | Not all controllers have gyroscopes. Xbox controllers, for example, do not. Check the Devices page to see if your controller reports motion sensor capability. |
| Emulator shows "connected" but no motion data | Confirm your physical controller is assigned to a virtual controller slot (not just detected on the Devices page). The controller must be actively sending input through PadForge's pipeline. |
- Dashboard -- Enable and configure the DSU server
- Devices -- Check which controllers have motion sensors
- Settings -- General application settings
- Troubleshooting -- More help with common issues