[HOWTO] Harmony ONE Remote with ALL buttons/config files for all universal remote
#1
So for the last few days i've been trying to configure my Logitech Harmony One Universal Remote to work with every aspect of my XBMC-PVR system.

First a few things you'll have to know:

1. I use a Hauppauge WinTV Nova-S2 DVB-S2 tv-card for live TV, which comes with an IR-Receiver, so the hardware.conf for LIRC is pretty specific.

2. According to 1. I've setup my harmony one remote via the harmony remote software to Media-Center-PC > Hauppauge > WinTV Nova S2.

3. if you can already see output via irw (google it if you don't know what it is - i can't go into every detail, since i'm assuming you've been trying to get it to work for a while) these config files should be easy to adjust according to your needs

4. I use my A/V-Receiver for Volume control, so you won't find Volume buttons in this little HowTo

5. I just assume you have root privileges or know how to use sudo




So let's start:

First off, if you are using the same IR-Receiver as me you can use these config files (you probably still have to change REMOTE_DEVICE="/dev/input/event3" according to your needs. see below for instructions) :

/etc/lirc/hardware.conf

Code:
#/etc/lirc/hardware.conf
#
#Chosen Remote Control
REMOTE="Hauppauge DVB-s card (ver. 2.1)"
REMOTE_MODULES="lirc_dev"
REMOTE_DRIVER="devinput"
REMOTE_DEVICE="/dev/input/event3"
REMOTE_SOCKET=""
REMOTE_LIRCD_CONF="hauppauge/lircd.conf.hauppauge"
REMOTE_LIRCD_ARGS=""

#Chosen IR Transmitter
TRANSMITTER="None"
TRANSMITTER_MODULES=""
TRANSMITTER_DRIVER=""
TRANSMITTER_DEVICE=""
TRANSMITTER_SOCKET=""
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=""



/etc/lirc/lircd.conf

Code:
# Please make this file available to others
# by sending it to <[email protected]>
#
# this config file was automatically generated
# using lirc-0.8.6(devinput) on Wed Dec 28 23:31:32 2011
#
# contributed by
#
# brand:                       lircd.conf
# model no. of remote control:
# devices being controlled by this remote:
#

begin remote

  name   harmonyone
  bits           16
  eps            30
  aeps          100

  one             0     0
  zero            0     0
  pre_data_bits   16
  pre_data       0x8001
  gap          35995
  toggle_bit_mask 0x0

      begin codes
          menu                     0x008B
          info                     0x0184
          exit                     0x00AE
          guide                    0x016D
          up1                      0x0192
          up2                      0x0067
          down1                    0x0193
          down2                    0x006C
          chanplus                 0x0192
          chanminus                0x0193
          left                     0x0069
          right                    0x006A
          ok                       0x001C
          rewind                   0x00A8
          play                     0x00CF
          ffwd                     0x00D0
          skipminus                0x00A5
          skipplus                 0x0190
          back                     0x019C
          record                   0x00A7
          pause                    0x0077
          stop                     0x0080
          1                        0x0002
          2                        0x0003
          3                        0x0004
          4                        0x0005
          5                        0x0006
          6                        0x0007
          7                        0x0008
          8                        0x0009
          9                        0x000A
          0                        0x000B
          plus                     0x018E
          e                        0x0172
      end codes

end remote



if you are using a different Remote and a different IR Receiver you have to change the hardware.conf and you'll have make your own lircd.conf by recording every button on your remote via irrecord:



Setting up /etc/lirc/hardware.conf for your hardware IR receiver:


First you have to find out which /dev/input/event# handles your remote. you can find that information by using cat:

Code:
cat /proc/bus/input/devices

your output should look something like:

Code:
I: Bus=0019 Vendor=0000 Product=0001 Version=0000
N: Name="Power Button"
P: Phys=PNP0C0C/button/input0
S: Sysfs=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0C:00/input/input0
U: Uniq=
H: Handlers=kbd event0
B: EV=3
B: KEY=100000 0 0 0

I: Bus=0019 Vendor=0000 Product=0001 Version=0000
N: Name="Power Button"
P: Phys=LNXPWRBN/button/input0
S: Sysfs=/devices/LNXSYSTM:00/LNXPWRBN:00/input/input1
U: Uniq=
H: Handlers=kbd event1
B: EV=3
B: KEY=100000 0 0 0

I: Bus=0017 Vendor=0001 Product=0001 Version=0100
N: Name="Macintosh mouse button emulation"
P: Phys=
S: Sysfs=/devices/virtual/input/input2
U: Uniq=
H: Handlers=mouse0 event2
B: EV=7
B: KEY=70000 0 0 0 0 0 0 0 0
B: REL=3

I: Bus=0001 Vendor=0070 Product=6906 Version=0001
N: Name="cx88 IR (Hauppauge WinTV-HVR400"
P: Phys=pci-0000:03:09.0/ir0
S: Sysfs=/devices/pci0000:00/0000:00:10.0/0000:03:09.0/input/input3
U: Uniq=
H: Handlers=kbd event3
B: EV=100003
B: KEY=100fc312 214a802 0 0 0 0 18000 41a8 4801 9e1680 0 0 10000ffc

I: Bus=0001 Vendor=10ec Product=0888 Version=0001
N: Name="HDA Digital PCBeep"
P: Phys=card0/codec#0/beep0
S: Sysfs=/devices/pci0000:00/0000:00:10.1/input/input4
U: Uniq=
H: Handlers=kbd event4
B: EV=40001
B: SND=6


