Bluetooth Passthrough


These days, most emulators use pre-configured mappings to allow any controller that uses xinput to be immediately mapped to whatever the original console used. But that is only possible because of the standardized button layout that has proliferated throughout consoles. Mapping older controllers, such as the SNES controller, to a modern controller is pretty much trivial. Even a PS2 controller can be mapped to an Xbox 360 controller without losing much.

For Dolphin, things get a bit more complicated. While the GameCube Controller has a few trouble spots, such as the analog/digital combo R and L buttons, it can mostly map to a modern controller without issues. The situation goes from okay to very dicey when we move to the Wii and its titular Wii Remote. This unique controller is extremely difficult to generically map to standard game controllers. Usually, users will save emulated Wii Remote profiles per game, only mapping what is needed simply because mapping a single configuration for all games is impossible.

For years, Dolphin has used "Real Wiimote" support to get around these mapping problems. Instead of worrying about mapping highly complex motions to a button or an axis, you can use the original controller and just do the motion, exactly as you would on the original console!


-trwiimotesideways.jpg


Unfortunately, even when using Real Wiimotes Dolphin could sometimes leave something to be desired. Broken Wii Remote speaker audio, lag during rumble/audio, difficulty detecting accessories like the MotionPlus, and inaccurate syncing with the MotionPlus made games less enjoyable. On MacOS, simply scanning for Wii Remotes can crash the emulator!

This all traces back to the eccentricities of the Wii, and the awful things Bluetooth stacks and operating systems do to Wii Remotes. Dolphin simply has no choice but to hack around these issues, and operating systems are not very fond of it. In the case of Windows 7, most modern Wii Remotes can't even be connected.

With something as complicated as the Wii Remote, less emulation is better. Even with GameCube Controllers, using Nintendo's Wii U Controller Adapter (and its clones), Dolphin can essentially bypass a lot of controller emulation. This is the best way to get authentic GameCube controls without compromise in Dolphin. Now the same ideas are being applied to Wii Remotes! Excellent Wii Remote support is now possible by not emulating a Wii Bluetooth adapter!


The Magic of Not Emulating Stuff

Much like Native GameCube Controllers, Dolphin can achieve this through LibUSB. In the case of "Native" GameCube Controller Adapters, they all have to work exactly the same because of their compatibility with the Wii U. Things aren't quite as easy for Dolphin and Wii Remotes; for the most part users are going to be using standard Bluetooth adapters. That's not to say that you can't use a Wii Bluetooth adapter; with some basic soldering skills you can create abominations to the world that work on your PC!


android-wiicontrols.jpg

Soldering skill level: Good Enough


By installing a LibUSB driver on an existing Bluetooth adapter, users can allow Dolphin to bypass the host Bluetooth stack and directly interface with the device. This means that bugs and issues brought on by both missing features from the host Bluetooth stack and bugs in Dolphin's Bluetooth adapter emulation are avoided!

This level of control lets Dolphin to make Bluetooth adapters behave just like a Wii's Bluetooth system, allowing Wii Remotes to be synced to Dolphin directly, and closing the emulator will turn off all connected Wii Remotes. Limitations on connecting Wii Remotes have been removed; Third Party Wii Remotes, -TR Wii Remotes and standard Wii Remotes will connect and sync to your computer regardless of Bluetooth stack limitations! Windows 7 users upset about the Bluetooth stack not supporting Motion+ Included Wii Remotes can bypass the issue altogether with Bluetooth Passthrough!

In terms of performance, Wii Remote audio can work on all models, Motion+ is detected properly and has much more accurate motion detection. In games like Skyward Sword and Wii Sports Resort Bowling, there was a noticeable difference between Emulated Bluetooth and Bluetooth Passthrough.


skywardsword4k.jpg

With Bluetooth Passthrough Skyward Sword controls exactly as it did on the Wii


