| FOTO | AUTO | EDV | AUDIO |

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

Hinweis Debian Trixie (13): Diese Anleitung wurde für DietPi auf Basis von Debian Trixie getestet und angepasst. Einige Paketnamen unterscheiden sich von älteren Anleitungen (z. B. libasound2t64 statt libasound2, libflac12t64 statt libflac8). Befehle bitte nicht aus anderen Quellen übernehmen, ohne die Paketnamen zu prüfen.


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 das ARM 32-bit (ARMv7 / armhf) Image von dietpi.com.

Wichtig beim Image-Download: Auf der DietPi-Downloadseite unbedingt ARM 32-bit wählen — nicht ARMv6 oder ARM 64-bit. Der Pi 2B v1.1 hat einen ARMv7-Prozessor und ist nicht 64-Bit-fähig.

  1. Herunterladen: dietpi.com → Raspberry Pi → ARM 32-bit
  2. Image mit Balena Etcher auf die SD-Karte flashen
  3. SD-Karte nochmals einlegen und vor dem ersten Boot die Datei dietpi.txt auf der FAT-Partition anpassen:
# /boot/dietpi.txt — Voreinstellungen für headless-Betrieb:
AUTO_SETUP_GLOBAL_PASSWORD=dein_sicheres_passwort

AUTO_SETUP_LOCALE=de_DE.UTF-8
AUTO_SETUP_KEYBOARD_LAYOUT=de
AUTO_SETUP_TIMEZONE=Europe/Berlin

AUTO_SETUP_NET_ETHERNET_ENABLED=1
AUTO_SETUP_NET_WIFI_ENABLED=0
AUTO_SETUP_NET_USESTATIC=0
AUTO_SETUP_NET_HOSTNAME=stream01
AUTO_SETUP_BOOT_WAIT_FOR_NETWORK=1

AUTO_SETUP_SWAPFILE_SIZE=1
AUTO_SETUP_SWAPFILE_LOCATION=/var/swap
AUTO_SETUP_HEADLESS=1

AUTO_SETUP_SSH_SERVER_INDEX=-2
AUTO_SETUP_LOGGING_INDEX=-1
AUTO_SETUP_RAMLOG_MAXSIZE=50

AUTO_SETUP_AUTOSTART_TARGET_INDEX=0
AUTO_SETUP_AUTOSTART_LOGIN_USER=root

AUTO_SETUP_AUTOMATED=1

CONFIG_CPU_GOVERNOR=schedutil
CONFIG_NTP_MODE=2
CONFIG_SOUNDCARD=none
CONFIG_ENABLE_IPV6=1
# /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 ca. 5–10 Minuten per SSH erreichbar.

  1. SD-Karte einsetzen, Netzteil anschließen, 5–10 Minuten warten
  2. SSH-Verbindung herstellen (IP aus dem Router-Interface ablesen):
ssh root@stream01    # oder: ssh root@192.168.x.xxx
# Passwort: dein_sicheres_passwort

2. HifiBerry DAC konfigurieren

2.1 HifiBerry-Modell identifizieren

Neuere HifiBerry-Karten melden sich per EEPROM automatisch:

cat /proc/device-tree/hat/product

Die Ausgabe erscheint direkt vor dem Prompt, z. B.: DAC+root@stream01:~#

Ausgabe Modell Treiber in dietpi-config
DAC+ HifiBerry DAC+ Standard hifiberry-dacplus-std
DAC+ Pro HifiBerry DAC+ Pro hifiberry-dacplus-pro
DAC2 Pro HifiBerry DAC2 Pro hifiberry-dacplus-pro
Keine Ausgabe Älteres Modell Optisch identifizieren

2.2 Kernel-Overlay aktivieren

Variante A: DietPi-Config (empfohlen)

dietpi-config
# → Audio Options → Sound Card
# → Passendes Modell auswählen (z. B. hifiberry-dacplus-std)
# → 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.3 Audio-Ausgabe verifizieren

# Nach Reboot: ALSA-Geräte auflisten
aplay -l
# Erwartete Ausgabe:
# card 0: sndrpihifiberry [snd_rpi_hifiberry_dacplus], device 0 ...
 
# Testton abspielen (Ctrl+C zum Stoppen):
speaker-test -D plughw:0 -c 2 -t sine

Falls kein Ton kommt: Lautstärkeregler mit alsamixer prüfen — nach Installation oft auf 0% oder Mute gesetzt. Mit den Pfeiltasten hochregeln, M zum Unmute.

2.4 ALSA Default-Device setzen

nano /etc/asound.conf
pcm.!default {
    type hw
    card 0
    device 0
}
ctl.!default {
    type hw
    card 0
}

Audiophiler Hinweis: type hw erzwingt direkten Hardware-Zugriff ohne Software-Resampling — bit-perfekte Ausgabe zum Kenwood HD 1000. DietPi trägt device 0 zusätzlich ein, was technisch präziser ist und problemlos so bleiben kann.

