Setting up lircd with the hdhomerun and a Tivo series 2 remote

To set up lircd with the hdhomerun to see a tivo series 2 remote control, you should first program the HDHomeRun to send UDP packets to your linux computer with a command such as the following:

hdhomerun_config <device id> set /ir/target "<lircd ip addr>:<port> store"

You can test that this is working by running:

irrecord -H udp -d 5000 "testing"

If you get dots when you press your remote control buttons, the HDHomeRun is sending IR information to your linux box. (remember to unblock UDP port 5000 for incoming transmissions if you are running a firewall!)

Once that is working, just set up your /etc/lirc hardware.conf and lircd.conf files to support the Tivo series 2 remote.

Here are the entires from my files, starting with hardware.conf:

# /etc/lirc/hardware.conf
# Arguments which will be used when launching lircd
REMOTE_LIRCD_ARGS="-H udp -d 5000"

#Don't start lircmd even if there seems to be a good config file

#Try to load appropriate kernel modules

# Run "lircd --driver=help" for a list of supported drivers.

# If DEVICE is set to /dev/lirc and devfs is in use /dev/lirc/0 will be
# automatically used instead

# Default configuration files for your hardware if any

And then the lircd.conf file:


# this config file was automatically generated

# using lirc-0.6.6(serial) on Mon Oct 6 18:29:46 2003


# contributed by Joel Ebel


# brand: TIVO

# model no. of remote control: This is for the Tivo with the DVR 1/2 switch

# devices being controlled by this remote: Tivo Series 2 (maybe more)

# This conf file allows the support of Tivo Series 2 remote. In particular,

# it allows for the unique key definitions for each of the 39 keys when DVR

# Switch is in positon 1 or 2. This essentially doubles the number of keys

# one can use just by toggling between DVR 1 and 2. For example, an lircrc

# file can be programmed to execute one thing when the play button is pressed

# when in DVR 1 mode and execute a different function when the same key is

# pressed when in DVR 2 mode.


# In order to use this, one must first set the remote. Move the DVR SWITCH

# to 1. Next, Press and hold the PAUSE and TiVo buttons simultaneously

# until the red light at the end of the remote control comes on, remains

# steady, and then stays on when you release the buttons. Now press 1.

# Do the same when switched to DVR 2 (assigning it to a number 2).


# Now you can use the codes below. All the functions which begin with a 1

# are associated with the DVR1 switch and those prefixed with 2 are assoc

# with DVR 2 switch. Since the remote allows it to be programmed with any

# number between 0 and 9 (zero is the default), all the codes are provided

# below, A remote set to 0 will control any tivo, and a tivo set to

# 0 will accept any remote.

# My lircrc file for MythTV with this remote can be found here:


begin remote

name Tivo_S2

bits 32


eps 20

aeps 200

header 9000 4500

one 562 1687

zero 562 562

ptrail 562

repeat 9000 2250

gap 108000

min_repeat 1

toggle_bit 0

frequency 38000

begin codes

TIVO 0x00000000A10CE00F

TV_POWER 0x00000000A10C0807

TV_INPUT 0x00000000A10C2C03

WINDOW 0x00000000A10C220D

LIVE_TV 0x00000000A10C8807

INFO 0x00000000A10CC807

GUIDE 0x00000000A10C6C03

UP 0x00000000A10C2807

LEFT 0x00000000A10CE807

RIGHT 0x00000000A10CA807

DOWN 0x00000000A10C6807

SELECT 0x00000000A10C9807

TH_DOWN 0x00000000A10C1807

TH_UP 0x00000000A10C5807

VOL_UP 0x00000000A10C3807

VOL_DOWN 0x00000000A10CB807

MUTE 0x00000000A10CD807

RECORD 0x00000000A10C040B

CH/PAGE_UP 0x00000000A10C7807

CH/PAGE_DOWN 0x00000000A10CF807

PLAY 0x00000000A10C840B

REWIND 0x00000000A10C440B

PAUSE 0x00000000A10CC40B

FORWARD 0x00000000A10C240B

SLOW 0x00000000A10CA40B

REPLAY 0x00000000A10C640B

JUMP 0x00000000A10CE40B

1 0x00000000A10C140B

2 0x00000000A10C940B

3 0x00000000A10C540B

4 0x00000000A10CD40B

5 0x00000000A10C340B

6 0x00000000A10CB40B

7 0x00000000A10C740B

8 0x00000000A10CF40B

