DSU Client: Difference between revisions

Jump to navigation Jump to search
1,864 bytes added ,  27 June 2022
(→‎Windows: BetterJoyForCemu got renamed to BetterJoy)
(14 intermediate revisions by 5 users not shown)
Line 5: Line 5:


=== Linux ===
=== Linux ===
As of {{revision|5.0-11484}}, motion axes of Wii Remotes, DualShock 3 and DualShock 4 controllers can be directly mapped in Dolphin through evdev input API. Additionally, the following servers are available:
As of {{revision|5.0-11484}}, motion axles of Wii Remotes, DualShock 3/4, DualSense and Nintendo Switch controllers can be directly mapped in Dolphin through '''[[Motion evdev|evdev input API]]''', which generally provides better latency than DSU Clients and thus is generally preferred.
 
Alternatively, the following servers are available:
* '''[https://github.com/TheDrHax/ds4drv-cemuhook ds4drv] (TheDrHax fork):''' compatible with all DualShock 4 controllers.
* '''[https://github.com/TheDrHax/ds4drv-cemuhook ds4drv] (TheDrHax fork):''' compatible with all DualShock 4 controllers.
* '''[https://github.com/v1993/linuxmotehook linuxmotehook]:''' compatible with Wii Remotes. Starting with {{revision|5.0-11684}}, Dolphin can map Wii Remote buttons and motion axes directly, by enabling "Connect Wii Remotes for Emulated Controller" option on Controller Settings. Consider using Dolphin's built-in functionality instead of linuxmotehook.
* '''[https://github.com/v1993/evdevhook evdevhook]:''' compatible with all controllers that properly expose motion via evdev (Nintendo Switch controllers, DualShock 3/4 and DualSense).
* '''[https://github.com/joaorb64/joycond-cemuhook joycond-cemuhook]:''' compatible with Nintendo Switch controllers.
* '''[https://github.com/v1993/linuxmotehook linuxmotehook]:''' compatible with Wii Remotes. Starting with {{revision|5.0-11684}}, Dolphin can map Wii Remote buttons and motion axles directly, by enabling "Connect Wii Remotes for Emulated Controller" option on Controller Settings. Consider using Dolphin's built-in functionality instead of linuxmotehook.
* '''[https://github.com/kmicki/SteamDeckGyroDSU SteamDeckGyroDSU]:''' compatible with the Steam Deck, requires SteamOS 3.0.


