Dies ist eine alte Version des Dokuments!
DietPi Audiophiler Streamer
Raspberry Pi 2B + HifiBerry DAC — Spotify Connect · Radio Bob · Multiroom
- Spotify: Raspotify (librespot, armhf)
- Webradio: MPD + myMPD Web-UI
- Multiroom: Snapcast (Server + Client)
- Steuerung: myMPD als PWA am Handy
Inhaltsverzeichnis
1. Vorbereitung & DietPi-Installation
1.1 Benötigte Hardware
| Komponente | Hinweis |
|---|---|
| Raspberry Pi 2B | ARMv7, 1 GB RAM — ausreichend für reine Streaming-Aufgaben |
| HifiBerry DAC+ | DAC+ Standard / DAC+ Pro / DAC2 Pro — alle unterstützt |
| MicroSD-Karte | ≥ 8 GB, Class 10 (empfohlen: 16 GB SanDisk Endurance) |
| Netzwerk | Ethernet empfohlen für Multiroom-Stabilität; WLAN möglich |
| PC/Mac | Zum Flashen des Images und SSH-Zugriff |
| Spotify Premium | Pflicht für Spotify Connect über librespot |
1.2 DietPi Image herunterladen & flashen
Das korrekte Image für den Pi 2B ist DietPi_RPi-ARMv7-Bullseye.img.xz (32-Bit, armhf).
- Herunterladen: dietpi.com → Raspberry Pi → ARM 32-bit
- Image mit Balena Etcher auf die SD-Karte flashen
- SD-Karte nochmals einlegen und die Dateien im FAT-Bereich anpassen (vor dem ersten Boot):
# /boot/dietpi.txt — Voreinstellungen für headless-Betrieb: AUTO_SETUP_LOCALE=de_DE.UTF-8 AUTO_SETUP_TIMEZONE=Europe/Berlin AUTO_SETUP_NET_ETHERNET_ENABLED=1 AUTO_SETUP_NET_WIFI_ENABLED=0 # auf 1 setzen falls WLAN gewünscht AUTO_SETUP_SSH_SERVER_INDEX=-2 # OpenSSH (empfohlen) AUTO_SETUP_HEADLESS=1 AUTO_SETUP_AUTOMATED=1 AUTO_SETUP_GLOBAL_PASSWORD=dein_sicheres_passwort
# /boot/dietpi-wifi.txt — nur bei WLAN-Betrieb: aWIFI_SSID[0]='NetzwerkName' aWIFI_KEY[0]='WLAN-Passwort'
Headless-Betrieb: Mit AUTO_SETUP_AUTOMATED=1 läuft die Erstinstallation vollständig automatisch durch. Kein Monitor nötig — der Pi ist nach 3–5 Minuten per SSH erreichbar.
- SD-Karte einsetzen, Netzteil anschließen, 3–5 Minuten warten
- SSH-Verbindung herstellen (IP aus dem Router-Interface ablesen):
ssh root@192.168.x.xxx # Passwort: dein_sicheres_passwort
2. HifiBerry DAC konfigurieren
2.1 Kernel-Overlay aktivieren
Variante A: DietPi-Config (empfohlen)
dietpi-config # → Audio Options → Sound Card → hifiberry-dacplus auswählen # → Reboot bestätigen
Variante B: Manuell in /boot/config.txt
# Vorhandene audio-Zeile auskommentieren: #dtparam=audio=on # Je nach DAC-Modell eine der folgenden Zeilen hinzufügen: dtoverlay=hifiberry-dac # DAC+ Standard / DAC+ Light dtoverlay=hifiberry-dacplus # DAC+ Pro dtoverlay=hifiberry-dacplus-pro # DAC2 Pro
2.2 Audio-Ausgabe verifizieren
# Nach Reboot: ALSA-Geräte auflisten aplay -l # Erwartete Ausgabe (Beispiel DAC+ Pro): # card 0: sndrpihifiberry [snd_rpi_hifiberry_dacplus], ... # Subdevice #0: subdevice #0 # Testton abspielen (Ctrl+C zum Stoppen): speaker-test -D plughw:0 -c 2 -t sine
2.3 ALSA Default-Device setzen
nano /etc/asound.conf
pcm.!default {
type hw
card 0
}
ctl.!default {
type hw
card 0
}
Audiophiler Hinweis: type hw statt type plughw erzwingt direkten Hardware-Zugriff ohne Software-Resampling. Optimal für den Kenwood HD 1000, setzt aber voraus dass alle Anwendungen das native DAC-Format unterstützen (44100/48000 Hz, S32_LE) — was Raspotify und MPD beide problemlos tun.
3. Spotify Connect mit Raspotify
3.1 Installation
Raspotify verpackt librespot als systemd-Service mit nativem armhf-Binary für den Pi 2B.
# Einzeiliges Installations-Script (fügt das Raspotify-APT-Repo hinzu): sudo apt-get -y install curl && \ curl -sL https://dtcooper.github.io/raspotify/install.sh | sh
Das Script fügt automatisch das signierte Raspotify-Repository ein und installiert das aktuellste armhf-Paket. ARMv7 (Pi 2B) ist vollständig kompatibel.
3.2 Konfiguration
nano /etc/raspotify/conf
# ── Gerätename (erscheint in der Spotify-App) ────────────────── LIBRESPOT_NAME='HifiBerry-Streamer' # ── Audioqualität ────────────────────────────────────────────── LIBRESPOT_BITRATE='320' # ── ALSA-Device explizit auf HifiBerry setzen ────────────────── LIBRESPOT_BACKEND='alsa' LIBRESPOT_DEVICE='hw:0,0' # ── Audiophile Optionen ──────────────────────────────────────── LIBRESPOT_VOLUME_NORMALISATION='' # leer = deaktiviert LIBRESPOT_DITHERING='none' # kein Dithering bei 32-Bit-DAC LIBRESPOT_FORMAT='S32' # 32-Bit-Output für DAC+ Pro # ── Zeroconf-Port fixieren (verhindert random port bei Restart) ─ LIBRESPOT_ZEROCONF_PORT='44677' # ── Device-Typ (erscheint als Icon in Spotify) ───────────────── LIBRESPOT_DEVICE_TYPE='avr'
3.3 Service starten und aktivieren
systemctl restart raspotify systemctl enable raspotify systemctl status raspotify # Sollte 'active (running)' zeigen # Log bei Problemen: journalctl -u raspotify -f
Nach dem Neustart erscheint HifiBerry-Streamer in der Spotify-App unter Geräte. Wiedergabe starten — fertig. Die Lautstärke wird über die Spotify-App oder die Hifi-Anlage direkt geregelt.
4. Webradio mit MPD
4.1 MPD installieren
apt-get install -y mpd mpc
4.2 MPD konfigurieren
nano /etc/mpd.conf
# ── Grundeinstellungen ─────────────────────────────────────────
music_directory "/var/lib/mpd/music"
playlist_directory "/var/lib/mpd/playlists"
db_file "/var/lib/mpd/database"
log_file "/var/log/mpd/mpd.log"
pid_file "/run/mpd/pid"
state_file "/var/lib/mpd/state"
sticker_database "/var/lib/mpd/sticker.sql"
user "mpd"
bind_to_address "localhost"
port "6600"
# ── Audio-Output: direkt auf HifiBerry ────────────────────────
audio_output {
type "alsa"
name "HifiBerry DAC"
device "hw:0,0"
format "*:*:*"
mixer_type "software"
}
# ── Logging ────────────────────────────────────────────────────
log_level "default"
auto_update "no"
systemctl restart mpd
systemctl enable mpd
4.3 Radio Bob als Stream einrichten
# Playlist-Verzeichnis ist bereits vorhanden, Playlist anlegen: nano /var/lib/mpd/playlists/RadioBob.m3u
#EXTM3U #EXTINF:-1,Radio BOB! (MP3 192k – empfohlen) https://stream.radiobob.de/bob-live/mp3-192/direkteinstieg #EXTINF:-1,Radio BOB! (AAC 128k – Fallback) https://stream.radiobob.de/bob-live/aac-128/direkteinstieg
# Datenbank aktualisieren und Testlauf: mpc update mpc load RadioBob mpc play # Status prüfen: mpc status mpc current
Die Stream-URLs können sich ändern. Aktuelle URLs immer unter radiobob.de/empfang/stream prüfen.
5. Web-UI mit myMPD (PWA)
5.1 Warum myMPD?
myMPD ist in C geschrieben, läuft als eigenständiger Webserver (kein Apache/nginx nötig), ist als Progressive Web App (PWA) auf dem Smartphone installierbar und benötigt minimale Ressourcen — ideal für den Pi 2B.
| Feature | Beschreibung |
|---|---|
| PWA | Zum Home-Screen hinzufügbar — wirkt wie eine native App |
| Standalone-Server | Port 80/443, kein Apache/nginx nötig |
| Mobile-optimiert | Responsive Design, Touch-freundlich |
| Ressourcenschonend | Backend in C, kein Node.js / PHP |
| Webradio-Verwaltung | Streams direkt im UI hinzufügen |
| Aktiv gepflegt | Regelmäßige Releases, armhf-Pakete vorhanden |
5.2 myMPD installieren
# Abhängigkeiten: apt-get install -y libid3tag0 libflac8 liblua5.4-0 # GPG-Key und Repository einbinden: curl -fsSL https://jcorporation.github.io/myMPD/packages/gpg.key \ | gpg --dearmor -o /usr/share/keyrings/mympd-archive-keyring.gpg echo "deb [signed-by=/usr/share/keyrings/mympd-archive-keyring.gpg] \ https://jcorporation.github.io/myMPD/packages/debian bullseye main" \ > /etc/apt/sources.list.d/mympd.list apt-get update && apt-get install -y mympd
5.3 Service starten
systemctl enable mympd systemctl start mympd # Aufruf im Browser: # http://192.168.x.xxx
Beim ersten Aufruf erscheint der Setup-Assistent. Wichtige Einstellungen:
- MPD-Host:
localhost, Port:6600 - Music directory:
/var/lib/mpd/music - Playlist directory:
/var/lib/mpd/playlists - Settings → Theme: Dark Mode für Wohnzimmer-Nutzung empfohlen
5.4 Als PWA auf dem Smartphone installieren
Android (Chrome / Edge):
- Browser-Menü öffnen → „Zum Startbildschirm hinzufügen„
- myMPD öffnet sich danach als Vollbild-App ohne Browser-Chrome
iOS (Safari):
- Teilen-Symbol → „Zum Home-Bildschirm“
- Hinweis: Nur Safari unterstützt PWA-Installation auf iOS
5.5 Radio Bob in myMPD einbinden
- Browse → Webradio
- „Add stream„ → URL:
https://stream.radiobob.de/bob-live/mp3-192/direkteinstieg - Name:
Radio BOB!, Genre:Rock, Land:Deutschland - Alternativ: myMPD unterstützt den direkten Import der RadioBrowser-Community-Datenbank im UI
myMPD ist der einzige Einstiegspunkt für Webradio und Playlist-Steuerung am Handy. Spotify läuft parallel und unabhängig über Raspotify — beide teilen sich nur den DAC (nicht gleichzeitig, s. Abschnitt 7).
6. Multiroom mit Snapcast
6.1 Konzept
Snapcast ermöglicht zeitsynchrone Wiedergabe auf mehreren Geräten. Der Pi 2B läuft als Server und gleichzeitig als Client. Weitere Räume erhalten einen eigenen Pi als Snapcast-Client.
| Snapcast Server (dieser Pi 2B) | Snapcast Client(s) |
|---|---|
| Empfängt Audio von MPD via named pipe | Beliebige weitere Linux-Geräte / Pis im Netzwerk |
| Verteilt den Stream mit Timing-Informationen | Verbinden sich mit dem Server, spielen zeitsynchron ab |
6.2 Snapcast installieren
apt-get install -y snapserver snapclient
6.3 MPD für Snapcast — Named Pipe anlegen
# Named Pipe erstellen: mkfifo /tmp/snapfifo chown mpd:audio /tmp/snapfifo
FIFO-Output in /etc/mpd.conf ergänzen (zusätzlich zum bestehenden ALSA-Output):
audio_output {
type "fifo"
name "Snapcast Pipe"
path "/tmp/snapfifo"
format "48000:16:2"
mixer_type "software"
}
6.4 Snapserver konfigurieren
nano /etc/snapserver.conf
[stream] source = pipe:///tmp/snapfifo?name=MPD&sampleformat=48000:16:2&codec=flac [server] # Web-UI auf Port 1780 (optional, für Lautstärke-Anpassung pro Client)
systemctl restart snapserver snapclient
systemctl enable snapserver snapclient
systemctl status snapserver
6.5 Snapcast-Clients in weiteren Räumen
Auf jedem weiteren Gerät (z. B. Raspberry Pi Zero 2 W, Pi 3/4):
apt-get install -y snapclient nano /etc/default/snapclient # START_SNAPCLIENT=true # SNAPCLIENT_OPTS="--host 192.168.x.xxx" ← IP des Pi 2B systemctl enable snapclient systemctl start snapclient
Snapcast bietet eine eigene Web-UI auf Port 1780 (http://192.168.x.xxx:1780) zur Anpassung der Client-Lautstärken und Latenz-Delays. myMPD steuert die Wiedergabe selbst — Snapcast übernimmt nur die Verteilung.
7. Zusammenspiel & Signalfluss
7.1 Signalfluss
┌─────────────────────────────────────────────────────────────────┐ │ Spotify App (Smartphone / PC) │ │ └─→ Raspotify (librespot) ──→ ALSA hw:0,0 │ │ └─→ HifiBerry DAC+ │ │ └─→ Kenwood HD 1000│ ├─────────────────────────────────────────────────────────────────┤ │ myMPD Web-UI (Browser / PWA) │ │ └─→ MPD ──→ ALSA hw:0,0 ──→ HifiBerry DAC+ → Kenwood │ │ └─→ FIFO /tmp/snapfifo │ │ └─→ Snapcast Server │ │ └─→ Snapcast Client(s) → Räume │ └─────────────────────────────────────────────────────────────────┘
7.2 ALSA-Konflikt zwischen Raspotify und MPD
Wichtig: Raspotify und MPD können nicht gleichzeitig auf hw:0,0 zugreifen. Wenn Spotify aktiv ist, muss MPD gestoppt sein — und umgekehrt. Für audiophilen Betrieb ist das die saubere Lösung: immer nur eine Quelle aktiv.
7.3 Optionale dmix-Lösung (Klangkompromiss)
Falls gleichzeitiger Zugriff dennoch gewünscht ist, kann ALSA-dmix als Software-Mixer dienen. Dies wird für audiophile Ansprüche nicht empfohlen, da es Software-Resampling einführt:
# /etc/asound.conf (dmix-Variante — nur falls unbedingt nötig):
pcm.dmixed {
type dmix
ipc_key 1024
slave {
pcm "hw:0,0"
rate 48000
format S32_LE
period_size 1024
buffer_size 8192
}
}
pcm.!default {
type plug
slave.pcm dmixed
}
8. Autostart, Updates & Wartung
8.1 Alle Services auf Autostart setzen
systemctl enable raspotify mpd mympd snapserver snapclient # Gesamtüberblick aller Service-Status: systemctl status raspotify mpd mympd snapserver snapclient
8.2 Statische IP vergeben
# Über DietPi-Config (empfohlen): dietpi-config → Network Options → Ethernet → Static # Oder manuell /etc/network/interfaces: auto eth0 iface eth0 inet static address 192.168.1.100 netmask 255.255.255.0 gateway 192.168.1.1 dns-nameservers 192.168.1.1 8.8.8.8
8.3 Updates einspielen
# DietPi-eigenes Update-System: dietpi-update # System-Pakete (Raspotify, MPD, myMPD): apt-get update && apt-get upgrade -y # Nur Raspotify updaten: apt-get install --only-upgrade raspotify
8.4 Nützliche Diagnosebefehle
# ALSA-Gerätebelegung prüfen (wer blockiert hw:0,0?): fuser /dev/snd/* # MPD-Logs live verfolgen: tail -f /var/log/mpd/mpd.log # Snapcast-Verbindungen prüfen: journalctl -u snapserver -f # Aktuell spielenden Titel anzeigen: mpc current # Systemressourcen (CPU/RAM): htop
9. Quick Reference — Ports & URLs
| Service | Port | URL / Zweck |
|---|---|---|
| myMPD Web-UI | 80 / 443 | http://192.168.x.xxx — Hauptsteuerung (PWA) |
| Snapcast Web-UI | 1780 | http://192.168.x.xxx:1780 — Multiroom-Pegel |
| MPD | 6600 | localhost only — via myMPD oder mpc |
| Raspotify (Zeroconf) | 44677 | Spotify-Connect-Discovery (intern) |
| SSH | 22 | ssh root@192.168.x.xxx |
10. Fehlerbehebung
Spotify Connect-Gerät erscheint nicht
systemctl status raspotify journalctl -u raspotify -n 50 # Zeroconf / mDNS sicherstellen: apt-get install -y avahi-daemon systemctl enable avahi-daemon && systemctl start avahi-daemon
Kein Ton / ALSA-Fehler
# Wer blockiert den DAC? fuser /dev/snd/* # ALSA-Konfiguration direkt testen: aplay -D hw:0,0 /usr/share/sounds/alsa/Front_Center.wav # HifiBerry-Overlay aktiv? dtoverlay -l
MPD startet nicht
# Berechtigungen reparieren: chown -R mpd:audio /var/lib/mpd chmod 750 /var/lib/mpd # Named Pipe neu anlegen: rm -f /tmp/snapfifo mkfifo /tmp/snapfifo chown mpd:audio /tmp/snapfifo
Radio Bob streamt nicht
# Stream-URL direkt testen: mpc add https://stream.radiobob.de/bob-live/mp3-192/direkteinstieg mpc play mpc status # Internetverbindung prüfen: ping radiobob.de -c 4
Aktuelle Stream-URLs von Radio Bob immer unter radiobob.de/empfang/stream prüfen.
Weiterführende Links
DietPi Forum | Raspotify auf GitHub | myMPD Dokumentation | Snapcast auf GitHub

