Skip to content

DSU Motion Server

hifihedgehog edited this page May 21, 2026 · 14 revisions

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.

The Motion Server controls on the Dashboard


What it is

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.

Emulators that connect

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.


Controllers that report motion

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
2026 Steam Controller

The Devices page shows live gyro and accelerometer values for any controller that has them.


Turn it on

  1. Plug in a controller that reports motion.
  2. On the Dashboard, tick Enable DSU motion server (cemuhook). The status dot turns green and shows port 26760.
  3. Start the input engine with the play button.
  4. Point your emulator at 127.0.0.1 port 26760 (see tables below).

Motion data flows the moment both ends are running.

Per-slot tuning lives on the Gyro tab

The DSU broadcast carries the calibrated gyro stream that the Gyro tab tunes per pad per slot. 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.


Emulator setup

All four guides assume the default port 26760. Change the number on both ends if you move it.

127.0.0.1 means "this computer." Use it when PadForge and the emulator run on the same PC.

Cemu (Wii U)

  1. Options > GamePad motion source > DSU1 > By Slot.
  2. Server: 127.0.0.1. Port: 26760.
  3. Pick Slot 1.
  4. Launch a motion-using Wii U game (Splatoon, Breath of the Wild).

Dolphin (Wii / GameCube)

  1. Controllers.
  2. Set Wii Remote to "Emulated Wii Remote" and click Configure.
  3. Under Motion Simulation or Motion Input, pick source DSUClient.
  4. Click Configure next to DSUClient. Enter 127.0.0.1:26760.

Ryujinx (Switch)

  1. Options > Settings > Input.
  2. Under Motion, tick Use CemuHook compatible motion.
  3. Server: 127.0.0.1. Port: 26760.
  4. Save.

Yuzu (legacy)

  1. Emulation > Configure > Controls.
  2. Under Motion, click Configure.
  3. Add a CemuHook motion server at 127.0.0.1:26760.

The 4-slot cap

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.

Port

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.


Axis convention

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.


Trouble

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.

Related pages

Last updated for PadForge 3.2.0.

Clone this wiki locally