Monday, July 05, 2010

CobaltController


Use your Sony Playstation 3 Controller (Sixaxis/Dual Shock 3) or Nintendo Wii Remote (Wiimote) as a Bluetooth Game Controller on your Windows Phone.

The PS3 Controller works with all Windows Mobile phones.
The Wii Controller currently only works with Windows Mobile phones with a Widcomm Bluetooth Stack.

Prerequisites:
PS3 Controller
Any windows mobile phone with bluetooth.
A PS3 Controller (I don't know if non-Sony 3rd party controllers work).
A working installation of WinDS3 on a bluetooth enabled desktop computer. You don't need to purchase it, the trial version works fine for our needs. I have included instructions on how to do this but it kind of sucks and I am working on a better alternative since not everyone has a PC that WinDS3 will play nicely with. Many have reported issues while trying to install WinDS3. I cannot help in these situations but others here may be able to. If you have trouble, your best bet is to wait until I figure out a better alternative or use a Wiimote in the meantime. See below in "Attachments" for instructions.
Wii Controller
Any windows mobile phone with a Widcomm Bluetooth Stack. That means phones with the Microsoft Bluetooth Stack can't use the Wiimote yet.
A Wii Controller.
XBOX 360 Controller
Not Going To Happen
In order to get the XBOX 360 controller to work in windows you need to purchase a wireless receiver - it doesn't use bluetooth. It needs additional hardware. So if a full desktop Windows PC can't even do it without additional hardware, I seriously doubt it will ever work for our phones. Some company could come up with an xbox 360 wireless receiver for Windows Mobile, but again, very doubtful. And since I don't even have an XBOX of any kind, I know I'm not going to be motivated enough to even try.

Initial One Time Setup for PS3 Controllers:
Setting the PS3 controller's master address to your phone's bluetooth mac address:
Download and install WinDS3. WinDS3 is not freeware but the trial is only limited by stopping after 30 minutes of use at a time which is way more than sufficient for this cause. WinDS3 ONLY allows you to set your controller's master to your PC, but you want to set it to your phone and that's where sixpair.exe comes in.
Download sixpair.zip and unzip it to a directory that you can remember. The only contents are sixpair.exe.
In that same directory, create a text file containing your phone's mac address in the format XX:XX:XX:XX:XX:XX and name the file mac.txt
Run WinDS3 and get to the main screen of the app.
Click the bluetooth icon to start the bluetooth pairing app. Follow the instructions up until the screen displays that it successfully set your controller's mac address to your computer.
With that WinDS3 screen still displayed, run sixpair.exe (attached). If all went well you should now disconnect the PS3 controller from the USB cable (connected per instructions in WinDS3) and you are ready to start using CobaltContoller!
As long as you don't pair your controller with any other device (like your PS3) then you never have to do this again. If you do pair the controller with a another device and wish to re-pair it with your phone again, go back to step 4.

Widcomm Stack Specifics:
Turn on bluetooth and set it to discoverable. Thanks to ryotgz, skilty, and gorelshv for this information. I believe it is only required the first time you use CobaltController. Once you have successfully connected, BT does not have to be in discoverable mode any longer so you can change it back to invisible to save battery life.
Make sure that the checkbox is not checked where it says "Allow only devices listed in 'My Devices' to connect".
If you have never tried to connect the PS3 controller to your phone before (or at least not since the last hard reset or rom flash) it will fail to connect at first and you'll get a bunch of pop ups with "PLAYSTATION(R)3 Controller" shown in bold asking for the pin. Keep tapping cancel as it pops up and wait for everything to stop trying to connect. After all that, try again and it should connect just fine and should always connect right away in the future without the pin prompts. There is no pin (that I know of at least) I'm bypassing security on both the PS3 and Wii connections (even though we do know the pin for the Wiimote is the host's mac backwards.)

Microsoft Stack Specifics:
TURN OFF BLUETOOTH The MS stack does not like the PS3 controller and will NOT pair with it. I ended up writing a modified version of this stack to get around this problem, but it will conflict with the real MS stack so they can't both be on at the same time.
Your phone will reboot when you disconnect the controller.

PS3 Controller Specifics:
Press the PS button to connect and then later to disconnect

Wii Controller Specifics:
Press the red Sync button to connect. Hold down the Power button to disconnect.

Common:
All 4 LEDs should flash a few times and then only the player one LED should remain lit showing it connected.
The driver stops running after you disconnect to save battery life. Run it again to reconnect. It's in Start Menu\Programs\Games
Registry Values are stored in HKEY_CURRENT_USER\Software\Cobaltikus\CobaltContro ller
Currently only 1 controller can be active at a time but I am exploring the ability to add more.

Attachments
CobaltController.vX.X.cab = Installs to \Program Files\CobaltController\ and a shortcut goes to \Windows\Start Menu\Programs\Games
sixpair.exe = PS3 Controller Connections Only - run this on your pc, not your phone. See "Initial One Time Setup for PS3 Controllers:" above for instructions.

CobaltController

No comments: