summaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authorxengineering <me@xengineering.eu>2024-01-06 10:50:09 +0100
committerxengineering <me@xengineering.eu>2024-01-14 11:44:18 +0100
commit27c2557c21cae2af48b9ba298149c6fe9cceb96f (patch)
treec79df27dc256215214c29815fcf5e8b88496d67e /doc
parent5f62cff66916db54f3be0c9fbc6198253ef7b6f0 (diff)
downloadsoundbox-27c2557c21cae2af48b9ba298149c6fe9cceb96f.tar
soundbox-27c2557c21cae2af48b9ba298149c6fe9cceb96f.tar.zst
soundbox-27c2557c21cae2af48b9ba298149c6fe9cceb96f.zip
doc: Add Alpine Linux config guide
Configuring the Alpine Linux operating system correctly for soundbox is not trivial. Since it is very important it has to be documented in detail.
Diffstat (limited to 'doc')
-rw-r--r--doc/documentation.tex70
1 files changed, 69 insertions, 1 deletions
diff --git a/doc/documentation.tex b/doc/documentation.tex
index 53452ee..ddade37 100644
--- a/doc/documentation.tex
+++ b/doc/documentation.tex
@@ -54,7 +54,7 @@ devices..
%\section{Device setup}
-\section{Playing audio}
+\section{Playing audio} \label{playing-audio}
For a simple audio streaming test the following commands from the FFmpeg
streaming
@@ -179,6 +179,74 @@ lbu commit -d
With this setup the Alpine Linux installation is completed.
+\section{Configure Alpine Linux for soundbox}
+
+soundbox requires packages from the Alpine Linux community package repository.
+Since this is not enabled by default it has to be done manually. This can be
+done by editing the \texttt{/etc/apk/repositories} file with an editor like
+\texttt{vi}. The hash sign \texttt{\#} in front of the URL to the community
+repository has to be removed. Instead also \texttt{sed} can remove this sign on
+a fresh installation quite easily since the community repository is the only
+one with such a sign in front of it.
+
+\begin{verbatim}
+sed -i 's/^#//g' /etc/apk/repositories
+\end{verbatim}
+
+With an enabled community repository all required packages for soundbox can be
+installed. The list with required packages can be written to the
+\texttt{/etc/apk/world} file with \texttt{echo}. Running \texttt{apk add} after
+it will install all of these packages including their dependencies and removes
+everything else. This makes sure that always exactly the same set of packages
+is used for a soundbox device.
+
+\begin{verbatim}
+echo 'alpine-base
+alsa-utils
+alsaconf
+busybox-mdev-openrc
+chrony
+ffplay
+iw
+openssh
+openssl
+wpa_supplicant' > /etc/apk/world
+
+apk add
+\end{verbatim}
+
+The only user on a soundbox device is \texttt{root}. Even that super user has
+to be added to the \texttt{audio} group to be able to play sound via ALSA. This
+can be achieved with \texttt{addgroup}.
+
+\begin{verbatim}
+addgroup root audio
+\end{verbatim}
+
+soundbox uses the HiFiBerry shield to output high-quality audio. This shield
+needs to be enabled as an audio output by specifying a Devicetree overlay in
+the Raspberry Pi configuration file with \texttt{echo}. Since this file is
+stored on the SD card only which is mounted as read-only it has to be remounted
+with the read-write option first.
+
+\begin{verbatim}
+mount -o remount,rw /media/mmcblk0p1
+echo 'dtoverlay=hifiberry-dac' >> /media/mmcblk0p1/config.txt
+\end{verbatim}
+
+Since a diskless Alpine Linux installation is preferred for soundbox the
+changes have to be made persistent with \texttt{lbu}. Rebooting after it makes
+sure the SD card is again mounted in read-only mode and all Kernel-affecting
+changes can be applied.
+
+\begin{verbatim}
+lbu commit -d
+reboot
+\end{verbatim}
+
+After this reboot the soundbox device should be able to play audio like
+described in section~\ref{playing-audio}.
+
%\section{Final assembly}
%\chapter{Device internals}