Search for BetterJoy and Dolphin long enough and you will run into pages offering a “BetterJoyForDolphin” download. Before the setup steps, the myth needs busting: there is no such product. No GitHub repository, no release line, no separate Dolphin edition exists. What exists is one program — BetterJoy — whose executable kept its original filename, BetterJoyForCemu.exe, even after the project renamed itself to BetterJoy (the name change is right there in the v6.1 release notes). The old filename misleads people into imagining sibling editions for each emulator. There aren’t any: BetterJoy works with Dolphin through a standard motion protocol, the same way it works with everything else. With that settled, here is how the connection actually works in Dolphin 2609 — and why Dolphin’s own documentation may steer you away from needing it.
Dolphin’s official position: SDL first, DSU second
Dolphin is actively developed — the current release line is 2609 (September 2026) — and its wiki’s DSU Client page takes a clear stance. Since Dolphin 5.0-16861, a Switch controller’s motion axes can be mapped directly through SDL inside Dolphin, and the wiki states that this generally performs better than the DSU route, with lower latency, so it should be preferred. BetterJoy appears on that page as one of the alternative DSU servers for cases where the direct route does not fit. We think that ordering is correct, and this guide follows it: native first, BetterJoy when you have a reason. If you do go the BetterJoy route, the verified package is on the BetterJoy download page.
Route A: native SDL motion in Dolphin
- Pair the Pro Controller or Joy-Cons with Windows over Bluetooth (or connect by USB).
- In Dolphin, open Controllers and configure an emulated Wii Remote or GameCube controller.
- Choose the SDL entry for your Switch controller as the device.
- Map buttons and sticks, then map the motion axes from the same SDL device — Dolphin reads the gyro and accelerometer directly.
- Test in a game with motion aiming or pointer controls and adjust sensitivity in Dolphin’s motion settings if needed.
No ViGEmBus, no background server, nothing else translating the pad. For a single Pro Controller this is the setup we recommend to most Dolphin users in 2026.
Route B: BetterJoy as Dolphin’s DSU server
BetterJoy earns its place in a Dolphin setup when SDL will not cooperate — a controller SDL does not expose cleanly, a Bluetooth stack quirk, or a rig where BetterJoy already feeds several emulators at once (see the Platforms & Emulators hub). The arrangement: BetterJoy turns the pad into a virtual XInput controller for buttons and runs its DSU server for motion; Dolphin connects as a DSU client.
- Install ViGEmBus, pair the controller, and run BetterJoy — confirm the controller is listed in its window.
- In Dolphin, open Controllers → Alternate Input Sources and enable the DSU client.
- Set the server address to 127.0.0.1 and port 26760, BetterJoy’s defaults.
- Back in controller configuration, select the DSU device/slot as the motion source for your emulated controller and map motion from it.
The conflict to avoid
Do not leave both paths live for the same pad. If Dolphin reads the physical controller through SDL and BetterJoy’s virtual XInput controller and the DSU feed, you can get doubled inputs or a controller that seems possessed — the same failure family as the one in our double input fix. Pick the device entries deliberately: in a BetterJoy setup, buttons come from the virtual controller and motion from DSU; in a native setup, everything comes from SDL. Lag complaints in this arrangement usually trace to Bluetooth, not the protocol — work through the Joy-Con Bluetooth lag fix (issue #731’s Dolphin case was solved by updating the Intel Bluetooth driver).
So, “BetterJoyForDolphin”: why the confusion persists
Three ingredients keep the myth alive. First, the filename: BetterJoyForCemu.exe looks like one of a family (“ForCemu”, so surely “ForDolphin”?). Second, the project’s original name really was BetterJoyForCemu — it was written for Cemu with Cemuhook, then grew generic XInput and DSU support, and was renamed BetterJoy in v6.1 while the .exe kept its birth name. Third, content farms happily invent edition pages for search traffic. The project’s own record is unambiguous: one repository, one release line (ending at v7.1), plus a separately maintained community fork — and its Dolphin relationship is “DSU server”, full stop. Any download labelled as a Dolphin edition is a repack of that same program, at best.
A note on Wii Remote emulation
Most Switch-controller-in-Dolphin setups exist for Wii games, where the emulated Wii Remote’s motion is the whole point — pointing, tilting, shaking. Both routes above feed the same destination: Dolphin’s Wii Remote motion inputs. The difference is only where the gyro data is translated (inside Dolphin via SDL, or in BetterJoy and shipped over DSU). GameCube titles, which never used motion, need nothing from this page at all: any route that delivers buttons and sticks — including plain SDL — is complete.
FAQ
Is BetterJoy required for motion controls in Dolphin?
No. Dolphin’s wiki recommends mapping Switch controller motion directly via SDL, which has been possible since 5.0-16861. BetterJoy is an alternative motion source, useful when the direct route misbehaves or when one server feeds several emulators.
Which is less laggy, SDL or BetterJoy’s DSU?
Dolphin’s documentation says SDL mapping generally has lower latency than DSU, because the data makes one less hop. In practice Bluetooth quality dominates both — a weak adapter will make either route feel bad.
Can I use a split Joy-Con pair in Dolphin?
Yes. Natively, Dolphin can read each Joy-Con through SDL; through BetterJoy you can also join or split them first (see using Joy-Cons as one controller) and let Dolphin see the combined virtual pad with DSU motion.
