Monday, September 2, 2019

Using a TiVo Roamio Remote with MythTV on Ubuntu

Updated 11/03/2020

Instructions are shown below for setting up a TiVo remote to control an HTPC that has MythTV installed.  An HTPC is a computer that is connected to a home theater system or simply a single TV.  MythTV is media center software for an HTPC that is mainly used to watch and record TV content.  Ubuntu is one of the most popular Linux operating systems.  I used a TiVo Roamio remote, but this can be done with other TiVo model infrared (IR) remotes with some possible minor differences.


A TiVo remote can be purchased here on Amazon.  Alternatively, one can be purchased used together with a TiVo from eBay or various other sources for very little money.  An Inteset USB external IR receiver works great with a TiVo remote, and one can be purchased here on Amazon.  Alternatively, purchase another IR receiver that is compatible with the NEC protocol.
Inteset IR Receiver

Software Setup

The following steps can be used to set the TiVo remote to work with a specific TV and optimize the remote for use with MythTV:
  1. Open a web browser and visit TiVo's instructions here to make the remote control the TV power, volume, mute and input directly.
  2. Open a terminal and type "sudo apt install ir-keytable" without the quotes.
  3. Copy /lib/udev/rc_keymaps/rc6_mce to a folder in your home folder just to make a backup copy of the original.  With Ubuntu 20.04, this file is named rc6_mce.toml.
  4. Make another copy of rc6_mce in your home folder.
  5. Open the rc6_mce file in your home folder in a text editor, erase all content, and replace the content as shown below.
  6. Open a terminal, and enter "sudo cp ./rc6_mce /lib/udev/rc_keymaps/rc6_mce" without the quotes.  For Ubuntu 20.04, use "sudo cp ./rc6_mce.toml /lib/udev/rc_keymaps/rc6_mce.toml".
  7. Open a web browser, and visit http://BACKEND.IP.ADDRESS.HERE/mythweb/settings/mythtv/keys
  8. Under Jumpoints Editor, enter "=" for Main Menu and ";" for Live TV.
  9. Under Keybinding Editor, delete "F5" for Menu Blue and MenuEPG, enter "F5" for Add bookmark, delete "B" for Toggle active PIP/PBP window, and enter B for Jump to the start of the recording.
Replacement entries in new rc6_mce file for Ubuntu 18.04:

# table tivo, type: NEC
0x3085d028 KEY_1
0x3085d029 KEY_2
0x3085d02a KEY_3
0x3085d02b KEY_4
0x3085d02c KEY_5
0x3085d02d KEY_6
0x3085d02e KEY_7
0x3085d02f KEY_8
0x0085302f KEY_8
0x3085c030 KEY_9
0x3085e014 KEY_UP
0x3085e016 KEY_DOWN
0x3085e017 KEY_LEFT
0x3085e015 KEY_RIGHT
0x3085c031 KEY_0
0x3085c033 KEY_ENTER
0x3085c032 KEY_ESC
0x3085f00d KEY_EQUAL
0x3085c036 KEY_S
0x3085e019 KEY_ENTER
0x3085d024 KEY_DOT
0x3085e011 KEY_SEMICOLON
0x3085d023 KEY_P
0x3085d021 KEY_P
0x3085e01e KEY_UP
0x3085e01f KEY_DOWN
0x0085301f KEY_DOWN
0x3085708d KEY_ESC
0x3085d022 KEY_COMMA
0x3085d020 KEY_R
0x3085e013 KEY_I
0x3085b044 KEY_W
0x3085e018 KEY_D
0x3085e01a KEY_F5
0x3085d025 KEY_K
0x3085d026 KEY_PAGEUP
0x3085d027 KEY_PAGEDOWN
0x30859060 KEY_M
0x30859061 KEY_B
0x30859062 KEY_SLASH
0x30859063 KEY_H

Replacement entries in new rc6_mce.toml file for Ubuntu 20.04:

name = "tivo"
protocol = "nec"
variant = "nec32"
0x3085d028 = "KEY_1"
0x3085d029 = "KEY_2"
0x3085d02a = "KEY_3"
0x3085d02b = "KEY_4"
0x3085d02c = "KEY_5"
0x3085d02d = "KEY_6"
0x3085d02e = "KEY_7"
0x3085d02f = "KEY_8"
0x0085302f = "KEY_8"
0x3085c030 = "KEY_9"
0x3085e014 = "KEY_UP"
0x3085e016 = "KEY_DOWN"
0x3085e017 = "KEY_LEFT"
0x3085e015 = "KEY_RIGHT"
0x3085c031 = "KEY_0"
0x3085c033 = "KEY_ENTER"
0x3085c032 = "KEY_ESC"
0x3085f00d = "KEY_EQUAL"
0x3085c036 = "KEY_S"
0x3085e019 = "KEY_ENTER"
0x3085d024 = "KEY_DOT"
0x3085e011 = "KEY_SEMICOLON"
0x3085d023 = "KEY_P"
0x3085d021 = "KEY_P"
0x3085e01e = "KEY_UP"
0x3085e01f = "KEY_DOWN"
0x0085301f = "KEY_DOWN"
0x3085708d = "KEY_ESC"
0x3085d022 = "KEY_COMMA"
0x3085d020 = "KEY_R"
0x3085e013 = "KEY_I"
0x3085b044 = "KEY_W"
0x3085e018 = "KEY_D"
0x3085e01a = "KEY_F5"
0x3085d025 = "KEY_K"
0x3085d026 = "KEY_PAGEUP"
0x3085d027 = "KEY_PAGEDOWN"
0x30859060 = "KEY_M"
0x30859061 = "KEY_B"
0x30859062 = "KEY_SLASH"
0x30859063 = "KEY_H"

It may be necessary to add a systemd service file:

Optionally rename and copy the toml file to the /etc/rc_keymaps folder.  In a text editor, enter the content shown below, and save the file as ir-keytable-loadmap.service in your home folder.  Open Terminal, and enter "sudo cp ./ir-keytable-loadmap.service /etc/systemd/system/ir-keytable-loadmap.service" without the quotes.  In Terminal, enter "sudo systemctl enable ir-keytable-loadmap" without the quotes.

Description=Load rc_keymap file
After=rc-local.service systemd-user-sessions.service

ExecStart=bash -c "ir-keytable -c -w /etc/rc_keymaps/name_of_map_file.toml"


Key Descriptions

TiVo Roamio Remote Configuration for MythTV
Key descriptions while watching live TV, watching a recording and global as applicable:
  1. Jump to main menu (=)
  2. Jump to live TV (;)
  3. Directly control the TV power
  4. Show information (I)
  5. Directly control the TV input (also known as source)
  6. Switch between preconfigured zoom modes (W)
  7. Exit (Esc)
  8. Select (Enter)
  9. Navigate (arrow keys)
  10. Change channel (arrow keys up and down)
  11. Directly control the TV volume
  12. Show EPG (S)
  13. Directly mute and unmute the TV
  14. Record (R)
  15. Delete (D)
  16. Add bookmark (F5)
  17. Play (P)
  18. Sticky fast forward or skip forward one second while paused (.)
  19. Sticky rewind or jump back one second while paused (,)
  20. Pause (P)
  21. Jump to bookmark (K)
  22. Jump ahead (Page Down)
  23. Jump back (Page Up)
  24. Switch to the previous channel (H)
  25. Show pop-up menu (M)
  26. Cycle through channel groups and all channels in the program guide (/)
  27. Jump to the start of the recording (B)
  28. Select (Enter)
  29. Exit (Esc)

No comments:

Post a Comment