Setup the PS3 Bluetooth Controller on Ubuntu

14

Pair and Connect the Controller

Bluetooth Pairing

With the updated package in place, you can now follow steps will get the PS3 controller paired with your Ubuntu system. This step only needs to be performed once as it will remain successfully paired with Ubuntu between uses. If you reconnect/re-pair the controller with the PS3 however, you will have to repeat this step.

If you want to setup multiple controllers, repeat this step for each one individually.

Run the following command to view the system log messages as they are generated.

Plug in PS3 controller with USB cable. You should see output similar to the following system log in the terminal.

The lights will blink indicating that the controller is communicating with the system.

Press the PS button (clear button in the center of the gamepad). This will acknowledge the controller connection sequence and the controller will become activated.

Check that the /dev/input/js0 device exists at this point.

You can test the controller by running either of the following commands. jscalibrator opens a GUI window and allows you you calibrate your buttons. jstest shows the raw output from the buttons themselves. Make sure you have pressed the PS button on the controller if you aren’t getting any response.

or

The lights will continue to blink indefinitely as long as the controller is connected, this is normal. There is no way at this point to disable them but the controller will operate correctly over USB.

Execute the sixpair utility. This will tell the PS3 controller to look for your Ubuntu bluetooth master device and not the PS3 itself when it attempts to connect over bluetooth.

You should now disconnect the controller from the USB cable. It will remain paired with the Ubuntu system from this point forward.

Initiate Connection

By now you should have installed the updated package and successfully paired the PS3 controller with your Ubuntu system. Until you reconnect/re-pair the controller to the PS3 you can simply repeat this step each time you want to use your controller.

For the controller to successfully connect with your Ubuntu system you will have to temporarily disable the default bluetooth service and start the hidd daemon instead.

Stop the bluetooth service.

Run the hidd daemon. The ‘-n‘ will stop it from running in the background and you can see its output in the terminal.

In a separate terminal run the hcidump command below. It will show you the current bluetooth traffic as it happens.

Press the PS button (clear button in the center of the gamepad). This will cause the controller to begin its connection sequence. You should see the hidd daemon accept the connection and print something similar to the output below. Pay attention to the bold text below. This is your bluetooth PS3 controller address which you will need later to ultimately disconnect the controller.

The system log should also show the following.

hcidump should start reporting a large amount of bluetooth traffic from the PS3 controller. Here’s a snippet of the sample output below.

Check that the /dev/input/js0 device exists once again.

You can verify the controller is correctly working over bluetooth by once again running either jscalibrator or jstest.

or

Congratulations! You have successfully connected your PS3 controller. As before, the lights will continue to blink as long as the controller is connected. You can operate the controller and map its buttons just like any other joystick or gamepad.

If you are wanting to connect multiple controllers that were successfully paired in the previous step, press the PS button for each one. You should see that a device (/dev/input/js*) is created for each one.

Kill the hidd daemon by pressing Ctrl+C in the terminal window. You no longer need this as the the PS3 controller is now connected.

You can now restart the bluetooth service to resume the normal operation of bluetooth devices on your system. The controller will continue to operate normally.

Terminate Connection

The PS3 controller doesn’t hibernate and power off like it does when paired with the PS3. To conserve your battery, once you are done with it you need to “unplug” the controller from the system with the following command. Use the bluetooth address you saved from initiating the connection.

The lights on the controller will go dark once it has been successfully unplugged.

If you want to reconnect/re-pair the controller to your PS3, simply reattach the controller to the PS3 with the USB cable and press the PS button.

« Build and Install PackagesQuick Reference »

1 2 3 4
Share.
  • 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

    Hi!

    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 (http://qtsixa.sourceforge.net/).

  • 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:
    http://ubuntuforums.org/showpost.php?p=10360389&postcount=789
    which was very helpful for connecting without Qtsixa, which I’m currently doing, just my preference.
    Also, i ended up needing http://rejoystick.sourceforge.net/
    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.