Argon One Harmony IR Remote Support with Libreelec

*** Complete base config for a Harmony remote, programmed with a “Micca Media Center” config, for use with any Raspberry Pi IR module (including an Argon One) running libreelec/Kodi:

Trying to get your Harmony remote working with your Argon One running KODI media center over libreelec? Tried and failed to run the Argon One scripts on librelec v10.0.2 or later and now you’re throwing stuff across the room? It’s a big sucks donut unless you buy an Argon One remote and program the Harmony software with all of the keys - but it’s just TOO BAD they don’t include ANY decent control keys on their remote. So unless you have a harmony hub and want to hold your remote mid-air and program those extra keys, and also want to create a whole new remote control franken-profile in Harmony and reprogram everything, you’re kinda stuck. Right? Right??? Um…Not anymore.

DISCLAIMER: For your personal use. If you are going to re-post this, please at least assign credit. Feel free to write your own custom scripts based on the “step-by-step” below for ease of use. The “Super-Techs” among you can just skip to step 7. That mapping data is the actual golden nugget in this post that you’ll need.

Four years ago (2019) I wanted to upgrade my old Micca media centers with rPi/Kodi, yet continue to use the Harmony remotes, but their weren’t any great profile options in the Harmony programming software. Even after adding my own VMR317 IR module to GPIO pin 18, the profiles in Harmony that ended up working…didn’t work shall we say “well”. Too many key differences, missing keys, etc. I had already programmed my Harmony remotes to use the “Micca Media Center” profile (I’ve got four of them) and didn’t want to change everything, so I went to the drawing board and worked out a comprehensive solution. I’ve been running this for the last four years, with flawless and complete functionality. I just bought a few Argon One(s), downloaded and peeked into their non-working install scripts, and found their IR module is assigned to pin 23 of the GPIO. Once I re-mapped my config (below) from pin 18 to 23, everything worked as I had originally written it. Here’s how it went:

I started by sniffing out every raw IR signal produced by the Harmony remote using the “Micca Media Center” profile that I would need. Here were the results:

0x0160 KEY_OK
0x0069 KEY_LEFT
0x006a KEY_RIGHT
0x0067 KEY_UP
0x006c KEY_DOWN
0x0200 KEY_NUMERIC_0
0x0201 KEY_NUMERIC_1
0x0202 KEY_NUMERIC_2
0x0203 KEY_NUMERIC_3
0x0204 KEY_NUMERIC_4
0x0205 KEY_NUMERIC_5
0x0206 KEY_NUMERIC_6
0x0207 KEY_NUMERIC_7
0x0208 KEY_NUMERIC_8
0x0209 KEY_NUMERIC_9
0x006f KEY_DELETE
0x001c KEY_ENTER
0x0073 KEY_VOLUMEUP
0x0072 KEY_VOLUMEDOWN
0x0071 KEY_MUTE
0x00ae KEY_EXIT
0x00cf KEY_PLAY
0x0077 KEY_PAUSE
0x00d0 KEY_FASTFORWARD
0x00a8 KEY_REWIND
0x0197 KEY_NEXT
0x019c KEY_PREVIOUS
0x0080 KEY_STOP

Once these were re-mapped, they looked like this:

0x800f0422 KEY_OK
0x800f0420 KEY_LEFT
0x800f0421 KEY_RIGHT
0x800f041e KEY_UP
0x800f041f KEY_DOWN
0x800f0400 KEY_NUMERIC_0
0x800f0401 KEY_NUMERIC_1
0x800f0402 KEY_NUMERIC_2
0x800f0403 KEY_NUMERIC_3
0x800f0404 KEY_NUMERIC_4
0x800f0405 KEY_NUMERIC_5
0x800f0406 KEY_NUMERIC_6
0x800f0407 KEY_NUMERIC_7
0x800f0408 KEY_NUMERIC_8
0x800f0409 KEY_NUMERIC_9
0x800f040a KEY_DELETE
0x800f040b KEY_ENTER
0x800f0410 KEY_VOLUMEUP
0x800f0411 KEY_VOLUMEDOWN
0x800f041e KEY_CHANNELUP
0x800f041f KEY_CHANNELDOWN
0x800f040e KEY_MUTE
0x800f0423 KEY_EXIT
0x800f0417 KEY_PLAY
0x800f0418 KEY_PAUSE
0x800f0414 KEY_FASTFORWARD
0x800f0415 KEY_REWIND
0x800f041a KEY_NEXT
0x800f041b KEY_PREVIOUS
0x800f0419 KEY_STOP

