|
#!/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 and/or modify"
|
|
echo "packages needed for the Adafruit Pi"
|
|
echo "Camera project. It requires that the"
|
|
echo "adafruit-pitft.sh installer script (for"
|
|
echo "PiTFT display support) was run first."
|
|
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 5+ minutes. Reboot required."
|
|
echo
|
|
|
|
if [ "$1" != '-y' ]; then
|
|
echo -n "CONTINUE? [y/N]"
|
|
read
|
|
if [[ ! "$REPLY" =~ ^(yes|y|Y)$ ]]; then
|
|
echo "Canceled."
|
|
exit 0
|
|
fi
|
|
fi
|
|
|
|
echo "Continuing..."
|
|
|
|
if ! grep -q "dtoverlay=pitft" /boot/config.txt ; then
|
|
echo "PiTFT overlay not in /boot/config.txt."
|
|
echo "Download & run adafruit-pitft.sh first."
|
|
echo "Canceling."
|
|
exit 1
|
|
fi
|
|
|
|
echo "Configuring camera + PiTFT settings..."
|
|
|
|
# Set PiTFT speed to 80 MHz, 60 Hz
|
|
sed -i 's/speed=.*,fps=.*/speed=80000000,fps=60/g' /boot/config.txt
|
|
|
|
# Check if Pi camera is enabled. If not, add it...
|
|
if ! grep -q "^start_x=" /boot/config.txt ; then
|
|
# start_x (camera) line not present, add it
|
|
echo "start_x=1" >> /boot/config.txt
|
|
else
|
|
# start_x exists, make sure it's set to 1
|
|
sed -i 's/^start_x=.*/start_x=1/g' /boot/config.txt
|
|
fi
|
|
|
|
# gpu_mem must be >= 128 MB for camera to work
|
|
NUMBER=$(grep "^gpu_mem=" /boot/config.txt | sed 's/[^0-9]*//g')
|
|
if [ -z $NUMBER ]; then
|
|
# gpu_mem isn't set. Add to config
|
|
echo "gpu_mem=128" >> /boot/config.txt
|
|
elif [ $NUMBER -lt 128 ] ; then
|
|
# gpu_mem present but too small; increase to 128MB
|
|
sed -i 's/^gpu_mem=.*/gpu_mem=128/g' /boot/config.txt
|
|
fi # else gpu_mem OK as-is
|
|
|
|
echo "Installing prerequisite packages..."
|
|
|
|
# Enable Wheezy package sources (for SDL downgrade)
|
|
echo "deb http://archive.raspbian.org/raspbian wheezy main
|
|
" > /etc/apt/sources.list.d/wheezy.list
|
|
|
|
# Set 'stable' as default package source (current OS)
|
|
echo "APT::Default-release \"stable\";
|
|
" > /etc/apt/apt.conf.d/10defaultRelease
|
|
|
|
# Set priority for libsdl from Wheezy higher than current package
|
|
echo "Package: libsdl1.2debian
|
|
Pin: release n=stretch
|
|
Pin-Priority: -10
|
|
Pin: release n=jessie
|
|
Pin-Priority: -10
|
|
Package: libsdl1.2debian
|
|
Pin: release n=wheezy
|
|
Pin-Priority: 900
|
|
" > /etc/apt/preferences.d/libsdl
|
|
|
|
# Update the APT package index files, install Python libraries
|
|
sudo apt-get update
|
|
sudo apt-get -y --force-yes install python-picamera python-pygame python-imaging
|
|
|
|
echo "Downgrading SDL library..."
|
|
|
|
apt-get -y --force-yes install libsdl1.2debian/wheezy
|
|
|
|
echo "Downloading Dropbox uploader and"
|
|
echo "Adafruit Pi Cam to home directory..."
|
|
|
|
cd ~pi
|
|
wget https://github.com/andreafabrizi/Dropbox-Uploader/archive/master.zip
|
|
unzip master.zip
|
|
rm master.zip
|
|
mv Dropbox-Uploader-master Dropbox-Uploader
|
|
|
|
wget https://github.com/adafruit/adafruit-pi-cam/archive/master.zip
|
|
unzip master.zip
|
|
rm master.zip
|
|
|
|
chown -R pi:pi Dropbox-Uploader adafruit-pi-cam-master
|
|
|
|
# Add lines to /etc/rc.local (commented out by default):
|
|
sed -i 's/^exit 0/# Enable this line to run camera at startup:\n# cd \/home\/pi\/adafruit-pi-cam-master ; sudo python cam.py\n\nexit 0/g' /etc/rc.local
|
|
# Prompt to reboot!
|
|
|
|
echo
|
|
echo "Camera and PiTFT settings won't take"
|
|
echo "effect until next boot."
|
|
echo
|
|
echo -n "REBOOT NOW? [y/N]"
|
|
read
|
|
if [[ ! "$REPLY" =~ ^(yes|y|Y)$ ]]; then
|
|
echo "Exiting without reboot."
|
|
exit 0
|
|
fi
|
|
echo "Reboot started..."
|
|
reboot
|