2.5 Audio-Einstellungen in dietpi-config

Einstellung Wert Begründung
Sound Card hifiberry-dacplus-std Erkannter Hardware-Treiber
Auto-conversion Off Erhält bit-perfekte Qualität
PSU noise reduction On Minimiert elektrische Interferenzen

3. Spotify Connect mit Raspotify

3.1 Installation über dietpi-software

Auf Debian Trixie schlägt das offizielle Raspotify-Installations-Script wegen des umbenannten Pakets libasound2t64 fehl. Die zuverlässigste Methode ist daher die Installation über das DietPi-eigene Software-Tool:

dietpi-software
# → Browse Software → Raspotify (ID 170)
# → Mit Leertaste auswählen → Install

dietpi-software erkennt automatisch, dass du auf Trixie läufst, und umgeht die libasound2-Abhängigkeitsprobleme intern. Dieser Weg ist auf dem Pi 2B mit Trixie stabiler als der manuelle curl-Installer.

3.2 Konfiguration

nano /etc/raspotify/conf
# ── Gerätename (erscheint in der Spotify-App) ──────────────────
LIBRESPOT_NAME='Office UG'
 
# ── 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 Office UG in der Spotify-App unter Geräte. Falls der alte Name noch erscheint: Spotify-App schließen, neu öffnen — der Cache aktualisiert sich nach ca. 10 Sekunden. Lautstärke über die Hifi-Anlage direkt regeln; LIBRESPOT_VOLUME_NORMALISATION ist bewusst deaktiviert.


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

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 (Trixie-angepasst)

Trixie-Hinweis: Das bullseye-Repository aus älteren Anleitungen funktioniert auf Debian Trixie nicht. Stattdessen wird das bookworm-Paket verwendet, das auf Trixie kompatibel ist. Außerdem heißt das Paket auf Trixie libflac12t64 statt libflac8.

# Abhängigkeiten (Trixie-Paketnamen):
apt-get install -y libid3tag0 libflac12t64 liblua5.4-0
 
# GPG-Key und Repository einbinden (bookworm-Paket auf Trixie):
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 bookworm 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
systemctl status mympd    # Sollte 'active (running)' zeigen
 
# Aufruf im Browser:
# http://stream01   oder   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):

  1. Browser-Menü öffnen → „Zum Startbildschirm hinzufügen„
  2. myMPD öffnet sich danach als Vollbild-App ohne Browser-Chrome

iOS (Safari):

  1. Teilen-Symbol → „Zum Home-Bildschirm“
  2. Hinweis: Nur Safari unterstützt PWA-Installation auf iOS

5.5 Radio Bob in myMPD einbinden

  1. Browse → Webradio
  2. „Add stream„ → URL: https://stream.radiobob.de/bob-live/mp3-192/direkteinstieg
  3. Name: Radio BOB!, Genre: Rock, Land: Deutschland
  4. 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 (stream01)
 
systemctl enable snapclient
systemctl start snapclient

Snapcast bietet eine eigene Web-UI auf Port 1780 (http://stream01: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.

Zum manuellen Stoppen: mpc stop (MPD) bzw. systemctl stop raspotify (Spotify).

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 → Adapters → 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 (MPD, myMPD, Snapcast):
apt-get update && apt-get upgrade -y
 
# Raspotify wurde über dietpi-software installiert:
dietpi-software reinstall 170

8.4 Nützliche Diagnosebefehle

# ALSA-Gerätebelegung prüfen (wer blockiert hw:0,0?):
fuser /dev/snd/*
 
# Lautstärkeregler prüfen und anpassen:
alsamixer
 
# 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://stream01 — Hauptsteuerung (PWA)
Snapcast Web-UI 1780 http://stream01:1780 — Multiroom-Pegel
MPD 6600 localhost only — via myMPD oder mpc
Raspotify (Zeroconf) 44677 Spotify-Connect-Discovery (intern)
SSH 22 ssh root@stream01

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

# Lautstärke prüfen (oft nach Installation auf 0 oder Mute):
alsamixer
 
# 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.

myMPD-Installation schlägt fehl (Trixie)

# Prüfen welche libflac-Version verfügbar ist:
apt-cache search libflac
 
# Falls libflac12t64 nicht gefunden wird:
apt-get update
apt-get install -y libflac12t64
 
# Falls das bookworm-Repo nicht erreichbar ist — alternativ direkt
# das .deb von GitHub laden:
wget https://github.com/jcorporation/myMPD/releases/latest/download/mympd_armhf.deb
dpkg -i mympd_armhf.deb
apt-get install -f

Raspotify Update auf Trixie

# Nach einem System-Upgrade kann Raspotify neu installiert werden:
dietpi-software reinstall 170
 
# Konfiguration bleibt erhalten unter:
# /etc/raspotify/conf


Getestet auf: Raspberry Pi 2B v1.1 + HifiBerry DAC+ → Kenwood HD 1000 · DietPi ARMv7 / Debian Trixie (13) · Stand: März 2026