9 0x00000000A10C0C03

CLEAR 0x00000000A10C4C03

0 0x00000000A10C8C03

ENTER/LAST 0x00000000A10CCC03

1_TIVO 0x00000000A10CE08F

1_TV_POWER 0x00000000A10C0887

1_TV_INPUT 0x00000000A10C2C83

1_WINDOW 0x00000000A10C228D

1_LIVE_TV 0x00000000A10C8887

1_INFO 0x00000000A10CC887

1_GUIDE 0x00000000A10C6C83

1_UP 0x00000000A10C2887

1_LEFT 0x00000000A10CE887

1_RIGHT 0x00000000A10CA887

1_DOWN 0x00000000A10C6887

1_SELECT 0x00000000A10C9887

1_TH_DOWN 0x00000000A10C1887

1_TH_UP 0x00000000A10C5887

1_VOL_UP 0x00000000A10C3887

1_VOL_DOWN 0x00000000A10CB887

1_MUTE 0x00000000A10CD887

1_RECORD 0x00000000A10C048B

1_CH/PAGE_UP 0x00000000A10C7887

1_CH/PAGE_DOWN 0x00000000A10CF887

1_PLAY 0x00000000A10C848B

1_REWIND 0x00000000A10C448B

1_PAUSE 0x00000000A10CC48B

1_FORWARD 0x00000000A10C248B

1_SLOW 0x00000000A10CA48B

1_REPLAY 0x00000000A10C648B

1_JUMP 0x00000000A10CE48B

1_1 0x00000000A10C148B

1_2 0x00000000A10C948B

1_3 0x00000000A10C548B

1_4 0x00000000A10CD48B

1_5 0x00000000A10C348B

1_6 0x00000000A10CB48B

1_7 0x00000000A10C748B

1_8 0x00000000A10CF48B

1_9 0x00000000A10C0C83

1_CLEAR 0x00000000A10C4C83

1_0 0x00000000A10C8C83

1_ENTER/LAST 0x00000000A10CCC83

2_TIVO 0x00000000A10CE04F

2_TV_POWER 0x00000000A10C0847

2_TV_INPUT 0x00000000A10C2C43

2_WINDOW 0x00000000A10C224D

2_LIVE_TV 0x00000000A10C8847

2_INFO 0x00000000A10CC847

2_GUIDE 0x00000000A10C6C43

2_UP 0x00000000A10C2847

2_LEFT 0x00000000A10CE847

2_RIGHT 0x00000000A10CA847

2_DOWN 0x00000000A10C6847

2_SELECT 0x00000000A10C9847

2_TH_DOWN 0x00000000A10C1847

2_TH_UP 0x00000000A10C5847

2_VOL_UP 0x00000000A10C3847

2_VOL_DOWN 0x00000000A10CB847

2_MUTE 0x00000000A10CD847

2_RECORD 0x00000000A10C044B

2_CH/PAGE_UP 0x00000000A10C7847

2_CH/PAGE_DOWN 0x00000000A10CF847

2_PLAY 0x00000000A10C844B

2_REWIND 0x00000000A10C444B

2_PAUSE 0x00000000A10CC44B

2_FORWARD 0x00000000A10C244B

2_SLOW 0x00000000A10CA44B

2_REPLAY 0x00000000A10C644B

2_JUMP 0x00000000A10CE44B

2_1 0x00000000A10C144B

2_2 0x00000000A10C944B

2_3 0x00000000A10C544B

2_4 0x00000000A10CD44B

2_5 0x00000000A10C344B

2_6 0x00000000A10CB44B

2_7 0x00000000A10C744B

2_8 0x00000000A10CF44B

2_9 0x00000000A10C0C43

2_CLEAR 0x00000000A10C4C43

2_0 0x00000000A10C8C43

2_ENTER/LAST 0x00000000A10CCC43

3_TIVO 0x00000000A10CE0cF

3_TV_POWER 0x00000000A10C08c7

3_TV_INPUT 0x00000000A10C2Cc3

3_WINDOW 0x00000000A10C22cD

3_LIVE_TV 0x00000000A10C88c7

3_INFO 0x00000000A10CC8c7

3_GUIDE 0x00000000A10C6Cc3

3_UP 0x00000000A10C28c7

3_LEFT 0x00000000A10CE8c7

3_RIGHT 0x00000000A10CA8c7

3_DOWN 0x00000000A10C68c7

3_SELECT 0x00000000A10C98c7

