Setup the PS3 Bluetooth Controller on Ubuntu


Build and Install Packages

Install the bluez-compat and joystick packages.

The hidd daemon in the bluez-compat package has been deprecated but it provides the only way to connect with the PS3 controller. It will not interfere with the current bluetooth service.

From this point you can take one of two roads.

  1. If you are on 32bit (i386) or 64bit (amd64) versions of Ubuntu I have precompiled all the binaries you will need. Simply download the corresponding tarball for your architecture and follow a couple simple steps to complete the setup.
  2. The other option is to manually patch and compile the binaries yourself. This is a bit more time consuming but not anymore difficult as I have documented the exact steps for this method as well. This option is necessary if you are on some other architecture (PowerPC, etc.) or if you experience any problems with the precompiled binaries I provided.

Option 1: Download Precompiled Binaries

You can test which architecture you are using by running uname.

Download the tarball of binaries which corresponds to your architecture.

Untar the files.

Skip down to the Install the Updated Package section.

Option 2: Patch and Compile Binaries

Download the hidd daemon patch:

Install the dpkg-dev and fakeroot which will allow you to compile the blues-utils package.

Install the blues-utils package, apply the patch, and build the package.

This will build all the bluez related packages, the only one we are interested in is bluez-compat.

Download the sixpair.c source code:

Install the libusb-dev and libusb-0.1-4 which will allow you to compile the sixpair utility.

Build the sixpair utility.

Install the Updated Package

At this point you should have either downloaded or compiled the bluez-compat package.

Install the patched bluez-compat package.

Optional: if you will dist-upgrade your system, the process will overwrite your modified package with newer versions. You can either choose to redo the above steps every time a new version of bluez-utils is packaged, or “hold” the package. This should work with both apt and aptitude.

« IntroductionPair and Connect the Controller »

1 2 3 4
  • T. Snyder

    Thanks for this very helpful post! I’ve spent the past few weeks trying to get this to work. Last night, after getting a new adapter and installing blueman and following your instructions repeatedly I got a connection! I’m not sure why but it still seems to only connect sometimes.

    Thanks again!

  • Ryan

    I’m glad to hear that you were successful. Thanks for the feedback!

  • Anthony

    What would a possible problem be if $ sudo hcidump -t -V -x
    does not show a new device. I know the controller is transmitting because it is found in the bluetooth pairing app that came with ubuntu. I’m running 9.04 i386 could that be an issue?

  • Big D

    no thats not a problem, i followed the tutorial with 9.04 on and i386 system and it worked fine.

  • gerp

    Im using 9.04 and it didnt work. Im having the same problem as above

  • daniel figueroa

    when i put this code in the console

    $ sudo ./sixpair

    show me this

    Current Bluetooth master: 11:11:11:11:11:11
    Setting master bd_addr to 11:11:11:11:11:11

    and then i put this code

    $ sudo hidd –server –nocheck -n

    and press the ps button and nothing happens

    any help!?

  • Martin Bergman


    I’m running karmic and I love that your instructions are CLI only, but.. unfortunately the controller doesn’t seem to connect to hidd.

    I’ve compiled my own bluez-compat and installed the deb.

    The sixpair app says that the controller has gotten it’s new master (my bluetooth adapter).

    However, When I press the PS-button, it flashes all 4 led’s but nothing happens in the hidd or in hcidump. Could you help me figure it out?

  • manoel

    I’ve the same problem as stated above

  • uiliands

    Thank you for the tutorial.
    As for 2010, you can easily connect dualshock3 controllers
    using QtSixA (

  • jaymo

    ran apt-get bluez-compat joystick and it came back E: Invalid operation bluez-compat but i used synaptic package manager to install bluez-compat and joystick after that all the other steps ran fine and came back with the proper results and the controller connected with the system but when i try and run jscalibrator -d /dev/input/js0 i got jscalibrator: command not found but jstest works and i can see the values change in response to buttons and joystick movements

    • ametalmunkey

      maybe? see the post I just did

  • ametalmunkey

    there’s a package available in the software manager “joystick” says it contains: Some useful tools for using joysticks:
    ffcfstress(1) – force-feedback stress test
    ffmvforce(1) – force-feedback orientation test
    ffset(1) – force-feedback configuration tool
    fftest(1) – general force-feedback test
    jstest(1) – joystick test
    jscal(1) – joystick calibration tool
    evtest and inputattach, which used to be part of this package, are now available separately
    not sure if the same thing but I was researching doing this…

  • ametalmunkey

    Just wanted to update my post in case someone else does some googling and finds this stuff. I used Qtsixa, mentioned above, with no problems.
    I also want to post this:
    which was very helpful for connecting without Qtsixa, which I’m currently doing, just my preference.
    Also, i ended up needing
    it’s in the getdeb repos. For games like SuperTux2 & Super Maryo Cron. it was easier to set the buttons as keystokes as the 6 axis on the controller makes setting the buttons go crazy. For Supertux i just edited the config file manually in ~/home/.supertux2 folder, works great.
    Now that i have this set up all i do is plug in my dongle, press the PS button and thats it! ready to play. Hope this helps someone.

    • Ryan

      Thanks for your input! I will have to look into this and write an updated article.