And that's just the tip of the iceberg; this essentially allows for perfect Wii Remote behaviors in Dolphin. The other big benefit is that it narrows down what bugs are a part of Dolphin's standard Real Wii Remote path as well, making it clear where bugs lie. This doesn't mean all of this is possible on the old path: we still rely on the host Bluetooth stack, but perhaps something could be done about issues like detecting motion+.

Unlike the Native GameCube Controller support, Bluetooth Passthrough does not require an actual Wii Bluetooth adapter. While real Wii hardware can be used and provides the best experience possible, any compatible Bluetooth adapter can be used for this feature.


What you need

As of 5.0-910 you can directly give control of a Bluetooth adapter to Dolphin by installing the same LibUSB driver to it used for the Wii U Adapter and other HID USB devices. You'll need a compatible Bluetooth adapter. The wiki page details some additional information about how to set this up on each operating system and testing results of various adapters: read now


What are the limitations?

There are two big limitations to note right away. One is that savestates do not work with this feature. With Emulated Bluetooth, Dolphin is emulating the Wii's Bluetooth adapter, allowing it to save the current state of the emulated Bluetooth adapter so it can be retrieved when loading a state. With Bluetooth Passthrough your Bluetooth adapter is acting as the Wii's Bluetooth adapter, and there is no way to store the adapter's state when it's working at this low level; the adapter would be utterly confused by it. The second is that because this skips Dolphin's Bluetooth adapter emulation, Emulated Wii Remotes and Real Wii Remotes on Emulated Bluetooth cannot be mixed with Bluetooth Passthrough Wii Remotes. And if you're thinking of making a savestate in one mode and switching to the other, unfortunately, it won't work. Savestates are not compatible between Bluetooth modes.

Another thing to keep in mind is that because you have to overwrite the Bluetooth adapter's driver, it is not useable for other devices while being used for Dolphin. While the process is completely reversible, just keep this in mind before going through the steps!

Note that your experience will vary greatly depending on how your Bluetooth adapter reacts to the feature. During testing, ~12 Bluetooth adapters were tested between several users, and three of them failed altogether, two more had serious issues, and others had limitations in terms of connectivity and audio. The best experience anyone got was by soldering a replacement Wii Bluetooth adapter to a USB cable and using that. With the actual Wii Bluetooth adapter, audio worked properly even across four Wii Remotes in a motion+ title and there was no lag while initially syncing Wii Remotes.

Users are highly recommended to use a USB 3.0 Port or better for the Bluetooth adapter. USB 2.0 ports, for some reason or another, do not perform as well when it comes to multiple Wii Remotes or Wii Remote audio even when using the same Bluetooth adapter. It is also recommended that you do not simply go out and buy the most expensive adapter and expect it to work perfectly. As of current testing; there isn't much rhyme or reason to which adapters work well or poorly. The only guarantee is that the Wii Bluetooth Adapter will provide the absolute best experience.

Note: As of 10.9, MacOS does not allow us to take control of a Bluetooth Adapter, and thus this feature will not work on MacOS. It may be possible to make a codeless kext to allow taking over Bluetooth adapters, but it would need to be customized for each adapter, which would make it very complex. Advanced users should be able to make it work on an adapter by adapter basis.

Note 2: Note that the DolphinBar does not expose its Bluetooth adapter to the system, and cannot be used for Bluetooth Passthrough.


In Conclusion

This is an exciting feature for everyone who wants perfect Wii Remote control in their favorite games. It cannot be said how much The Legend of Zelda: Skyward Sword improves with passthrough. Despite Emulated Bluetooth's Real Wii Remote support working fine in it for years, it was immediately noticeable when switching to Passthrough mode. We expect avid gamers and casual fans alike to enjoy this feature and hopefully with time some of the benefits will trickle back to the emulated Bluetooth path as well.

For now, Bluetooth passthrough just makes Wii Remotes work.

You can continue the discussion in the forum thread of this article.

Next entry

Previous entry

Similar entries