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