Shutdown scripts for Raspbian


The default SSH user name is pi, password raspberry

  • Key in :
    cd /etc
    sudo nano rc.local
  • Copy and paste the following into the nano editor window, just above the last line (before the line exit 0)
    (/etc/irswitch.sh)&
  • Press ctrl+x to exit the editor, y to confirm, enter to save the file
  • Key in
    sudo nano irswitch.sh
  • Copy and paste the following text into the editor window
    #!/bin/bash
    # this is the GPIO pin receiving the shut-down signal
    GPIOpin1=14
    echo "$GPIOpin1" > /sys/class/gpio/export
    echo "in" > /sys/class/gpio/gpio$GPIOpin1/direction
    while true; do
      sleep 1
      power=$(cat /sys/class/gpio/gpio$GPIOpin1/value)
      if [ $power != 0 ]; then
        echo "out" > /sys/class/gpio/gpio$GPIOpin1/direction
        echo "1" > /sys/class/gpio/gpio$GPIOpin1/value
        sleep 3
        sudo shutdown -h now
      fi
    done
  • Press ctrl+x to exit, y to confirm, enter to save the file
  • Key in
    sudo chmod +x irswitch.sh

The following additional script enables the RemotePi Board to cut off the power, after Raspbian has been shut down from the on-screen menu.

  • Key in
  • sudo nano /etc/shutdown.sh
  • Copy and paste the following contents
  • #!/bin/bash
    REBOOT_GREP=$(systemctl list-units --type=target | grep reboot)
    SHUTDOWN_GREP=$(systemctl list-units --type=target | grep shutdown)
    if [ "$SHUTDOWN_GREP" ] && [ ! "$REBOOT_GREP" ]; then
      # the condition above makes sure, that the shutdown sequence is not run on reboot 
      GPIOpin=15
      GPIOpin1=14
      echo "$GPIOpin" > /sys/class/gpio/export
      echo "out" > /sys/class/gpio/gpio$GPIOpin/direction
      echo "1" > /sys/class/gpio/gpio$GPIOpin/value
      sleep 0.125
      echo "0" > /sys/class/gpio/gpio$GPIOpin/value
      sleep 0.2
      echo "1" > /sys/class/gpio/gpio$GPIOpin/value
      sleep 0.4
      echo "0" > /sys/class/gpio/gpio$GPIOpin/value
      echo "$GPIOpin1" > /sys/class/gpio/export
      echo "out" > /sys/class/gpio/gpio$GPIOpin1/direction
      echo "1" > /sys/class/gpio/gpio$GPIOpin1/value
      sleep 4
    fi
  • Press ctrl+x to exit, y to confirm, enter to save the file
  • After saving the file, mark it as executable with
    sudo chmod +x /etc/shutdown.sh
  • Key in
  • sudo nano /etc/systemd/system/irswitch2.service
  • Copy and paste the following text into the editor window
    [Unit]
    Description=RemotePi Board Shutdown Service
    Before=multi-user.target
    Conflicts=shutdown.target
    [Service]
    ExecStart=/bin/true
    ExecStop=/etc/shutdown.sh
    Type=oneshot
    RemainAfterExit=yes
    [Install]
    WantedBy=multi-user.target
  • Press ctrl+x to exit, y to confirm, enter to save the file
  • Key in
    sudo systemctl enable irswitch2.service

  • Reboot one time
  • After reboot you can use the RemotePi Board to power cycle Raspbian

 

The above scripts have been tested and are confirmed to work up to Raspbian Stretch (2018-03-13). Although not yet tested, they most likely will work with newer versions as well.

This page was last updated 21-Apr-2018