-
Notifications
You must be signed in to change notification settings - Fork 6
DSU Motion Server
PadForge streams gyroscope and accelerometer data from physical controllers to emulators over UDP, enabling motion controls in Wii, Wii U, and Switch games running in Dolphin, Cemu, Ryujinx, and other emulators.
DSU (DualShock UDP) is a network protocol created by the cemuhook project. Despite the name, it works with any motion-capable controller. Not just PlayStation. It is the standard way emulators receive motion data. PadForge acts as the server; emulators connect as clients.
| Emulator | Platform | DSU Name in UI |
|---|---|---|
| Cemu | Wii U | DSU1 / By Slot |
| Dolphin | Wii / GameCube | DSUClient |
| Ryujinx | Switch | CemuHook compatible motion |
| Yuzu (discontinued) | Switch | CemuHook motion server |
| Lime3DS / Citra | 3DS | CemuHook motion server |
Any application requesting a "cemuhook motion server" or "DSU server" speaks this protocol.
Only controllers with built-in gyroscopes and accelerometers report motion data.
| Has Motion Sensors | No Motion Sensors |
|---|---|
| DualSense (PS5) | Xbox 360 |
| DualShock 4 (PS4) | Xbox One |
| Switch Pro Controller | Xbox Series |
| Switch 2 Pro Controller | Most third-party USB gamepads |
| Joy-Con (left and right) | |
| Steam Deck built-in controller |
On the Devices page, motion-capable controllers show gyro/accel data in their input state display.
- Connect a motion-capable controller.
- On the Dashboard, 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 guides below). - Start the PadForge input engine (play button on Dashboard).
Motion data now streams to the emulator.
All guides assume the default port 26760. Substitute if changed.
Note:
127.0.0.1means "this computer" (localhost). Correct when PadForge and the emulator run on the same machine.
- Go to Options > GamePad motion source > DSU1 > By Slot.
- Set server address to
127.0.0.1, port to26760. - Select Slot 1.
- Launch a motion-enabled Wii U game (e.g., Splatoon, Breath of the Wild).
- Go to Controllers.
- Set Wii Remote to "Emulated Wii Remote" and click Configure.
- Find Motion Simulation or Motion Input and set source to DSUClient.
- Click Configure next to DSUClient and enter
127.0.0.1:26760.
- Go to Options > Settings > Input.
- Under Motion, enable Use CemuHook compatible motion.
- Set server address to
127.0.0.1, port to26760. - Click Save.
- Go to Emulation > Configure > Controls.
- Under Motion, click Configure.
- Add a CemuHook motion server at
127.0.0.1:26760.
The DSU protocol caps motion data at 4 controller slots (a protocol limitation).
PadForge supports up to 16 virtual controller slots, but only slots 1-4 broadcast motion via DSU. Slots 5-16 are skipped.
- Single-player: assign the motion controller to slot 1.
- Local multiplayer with motion: up to 4 controllers.
- Motion controller in slot 5 or later? Move it to slots 1-4 to enable DSU.
Default UDP port: 26760 (the standard cemuhook port all emulators expect).
- Port must match the emulator's configuration.
- No other DSU server (BetterJoy, DS4Windows, etc.) can occupy the same port.
- Binds to localhost (
127.0.0.1) only. No firewall rules needed when the emulator runs on the same machine.
"Port already in use": Another application runs a DSU server on 26760. Stop it or change PadForge's port (e.g., 26761) and update the emulator to match.
PadForge automatically translates SDL3 motion data to the DSU/DualShock 4 coordinate convention. Tested with DualSense, DualShock 4, and Switch Pro Controller. No manual axis configuration required.
| Problem | Solution |
|---|---|
| Emulator does not detect motion | Confirm DSU server shows "Running" on the Dashboard and the engine is running (play button). |
| Port already in use | Stop other DSU servers (BetterJoy, DS4Windows, etc.) or change PadForge's port. |
| Motion directions wrong | Report as a bug with the controller model. |
| Motion only works for first controller | DSU supports 4 slots max. Move the motion device to slots 1-4. |
| No motion sensors on device | Not all controllers have gyroscopes (e.g., Xbox). Check the Devices page. |
| Emulator shows "connected" but no data | The physical controller must be assigned to a virtual controller slot, not just detected on the Devices page. |
- Dashboard: Enable and configure the DSU server
- Controller Slots: DSU broadcasts from the first 4 slots
- Devices: Check which controllers have motion sensors
- Settings: General application settings
- Troubleshooting: More help with common issues