Using a PS3 Controller on an Ubuntu EeePC 901

Using a PS3 Controller on an Ubuntu EeePC 901

Recently I’ve resurrected my EeePC 901 with the help of Ubuntu. It’s a great little machine for email, web browsing, and writing blog posts that no one reads. But you know what would be even better? If it were controlled by a PS3 controller over Bluetooth.

I encountered a bit of weirdness in getting this to work, so I figured I’d document it here so the two other people in the world who are having this same problem might find it.

To start, you should follow the same steps most Ubuntu users use to get this working: install QtSixA, and use the sixpair command to pair your controller with your computer. Thing is, if you then disconnect it and try to connect wirelessly, you get an endless bluetooth Access Request pop-up.

At least for me, this turned out to be an issue between the standard Bluetooth service and the sixad service. But there’s more to it, and the standard fixes didn’t work for me. There’s a weird boot sequence issue with stopping Bluetooth too soon – the sixad service does a check to make sure Bluetooth is available, and stopping the service too early makes sixad’s check fail. I tried:

  • editing rc.local to disable Bluetooth on boot
  • disabling the Bluetooth applet on startup
  • setting sixad –boot-yes AND the QTSixA GUI to start on boot - do NOT do this, it locked my login screen and I had to edit the startup commands in GRUB, boot to command prompt, and undo the damage I’d done

So what DID work? I ended up making a script that I run whenever I want to connect the PS3 controller. This has the added benefit of having standard Bluetooth available for the rest of the time. Here’s the details:

  1. Make sure NOTHING of QtSixA runs at boot – not the sixad service, not the QtSixA GUI, nothing.
  2. Once your system is booted and you’re logged in, run these two commands in this order:

sudo service bluetooth stop

And then

sixad start

Now, if you hit the PS button on your PS3 controller, it should rumble and connect. NOW you can open the QtSixA GUI and configure your profiles and such. That’s really all the GUI is good for – you don’t need it for anything else, and it does not need to be running in the systray for the controller to function (because sixad is running in the background).

I put these commands into a little script, which I run when I want to use the PS3 controller. It works for me because most of the time, I DON’T want to use the controller, and want standard Bluetooth available – if all you want is the controller, you could try adding these commands to the boot sequence somewhere – post in the comments if you figure out where they can run.

Hope that helps. All two of you.