Now that I had the re-mapped data, and obtained additional mapping data for the Micca “color” buttons, I could create a “Micca matched” profile, and add it to Kodi. To make things easy, I created this entire step-by-step instruction tutorial to assist anyone interested. Please feel free to edit or skip the steps you don’t need or have already configured (such as media sources).

You may want to copy/paste all of this into a text file and resize it for ease of reading:


Complete base config for a Harmony remote, programmed with a “Micca Media Center” config, for use with any Raspberry Pi IR module running libreelec/Kodi:



*** Pre-Install Steps:

  1. Program your Harmony remote with the “Micca Media Center” remote profile and configure for your devices using the Harmony app or web interface:
    Get it here (remove the spaces from link): https ://support. myharmony. com/ en-us/ download

  2. (optional) Disable the Argon One rear power button by changing the pins from “1-2” to “2-3” to disable it. Use an in-line power switch, or use any WiFi controlled power plug to control on/off functionality (this is what I use as it allows forced scheduled powering down the rPi from my phone). Without their “non-libreelec-compliant” scripts, the fan will still work by default at 100% speed. I will work with their scripts to try to incorporate these additional functions at a later date.

  3. Setup your flash drive:
    a) Download the latest Libreelec image (currently 10.0.4)
    Get it here (remove the spaces from link): https ://libreelec .tv/ downloads/
    b) Don’t forget to use SD Card Formatter first to wipe your card prior to imaging if it’s been used previously
    Get it here (remove the spaces from link): https ://www .sdcard .org/ downloads/formatter/
    c) Use the new Raspberry Pi Imager to flash the libreelec image onto your mSD flash card or M.2 SATA:
    Get it here (remove the spaces from link): https ://www .raspberrypi .com/ software/

  4. Install the mSD or M.2 SATA into your Pi, then boot and configure your network and personal base settings within Kodi/libreelec to allow network access for PuTTY. Once done, you can begin the configuration below:


*** CONFIGURATION STEPS ***


  1. From a remote computer, log in with PuTTY (IP: 192.168.x.xxx, UN: root PW:YOUR PASSWORD - default: libreelec):
    Get PuTTY here: Download PuTTY: latest release (0.78)


  1. Edit the config.txt file to provide mapping for the 3-pin external IR on GPIO pin 23 or if using an Argon One case w-built-in IR

mount -o remount,rw /flash
nano /flash/config.txt

---------------------------------------------------------------------------
*** Add following line (copy from here and then right-click in PuTTY to paste), then save w-Ctrl-O, and then exit with Ctrl-X
---------------------------------------------------------------------------
dtoverlay=gpio-ir,gpio_pin=23

  1. Create a “Micca matched” profile called “gpio_micca” for use with libreelec

mount -o remount,ro /flash
cd /storage/.config/rc_keymaps/
nano gpio_micca

---------------------------------------------------------------------------
*** Add following lines to gpio_micca (copy from here and then right-click in PuTTY to paste), then save w-Ctrl-O, and then exit with Ctrl-X
	(These lines are not "tabbed" over, so you can copy and paste directly.)