=== Windows ===
=== Windows ===
* '''[https://github.com/Davidobot/BetterJoy BetterJoy]:''' compatible with Nintendo Switch Joy-Con and Pro Controllers.
* '''[https://github.com/Davidobot/BetterJoy BetterJoy]:''' compatible with Nintendo Switch Joy-Con and Pro Controllers.
* '''[https://ryochan7.github.io/ds4windows-site/ DS4Windows] (Ryochan7 fork):''' compatible with all DualShock 4 controllers.
* '''[https://github.com/MichaelJW/DorsalVR DorsalVR]:''' compatible with OpenXR devices (ex: VR HMD and controllers).
* '''[https://github.com/iwubcode/OpenTrackDSUServer OpenTrack] (experimental):''' allows passing through OpenTrack methods of control via UDP.
* '''[https://ryochan7.github.io/ds4windows-site/ DS4Windows] (Ryochan7 fork):''' compatible with all DualShock 4 models, DualSense, Nintendo Switch Joy-Con and Pro Controllers.
* '''[https://github.com/iwubcode/OpenTrackDSUServer OpenTrack DSU Server] (experimental):''' allows passing through [https://github.com/opentrack/opentrack OpenTrack] methods of control via UDP.
* '''[https://github.com/nefarius/ScpToolkit ScpToolkit] (Nefarius fork, [https://github.com/rajkosto/ScpToolkit/releases requires patching]):''' compatible with DualShock 3 and older DualShock 4 controllers (model CUH-ZCT1x). Since ScpToolkit is unmaintained and has connectivity issues with the newer DualShock 4 controllers (model CUH-ZCT2x), its usage is recommended only with DualShock 3 controllers. For DualShock 4 controllers, use DS4Windows instead.
* '''[https://github.com/nefarius/ScpToolkit ScpToolkit] (Nefarius fork, [https://github.com/rajkosto/ScpToolkit/releases requires patching]):''' compatible with DualShock 3 and older DualShock 4 controllers (model CUH-ZCT1x). Since ScpToolkit is unmaintained and has connectivity issues with the newer DualShock 4 controllers (model CUH-ZCT2x), its usage is recommended only with DualShock 3 controllers. For DualShock 4 controllers, use DS4Windows instead.
* '''[https://github.com/msxmine/SI2DSU SI2DSU]:''' connects to SteamWorks and serves a controller recognized by SteamInput.  Allows some gyro controllers to work over Steam Link/RemotePlay/In-Home-Streaming.
* '''[https://github.com/msxmine/SI2DSU SI2DSU]:''' connects to SteamWorks and serves a controller recognized by SteamInput.  Allows some gyro controllers to work over Steam Link/RemotePlay/In-Home-Streaming.
Line 19: Line 25:


=== macOS ===
=== macOS ===
No known servers.
* '''[https://github.com/marcowindt/ds4macos ds4macos]:''' compatible with all DualShock 4 controllers. (Note: ds4macos does not work with the latest version of Dolphin at the moment. Until the issue is fixed you should use version 5.0-14363 or earlier of Dolphin if you want to use this application.)


=== Android ===
=== Android ===
* '''[https://files.sshnuke.net/net.sshnuke.dsu.MotionSource-1.1.2.apk rajkosto's MotionSource]:''' for Android devices, provides only motion sensor data.
* '''[https://files.sshnuke.net/net.sshnuke.dsu.MotionSource-1.1.2.apk rajkosto's MotionSource]:''' provides only motion sensor data.
* '''[https://github.com/marcowindt/WiiMoteDSU WiiMoteDSU]:''' provides motion sensor data and basic button functionality.
 
=== iOS ===
* '''[https://github.com/marcowindt/WiiMoteDSU WiiMoteDSU]:''' requires sideloading or a jailbroken device, provides motion sensor data and basic button functionality.


== Setting up ==
== Setting up ==
Line 35: Line 45:
# Make sure you're running Dolphin {{revision|5.0-11083}} or newer.
# Make sure you're running Dolphin {{revision|5.0-11083}} or newer.
# Go to Controller Settings => Alternate Input Sources.
# Go to Controller Settings => Alternate Input Sources.
# On the DSU Client tab, mark the "Enable" checkbox then enter the IP Address and Port where the server application is listening.
# On the DSU Client tab, mark the "Enable" checkbox, then click on "Add" and enter the IP Address and Port where the server application is listening.
If everything is working, you should now see new <code>DSUClient/x/xxxx</code> entries on the Devices drop-down menu shown on Emulated GameCube Controllers, Emulated Wii Remotes and Hotkey Settings windows.
If everything is working, you should now see new <code>DSUClient/x/xxxx</code> entries on the Devices drop-down menu shown on Emulated GameCube Controllers, Emulated Wii Remotes and Hotkey Settings windows.


Line 69: Line 79:
=== I can't reach the left/right sides of the screen with the emulated pointer ===
=== I can't reach the left/right sides of the screen with the emulated pointer ===
Increasing "Total Yaw" on the Motion Input tab of Emulated Wii Remotes should fix that. Keep in mind there isn't a correct value as the amount of yaw needed for the emulated pointer reach both sides of the screen varies a lot between different games, so finding a value that works with all games is somewhat impossible.
Increasing "Total Yaw" on the Motion Input tab of Emulated Wii Remotes should fix that. Keep in mind there isn't a correct value as the amount of yaw needed for the emulated pointer reach both sides of the screen varies a lot between different games, so finding a value that works with all games is somewhat impossible.
=== My controller has rumble support but I can't map it when using DSU Client ===
Since the DSU protocol doesn't carry rumble data, that's expected. Fortunately, most DSU Servers will also assign a virtual XInput device for every real controller connected to them, so you can map the rumble through this virtual device. To do that, right click the "Motor" binding on Emulated GameCube Controller or Emulated Wii Remote settings and select the appropriate XInput device in the dropdown list.


=== I'm using a DualShock 3 controller and button presses only register if I press the buttons hard ===
=== I'm using a DualShock 3 controller and button presses only register if I press the buttons hard ===
With the exception of the Start, Select, PS, L3 and R3, all DualShock 3 buttons are pressure sensitive. Different from the common input APIs, the amount of pressure being applied to each button is reported back to Dolphin as full analog buttons when accessing DualShock 3 controllers through DSU Protocol.  
With the exception of the Start, Select, PS, L3 and R3, all DualShock 3 buttons are pressure sensitive. Different from the common input APIs, the amount of pressure being applied to each button is reported back to Dolphin as full analog buttons when accessing DualShock 3 controllers through DSU protocol.  


By default, Dolphin will register analog buttons as "pressed" when at least 50% of force is applied to them, but users can fine-tune that threshold individually by right-clicking each binding and adjusting the "Range" slider. For instance, setting the range to 200 will register the buttons as pressed when 25% of force is applied to them, and that value seems to provide a button press feedback very close of other controllers with digital-only face buttons (e.g. DualShock 4, Xbox, Joy-Con, Pro Controller, etc).
By default, Dolphin will register analog buttons as "pressed" when at least 50% of force is applied to them, but users can fine-tune that threshold individually by right-clicking each binding and adjusting the "Range" slider. For instance, setting the range to 200 will register the buttons as pressed when 25% of force is applied to them, and that value seems to provide a button press feedback very close of other controllers with digital-only face buttons (e.g. DualShock 4, Xbox, Joy-Con, Pro Controller, etc).


[[Category:Tutorials]]
[[Category:Tutorials]]

Navigation menu