I bought a cheap media center remote control that I want to use at my home theater pc to control xbmc and vdr. Unfortunately the remote doesn’t work out of the box. Googling for a howto took me to this thread which helped a lot but took quite a lot of time to read and find the useful hints in tons of posts. Now here’s the solution in brief:
First you need to blacklist (disable) some modules. Add the following lines to /etc/modprobe.d/blacklist.conf:
blacklist ati_remote
blacklist lirc_atiusb
Now add the following to /etc/lirc/hardware.conf:
#Chosen Remote Control
REMOTE=”mceusb”
REMOTE_MODULES=”"
REMOTE_DRIVER=”atilibusb”
REMOTE_DEVICE=”/dev/lirc0″
REMOTE_LIRCD_CONF=”/etc/lirc/lircd.conf”
REMOTE_LIRCD_ARGS=”"#Chosen IR Transmitter
TRANSMITTER=”None”
TRANSMITTER_MODULES=”"
TRANSMITTER_DRIVER=”"
TRANSMITTER_DEVICE=”"
TRANSMITTER_LIRCD_CONF=”"
TRANSMITTER_LIRCD_ARGS=”"#Enable lircd
START_LIRCD=”true”#Don’t start lircmd even if there seems to be a good config file
#START_LIRCMD=”false”#Try to load appropriate kernel modules
LOAD_MODULES=”true”# Default configuration files for your hardware if any
LIRCMD_CONF=”"#Forcing noninteractive reconfiguration
#If lirc is to be reconfigured by an external application
#that doesn’t have a debconf frontend available, the noninteractive
#frontend can be invoked and set to parse REMOTE and TRANSMITTER
#It will then populate all other variables without any user input
#If you would like to configure lirc via standard methods, be sure
#to leave this set to “false”
FORCE_NONINTERACTIVE_RECONFIGURATION=”false”
START_LIRCMD=”"
Now add the following to /etc/lirc/lircd.conf. This will translate the codes sent by the remote control to some (well known, standard) keyname:
# Please make this file available to others
# by sending it to <lirc@bartelmus.de>
#
# this config file was automatically generated
# using lirc-0.8.4a(atilibusb) on Tue Sep 8 23:54:34 2009
#
# contributed by funnybox2006, modified by nebu
#
# brand: X10
# model no. of remote control: OR22V with RF USB Dongle
# devices being controlled by this remote:
# note: use atilibusb driver for this remote and set device in hardware.conf to /dev$begin remote
name mceusb
bits 16
eps 30
aeps 100one 0 0
zero 0 0
pre_data_bits 8
pre_data 0×14
post_data_bits 16
post_data 0×0
gap 139982
min_repeat 2
toggle_bit_mask 0×80800000begin codes
Power 0xD702
Red 0x87B2
Yellow 0×0934
Green 0x88B3
Teletext 0x6B96
Blue 0x0A35
Back 0xF520
More 0x84AF
Up 0xEF1A
Left 0x729D
OK 0xF31E
Right 0xF41F
Down 0x77A2
KEY_TIMESHIFTING 0x6D98
Guide 0×0631
DVD 0xD904
LiveTV 0x719C
VolUp 0xDE09
Home 0x709B
ChanUp 0xE00B
VolDown 0x5D88
ChanUp 0x618C
Mute 0xD500
Replay 0x76A1
Skip 0xF823
Rewind 0x79A4
Play 0xFA25
Forward 0x7BA6
Record 0xFC27
Stop 0x7DA8
Pause 0xFE29
One 0x628D
Two 0xE30E
Three 0x648F
Four 0xE510
Five 0×6691
Six 0xE712
Seven 0×6893
Eight 0xE914
Nine 0x6A95
Star 0x8CB7
Zero 0xEC17
Hash 0x0D38
Clear 0x85B0
Enter 0x0B36
end codesend remote
Now restart Lirc: /etc/lirc/lircd restart and type irw. You should get some output when you press buttons on the remote and see that the mapping created above will work. The remote will now work with xbmc without changing anything at xbmc’s keymaps or other files. The lircd.conf uses standard keynames which are already mapped by the standard xbmc configuration files to xbmc actions.
Now start xbmc and have fun!
Update: Here is a explanation how to get the remote to work with vdr.