As you'll see my IR-Receiver uses /dev/input/event3 as his input device, so coming from the standard hardware.conf you should have after installing lirc (or after reconfiguring lirc with dpkg-reconfigure lirc and choosing none for both) you just have to make sure your input driver is set to "devinput" and your remote device is set to the /dev/input/event# device you got from cat /proc/bus/input/devices.


Now you should see input when using irw. you do? NICE!



Recording your remote buttons:

you can simply create your own /etc/lirc/lircd.conf by recordign every button on your remote and writing the recorded buttons into your /etc/lirc/lircd.conf. but who's got the time to write sooooooo muchHuh? No

so we're going to fire up irrecord to do the job for us:

Code:
irrecord -H devinput -d /dev/input/event# /etc/lirc/lircd.conf

where event# is - of course - the event device you found out about earlier.

you should name the buttons according to your remote, makes the last steps much much easier.
Reply
#2
Setting up XBMC to work with your remote

I've tried to use some of the built in config files but none of them worked for me the way i wanted them to, so i wrote my own.

ONCE again:
If you are using my setup (a Harmony One AND the the way i set it up in Harmony Remote Software), you should be able to just use these config files:


/home/USER/.xbmc/userdata/Lircmap.xml

Code:
<lircmap>

<remote device="harmonyone">


<obc100>menu</obc100>
<obc101>info</obc101>
<obc102>exit</obc102>
<obc103>guide</obc103>
<obc104>up1</obc104>
<obc105>up2</obc105>
<obc106>down1</obc106>
<obc107>down2</obc107>
<obc108>chanplus</obc108>
<obc109>chanminus</obc109>
<obc110>left</obc110>
<obc111>right</obc111>
<obc112>ok</obc112>
<obc113>rewind</obc113>
<obc114>play</obc114>
<obc115>ffwd</obc115>
<obc116>skipminus</obc116>
<obc117>skipplus</obc117>
<obc118>back</obc118>
<obc119>record</obc119>
<obc120>pause</obc120>
<obc121>stop</obc121>
<obc122>1</obc122>
<obc123>2</obc123>
<obc124>3</obc124>
<obc125>4</obc125>
<obc126>5</obc126>
<obc127>6</obc127>
<obc128>7</obc128>
<obc129>8</obc129>
<obc130>9</obc130>
<obc131>0</obc131>
<obc132>plus</obc132>
<obc133>e</obc133>

</remote>

</lircmap>


/home/USER/.xbmc/userdata/keymaps/remote.xml


Code:
<keymap>

<global>
<universalremote>

<obc100>OSD</obc100>
<obc101>Info</obc101>
<obc102>FullScreen</obc102>
<obc103>XBMC.ActivateWindow(PVROSDGuide)</obc103>
<obc104>PageUp</obc104>
<obc105>Up</obc105>
<obc106>PageDown</obc106>
<obc107>Down</obc107>
<obc108>Up</obc108>
<obc109>Down</obc109>
<obc110>Left</obc110>
<obc111>Right</obc111>
<obc112>Select</obc112>
<obc113>Rewind</obc113>
<obc114>Play</obc114>
<obc115>FastForward</obc115>
<obc116>SkipPrevious</obc116>
<obc117>SkipNext</obc117>
<obc118>PreviousMenu</obc118>
<obc119>PlayerControl(Record)</obc119>
<obc120>Pause</obc120>
<obc121>Stop</obc121>
<obc122>Number1</obc122>
<obc123>JumpSMS2</obc123>
<obc124>JumpSMS3</obc124>
<obc125>JumpSMS4</obc125>
<obc126>JumpSMS5</obc126>
<obc127>JumpSMS6</obc127>
<obc128>JumpSMS7</obc128>
<obc129>JumpSMS8</obc129>
<obc130>JumpSMS9</obc130>
<obc131>Number0</obc131>
<obc132>ContextMenu</obc132>
<obc133>ShowSubtitles</obc133>

</universalremote>
</global>



<FullscreenVideo>
<universalremote>
      
<obc122>Number1</obc122>
<obc123>Number2</obc123>
<obc124>Number3</obc124>
<obc125>Number4</obc125>
<obc126>Number5</obc126>
<obc127>Number6</obc127>
<obc128>Number7</obc128>
<obc129>Number8</obc129>
<obc130>Number9</obc130>
<obc131>Number0</obc131>
<obc102>XBMC.ActivateWindow(Home)</obc102>

</universalremote>
</FullscreenVideo>
  


<ContextMenu>
<universalremote>

<back>Back</back>

</universalremote>
</ContextMenu>



<MyMusicLibrary>
<universalremote>

<obc102>XBMC.ActivateWindow(Home)</obc102>

</universalremote>
</MyMusicLibrary>

</keymap>



so now if you don't have my setup, you will have to invest half an hour to write these 2 files on your own. It really isn't tht hard with a little copy paste magic.

so all you have to know when trying to write these 2 files on your own is that lircmap.xml uses obc# codes to map the lirc buttons you just created to random obc names from obc0 to obc255, i recommend you use obc100 onwards, as there are premapped obc#'s to specific actions and afaik obc100 to obc154 are completely free.

remote.xml tells xbmc what to do when these obc#'s get called and you can map your xbmc actions to them as you please. the complete list of all the available actions in xbmc can be found here: XBMC Actions

so i hope you getz it up and running and this little howto was of any help to you.

HAPPY NEW YEAR!!!!!

uuzi
Reply

Logout Mark Read Team Forum Stats Members Help
[HOWTO] Harmony ONE Remote with ALL buttons/config files for all universal remote0