-
Notifications
You must be signed in to change notification settings - Fork 6
DSU Motion Server
PadForge broadcasts gyro and accelerometer data from your controller over UDP so emulators can use motion in Wii, Wii U, Switch, and 3DS games.

DSU (DualShock UDP) is the network format that emulators use to receive motion data. It came from the cemuhook project. The name says DualShock, but any controller with a gyro and accelerometer works. PadForge runs the server. Your emulator connects as a client.
PadForge accepts more than one subscriber at the same time. Run Cemu and Dolphin side by side and both receive the same motion stream.
| Emulator | Platform | What to pick in its UI |
|---|---|---|
| Cemu | Wii U | DSU1 / By Slot |
| Dolphin | Wii / GameCube | DSUClient |
| Ryujinx | Switch | CemuHook compatible motion |
| Yuzu (no longer maintained) | Switch | CemuHook motion server |
| Lime3DS / Citra | 3DS | CemuHook motion server |
Any app that asks for a "cemuhook motion server" or "DSU server" speaks this format.
A controller has to ship a gyro and accelerometer for any of this to work.
| Reports motion | 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 |
The Devices page shows live gyro and accelerometer values for any controller that has them.
- Plug in a controller that reports motion.
- On the Dashboard, tick Enable DSU motion server (cemuhook). The status dot turns green and shows port 26760.
- Start the input engine with the play button.
- Point your emulator at
127.0.0.1port26760(see tables below).
Motion data flows the moment both ends are running.
The DSU broadcast carries the calibrated gyro stream that the Gyro tab tunes for each (device, slot) pair. Calibration, sensitivity (horizontal and vertical), reference frame (Local / Player / World), and the Aim Engage button picker all live there. The Aim Engage button gates gyro output on a held button and applies to mapping rows that read from a Gyro source. The DSU broadcast itself uses the calibrated raw stream, not the gated post-engage value, so emulators see motion data regardless of whether the engage button is held.
The Dashboard switch is the global on / off. There is no per-slot DSU enable toggle. Slots 1-4 broadcast when DSU is on; slots 5-16 are above the protocol cap and never broadcast.
All four guides assume the default port 26760. Change the number on both ends if you move it.
127.0.0.1means "this computer." Use it when PadForge and the emulator run on the same PC.
- Options > GamePad motion source > DSU1 > By Slot.
- Server:
127.0.0.1. Port:26760. - Pick Slot 1.
- Launch a motion-using Wii U game (Splatoon, Breath of the Wild).
- Controllers.
- Set Wii Remote to "Emulated Wii Remote" and click Configure.
- Under Motion Simulation or Motion Input, pick source DSUClient.
- Click Configure next to DSUClient. Enter
127.0.0.1:26760.
- Options > Settings > Input.
- Under Motion, tick Use CemuHook compatible motion.
- Server:
127.0.0.1. Port:26760. - Save.
- Emulation > Configure > Controls.
- Under Motion, click Configure.
- Add a CemuHook motion server at
127.0.0.1:26760.
The DSU format only carries 4 slots. PadForge supports 16. Slots 5-16 do not appear in the broadcast.
- Single player: put the motion controller in slot 1.
- Local multiplayer with motion: up to 4 controllers.
- Motion controller in slot 5 or later does not show up in the emulator. Move it to slots 1-4.
Default UDP port: 26760. Every emulator expects this number out of the box.
- The number has to match on both ends.
- No other DSU server (BetterJoy, DS4Windows) can hold the same port.
- PadForge binds to localhost only. No firewall rule needed when the emulator runs on the same PC.
If the Dashboard shows "Port already in use," another DSU server is running. Stop it, or change PadForge's port (try 26761) and update the emulator.
PadForge converts SDL3 motion data to the DSU / DualShock 4 axis convention. Tested with DualSense, DualShock 4, and Switch Pro Controller. No manual axis flipping needed.
| Problem | Fix |
|---|---|
| Emulator does not see motion | Check the Dashboard shows DSU "Running." Check the engine is running (play button). |
| Port already in use | Stop BetterJoy or DS4Windows, or change PadForge's port and the emulator to match. |
| Motion directions are wrong | Open an issue with the controller model and what's flipped. |
| Only one controller has motion | DSU caps at 4 slots. Move the motion device to slots 1-4. |
| Device has no motion sensors | Some controllers (Xbox) ship without a gyro. Check the Devices page. |
| Emulator says "connected" but no values | The physical controller has to be assigned to a slot, not only detected on the Devices page. |
- Dashboard: master DSU on/off and status dot.
- Controller Slots: per-slot DSU broadcast and Gyro Aim mapping.
- Devices: which controllers report motion.
- Settings: language, polling, drivers.
- Troubleshooting: more help.
Last updated for PadForge 3.2.0.