|
|
- #!/bin/bash
-
- if [ $(id -u) -ne 0 ]; then
- echo "Installer must be run as root."
- echo "Try 'sudo bash $0'"
- exit 1
- fi
-
- clear
- echo "This script will install Adafruit"
- echo "fan service, which will turn on an"
- echo "external fan controlled by a given pin"
- echo
- echo "Operations performed include:"
- echo "- In /boot/config.txt, enable camera"
- echo "- apt-get update"
- echo "- Install Python libraries:"
- echo " picamera, pygame, PIL"
- echo "- Downgrade SDL library for pygame"
- echo " touch compatibility"
- echo "- Download Dropbox Updater and"
- echo " Adafruit Pi Cam software"
- echo
- echo "Run time 1+ minutes. Reboot not required."
- echo
-
- group=ADAFRUIT
- function info() {
- system="$1"
- group="${system}"
- shift
- FG="1;32m"
- BG="40m"
- echo -e "[\033[${FG}\033[${BG}${system}\033[0m] $*"
- }
-
-
- function bail() {
- FG="1;31m"
- BG="40m"
- echo -en "[\033[${FG}\033[${BG}${group}\033[0m] "
- if [ -z "$1" ]; then
- echo "Exiting due to error"
- else
- echo "Exiting due to error: $*"
- fi
- exit 1
- }
-
- if [ "$1" != '-y' ]; then
- echo -n "CONTINUE? [y/N]"
- read
- if [[ ! "$REPLY" =~ ^(yes|y|Y)$ ]]; then
- echo "Canceled."
- exit 0
- fi
- fi
-
- echo "Continuing..."
- # check init system (technique borrowed from raspi-config):
- info FAN 'Checking init system...'
- if command -v systemctl > /dev/null && systemctl | grep -q '\-\.mount'; then
- echo "Found systemd, OK!"
- elif [ -f /etc/init.d/cron ] && [ ! -h /etc/init.d/cron ]; then
- bail "Found sysvinit, but we require systemd"
- else
- bail "Unrecognised init system"
- fi
-
- info FAN 'Adding adafruit_fan.service'
- cat > /etc/systemd/system/adafruit_fan.service <<EOF
- [Unit]
- Description=Fan service for some Adafruit boards
- After=network.target
-
- [Service]
- Type=oneshot
- ExecStartPre=-/bin/bash -c 'echo 4 >/sys/class/gpio/export'
- ExecStartPre=/bin/bash -c 'echo out >/sys/class/gpio/gpio4/direction'
- ExecStart=/bin/bash -c 'echo 1 >/sys/class/gpio/gpio4/value'
-
- RemainAfterExit=true
- ExecStop=/bin/bash -c 'echo 0 >/sys/class/gpio/gpio4/value'
- StandardOutput=journal
-
- [Install]
- WantedBy=multi-user.target
- EOF
-
- info FAN 'Enabling adafruit_fan.service'
- sudo systemctl enable adafruit_fan.service
- sudo systemctl start adafruit_fan.service
- info FAN 'Done!'
- echo "You can stop the fan service with 'sudo systemctl stop adafruit_fan.service'"
- echo "You can start the fan service with 'sudo systemctl start adafruit_fan.service'"
|