Raspberry Pi 2 B mit Mopidy und Spotify über WLAN

Das Ziel

ncmpcpp

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!

 

 

Tom Zai Verfasst von:

Tom Zai ist Autor, Verleger, Lehrer, Moderator, Musiker und noch vieles mehr.