3_TH_DOWN 0x00000000A10C18c7

3_TH_UP 0x00000000A10C58c7

3_VOL_UP 0x00000000A10C38c7

3_VOL_DOWN 0x00000000A10CB8c7

3_MUTE 0x00000000A10CD8c7

3_RECORD 0x00000000A10C04cB

3_CH/PAGE_UP 0x00000000A10C78c7

3_CH/PAGE_DOWN 0x00000000A10CF8c7

3_PLAY 0x00000000A10C84cB

3_REWIND 0x00000000A10C44cB

3_PAUSE 0x00000000A10CC4cB

3_FORWARD 0x00000000A10C24cB

3_SLOW 0x00000000A10CA4cB

3_REPLAY 0x00000000A10C64cB

3_JUMP 0x00000000A10CE4cB

3_1 0x00000000A10C14cB

3_2 0x00000000A10C94cB

3_3 0x00000000A10C54cB

3_4 0x00000000A10CD4cB

3_5 0x00000000A10C34cB

3_6 0x00000000A10CB4cB

3_7 0x00000000A10C74cB

3_8 0x00000000A10CF4cB

3_9 0x00000000A10C0Cc3

3_CLEAR 0x00000000A10C4Cc3

3_0 0x00000000A10C8Cc3

3_ENTER/LAST 0x00000000A10CCCc3

4_TIVO 0x00000000A10CE02F

4_TV_POWER 0x00000000A10C0827

4_TV_INPUT 0x00000000A10C2C23

4_WINDOW 0x00000000A10C222D

4_LIVE_TV 0x00000000A10C8827

4_INFO 0x00000000A10CC827

4_GUIDE 0x00000000A10C6C23

4_UP 0x00000000A10C2827

4_LEFT 0x00000000A10CE827

4_RIGHT 0x00000000A10CA827

4_DOWN 0x00000000A10C6827

4_SELECT 0x00000000A10C9827

4_TH_DOWN 0x00000000A10C1827

4_TH_UP 0x00000000A10C5827

4_VOL_UP 0x00000000A10C3827

4_VOL_DOWN 0x00000000A10CB827

4_MUTE 0x00000000A10CD827

4_RECORD 0x00000000A10C042B

4_CH/PAGE_UP 0x00000000A10C7827

4_CH/PAGE_DOWN 0x00000000A10CF827

4_PLAY 0x00000000A10C842B

4_REWIND 0x00000000A10C442B

4_PAUSE 0x00000000A10CC42B

4_FORWARD 0x00000000A10C242B

4_SLOW 0x00000000A10CA42B

4_REPLAY 0x00000000A10C642B

4_JUMP 0x00000000A10CE42B

4_1 0x00000000A10C142B

4_2 0x00000000A10C942B

4_3 0x00000000A10C542B

4_4 0x00000000A10CD42B

4_5 0x00000000A10C342B

4_6 0x00000000A10CB42B

4_7 0x00000000A10C742B

4_8 0x00000000A10CF42B

4_9 0x00000000A10C0C23

4_CLEAR 0x00000000A10C4C23

4_0 0x00000000A10C8C23

4_ENTER/LAST 0x00000000A10CCC23

5_TIVO 0x00000000A10CE0aF

5_TV_POWER 0x00000000A10C08a7

5_TV_INPUT 0x00000000A10C2Ca3

5_WINDOW 0x00000000A10C22aD

5_LIVE_TV 0x00000000A10C88a7

5_INFO 0x00000000A10CC8a7

5_GUIDE 0x00000000A10C6Ca3

5_UP 0x00000000A10C28a7

5_LEFT 0x00000000A10CE8a7

5_RIGHT 0x00000000A10CA8a7

5_DOWN 0x00000000A10C68a7

5_SELECT 0x00000000A10C98a7

5_TH_DOWN 0x00000000A10C18a7

5_TH_UP 0x00000000A10C58a7

5_VOL_UP 0x00000000A10C38a7

5_VOL_DOWN 0x00000000A10CB8a7

5_MUTE 0x00000000A10CD8a7

5_RECORD 0x00000000A10C04aB

5_CH/PAGE_UP 0x00000000A10C78a7

5_CH/PAGE_DOWN 0x00000000A10CF8a7

5_PLAY 0x00000000A10C84aB

5_REWIND 0x00000000A10C44aB

5_PAUSE 0x00000000A10CC4aB

