I took the plunge and upgraded my TV box to Ubuntu 12.04 from 10.04. I opted to do a complete re-install rather than upgrade. I do realise 12.10 is now out, but this post has been sat around needing a tidy up for a while 😉
Getting the remote working last time wasn’t entirely straightforward and hasn’t really improved. I didn’t take any notes last time around either, so I’ve kept notes this time and hope they are of use to someone else. I think half the problem is due to being a cheapskate and getting a generic mce remote rather than the official one!
The Remote
I’m using this one from Maplin.
The USB IR receiver that came with the remote is reported as being a Formosa21 eHome Infrared Transceiver with Device ID 147a:e03e
:
Bus 005 Device 002: ID 147a:e03e Formosa Industrial Computing, Inc. Infrared Receiver [IR605A/Q]
Initial Results
With the 12.04 kernel and standard version of lirc the remote is successfully identified and when running irw it spits out button codes for most of the buttons on the remote. Some of the buttons are not recognised, but more disappointingly out of the box XBMC doesn’t respond to the remote at all.
So there are two problems that we need to deal with here:
- Updating the lirc config file for the additional buttons
- Getting XBMX to recognise the remote
lirc config
I generated a new lirc config file for the remote using irrecord
, which ended up being very similar to the vista_mce config that ships with lirc.
I simply updated /usr/share/lirc/remotes/mceusb/lircd.conf.mceusb
and edited the final vista_mce entry to appear as follows:
begin remote
name vista_mce
bits 13
flags RC6
eps 30
aeps 100
header 2700 880
one 490 410
zero 490 410
pre_data_bits 24
pre_data 0x1BFF83
gap 104254
toggle_bit_mask 0x8000
rc6_mask 0x100000000
begin codes
Power 0x0BF3
Pictures 0x0BB6
Radio 0x0BAF
Videos 0x0BB5
Music 0x0BB8
Rec 0x0BE8
Pause 0x0BE7
Stop 0x0BE6
SkipPrevious 0x0BE4
Play 0x0BE9
SkipNext 0x0BE5
Rewind 0x0BEA
FastForward 0x0BEB
Start 0x0BF2
Back 0x0BDC
More 0x0BF0
Start 0x0BF2
VolUp 0x0BEF
VolDown 0x0BEE
ChanUp 0x0BED
ChanDown 0x0BEC
Up 0x0BE1
Down 0x0BE0
Left 0x0BDF
Right 0x0BDE
OK 0x0BDD
Mute 0x0BF1
Record 0x0BB7
Guide 0x0BD9
TV 0x0BDA
DVD 0x0BDB
One 0x0BFE
Two 0x0BFD
Three 0x0BFC
Four 0x0BFB
Five 0x0BFA
Six 0x0BF9
Seven 0x0BF8
Eight 0x0BF7
Nine 0x0BF6
Star 0x0BE2
Zero 0x0BFF
Hash 0x0BE3
Clear 0x0BF5
Teletext 0x0BA5
Enter 0x0BF4
Red 0x0BA4
Green 0x0BA3
Yellow 0x0BA2
Blue 0x0BA1
end codes
end remote
XBMC
The final step is that XBMC is not setup to look for a remote called vista_mce, the nearest is mceusb which I presume is the name for the official remotes.
XBMC makes use of a file called Lircmap.xml to map remote control buttons to internal button names.
This lirc button names above match the mceusb configuration as closely as possible in order to make setting up the Lircmap.xml
nice and easy. The default configuration is available in /usr/share/xbmc/system/Lircmap.xml
and I simply copied this locally to ~/.xbmc/userdata
and added the section below to the top of the file.
My Lircmap.xml
:
<lircmap>
<remote device="vista_mce">
<start>Start</start>
<play>Play</play>
<pause>Pause</pause>
<stop>Stop</stop>
<forward>Forward</forward>
<reverse>Rewind</reverse>
<left>Left</left>
<right>Right</right>
<up>Up</up>
<down>Down</down>
<select>OK</select>
<pageplus>ChanUp</pageplus>
<pageminus>ChanDown</pageminus>
<back>Back</back>
<menu>DVD</menu>
<title>Guide</title>
<info>More</info>
<skipplus>SkipForward</skipplus>
<skipminus>SkipPrevious</skipminus>
<display>Aspect</display>
<start>Home</start>
<record>Record</record>
<volumeplus>VolUp</volumeplus>
<volumeminus>VolDown</volumeminus>
<mute>Mute</mute>
<power>Power</power>
<myvideo>Videos</myvideo>
<mymusic>Music</mymusic>
<mypictures>Pictures</mypictures>
<mytv>TV</mytv>
<one>One</one>
<two>Two</two>
<three>Three</three>
<four>Four</four>
<five>Five</five>
<six>Six</six>
<seven>Seven</seven>
<eight>Eight</eight>
<nine>Nine</nine>
<zero>Zero</zero>
<star>Star</star>
<hash>Hash</hash>
<clear>Clear</clear>
<enter>Enter</enter>
<red>Red</red>
<green>Green</green>
<yellow>Yellow</yellow>
<blue>Blue</blue>
<teletext>Teletext</teletext>
</remote>
...
Mind the Gap
The gap value computed when using irrecord
was initially 74254. Unfortunately with this value I was occasionally getting spurious double buttons presses, which are pretty annoying. No amount of playing with the min_repeat
settings in the lirc.conf
file would stop it.
Pushing the gap value up above 100000 fixes the problem, but at the expense of not being able to hold down the button and have it be repeatedly triggered.
Leave a Reply