Das Ziel
Auf dem Raspberry Pi einen Musikserver betreiben, der Spotify via WLAN empfängt und per HDMI Kabel über den Fernseher auf der Stereoanlage einen schönen Sound ausgibt. Das Ganze soll schnell und leichtgewichtig sein, also ohne viel grafischen Schnickschnack, der den Pi nur verlangsamt.
Wenn ich Dinge erkläre, die allen anderen sonnenklar sind, möchte ich mich entschuldigen. Ich weiss es nicht besser. Wie immer, wenn man in Linux selber Hand anlegt, gibt es verschiedenste Wege, etwas zu bewerkstelligen. Hier also meiner, Stand Mai 2015.
Das Vorhaben
Arch Linux ARM auf dem Pi installieren und konfigurieren. XFCE als grafische Oberfläche einrichten. Mopidy als Musikserver und ncmpcpp als Client, der die Musik abspielt, installieren.
Wichtig: Für die Nutzung von Spotify via Mopidy benötigt man einen Spotify Premium Account. Aktuell kostet das in der Schweiz knappe 13 Franken, in Europa etwas unter 10 Euro pro Monat. Dass man für Musik bezahlen soll, steht für mich ausser Zweifel. Schliesslich haben wir früher pro Monat eher mehr Geld für LPs oder CDs ausgegeben. Eine Gratisnutzung des Streaming-Dienstes funktioniert mit meinem Tutorial nicht.
Übrigens: Der Raspberry Pi ist nicht gerade bekannt dafür, dass er einen guten Sound-Ausgang hat. Ich schicke deswegen das Audio-Signal via HDMI auf den Fernseher und von dort per Cinch auf die Stereoanlage. Das liefert bei mir einen sauberen Klang.
Grundsystem einrichten
Arch Linux ARM auf dem Pi (NOOBS) auswählen und installieren. Es bootet schliesslich in eine Kommandozeilen Oberfläche ohne Grafik, in der man sich anmeldet:
Anmelden als: root
Passwort: root
psswd
Passwort ändern (für root).
WLAN einrichten:
wifi-menu
Netzwerk auswählen verbinden. Kennwort eingeben, usw.
systemctl enable netctl-auto@wlan0.service
damit Wifi beim Start aktiviert wird.
pacman -Syyuu
Um das System zu aktualisieren. Nun ist es Zeit für einen Kaffee oder, falls der Abend schon angebrochen ist, ein Bierchen oder so.
useradd -m -g users -s /bin/bash tom
Nutzerkonto erstellen. Ich bin „tom“. Alle, die nicht Tom heissen wollen, wählen einen anderen Namen. In den Beispielen nutze ich „tom“. Der muss natürlich ersetzt werden.
pacman-db-upgrade
Ist bei mir nötig, damit Pakete installiert werden können. Ich folge hier nur den Tipps der Befehlszeile, weil die Installation von Paketen fehlschlägt.
pacman -S sudo
Installiert Superuser „sudo“
nano /etc/sudoers
tom (oder andern Namen) eintragen nach „root ALL …“
root ALL=(ALL) ALL
tom ALL=(ALL) ALL
CTRL+O EING. CTRL+X
Speichert die Datei „sudoers“ und verlässt den Editor „nano“.
passwd tom
Es wird Zeit, für tom ein Passwort zu setzen.
Systemzeit setzen:
sudo pacman -S ntp
sudo systemctl enable ntpd
sudo systemctl start ntpd
Timezone setzen. In meinem Fall:
sudo rm /etc/localtime
sudo ln -s /usr/share/zoneinfo/
Europe
/
Berlin
/etc/localtime
Exit
Beendet die Sitzung als root.
Login als „tom“ mit neuem Passwort.
Tom (oder eben jeden beliebigen anderen Nutzer) den wichtigen Gruppen hinzufügen:
sudo gpasswd -a tom audio sudo gpasswd -a tom video sudo gpasswd -a tom power sudo gpasswd -a tom wheel
sudo pacman -S base-devel
Braucht das System, um Pakete zu kompilieren und zu erstellen.
exit
Sound
Siehe auch hier!
Als root einloggen. Dann:
echo "# Load snd-bcm2835.ko at boot" > /etc/modules-load.d/snd-bcm2835.conf echo "snd-bcm2835" >> /etc/modules-load.d/snd-bcm2835.conf
Alsa installieren:
pacman -S alsa-utils reboot
Nach Reboot wieder als root einloggen.
alsamixer
Um sicherzustellen, dass der Sound nicht gemutet ist. Allenfalls mit Pfeiltasten nach oben die Lautstärke einstellen.
amixer cset numid=3 2
Um Sound über HDMI auszugeben (für andere Optionen siehe Link oben).
speaker-test -c 2
Testet den Sound auf beiden Lautsprechern.
CTRL+C
Beendet den Test.
Grafische Oberfläche
Nun ist es Zeit, eine grafische Oberfläche zu installieren. Ich habe zuerst LXDE installiert, um danach doch zu XFCE zu wechseln. Wer direkt zu XFCE wechseln will, überspringt alles, was mit LXDE zu tun hat. Ich zeige dort auch gleich, wie man den Login-Manager installiert. Die Xorg-Pakete braucht es für beide Oberflächen. Openbox nicht vergessen.
LXDE Dektop installieren
sudo pacman -S lxde-common sudo pacman -S xorg-server xorg-xinit xorg-server-utils sudo pacman -S mesa xf86-video-fbdev xf86-video-vesa sudo pacman -S openbox lxde gamin dbus
Default-Einstellungen wählen mit EING.
sudo pacman -S xterm startx
Es öffnen sich drei Terminals. in einem der drei Terminals eingeben:
startlxde
XFCE und gleichzeitig Login-Manger installieren
pacman -S xfce4
pacman -S mesa xf86-video-fbdev xf86-video-vesa
pacman -S slim
Installiert den Login-Manager Slim.
systemctl enable slim.service systemctl enable graphical.target
Slim und grafischen Modus aktivieren.
sudo pacman -S vim
Ich installiere den Editor „vim“, weil ich am liebsten damit arbeite. Das kann natürlich ausgelassen werden, d.h. bei allen „vim“.Befehlen, muss der Name des alternativen Editors eingesetzt werden.
vim ~/.xinitrc
Datei erstellen im Home Verzeichnis mit diesem Inhalt.
#!/bin/sh
if [ -d /etc/X11/xinit/xinitrc.d ]; then
for f in /etc/X11/xinit/xinitrc.d/*; do
[ -x "$f" ] && . "$f"
done
unset f
fi
exec startxfce4
Bash Profil erstellen:
vim ~/.bash_profile
[[ -z $DISPLAY && $XDG_VTNR -eq 1 ]] && exec startx
reboot
Nach dem Neustart habe ich Probleme, weil das System im read-only Modus startet.
Lösung:
Einloggen als root
vim /boot/cmdline.txt
„rw“ (ohne Anführungs- und Schlusszeichen) nach dem ersten root=… eintragen
Yaourt installieren
Wegen des ARM Systems (siehe auch Wikipedia!) werden von Pacman, dem Paketmanager von Arch, Mopidy-Pakete nicht gefunden. Ich habe Ewigkeiten gebraucht, um zu verstehen, dass die Architektur für den Pi eine andere ist als auf meinem Computer, wo die AUR Pakete problemlos funktionieren. Yaourt, ein Community-Projekt, hilft, die richtigen Pakete zu finden und zu kompilieren.
Yauort zu installieren, kostet mich einiges an Zeit und Recherche, da es sich auch nicht über „pacman -S“ installieren lässt.
Dieser Weg, gemäss https://github.com/phortx/Raspberry-Pi-Setup-Guide
funktioniert schliesslich:
(Ich muss das als Bild einfügen, da WordPress sonst durchdreht.)
Mopidy installieren und konfigurieren
Mopidy ist ein Musik-Server, spielt also selber keine Musik und hat keine grafische Oberfläche. Mopidy verbindet zum Beispiel zum Spotify-Account, zur lokalen Musikdatenbank oder einem eigenen Musikserver.
Um die Musik auch zu hören und in den Playlists zu navigieren, benötigt man einen MPD-Client. Dazu unten mehr.
yaourt mopidy
Mopidy installieren. Falls das nicht funktioniert, allenfalls versuchen: packer -S mopidy
mkdir -p ~/.config/mopidy
Erstellt einen Ordner „mopidy“ im versteckten Ordner /.config.
Dann mopidy.conf, die Konfigurationsdatei für Mopidy erstellen:
vim
~/.config/mopidy/mopidy.conf
Meine Konfiguration, um Spotify zu nutzen, schaut so aus (an individuelle Bedürfnisse anpassen!):
[logging]console_format = %(levelname)-8s %(message)s
debug_format = %(levelname)-8s %(asctime)s [%(process)d:%(threadName)s] %(name)s\n %(message)s
debug_file = mopidy.log
config_file =
[loglevels]
cherrypy = warning
pykka = info
output = alsasink
[spotify]
enabled = true
username = meinbentzername
password = meinsupergeheimespasswort
bitrate = 320
timeout = 10
cache_dir = $XDG_CACHE_DIR/mopidy/spotify
[mpd]
enabled = true
hostname = 0.0.0.0
port = 6600
password =
max_connections = 20
connection_timeout = 60
[local]
enabled = true
media_dir = /pfad/zur/datei
playlists_dir = $XDG_DATA_DIR/mopidy/local/playlists
tag_cache_file = $XDG_DATA_DIR/mopidy/local/tag_cache
yaourt mopidy-spotify
Installieren, um Modipy Spotify beizubringen.
In Spotify browsen mit dem Paket mopidy-spotify-tunigo:
yaourt mopdiy
Im Auswahlfenster das tunigo-Paket wählen.
MPD-Client installieren
Ich muss gestehen, ich habe das lange nicht verstanden. Um E-Mails zu lesen, benötigt man einen E-Mail-Client, der vom Server die Nachrichten lädt. Um von Mopidy Musik zu hören, benötigt man einen MPD Client (Music Player Daemon).
Ich möchte ncmpcpp verwenden, um meine Playlisten von Spotify abzuspielen. Der Client ncmpcpp gefällt mir, weil er mich an „mutt“, meinen E-Mail-Client erinnert. Natürlich können andere Clients verwendet werden, siehe hier im Arch Wiki.
Die Installation von ncmpcpp mit Arch Linux auf dem Raspberry Pi entpuppt sich als Geduldsprobe. Als alle Versuche scheitern, beschliesse ich, den Vorgänger zu installieren.
yaourt ncmp
In der Auswahl taucht dann aber ncmpcpp wieder auf. Viele Möglichkeiten scheitern. Ich wähle schliesslich das Paket
ncmpcpp-xdg-config
Alle Fragen betreffend Konfiguration lasse ich leer. Das heisst, ich drücke einfach die Eingabetaste und der Installationsprozess läuft weiter. Der zieht sich allerdings in die Länge.
Endlich ist er fertig und ich kann die beiden Instanzen aufrufen, die ich zum Abspielen meiner Musik benötige.
Spotify auf dem Raspberry abspielen
modidy
im Terminal
ncmpcpp
im zweiten Terminal (warten, bis Mopidy verbunden hat)
Damit lädt ncmpcpp meine Spotify-Listen im Terminal. Die Navigation erfolgt über Zifferntasten. Mehr dazu hier: https://wiki.archlinux.org/index.php/Ncmpcpp
Damit bin ich eigentlich am Ende und habe mein Vorhaben realisiert. Eine kleine Sache möchte ich noch erwähnen, da vielleicht jemand einen USB-Stick am Raspberry Pi anschliessen möchte, um Conf-Dateien oder andere Files auf den Pi zu kopieren.
USB Stick mounten
sudo blkid -o list -c /dev/null
Stick in Liste suchen, z.B:
/dev/sda1 vfat cruzer (not mounted) 8330-092A
in /etc/fstab eintragen:
UUID=8330-092A /run/media vfat user,noauto,noatime,flush 0 0
sudo mkdir /run/media
mount /run/media
Damit ist der USB-Stick eingebunden. Für automount hilft eine kurze Recherche.
Schluss
Ich hoffe, dass der Eine oder die Andere mit meinen Ausführungen etwas anfangen kann. Ich selber habe alles auf diversen Internetseiten herausgepickt, was für mich funktioniert hat. Sollte jemand Fehler finden, bitte unbedingt kommentieren. Natürlich sind auch Kommentare willkommen, wenn alles funktioniert.
Viel Spass beim Musik hören!