5_FORWARD 0x00000000A10C24aB

5_SLOW 0x00000000A10CA4aB

5_REPLAY 0x00000000A10C64aB

5_JUMP 0x00000000A10CE4aB

5_1 0x00000000A10C14aB

5_2 0x00000000A10C94aB

5_3 0x00000000A10C54aB

5_4 0x00000000A10CD4aB

5_5 0x00000000A10C34aB

5_6 0x00000000A10CB4aB

5_7 0x00000000A10C74aB

5_8 0x00000000A10CF4aB

5_9 0x00000000A10C0Ca3

5_CLEAR 0x00000000A10C4Ca3

5_0 0x00000000A10C8Ca3

5_ENTER/LAST 0x00000000A10CCCa3

6_TIVO 0x00000000A10CE06F

6_TV_POWER 0x00000000A10C0867

6_TV_INPUT 0x00000000A10C2C63

6_WINDOW 0x00000000A10C226D

6_LIVE_TV 0x00000000A10C8867

6_INFO 0x00000000A10CC867

6_GUIDE 0x00000000A10C6C63

6_UP 0x00000000A10C2867

6_LEFT 0x00000000A10CE867

6_RIGHT 0x00000000A10CA867

6_DOWN 0x00000000A10C6867

6_SELECT 0x00000000A10C9867

6_TH_DOWN 0x00000000A10C1867

6_TH_UP 0x00000000A10C5867

6_VOL_UP 0x00000000A10C3867

6_VOL_DOWN 0x00000000A10CB867

6_MUTE 0x00000000A10CD867

6_RECORD 0x00000000A10C046B

6_CH/PAGE_UP 0x00000000A10C7867

6_CH/PAGE_DOWN 0x00000000A10CF867

6_PLAY 0x00000000A10C846B

6_REWIND 0x00000000A10C446B

6_PAUSE 0x00000000A10CC46B

6_FORWARD 0x00000000A10C246B

6_SLOW 0x00000000A10CA46B

6_REPLAY 0x00000000A10C646B

6_JUMP 0x00000000A10CE46B

6_1 0x00000000A10C146B

6_2 0x00000000A10C946B

6_3 0x00000000A10C546B

6_4 0x00000000A10CD46B

6_5 0x00000000A10C346B

6_6 0x00000000A10CB46B

6_7 0x00000000A10C746B

6_8 0x00000000A10CF46B

6_9 0x00000000A10C0C63

6_CLEAR 0x00000000A10C4C63

6_0 0x00000000A10C8C63

6_ENTER/LAST 0x00000000A10CCC63

7_TIVO 0x00000000A10CE0eF

7_TV_POWER 0x00000000A10C08e7

7_TV_INPUT 0x00000000A10C2Ce3

7_WINDOW 0x00000000A10C22eD

7_LIVE_TV 0x00000000A10C88e7

7_INFO 0x00000000A10CC8e7

7_GUIDE 0x00000000A10C6Ce3

7_UP 0x00000000A10C28e7

7_LEFT 0x00000000A10CE8e7

7_RIGHT 0x00000000A10CA8e7

7_DOWN 0x00000000A10C68e7

7_SELECT 0x00000000A10C98e7

7_TH_DOWN 0x00000000A10C18e7

7_TH_UP 0x00000000A10C58e7

7_VOL_UP 0x00000000A10C38e7

7_VOL_DOWN 0x00000000A10CB8e7

7_MUTE 0x00000000A10CD8e7

7_RECORD 0x00000000A10C04eB

7_CH/PAGE_UP 0x00000000A10C78e7

7_CH/PAGE_DOWN 0x00000000A10CF8e7

7_PLAY 0x00000000A10C84eB

7_REWIND 0x00000000A10C44eB

7_PAUSE 0x00000000A10CC4eB

7_FORWARD 0x00000000A10C24eB

7_SLOW 0x00000000A10CA4eB

7_REPLAY 0x00000000A10C64eB

7_JUMP 0x00000000A10CE4eB

7_1 0x00000000A10C14eB

7_2 0x00000000A10C94eB

7_3 0x00000000A10C54eB

7_4 0x00000000A10CD4eB

7_5 0x00000000A10C34eB

7_6 0x00000000A10CB4eB

7_7 0x00000000A10C74eB

7_8 0x00000000A10CF4eB

7_9 0x00000000A10C0Ce3

7_CLEAR 0x00000000A10C4Ce3

7_0 0x00000000A10C8Ce3

