-
Notifications
You must be signed in to change notification settings - Fork 1
/
setup_pi.sh
179 lines (144 loc) · 4.38 KB
/
setup_pi.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
#!/bin/bash
# adapted from https://github.com/wehr-lab/autopilot/blob/2to3/autopilot/setup/presetup_pilot.sh
# colors
RED='\033[0;31m'
NC='\033[0m'
# set date
read -p "Enter current date (mm/dd/yyyy hh:mi): " DATE
sudo date -s $DATE
############
# user args
read -p "If you haven't changed it, you should change the default raspberry pi password. Change it now? (y/n): " changepw
if [ "$changepw" == "y" ]; then
passwd
else
echo -e "${RED} not changing password\n${NC}"
fi
read -p "Would you like to set your locale? Use the space bar to select/deselect items on the screen (y/n): " changelocale
if [ "$changelocale" == "y" ]; then
sudo dpkg-reconfigure locales
sudo dpkg-reconfigure keyboard-configuration
else
echo -e "${RED} not changing locale\n${NC}"
fi
read -p "Install jack audio? (y/n): " installjack
read -p "Setup hifiberry dac/amp? (y/n): " setuphifi
read -p "Setup X11 server and psychopy for visual stimuli? (y/n): " visualstim
read -p "Disable bluetooth? (y/n): " disablebt
###########
# prelims
# create git folder if it don't already exist
TEMPDIR=$HOME/temp
if [ ! -d "$TEMPDIR" ]; then
echo -e "\n${RED}making git directory at $HOME/temp ${NC}"
mkdir $TEMPDIR
fi
################
# update and install packages
echo -e "\n\n${RED}Installing necessary packages...\n\n ${NC}"
sudo apt update
sudo apt -y upgrade
sudo apt-get install -y \
build-essential \
cmake \
git \
python3-pip \
python3-dev \
python3-distutils \
python3-setuptools
libsamplerate0-dev \
libsndfile1-dev \
libreadline-dev \
libasound-dev \
i2c-tools \
libportmidi-dev \
liblo-dev \
libhdf5-dev \
python3-numpy \
python3-pandas \
python3-tables \
libzmq-dev \
libffi-dev \
blosc
sudo -H pip3 install -U pyzmq npyscreen tornado inputs requests blosc
sudo systemctl disable raspi-config
# install pigpio
cd $TEMPDIR
git clone https://github.com/joan2937/pigpio.git
cd pigpio
make -j6
sudo -H make install
#############
# performance
echo -e "\n\n${RED}Doing performance enhancements\n\n ${NC}"
echo -e "\n${RED}Changing CPU governor to performance ${NC}"
# disable startup script that changes cpu governor
# note that this is not the same raspi-config as you're thinking
sudo systemctl disable raspi-config
sudo sed -i '/^exit 0/i echo "performance" | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor' /etc/rc.local
if [ "$disablebt" == "y" ]; then
echo -e "\n${RED}Disabling bluetooth.. ${NC}"
sudo sed -i '$s/$/\ndtoverlay=pi3-disable-bt/' /boot/config.txt
sudo systemctl disable hciuart.service
sudo systemctl disable bluealsa.service
sudo systemctl disable bluetooth.service
else
echo -e "\n${RED}Not disabling bluetooth ${NC}"
fi
############
# audio
if [ "$installjack" == "y" ]; then
echo "\nInstalling jack audio"
cd $TEMPDIR
git clone git://github.com/jackaudio/jack2 --depth 1
cd jack2
./waf configure --alsa=yes --libdir=/usr/lib/arm-linux-gnueabihf/
./waf build -j6
sudo ./waf install
sudo ldconfig
# giving jack more juice
sudo sh -c "echo @audio - memlock 256000 >> /etc/security/limits.conf"
sudo sh -c "echo @audio - rtprio 75 >> /etc/security/limits.conf"
# installing jack python packages
sudo apt-get install -y python-cffi
sudo -H pip install JACK-Client
fi
#######
# setup visual stim
if [ "$visualstim" == "y" ]; then
echo -e "\n${RED}Installing X11 Server.. ${NC}"
sudo apt-get install -y xserver-xorg xorg-dev xinit xserver-xorg-video-fbdev python-opencv mesa-utils
echo -e "\n${RED}Installing Psychopy dependencies.. ${NC}"
pip3 install \
pyopengl \
pyglet \
pillow \
moviepy \
configobj \
json_tricks \
arabic-reshaper \
astunparse \
esprima \
freetype-py \
gevent \
gitpython \
msgpack-numpy \
msgpack-python \
pyparallel \
pyserial \
python-bidi \
python-gitlab \
pyyaml \
sounddevice \
soundfile
echo -e "\n${RED}Compiling glfw... ${NC}"
cd $TEMPDIR
git clone https://github.com/glfw/glfw
cd glfw
cmake .
make -j7
sudo -H make install
echo -e "\n${RED}Installing Psychopy... ${NC}"
pip3 install psychopy --no-deps
sudo sh -c "echo winType = \"glfw\" >> /home/pi/.psychopy3/userPrefs.cfg"
fi