PS3 BD Remote Controller under raspbmc (or XBMC)

Here are some notes about how to use the PS3 BD Remote Controller with raspbmc (raspbmc is an XBMC distribution optimized for the Raspberry Pi).

This is the software setup used in June 2014:

  • Debian Wheezy (actually raspbian)
  • linux 3.12
  • Bluez 4.99

I use one of those tiny USB Bluetooth adapters, a Mediacom M-UDBT15M.

  1. Install Bluez:
    $ sudo apt-get update
    $ sudo apt-get install bluez python-gobject-2
    
  2. Associate the PS3 BD Remote Controller (only needed once):
    $ hcitool scan
    

    then keep pressed Enter+Start on the remote for at least 7 seconds, until the BT device shows up: 00:06:F5:XX:XX:XX BD Remote Control

    Then execute these commands immediately:

    $ bluez-test-device create 00:06:F5:XX:XX:XX
    $ bluez-test-device trusted 00:06:F5:XX:XX:XX yes
    $ bluez-test-input connect 00:06:F5:XX:XX:XX
    

    Now the controller shows up as an input event device (/dev/input/ps3 linked to something like /dev/input/event0). The keymap can be seen by installing and running evtest.

  3. Configure lirc. This is needed because XBMC input handling is kind of weird (maybe for historical reasons), it tries too hard to differentiate between keyboards and remotes instead of just using the linux evdev API in a generic way.

    Put this in /etc/lirc/lircd.conf:

    include "/usr/share/lirc/remotes/devinput/lircd.conf.devinput"
    

    And this in /etc/lirc/hardware.conf

    # /etc/lirc/hardware.conf
    #
    # Arguments which will be used when launching lircd
    LIRCD_ARGS=""
    
    #Don't start lircmd even if there seems to be a good config file
    #START_LIRCMD=false
    
    #Don't start irexec, even if a good config file seems to exist.
    #START_IREXEC=false
    
    #Try to load appropriate kernel modules
    LOAD_MODULES=true
    
    # Run "lircd --driver=help" for a list of supported drivers.
    DRIVER="devinput"
    # usually /dev/lirc0 is the correct setting for systems using udev.
    DEVICE="/dev/input/ps3"
    MODULES=""
    
    # Default configuration files for your hardware if any
    LIRCD_CONF=""
    LIRCMD_CONF=""
    

Reboot and that's it; the default mappings in /opt/xbmc-bcm/xbmc-bin/share/xbmc/system/Lircmap.xml and /opt/xbmc-bcm/xbmc-bin/share/xbmc/system/keymaps/remote.xml are already good enough.

Remarks

Raspbmc puts its custom built version of XBMC under /opt, with custom scripts to manage updates and other tasks, why not just create Debian packages of the latest XBMC (with patches for Raspberry Pi) and set up a dedicated apt repository?

XBMC could modernize its input handling making a better use of the linux evdev API: with modern kernels more remote controls show up as input event devices, and lirc should not be needed to handle them.


CommentsSyndicate content

Hi, Great post ! Short and

Nick's picture

Hi,

Great post ! Short and stratight !

Thank you.

Hi, I used a CSR8510 chipset

Andy's picture

Hi,

I used a CSR8510 chipset USB bluetooth adaptor. I needed to modify the boot mode of the device, but this was a 5 minute job after some googling.

I then followed these instructions but had an older version of Raspbian. For me, to make it work, I needed to run the upgrade command after the update.

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install bluez python-gobject-2

After this, everything worked perfectly, thank you.

Andy

Post new comment

The content of this field is kept private and will not be shown publicly. If you have a Gravatar account associated with the e-mail address you provide, it will be used to display your avatar.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Lines and paragraphs break automatically.

More information about formatting options

CAPTCHA
This question is for testing whether you are a human visitor and to prevent automated spam submissions.
Y
b
X
h
g
G
Enter the code without spaces.