[Aug-20] CobaltController - PS3/Wii Controller Driver for Windows Mobile
Use your Sony Playstation 3 Controller (Sixaxis/Dual Shock 3) or Nintendo Wii Remote (Wiimote) as a Bluetooth Game Controller on your Windows Phone.
It's perfect for game system emulators.
Play PlaystationOne games with FpseCE, Super Nintendo games (and more) with MorphGear (HD2 version), Nintendo, Genesis, GameBoy, GameGear games (and more) with SmartGear - There are many other emulators out there and this program/driver will work for anything that accepts keyboard input.
Post your results and I will update this list
DEVICE PS3 Wii Confirmed By
------------------------- --- --- -------------
Acer beTouch E200 ? Yes pmprog
Acer Neotouch S200 Yes Yes Fenrir84 (PS3) / Snowball2010 (Wii)
HTC HD2 Yes Yes Cobaltikus
HTC Touch Diamond Yes No koert17 (PS3) / nightly_shadow (Wii)
HTC Touch HD (Blackstone) Yes Yes RDilus
HTC Touch Pro Yes No Cobaltikus
HTC Touch Pro2 Yes Yes Cobaltikus
HTC Touch2 Mega Yes ? RipNWO
HTC Vogue No No Mycle78
HTC Wizard No ? shorty66
LG Expo Yes Yes dalb3 (PS3) / trueg (Wii)
Samsung SCH-i730 No No Cobaltikus
Samsung i780 Yes ? ShadowswordPL
Samsung SCH-i830 No No Cobaltikus
Samsung Omnia I900 Yes No Manny-77
Samsung Omnia II i8000 Yes No cyber-junkie
Sony Xperia Yes No sashapont (PS3) / stratis10 (Wii)
Toshiba TG01 No No Cobaltikus
... ... ... ...
Your Device ? ? You
A compatible Windows Mobile device. Check the Compatibility list. Is your device not listed? Try out CobaltController and post your results; I'll update this post.
A PS3 Controller (I don't know if non-Sony 3rd party controllers work - maybe they do, maybe they don't).
A desktop or laptop computer with a USB port to set the controller's master address.
Linux - Use sixpair - directions in this thread somewhere, search for "Ubuntu"
Windows - Use Motion in Joy, but please note that Motion in Joy uses a different MAC format (little endian vs big endian) so for example, when I run CobaltController on my Touch Pro2 it displays "BT ADDR: 00:23:76:70:6B:4D" so I enter it into Motion in Joy as 4d.6b.70.76.23.00
A compatible Windows Mobile device. Check the Compatibility list. Is your device not listed? Try out CobaltController and post your results; I'll update this post. Devices 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 via Windows:
Click the "About" tab in DS3 Tool to see the version. If DS3 Tool is less than 0.5.0003 you will need to update.
Connect your PS3 Controller to your computer via the USB cable and wait while Windows recognizes the new device.
Click on the "BluetoothPair" tab.
In the DUALSHOCK 3 drop down list select your controller. If it says "Can't find connected(USB) Playstat":
Click "Driver Manager" directly above the drop down list
Click "Load" and wait for it to finish
Return to the "BluetoothPair" tab
Run CobaltController on your Windows Mobile device to get its BT address.
Enter that BT address into the text box directly above the DUALSHOCK 3 drop down list. Note that Motion in Joy uses a different MAC format (little endian vs big endian) so for example, a bluetooth address of "00:23:76:70:6B:4D" is entered it into Motion in Joy as "4d.6b.70.76.23.00"
Click the radio button next to this textbox to make sure that it uses the one you entered and not the one above it which is to connect your controller to your PC
Click "Pair Now"
If all went well your controller is now configured to talk to your Windows Mobile device. Go to the "Quick Start" tab and click "Disconnect".
Unplug your PS3 Controller.
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, repeat the above steps.
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.
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.
Once you are connected you can tap Menu > Exit to close the configuration program and your controller will remain connected, and the driver will continue to run until your controller is disconnected.
To Do: (not necessarily in this order)
Get Wiimote working on devices with the Microsoft Bluetooth stack
Figure out why this doesn't work on the TG01 and HTC Vogue and fix it
2 player support
Integrate LeSScro graphics
Clean up Microsoft stack code to eliminate the need to reboot
Add support for non-touch-screen devices
CobaltController.vX.X.cab = Installs to \Program Files\CobaltController\ and a shortcut goes to \Windows\Start Menu\Programs\Games
NETCFv35.wm.armv4i.cab = Although the CobaltController driver is written in native C++, the UI is written in .Net 3.5, therefore you will need to have .NetCF 3.5 installed on your device to run the UI. You might already have this by default so try without this first, and come back if you get an error message about needing it.
NETCFv35.Messages.EN.wm.cab = Provides more details when .Net errors occur with any program written in .Net 3.5. This is optional and only needed if a .Net error occurs and you wish to see more details about that error.
Sorry - no actual driver enhancements yet - just bug fixes
IMPORTANT - Different Default Buttons - you may need to remap in your emulator settings
Updated instructions (Menu > Instructions)
Menu reorganized, some new menu items exist
More Bluetooth "stuff" working in the UI
UI Settings Bug Fixes (values not sticking etc)
ANALOG STICKS WORKING!
Menu reorganized, some new menu items exist
More Bluetooth "stuff" in the UI - Mainly for devices with the M$ stack
Some other tweaks and changes but these are all the important ones.
UI Uses .Net 3.5, (driver is still c++)
Option to restore default keycodes
Bluetooth Address shown on screen so you don't have to search for it
229 fix - it could cause you to not like how the SIP works in other programs but you can always restore, so no worries.
I might have forgotten about another change or two but these are all the important ones.
Updated Instructions (Menu > Help > Instructions > [PS3|Wii])
Buttons - There are editable registry values to modify the button mappings - below are the defaults
Sixaxis Button Keyboard Equivalent
These are all the digital buttons - I will eventually implement the left analog stick to send Up, Right, Down, and Left. Not yet sure what to do with the right stick... window scrolling maybe?
dece. how did u manage to get the drifvers for hid support?
I used Visual Studio 2008 + Windows Mobile 6 SDK + Widcomm SDK
I'm using L2CAP
Although the HID GUID is not defined, you can hard code the values for it and vwahlah - it works!
It runs great on my Sprint Touch Pro2 and also the HTC HD2 but should work for any Windows Mobile device with a Widcomm Bluetooth stack - again though I fully plan to tackle the M$ stack as well and also add support for the wiimote.
That would be really cool if someone would write a nice app to set the sixaxis master bluetooth address that doesn't require a pc with bluetooth and other apps. That would make my app even better - cuz I know the setup really sucks - but believe me it is worth it, especially if your phone also has TV Out.
XDA Developers was founded by developers, for developers. It is now a valuable resource for people who want to make the most of their mobile devices, from customizing the look and feel to adding new functionality. Are you a developer?