gpio-shutdown alternative for LibreElec 8.2.5

  • Update: Starting with LibreELEC (Leia) v8.95.2 BETA it is possible to use dtoverlay=gpio-shutdown. See further down.

    Hi! I felt this area is the most appropriate for what I want to contribute.

    I was searching for a way to shut down my libreelec-Raspberry with the touch of a button wired to pins 5 & 6, as I do for my other raspberrys. Unfortunately the same approch, setting dtoverlay=gpio-shutdown in config.txt didn't work.

    Another solution I found, invoving autostart and a shutdown.sh yielded very strange results in a not-booting raspberry.

    The following approach, seems to work though. Maybe It's not correct so please tell me if I did something wrong.

    First create a file "/storage/.config/gpio-shutdown" with the following content:

    Make it executable with

    Code
    chmod +x /storage/.config/gpio-shutdown

    Then create a file "/storage/.config/autostart.sh" (or adjust its content accordingly)

    Code
    (
            nohup /storage/.config/gpio-shutdown &
    ) &

    Make it also executable, then reboot

    Code
    chmod +x /storage/.config/autostart.sh
    reboot

    How does it work?

    The autostart.sh is invoked every time libreelec is booted. It will then start "gpio-shutdown" in the background. This script will check every second whether or not the GPIO3 is connected to GND. As soon as this is dicovered, a "shutdown -h now" is executed and the raspberry will shut down. You'll see the usuall 10 blinks after which you can disconnect.

    Another touch of the button which connects GPIO3 to GND will boot up your libreelec.

    Edited 3 times, last by Skeeve (January 6, 2019 at 10:07 PM).

  • Yes, the current stable LE still needs scripting to use an on/off button. I did it by calling a Python script. Using the above Shell script works basically the same way. It would be cool to get this function just by setting a "dtoverlay" option. I'll switch to it, when it's part of a stable LE version.

    "dtoverlay=gpio-shutdown" on LE 8.95.002 will let the shutdown menu appear, when pressing the power button. Instant off only works by the described scripting.

  • If you have the time, could you test gpio-shutdown on the latest LE alpha build Here Tnx.

    I did and it works. Here is what I did:

    ssh-ed to the system and remounted /flash so that I can change config.txt

    Code
    mount -o remount,rw /flash

    Then using my favourite editor (vi) to add the below line to /flash/config.txt below the shown comment.

    Code
    ################################################################################
    # End of default configuration
    ################################################################################
    
    dtoverlay=gpio-shutdown

    Then I've created the file /storage/.kodi/userdata/keymaps/keyboard.xml to contain:

    Code
    <keymap>
      <global>
        <keyboard>
          <key id="61662">shutdown</key>
        </keyboard>
      </global>
    </keymap>

    Finally I did a reboot.

    That's it. A button connecting pins 5 & 6 will now shut down your libreelec.

  • "dtoverlay=gpio-shutdown" on LE 8.95.002 will let the shutdown menu appear, when pressing the power button. Instant off only works by the described scripting.

    Thanks to your post and the one by @Iridum I found the solution. Changing the key which is sent helps. See above

  • How does this configuration end up here:

    Why it's gpio 5 & 6? How could I set my own gpio pins? :/

    It's not gpio 5&6 it's GPIO 3 and ground which happens to be pins 5 & 6 iirc.

    Why it's key id 61662 - I have no clue. Must be the work of the devil. It's 3 times the 6 ;)

    Just kidding. But I really have no clue. I googled and ended up with that solution.