7_ENTER/LAST 0x00000000A10CCCe3

8_TIVO 0x00000000A10CE01F

8_TV_POWER 0x00000000A10C0817

8_TV_INPUT 0x00000000A10C2C13

8_WINDOW 0x00000000A10C221D

8_LIVE_TV 0x00000000A10C8817

8_INFO 0x00000000A10CC817

8_GUIDE 0x00000000A10C6C13

8_UP 0x00000000A10C2817

8_LEFT 0x00000000A10CE817

8_RIGHT 0x00000000A10CA817

8_DOWN 0x00000000A10C6817

8_SELECT 0x00000000A10C9817

8_TH_DOWN 0x00000000A10C1817

8_TH_UP 0x00000000A10C5817

8_VOL_UP 0x00000000A10C3817

8_VOL_DOWN 0x00000000A10CB817

8_MUTE 0x00000000A10CD817

8_RECORD 0x00000000A10C041B

8_CH/PAGE_UP 0x00000000A10C7817

8_CH/PAGE_DOWN 0x00000000A10CF817

8_PLAY 0x00000000A10C841B

8_REWIND 0x00000000A10C441B

8_PAUSE 0x00000000A10CC41B

8_FORWARD 0x00000000A10C241B

8_SLOW 0x00000000A10CA41B

8_REPLAY 0x00000000A10C641B

8_JUMP 0x00000000A10CE41B

8_1 0x00000000A10C141B

8_2 0x00000000A10C941B

8_3 0x00000000A10C541B

8_4 0x00000000A10CD41B

8_5 0x00000000A10C341B

8_6 0x00000000A10CB41B

8_7 0x00000000A10C741B

8_8 0x00000000A10CF41B

8_9 0x00000000A10C0C13

8_CLEAR 0x00000000A10C4C13

8_0 0x00000000A10C8C13

8_ENTER/LAST 0x00000000A10CCC13

9_TIVO 0x00000000A10CE09F

9_TV_POWER 0x00000000A10C0897

9_TV_INPUT 0x00000000A10C2C93

9_WINDOW 0x00000000A10C229D

9_LIVE_TV 0x00000000A10C8897

9_INFO 0x00000000A10CC897

9_GUIDE 0x00000000A10C6C93

9_UP 0x00000000A10C2897

9_LEFT 0x00000000A10CE897

9_RIGHT 0x00000000A10CA897

9_DOWN 0x00000000A10C6897

9_SELECT 0x00000000A10C9897

9_TH_DOWN 0x00000000A10C1897

9_TH_UP 0x00000000A10C5897

9_VOL_UP 0x00000000A10C3897

9_VOL_DOWN 0x00000000A10CB897

9_MUTE 0x00000000A10CD897

9_RECORD 0x00000000A10C049B

9_CH/PAGE_UP 0x00000000A10C7897

9_CH/PAGE_DOWN 0x00000000A10CF897

9_PLAY 0x00000000A10C849B

9_REWIND 0x00000000A10C449B

9_PAUSE 0x00000000A10CC49B

9_FORWARD 0x00000000A10C249B

9_SLOW 0x00000000A10CA49B

9_REPLAY 0x00000000A10C649B

9_JUMP 0x00000000A10CE49B

9_1 0x00000000A10C149B

9_2 0x00000000A10C949B

9_3 0x00000000A10C549B

9_4 0x00000000A10CD49B

9_5 0x00000000A10C349B

9_6 0x00000000A10CB49B

9_7 0x00000000A10C749B

9_8 0x00000000A10CF49B

9_9 0x00000000A10C0C93

9_CLEAR 0x00000000A10C4C93

9_0 0x00000000A10C8C93

9_ENTER/LAST 0x00000000A10CCC93

end codes

end remote

2 thoughts on “Setting up lircd with the hdhomerun and a Tivo series 2 remote

  1. I am trying to get HDHomeRun to work with Tivo remote. Kinda works but I’m getting double actions for every one button press.

    any thoughts?


  2. Make sure that you have done a full “reset” on your tivo remote to clear out any TV or Amplifier settings on it.

    I am using the lircd.conf TIVO configuration file by Joel Ebel created on: Mon Oct 6 18:29:46 2003
    With a TIVO 2 remote.

    In my /etc/mythtv directory, I have an lircrc file, and all of my buttons have the “repeat = 4” directive, which may help you.


Leave a Reply

Your email address will not be published. Required fields are marked *