makarov
- RPi Zero W
- RPi OS buster Lite (based on Debian 10.10)
Linux makarov 5.10.17+ #1421 Thu May 27 13:58:02 BST 2021 armv6l GNU/Linux
- Located wherever I take it
Contents
Build notes
- Setup new install, configure wifi, enable ssh
- raspi-config, set locale and timezone and hostname
- setup your SSH keys for login
- apt update, full-upgrade and reboot
- apt install git vim lsof
setup vim config
# /etc/vim/vimrc.local syntax on set background=dark set modeline set scrolloff=3 set mouse= set ttymouse= filetype plugin indent on
Now the hardware support, I stole bits of this from Mopidy's install docs.
- apt install -y python3-rpi.gpio python3-spidev python3-pip
Enable SPI
raspi-config nonint do_spi 0
Setup the Pirate Audio hat by appending to /boot/config.txt
# Pirate Audio config gpio=25=op,dh dtoverlay=hifiberry-dac
Now reboot and cross your fingers.
network
Static DHCP assignment in IOT VLAN, it should have minimal access privileges, it literally only needs web access. No IPv6 apart from usual linklocal stuff.
services
- SSH
- Some avahi junk I should probably disable
apps
muzak systemd unit plays music, running as the pi user
frontpanel systemd unit manages the LCD and button inputs
Muzak app
Runs mpv with a playlist of Youtube links, super basic. Audio goes out through an I2S soundcard. Playlist loops forever as you'd expect. Playlist and extra stuff is in /home/pi
Frontpanel app
A python script with some basic GPIO interfacing, controls mpv by talking to its JSON-IPC socket. Displays images and UI on the LCD screen.
Optimisation
Aim to disable as much stuff as possible, to reduce CPU load and boot times.
Try to disable:
- bluetooth
dtoverlay=disable-bt in config.txt
systemctl disable hciuart --now
systemctl disable bluetooth
reboot then apt purge bluez bluez-firmware
- apt-daily-upgrade
echo 'APT::Periodic::Enable "0";' > /etc/apt/apt.conf.d/10periodic
apt purge modemmanager
apt autoremove -y
- avahi-daemon.service
systemctl disable avahi-daemon.service --now
Does this work? systemctl disable avahi-daemon.socket
- dhcpcd
add noarp to the config to make it boot faster
Remove the Mopidy stuff that I installed
systemctl disable mopidy --now for i in spi i2c gpio video ; do deluser mopidy $i ; done # as root: pip3 uninstall mopidy-youtube Mopidy-PiDi Mopidy-Local mopidy-raspberry-gpio pip3 uninstall mopidy_autoplay mopidy_mobile mopidy_muse musicbrainzngs apt purge mopidy rm -rf /var/lib/mopidy # Mark gstreamer plugins to be kept now that mopidy is gone apt install gir1.2-gst-plugins-base-1.0 gir1.2-gstreamer-1.0 gstreamer1.0-alsa \ gstreamer1.0-plugins-good gstreamer1.0-plugins-ugly gstreamer1.0-pulseaudio \ gstreamer1.0-x python3-gst-1.0 rm /etc/apt/sources.list.d/mopidy.list apt-key del 271D2943
Read only system
Make the filesystems read-only, as much as possible. Refer to this: https://medium.com/@andreas.schallwig/make-your-raspberry-pi-file-system-read-only-raspbian-buster-c558694de79
apt purge triggerhappy systemctl disable console-setup apt purge logrotate apt install busybox-syslogd apt purge rsyslog systemctl stop dphys-swapfile.service apt purge dphys-swapfile apt autoremove -y