How to hook the Wiimote to your PC
8/17/2007
Hooking a Wiimote to your PC should be rather easy, no? After all it is just a Bluetooth device. Pair it up, and go? Unfortunately no. Bluetooth sucks. Google will be enough to prove this, and if not once you see what you need to do to hook your Wiimote to your PC you will become a convert.
Bluetooth Sucks?
But my bluetooth headset works fine! My bluetooth mouse works too! Sure, simple devices like those usually work. Try something besides a mouse or a headset. For more details you can read my previous Bluetooth needs a dentist entry.
Step 1 - Hardware
Maybe your computer already has Bluetooth. If so you are probably feeling pretty smug that you do not need to buy a Bluetooth dongle. But the news is, chances are your Bluetooth adapter will not work with the Wiimote. So you will need to consider to buy a Bluetooth USB adapter anyways. You need to choose carefully, most of the dongles will not work either.
You also need to make sure you get a genuine one. There are many counterfeit Bluetooth adapters. They say they are from one company, but actually are fakes with completely different chips inside. If you guy a counterfeit one, you have no idea if it will work or not with the Wiimote.
Some devices partially work. For example, you might get the Wiimote paired, but cannot read any input. Or you might get partial input, but no motion reports. The Microsoft Bluetooth adapters that come with all the wireless mice, keyboards, and Powerpoint presenters all work that way. They tease you enough to make you think they might work, but the will not.
So how can you choose a Bluetooth adapter that will work with your Wiimote? Consult the List of working Bluetooth Devices at WiiBrew. If you find others, please be kind and update the page.
http://wiibrew.org/wiki/List_of_Working ... th_Devices
Step 2 - Bluetooth Software
So now you really feel smug, you have Bluetooth hardware that is known to work. Now the problem is that your Bluetooth stack (Bluetooth software) probably does not implement the full Bluetooth specification.
Microsoft Stack
Using the Microsoft one in XP, Vista, or the software that came with Microsoft hardware? Surely that works? Nope. It was designed for basic devices like mice and keyboards. It does not know what to do with advanced input from a device like the Wiimote and discards data beyond simple button presses.
BlueSoleil Stack
Many people have found success with BlueSoleil. I was never able get BlueSoleil to work, even after a lot of fiddling. The only thing I have ever been able to do is crash Windows, and many users have contacted me with the same results. If you have no other choices though, try BlueSoleil, it works for some. BlueSoleil Tutorial
WIDCOMM Stack
The WIDCOMM stack is bundled with many popular dongles and is reported to work properly. Just because the WIDCOMM stack is bundled with a specific device does not mean the device itself will work, so be sure to stick to devices known to work.
Toshiba Stack
The Toshiba Stack seems to be the best and most advanced stack available. It is the stack that I am using. The Toshiba stack however has some non-technical issues. If you have a Toshiba laptop, or your laptop comes bundled with Toshiba drivers (Motion Computing and several others) then you can download the latest Toshiba Stack for free and upgrade.
If you have any other computer, the Toshiba Stack will not install. In the past you could buy the stack for around $60, however Toshiba has stopped selling it as a separate offering. There are forums describing how to install the Toshiba Stack on non Toshiba and non bundled platforms but such usage is likely illegal in most countries.
Step 3 - Pair your Wiimote
Fortunately once you have successfully passed steps 1 and 2, it is easy from here. To pair the Wiimote, hold down the 1 and 2 buttons at the same time. The blue lights on the bottom should start to blink. Now start the pairing process in your Bluetooth software. Keep holding down the buttons until pairing is complete. If you let up, the Wiimote will time out and turn off. If it does this before pairing is complete, pairing will fail. If you are using the Toshiba stack, after you have connected the Wiimote it should look like this. Note the green and yellow markings on top, these signify it is connected, and not just paired.
Step 4 - Access your Wiimote
Now you have to access the Wiimote. The Wiimote is implemented as a HID device. Which in some ways might be thought of a serial device over USB. You can send commands to trigger rumble, turn on and off the blue lights, etc. To get reports of buttons, accelerometer, etc you can either poll it, or receive updates. Nintendo did not document all of this in public view, but fortunately hackers have reverse engineered it. If you want to have a go at it, you can check out Wiimote Protocol at WiiLi. There are also many libraries available for .NET, Delphi, C++ and more. For .NET I use Brian Peek's WiimoteLib.