You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

95 lines
2.3 KiB

#!/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'"