LibreElec, Flirc, Harmony, & Suspend/Resume

  • So, I finally got all of this working, but seems like I had to jump through several hoops for what I assume would be somewhat default behavior everyone should want... so I'm posting here in hopes that it helps others (the other posts I could find on this are rather old), as well as to see if I just missed something obvious.

    Firstly, just plugging the Flirc in to my Chromebox running LibreElec, and setting it up as a Flirc/Kodi device in MyHarmony initially worked pretty seamlessly for control functions, however there were two issues: 1) Any IR command would resume the Chromebox if suspended, and 2) the PowerOff functionality brought up the Kodi power menu, wherein you had to navigate to a selection.

    When I installed the Flirc GUI on a Windows box to program it, it upgraded the firmware on my Flirc, after which it no longer responded to any generic IR event it saw to wake up the Chromebox. And interestingly the ability to toggle that in the Flirc Advanced menu remained grayed out (not sure why).

    However, there are "Power On" or "Resume" events in the Harmony Flirc/Kodi profile (Just PowerOff). So even though there's a Flirc "Wake" event (on the Kodi or Full keyboard controller profiles), I had no corresponding Harmony function/button to map to it. I eventually solved this by taking an old IR remote I had from a device I no longer had installed, and creating a new Harmony button I named "Resume" and learning that old remote IR command, and set up the Harmony Flirc/Kodi device with that same code to Power On. I then trained the Flirc by mapping that IR code to "Wake" in the Kodi controller. Once done, the Chromebox only wakes on that specific IR command, and nothing else.

    In order to force the Chromebox to suspend, I originally tried to change the default behavior in the Keymap by creating my own /storage/.kody/userdata/keyampas/keymap.xml and setting:

    Code
    <keymap>
     <global>
      <keyboard>
       <power>XBMC.Suspend()</power>
      </keyboard>
     </global>
    </keymap>

    That didn't seem to work. So I eventually followed the advice of this Flirc forum post. I took yet another old IR remote for a piece of hardware I no longer had installed, and trained the Flirc to map that remote's power IR command to CTRL-F12, and then used the following keymap.xml:

    Code
    <keymap>
     <global>
      <keyboard>
       <f12 mod="ctrl">XBMC.Suspend()</f12>
      </keyboard>
     </global>
    </keymap>

    I then taught the Harmony that same IR command, calling it "Suspend", and added it as the power-off command for my Flirc/Kodi device.

    So now I have Kodi suspending and the Chromebox resuming with discrete IR codes. However it seems that if I hadn't had a couple of old IR remotes to learn some IR commands from, I would have had no way to teach the Harmony and Flirc how to do this. It also seems like LibreElec/Kodi might want to to have some way to change the default PowerOff events to directly trigger a power state, without having to bring up the menu first.

    Of course, I could have indeed missed something obvious in which case pointers certainly appreciated.