---------------------------------------------------------------------------
# table gpio_micca, type: NEC
# rc6_mce
0x101a KEY_RED
0x1058 KEY_GREEN
0x105c KEY_YELLOW
0x101d KEY_BLUE
0x1005 KEY_MENU
0x105d KEY_POWER
0x1045 KEY_UP
0x1055 KEY_DOWN
0x1007 KEY_LEFT
0x1001 KEY_RIGHT
0x1041 KEY_OK
0x1017 KEY_VOLUMEUP
0x1013 KEY_VOLUMEDOWN
0x1057 KEY_MUTE
0x1044 KEY_INFO
0x1000 KEY_EXIT
0x1059 KEY_PLAY
0x1059 KEY_PAUSE
0x105b KEY_STOP
0x101c KEY_FASTFORWARD
0x1040 KEY_REWIND
0x1015 KEY_NEXT
0x1014 KEY_PREVIOUS
0x1005 KEY_MENU
0x1009 KEY_DISPLAYTOGGLE
0x1004 KEY_AUDIO
0x1002 KEY_MEDIA_REPEAT
0x1046 KEY_HOME
0x1054 KEY_SUBTITLE
0x1008 KEY_SETUP
0x1066 KEY_SLEEP
0x100c KEY_ZOOM
0x105f KEY_SWITCHVIDEOMODE
0x1042 KEY_SEARCH
0x1067 KEY_MEDIA
0x101e KEY_EJECTCD
0x1048 KEY_BOOKMARKS

  1. Edit/create the rc_maps.cfg file

cd /storage/.config/
nano rc_maps.cfg

---------------------------------------------------------------------------
Add the following single line to the blank file (right-click), then save w-Ctrl-O, and then exit with Ctrl-X
	(This line is not "tabbed" over, so you can copy and paste directly.)
---------------------------------------------------------------------------

* * gpio_micca


  1. Edit the sources.xml file if you need to add your media locations:

cd /storage/.kodi/userdata/
nano sources.xml

---------------------------------------------------------------------------
REPLACE everything in sources.xml with the following lines (right-click), then save w-Ctrl-O, and then exit with Ctrl-X
Customize all of the "MEDIA NAME", "MUSIC", etc. names and paths with your custom LAN or drive locations.
	(These lines are not "tabbed" over so you can edit, then copy and paste directly.)
---------------------------------------------------------------------------
<?xml version="1.0" encoding="utf-8"?>
<sources>
    <programs>
        <default pathversion="1"></default>
    </programs>
    <video>
        <default pathversion="1"></default>
        <source>
            <name>MEDIA NAME (ex. "Movies" or "TV Shows",e tc.)</name>
            <path pathversion="1">nfs://192.168.x.x/Media/xxx/</path>
            <allowsharing>true</allowsharing>
        </source>
        <source>
            <<name>Movies</name>
            <path pathversion="1">nfs://192.168.x.x/Media/xxx/</path>
            <allowsharing>true</allowsharing>
        </source>
        <source>
            <name>TV Shows</name>
            <path pathversion="1">nfs://192.168.x.x/Media/xxx/</path>
            <allowsharing>true</allowsharing>
        </source>
    </video>
    <music>
        <default pathversion="1"></default>
        <source>
            <name>Music</name>
            <path pathversion="1">nfs://192.168.x.x/Media/Music/xxx/</path>
            <allowsharing>true</allowsharing>
        </source>
    </music>
    <pictures>
        <default pathversion="1"></default>
        <source>
            <name>Pictures</name>
            <path pathversion="1">nfs://192.168.x.x/Media/Pictures/xxx/</path>
            <allowsharing>true</allowsharing>
        </source>
    </pictures>
    <files>
        <default pathversion="1"></default>
        <source>
            <name>Media Files</name>
            <path pathversion="1">nfs://192.168.x.x/Media/Files/xxx/</path>
            <allowsharing>true</allowsharing>
        </source>
    </files>
</sources>

  1. DONE. Reboot your Pi with the following command. Once restarted, test your remote functionality accessing your data sources.

reboot

FINAL NOTE: Sorry for the 4 year delay. If I had known anyone else cared or needed this, I would have posted it all long ago.