Connecting a PS3 controller wirelessly on Android without root using USB/BT Joystick Center
By now the amount of articles about USB/BT Joystick Center on the site is beginning to reach a level where I don’t have to start every article by mentioning all the others. One of the tricks that the app can do that I haven’t covered yet (due to slow shipping of a necessary component) is its ability to connect to PS3 Sixaxis controllers wirelessly without root. Normally such a connection is done by modifying the Bluetooth connection between the two devices to allow them to talk to one another, which requires root, but USB/BT Joystick Center can do it by outsourcing the Bluetooth connection to a small USB dongle instead.
What you require to do this is an Android tablet that is supported (generally speaking one with Android 3.2+ and a USB port, but this is Android, it might work it might not), a PS3 controller, and a USB dongle with CSR Bluetooth 2.x/EDR+. Since that last bit is going to result in people asking “will this one work?” (that’s the reaction I first had), I’m going to make it easy: this $5.50 (shipped worldwide) dongle works.
The process of getting everything set up is as follows: Connect the Bluetooth dongle, hit Search in the app, give it USB permissions if asked, wait for it to find the dongle and say that it stored its MAC address. Unplug the Bluetooth dongle, plug in the PS3 controller via USB, hit search, and wait for it to find it. Hit the P button in the bottom right corner of the square indicating the controller, and it should notify you that it paired it with the dongle. Unplug the cable, plug in the Bluetooth dongle again, and hit search. Now it will have added a “scanning PS3” process after it scans for USB and normal BT accessories, so make sure your PS3 controller is looking for connections (btw, unplugging your PS3 while doing this is basically a must to stop it from booting) and wait for it to find it. When it does, you can select it like other joysticks connected to the app, and configure it how you like. Since this is an option mostly for non-root users, you will have to use it without touch emulation, as that requires root.
Do note that the above instructions are theoretical. In reality, this took a lot of tries for me. In fact, I first tried many times to get it working, then gave up, recorded a video of it not working, and was in the process of recording a log for the developer using his error logging app when it suddenly decided to work. At that point I had done the exact same procedure from A to Z close to 10 times and it just suddenly decided to work. That should be a decent warning to all those who think that anything relating to using game controllers where they weren’t designed to be used is equivalent of configuring a Twitter app, as this requires patience and a basic understanding of why the instructions tell you to do this and that in order to have much chance of getting it working. In the end though it’s worth it, as touch controls just aren’t as good as game controllers. Still, being rooted gives you so many extra features on top of just having the controller connected wirelessly that this setup is only 1/10 of the way to game controller heaven.