diff --git a/stage2/01-sys-tweaks/01-run.sh b/stage2/01-sys-tweaks/01-run.sh index 40041e5..d67d48c 100755 --- a/stage2/01-sys-tweaks/01-run.sh +++ b/stage2/01-sys-tweaks/01-run.sh @@ -241,6 +241,40 @@ sudo npm i + +## GPS https://www.raspberrypi.org/forums/viewtopic.php?p=947968#p947968 +echo "========== Install GPS ============" +sudo apt-get install gpsd gpsd-clients cmake subversion build-essential espeak freeglut3-dev imagemagick libdbus-1-dev libdbus-glib-1-dev libdevil-dev libfontconfig1-dev libfreetype6-dev libfribidi-dev libgarmin-dev libglc-dev libgps-dev libgtk2.0-dev libimlib2-dev libpq-dev libqt4-dev libqtwebkit-dev librsvg2-bin libsdl-image1.2-dev libspeechd-dev libxml2-dev ttf-liberation -y + +sudo pip install pyserial + + +echo "" >> /boot/config.txt +echo "core_freq=250" >> /boot/config.txt +echo "enable_uart=1" >> /boot/config.txt + +echo "dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait" > /boot/cmdline.txt + + + +# 3)Run +sudo systemctl stop serial-getty@ttyS0.service +sudo systemctl disable serial-getty@ttyS0.service +sudo systemctl stop gpsd.socket +sudo systemctl disable gpsd.socket + +# reboot + +# 5) Execute the daemon reset +sudo killall gpsd +sudo gpsd /dev/ttyS0 -F /var/run/gpsd.sock + + + + + + + echo "========== Downloading and installing OpenCV ============" cd / # git clone https://github.com/Itseez/opencv.git --depth 1 diff --git a/stage2/01-sys-tweaks/02-I2S.sh b/stage2/01-sys-tweaks/02-I2S.sh new file mode 100755 index 0000000..82d570a --- /dev/null +++ b/stage2/01-sys-tweaks/02-I2S.sh @@ -0,0 +1,388 @@ +#!/bin/bash + +: <<'DISCLAIMER' + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +This script is licensed under the terms of the MIT license. +Unless otherwise noted, code reproduced herein +was written for this script. + +- The Pimoroni Crew - (modified by Adafruit!) + +DISCLAIMER + +# script control variables + +productname="i2s amplifier" # the name of the product to install +scriptname="i2samp" # the name of this script +spacereq=1 # minimum size required on root partition in MB +debugmode="no" # whether the script should use debug routines +debuguser="none" # optional test git user to use in debug mode +debugpoint="none" # optional git repo branch or tag to checkout +forcesudo="no" # whether the script requires to be ran with root privileges +promptreboot="no" # whether the script should always prompt user to reboot +mininstall="no" # whether the script enforces minimum install routine +customcmd="yes" # whether to execute commands specified before exit +armhfonly="yes" # whether the script is allowed to run on other arch +armv6="yes" # whether armv6 processors are supported +armv7="yes" # whether armv7 processors are supported +armv8="yes" # whether armv8 processors are supported +raspbianonly="no" # whether the script is allowed to run on other OSes +osreleases=( "Raspbian" ) # list os-releases supported +oswarning=( "Debian" "Kano" "Mate" "PiTop" "Ubuntu" ) # list experimental os-releases +osdeny=( "Darwin" "Kali" ) # list os-releases specifically disallowed + +FORCE=$1 +DEVICE_TREE=true +ASK_TO_REBOOT=false +CURRENT_SETTING=false +UPDATE_DB=false + +BOOTCMD=/boot/cmdline.txt +CONFIG=/boot/config.txt +APTSRC=/etc/apt/sources.list +INITABCONF=/etc/inittab +BLACKLIST=/etc/modprobe.d/raspi-blacklist.conf +LOADMOD=/etc/modules +DTBODIR=/boot/overlays + +# function define + +prompt() { + read -r -p "$1 [y/N] " response < /dev/tty + if [[ $response =~ ^(yes|y|Y)$ ]]; then + true + else + false + fi +} + +success() { + echo -e "$(tput setaf 2)$1$(tput sgr0)" +} + +inform() { + echo -e "$(tput setaf 6)$1$(tput sgr0)" +} + +warning() { + echo -e "$(tput setaf 1)$1$(tput sgr0)" +} + +newline() { + echo "" +} + +progress() { + count=0 + until [ $count -eq $1 ]; do + echo -n "..." && sleep 1 + ((count++)) + done + echo +} +sudocheck() { + if [ $(id -u) -ne 0 ]; then + echo -e "Install must be run as root. Try 'sudo ./$scriptname'\n" + exit 1 + fi +} + +sysclean() { + sudo apt-get clean && sudo apt-get autoclean + sudo apt-get -y autoremove &> /dev/null +} + +sysupdate() { + if ! $UPDATE_DB; then + echo "Updating apt indexes..." && progress 3 & + sudo apt-get update 1> /dev/null || { warning "Apt failed to update indexes!" && exit 1; } + echo "Reading package lists..." + progress 3 && UPDATE_DB=true + fi +} + +sysupgrade() { + sudo apt-get upgrade + sudo apt-get clean && sudo apt-get autoclean + sudo apt-get -y autoremove &> /dev/null +} + +sysreboot() { + warning "Some changes made to your system require" + warning "your computer to reboot to take effect." + newline + if prompt "Would you like to reboot now?"; then + sync && sudo reboot + fi +} + +arch_check() { + IS_ARMHF=false + IS_ARMv6=false + + if uname -m | grep "armv.l" > /dev/null; then + IS_ARMHF=true + if uname -m | grep "armv6l" > /dev/null; then + IS_ARMv6=true + fi + fi +} + +os_check() { + IS_RASPBIAN=false + IS_MACOSX=false + IS_SUPPORTED=false + IS_EXPERIMENTAL=false + + if [ -f /etc/os-release ]; then + if cat /etc/os-release | grep "Raspbian" > /dev/null; then + IS_RASPBIAN=true && IS_SUPPORTED=true + fi + if command -v apt-get > /dev/null; then + for os in ${osreleases[@]}; do + if cat /etc/os-release | grep $os > /dev/null; then + IS_SUPPORTED=true && IS_EXPERIMENTAL=false + fi + done + for os in ${oswarning[@]}; do + if cat /etc/os-release | grep $os > /dev/null; then + IS_SUPPORTED=false && IS_EXPERIMENTAL=true + fi + done + for os in ${osdeny[@]}; do + if cat /etc/os-release | grep $os > /dev/null; then + IS_SUPPORTED=false && IS_EXPERIMENTAL=false + fi + done + fi + fi + if [ -d ~/.kano-settings ] || [ -d ~/.kanoprofile ]; then + IS_RASPBIAN=false + for os in ${oswarning[@]}; do + if [ $os == "Kano" ]; then + IS_SUPPORTED=false && IS_EXPERIMENTAL=true + fi + done + for os in ${osdeny[@]}; do + if [ $os == "Kano" ]; then + IS_SUPPORTED=false && IS_EXPERIMENTAL=false + fi + done + fi + if [ -f ~/.pt-dashboard-config ] || [ -d ~/.pt-dashboard ]; then + IS_RASPBIAN=false + for os in ${oswarning[@]}; do + if [ $os == "PiTop" ]; then + IS_SUPPORTED=false && IS_EXPERIMENTAL=true + fi + done + for os in ${osdeny[@]}; do + if [ $os == "PiTop" ]; then + IS_SUPPORTED=false && IS_EXPERIMENTAL=false + fi + done + fi + if [ -d ~/.config/ubuntu-mate ]; then + for os in ${osdeny[@]}; do + if [ $os == "Mate" ]; then + IS_SUPPORTED=false && IS_EXPERIMENTAL=false + fi + done + fi + if uname -s | grep "Darwin" > /dev/null; then + IS_MACOSX=true + for os in ${osdeny[@]}; do + if [ $os == "Darwin" ]; then + IS_SUPPORTED=false && IS_EXPERIMENTAL=false + fi + done + fi +} + +raspbian_check() { + IS_SUPPORTED=false + IS_EXPERIMENTAL=false + + if [ -f /etc/os-release ]; then + if cat /etc/os-release | grep "/sid" > /dev/null; then + IS_SUPPORTED=false && IS_EXPERIMENTAL=true + elif cat /etc/os-release | grep "stretch" > /dev/null; then + IS_SUPPORTED=false && IS_EXPERIMENTAL=true + elif cat /etc/os-release | grep "jessie" > /dev/null; then + IS_SUPPORTED=true && IS_EXPERIMENTAL=false + elif cat /etc/os-release | grep "wheezy" > /dev/null; then + IS_SUPPORTED=true && IS_EXPERIMENTAL=false + else + IS_SUPPORTED=false && IS_EXPERIMENTAL=false + fi + fi +} + +: <<'MAINSTART' + +Perform all global variables declarations as well as function definition +above this section for clarity, thanks! + +MAINSTART + +# checks and init + +arch_check +os_check + +if [ $debugmode != "no" ]; then + echo "USER_HOME is $USER_HOME" && newline + echo "IS_RASPBIAN is $IS_RASPBIAN" + echo "IS_MACOSX is $IS_MACOSX" + echo "IS_SUPPORTED is $IS_SUPPORTED" + echo "IS_EXPERIMENTAL is $IS_EXPERIMENTAL" + newline +fi + +if ! $IS_ARMHF; then + warning "This hardware is not supported, sorry!" + warning "Config files have been left untouched" + newline && exit 1 +fi + +if $IS_ARMv8 && [ $armv8 == "no" ]; then + warning "Sorry, your CPU is not supported by this installer" + newline && exit 1 +elif $IS_ARMv7 && [ $armv7 == "no" ]; then + warning "Sorry, your CPU is not supported by this installer" + newline && exit 1 +elif $IS_ARMv6 && [ $armv6 == "no" ]; then + warning "Sorry, your CPU is not supported by this installer" + newline && exit 1 +fi + +if [ $raspbianonly == "yes" ] && ! $IS_RASPBIAN;then + warning "This script is intended for Raspbian on a Raspberry Pi!" + newline && exit 1 +fi + +if $IS_RASPBIAN; then + raspbian_check + if ! $IS_SUPPORTED && ! $IS_EXPERIMENTAL; then + newline && warning "--- Warning ---" && newline + echo "The $productname installer" + echo "does not work on this version of Raspbian." + echo "Check https://github.com/$gitusername/$gitreponame" + echo "for additional information and support" + newline && exit 1 + fi +fi + +if ! $IS_SUPPORTED && ! $IS_EXPERIMENTAL; then + warning "Your operating system is not supported, sorry!" + newline && exit 1 +fi + +if $IS_EXPERIMENTAL; then + warning "Support for your operating system is experimental. Please visit" + warning "forums.adafruit.com if you experience issues with this product." + newline +fi + +if [ $forcesudo == "yes" ]; then + sudocheck +fi + +newline +echo "This script will install everything needed to use" +echo "$productname" +newline + +newline +echo "Checking hardware requirements..." + +if [ -e $CONFIG ] && grep -q "^device_tree=$" $CONFIG; then + DEVICE_TREE=false +fi + +if $DEVICE_TREE; then + + newline + echo "Adding Device Tree Entry to $CONFIG" + + if [ -e $CONFIG ] && grep -q "^dtoverlay=hifiberry-dac$" $CONFIG; then + echo "dtoverlay already active" + else + echo "dtoverlay=hifiberry-dac" | sudo tee -a $CONFIG + ASK_TO_REBOOT=true + fi + + if [ -e $BLACKLIST ]; then + newline + echo "Commenting out Blacklist entry in " + echo "$BLACKLIST" + sudo sed -i -e "s|^blacklist[[:space:]]*i2c-bcm2708.*|#blacklist i2c-bcm2708|" \ + -e "s|^blacklist[[:space:]]*snd-soc-pcm512x.*|#blacklist snd-soc-pcm512x|" \ + -e "s|^blacklist[[:space:]]*snd-soc-wm8804.*|#blacklist snd-soc-wm8804|" $BLACKLIST &> /dev/null + fi +else + newline + echo "No Device Tree Detected, not supported" + newline + exit 1 +fi + +if [ -e $CONFIG ] && grep -q -E "^dtparam=audio=on$" $CONFIG; then + bcm2835off="no" + newline + echo "Disabling default sound driver" + sudo sed -i "s|^dtparam=audio=on$|#dtparam=audio=on|" $CONFIG &> /dev/null + if [ -e $LOADMOD ] && grep -q "^snd-bcm2835" $LOADMOD; then + sudo sed -i "s|^snd-bcm2835|#snd-bcm2835|" $LOADMOD &> /dev/null + fi + ASK_TO_REBOOT=true +elif [ -e $LOADMOD ] && grep -q "^snd-bcm2835" $LOADMOD; then + bcm2835off="no" + newline + echo "Disabling default sound module" + sudo sed -i "s|^snd-bcm2835|#snd-bcm2835|" $LOADMOD &> /dev/null + ASK_TO_REBOOT=true +else + newline + echo "Default sound driver currently not loaded" + bcm2835off="yes" +fi + +echo "Configuring sound output" +if [ -e /etc/asound.conf ]; then + if [ -e /etc/asound.conf.old ]; then + sudo rm -f /etc/asound.conf.old + fi + sudo mv /etc/asound.conf /etc/asound.conf.old +fi +sudo echo -e "pcm.\041default {\n type hw\n card 0\n}" > ~/asound.conf +sudo echo -e "ctl.\041default {\n type hw\n card 0\n}" >> ~/asound.conf +sudo mv ~/asound.conf /etc/asound.conf + +if [ $bcm2835off == "yes" ]; then + newline + echo "We can now test your $productname" + warning "Set your speakers at a low volume!" + if confirm "Do you wish to test your system now?"; then + echo "Testing..." + speaker-test -l5 -c2 -t wav + fi +fi +newline +success "All done!" +newline +echo "Enjoy your new $productname!" +newline + + + +exit 0 \ No newline at end of file