Skip to content

DSU Motion Server

hifihedgehog edited this page Mar 6, 2026 · 14 revisions

DSU Motion Server

PadForge includes a built-in DSU (cemuhook) motion server that broadcasts gyroscope and accelerometer data from your physical controllers over UDP. Emulators like Cemu, Dolphin, Yuzu, and Ryujinx can connect to this server to get motion control data.


What Is DSU?

DSU stands for "DualShock UDP" and is the protocol originally created by the cemuhook project. It has become the standard way for emulators to receive motion data from external sources. Even though the name references DualShock, it works with any controller that has motion sensors.


Requirements

  • A physical controller with gyroscope and accelerometer sensors. Supported controllers include:
    • Sony DualSense (PS5)
    • Sony DualShock 4 (PS4)
    • Nintendo Switch Pro Controller
    • Nintendo Switch 2 Pro Controller
    • Other SDL3-compatible motion sensor devices
  • The PadForge input engine must be running.

Enabling the Server

  1. Go to the Dashboard.
  2. In the Motion Server section, check Enable DSU motion server (cemuhook).
  3. The status indicator turns green and shows "Running" when the server starts successfully.
  4. The default port is 26760. You can change this if another application is already using that port.

Connecting an Emulator

Cemu

  1. In Cemu, go to Options > GamePad motion source > DSU1 > By Slot.
  2. Set the server address to 127.0.0.1 and port to 26760 (or whatever port you configured).
  3. Motion data from your controller will now be available in Cemu.

Dolphin

  1. In Dolphin, go to Controllers > Configure for your Wii Remote or GameCube controller.
  2. Under Motion Input, select DSUClient as the source.
  3. Click Configure and set the server to 127.0.0.1:26760.

Ryujinx

  1. In Ryujinx, go to Options > Settings > Input.
  2. Under Motion, enable Use CemuHook compatible motion and set the server address to 127.0.0.1 and port 26760.

Yuzu (Legacy)

  1. In Yuzu, go to Emulation > Configure > Controls.
  2. Under Motion, click Configure and add a CemuHook motion server at 127.0.0.1:26760.

Note: The server address 127.0.0.1 means "this computer." If PadForge is running on the same machine as the emulator, this is the correct address.


Slot Limit

The DSU protocol supports a maximum of 4 controller slots. If you have more than 4 virtual controller slots in PadForge, only the first 4 will broadcast motion data. Slots 5 through 16 are skipped for DSU.


Port Configuration

The UDP port defaults to 26760, which is the standard cemuhook port that most emulators expect. You can change it to any port between 1024 and 65535. Make sure the port you choose:

  • Matches the port configured in your emulator
  • Is not already in use by another application
  • Is not blocked by your firewall (if connecting from a different computer on your network)

Axis Mapping

PadForge automatically translates the motion sensor data from SDL3's coordinate system to the DSU/DualShock 4 coordinate convention that emulators expect. This mapping has been verified with DualSense and Switch Pro Controller and works universally across supported devices. No manual axis configuration is needed.


Troubleshooting

Problem Solution
Emulator does not detect motion Make sure the DSU server is enabled and shows "Running" on the Dashboard
Motion data is received but incorrect This should not happen with supported controllers. If it does, try a different controller.
Port already in use Change the port in PadForge and update the port in your emulator settings to match
Motion only works for first controller The DSU protocol limit is 4 slots. Ensure your motion-capable device is assigned to one of the first 4 slots.
No motion sensors on device Not all controllers have gyroscopes. Check the Devices page to see if your controller lists motion sensor capabilities.

Related Pages

  • Dashboard — Enable and configure the DSU server
  • Devices — Check which controllers have motion sensors
  • Settings — General application settings
  • Troubleshooting — More help with common issues

Clone this wiki locally