Wednesday, 28 August 2013

How To remap CEC buttons on a Sony TV Remote for XBMC under OpenELEC 3.1.6

I recently configured a Raspberry Pi for a friend using OpenELEC and a Sony 46" LCD. It worked flawlessly with CEC support although there were a few commands that the Sony TV (remote) would not pass through the HDMI cable to the Pi.

As such, I had no Context Menu or Info button which are both rather useful. After spending a few hours searching about, I managed to resolve it by remapping the coloured buttons below the D-Pad to perform the following:

Red = Context Menu
Blue = Info
Yellow = Update video library
Green = Clean video library

You can only remap buttons that are supported by your TV remote. i.e. If you push a button on your TV remote and your TV performs a TV function (in my case the number buttons switched back to TV and that channel) or the TV displays a message saying "Unsupported" or something similar, there is nothing you can do with that button. Those buttons are not being sent via CEC back to the Pi over HDMI.

What you need:
The IP address of your Pi.
WinSCP or a similar tool to SCP into your Xbian instance.

  1. Using WinSCP, navigate to root/usr/share/xbmc/system/keymaps
  2. Copy the remote.xml file to your local machine. 
  3. Edit the remote.xml file so that the coloured buttons under the global section match your requirements. Mine is shown right.
  4. Copy the remote.xml file back to /storage/.xbmc/userdata/keymaps then reboot your Pi. 
You should now have access to the Context menu with the Red button, Info (for video information etc.) on the Green button, Update the video library on the Yellow button and the ability to clean the video library on the Blue button. WARNING: If you push this (Blue) button with your media sources disconnected, your media library will be wiped and you’ll need to re-scan.

If you want to remove this custom mapping, in XBMC go to System > File Manager and navigate to Profile Directory > Keymaps and rename the remote.xml file (using the context menu) to remote.file and reboot your Pi.