Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
| audio:stream:start [24 39 2026 19 : 39] – André Reichert-Creutz | audio:stream:start [02 00 2026 17 : 00] (aktuell) – André Reichert-Creutz | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| - | ====== Raspberry Pi Musik-Streaming mit DietPi (Spotify | + | ====== DietPi Audiophiler Streamer ====== |
| + | ===== Raspberry Pi 2B + HifiBerry DAC — Spotify Connect · Radio Bob · Multiroom | ||
| - | Diese Anleitung beschreibt die komplette Einrichtung eines Raspberry Pi als | + | <WRAP box 100%> |
| - | Netzwerk-Musikplayer mit: | + | <WRAP half column> |
| + | * **Spotify: | ||
| + | * **Webradio: | ||
| + | </ | ||
| + | <WRAP half column> | ||
| + | * **Multiroom:** Snapcast (Server + Client) | ||
| + | * **Steuerung: | ||
| + | </ | ||
| + | <WRAP clear></ | ||
| + | </ | ||
| - | * DietPi als Betriebssystem | + | <WRAP important> |
| - | * Spotify Connect | + | **Getestet auf:** Raspberry Pi 2B v1.1 + HifiBerry |
| - | | + | |
| - | | + | Einige Paketnamen und Installationswege unterscheiden sich von älteren Anleitungen. Alle Befehle auf dieser Seite sind für Trixie verifiziert. |
| - | | + | </ |
| - | | + | |
| - | * Betrieb ohne Monitor | + | |
| ---- | ---- | ||
| - | ===== Ziel ===== | + | ===== Inhaltsverzeichnis |
| - | Nach dieser Anleitung hast du: | + | - [[# |
| - | + | - [[# | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| + | | ||
| + | - [[# | ||
| ---- | ---- | ||
| - | ===== Voraussetzungen | + | ===== 1. Vorbereitung & DietPi-Installation |
| - | * Raspberry Pi 2 oder höher | + | ==== 1.1 Benötigte Hardware ==== |
| - | * microSD-Karte (8 GB+) | + | |
| - | * LAN oder WLAN | + | |
| - | * Klinke → Cinch-Kabel | + | |
| - | * Stereoanlage mit AUX | + | |
| - | * Spotify Premium | + | |
| - | * PC/Handy für Einrichtung | + | |
| - | ---- | + | |< 100% 22% 78% >| |
| + | ^ 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; | ||
| + | | PC/Mac | Zum Flashen des Images und SSH-Zugriff | | ||
| + | | Spotify Premium | Pflicht für Spotify Connect über librespot | | ||
| - | ===== 1. DietPi | + | ==== 1.2 DietPi |
| - | ==== 1.1 Image herunterladen ==== | + | Das korrekte |
| - | Image von dietpi.com für Raspberry | + | <WRAP tip> |
| + | **Wichtig beim Image-Download: | ||
| + | </ | ||
| - | ---- | + | |
| + | | ||
| + | - SD-Karte nochmals einlegen und vor dem ersten Boot die Datei '' | ||
| - | ==== 1.2 SD-Karte beschreiben ==== | + | < |
| + | # / | ||
| + | AUTO_SETUP_GLOBAL_PASSWORD=dein_sicheres_passwort | ||
| - | Mit Raspberry Imager oder BalenaEtcher: | + | AUTO_SETUP_LOCALE=de_DE.UTF-8 |
| + | AUTO_SETUP_KEYBOARD_LAYOUT=de | ||
| + | AUTO_SETUP_TIMEZONE=Europe/ | ||
| - | * Image auswählen | + | AUTO_SETUP_NET_ETHERNET_ENABLED=1 |
| - | * SD-Karte beschreiben | + | 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=/ | ||
| + | AUTO_SETUP_HEADLESS=1 | ||
| - | ==== 1.3 Erster Start ==== | + | AUTO_SETUP_SSH_SERVER_INDEX=-2 |
| + | AUTO_SETUP_LOGGING_INDEX=-1 | ||
| + | AUTO_SETUP_RAMLOG_MAXSIZE=50 | ||
| - | * SD einlegen | + | AUTO_SETUP_AUTOSTART_TARGET_INDEX=0 |
| - | * Strom anschließen | + | AUTO_SETUP_AUTOSTART_LOGIN_USER=root |
| - | * 1–2 Minuten warten | + | |
| - | Dann per SSH verbinden: | + | AUTO_SETUP_AUTOMATED=1 |
| + | |||
| + | CONFIG_CPU_GOVERNOR=schedutil | ||
| + | CONFIG_NTP_MODE=2 | ||
| + | CONFIG_SOUNDCARD=none | ||
| + | CONFIG_ENABLE_IPV6=1 | ||
| + | </ | ||
| <code bash> | <code bash> | ||
| - | ssh root@dietpi | + | # /boot/dietpi-wifi.txt — nur bei WLAN-Betrieb: |
| + | aWIFI_SSID[0]=' | ||
| + | aWIFI_KEY[0]=' | ||
| </ | </ | ||
| - | Standard-Passwort: | + | <WRAP tip> |
| + | **Headless-Betrieb:** Mit '' | ||
| + | </ | ||
| - | < | + | - SD-Karte einsetzen, Netzteil anschließen, |
| - | dietpi | + | - SSH-Verbindung herstellen (IP aus dem Router-Interface ablesen): |
| - | </ | + | |
| - | Beim ersten Login startet das Setup automatisch. | + | <code bash> |
| + | ssh root@stream01 | ||
| + | # Passwort: dein_sicheres_passwort | ||
| + | </ | ||
| ---- | ---- | ||
| - | ==== 1.4 Grundeinstellungen | + | ===== 2. HifiBerry DAC konfigurieren ===== |
| - | Im Setup-Menü: | + | ==== 2.1 HifiBerry-Modell identifizieren ==== |
| - | * Sprache / Tastatur | + | Neuere HifiBerry-Karten melden sich per EEPROM automatisch: |
| - | * Netzwerk | + | |
| - | * Passwort ändern | + | |
| - | Danach Neustart. | + | <code bash> |
| + | cat / | ||
| + | </ | ||
| - | ---- | + | <WRAP tip> |
| + | Die Ausgabe erscheint direkt vor dem Prompt ohne Zeilenumbruch, | ||
| + | </ | ||
| - | ===== 2. Software installieren ===== | + | |< 100% 25% 35% 40% >| |
| + | ^ Ausgabe ^ Modell ^ Treiber in dietpi-config ^ | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | Keine Ausgabe | Älteres Modell | Optisch identifizieren | | ||
| - | Software-Menü öffnen: | + | ==== 2.2 Kernel-Overlay aktivieren ==== |
| + | |||
| + | === Variante A: DietPi-Config (empfohlen) === | ||
| <code bash> | <code bash> | ||
| - | dietpi-software | + | dietpi-config |
| + | # → Audio Options → Sound Card | ||
| + | # → Passendes Modell auswählen (z. B. hifiberry-dacplus-std für DAC+) | ||
| + | # → Reboot bestätigen | ||
| </ | </ | ||
| - | Unter " | + | === Variante B: Manuell in / |
| - | * raspotify | + | <code ini> |
| - | * mpd | + | # Vorhandene audio-Zeile auskommentieren: |
| + | # | ||
| - | Installieren → Reboot | + | # Je nach DAC-Modell eine der folgenden Zeilen hinzufügen: |
| + | dtoverlay=hifiberry-dac | ||
| + | dtoverlay=hifiberry-dacplus | ||
| + | dtoverlay=hifiberry-dacplus-pro | ||
| + | </ | ||
| - | ---- | + | ==== 2.3 Audio-Ausgabe verifizieren ==== |
| - | ===== 3. Spotify Connect prüfen ===== | + | <code bash> |
| + | # Nach Reboot: ALSA-Geräte auflisten | ||
| + | aplay -l | ||
| + | # Erwartete Ausgabe: | ||
| + | # card 0: sndrpihifiberry [snd_rpi_hifiberry_dacplus], | ||
| - | Status testen: | + | # Testton abspielen (Ctrl+C zum Stoppen): |
| + | speaker-test -D plughw:0 -c 2 -t sine | ||
| + | </ | ||
| + | |||
| + | <WRAP tip> | ||
| + | Falls kein Ton kommt: Lautstärkeregler mit '' | ||
| + | </ | ||
| + | |||
| + | ==== 2.4 ALSA Default-Device setzen ==== | ||
| <code bash> | <code bash> | ||
| - | systemctl status raspotify | + | nano / |
| </ | </ | ||
| - | |||
| - | Sollte anzeigen: | ||
| < | < | ||
| - | active (running) | + | pcm.!default { |
| + | type hw | ||
| + | card 0 | ||
| + | device 0 | ||
| + | } | ||
| + | ctl.!default { | ||
| + | type hw | ||
| + | card 0 | ||
| + | } | ||
| </ | </ | ||
| - | Jetzt erscheint der Pi in Spotify. | + | <WRAP important> |
| + | **Audiophiler Hinweis:** '' | ||
| + | </ | ||
| + | |||
| + | ==== 2.5 Audio-Einstellungen in dietpi-config ==== | ||
| + | |||
| + | |< 100% 35% 15% 50% >| | ||
| + | ^ Einstellung ^ Wert ^ Begründung ^ | ||
| + | | Sound Card | '' | ||
| + | | Auto-conversion | Off | Erhält bit-perfekte Qualität | | ||
| + | | PSU noise reduction | On | Minimiert elektrische Interferenzen | | ||
| + | | DietPi-JustBoom | — | Ignorieren, nur für JustBoom-Karten | | ||
| ---- | ---- | ||
| - | ===== 4. Autostart aktivieren | + | ===== 3. Spotify Connect mit Raspotify |
| - | Zur Sicherheit: | + | ==== 3.1 Installation über dietpi-software ==== |
| + | |||
| + | <WRAP important> | ||
| + | **Trixie-Hinweis:** Das offizielle Raspotify-Installations-Script schlägt auf Debian Trixie fehl, weil das Paket '' | ||
| + | </ | ||
| <code bash> | <code bash> | ||
| - | systemctl enable raspotify | + | dietpi-software |
| - | systemctl enable mpd | + | # → Browse Software → Raspotify (ID 170) |
| + | # → Mit Leertaste auswählen → Install | ||
| </ | </ | ||
| - | ---- | + | DietPi erkennt Trixie automatisch und umgeht die Abhängigkeitsprobleme intern. |
| - | + | ||
| - | ===== 5. Interne Soundkarte optimieren ===== | + | |
| - | + | ||
| - | ==== 5.1 PWM-Modus verbessern ==== | + | |
| - | Config öffnen: | + | ==== 3.2 Konfiguration ==== |
| <code bash> | <code bash> | ||
| - | nano /boot/config.txt | + | nano /etc/raspotify/ |
| </ | </ | ||
| - | Am Ende einfügen: | + | <code bash> |
| + | # ── Gerätename (erscheint in der Spotify-App) ────────────────── | ||
| + | LIBRESPOT_NAME=' | ||
| - | < | + | # ── Audioqualität ────────────────────────────────────────────── |
| - | audio_pwm_mode=2 | + | LIBRESPOT_BITRATE=' |
| - | disable_audio_dither=1 | + | |
| + | # ── ALSA-Device explizit auf HifiBerry setzen ────────────────── | ||
| + | LIBRESPOT_BACKEND=' | ||
| + | LIBRESPOT_DEVICE=' | ||
| + | |||
| + | # ── Audiophile Optionen ──────────────────────────────────────── | ||
| + | LIBRESPOT_VOLUME_NORMALISATION='' | ||
| + | LIBRESPOT_DITHERING=' | ||
| + | LIBRESPOT_FORMAT=' | ||
| + | |||
| + | # ── Zeroconf-Port fixieren (verhindert random port bei Restart) ─ | ||
| + | LIBRESPOT_ZEROCONF_PORT=' | ||
| + | |||
| + | # ── Device-Typ (erscheint als Icon in Spotify) ───────────────── | ||
| + | LIBRESPOT_DEVICE_TYPE=' | ||
| </ | </ | ||
| - | Neustart: | + | ==== 3.3 Service starten und aktivieren ==== |
| <code bash> | <code bash> | ||
| - | reboot | + | systemctl restart raspotify |
| + | systemctl enable raspotify | ||
| + | systemctl status raspotify | ||
| + | |||
| + | # Log bei Problemen: | ||
| + | journalctl -u raspotify -f | ||
| </ | </ | ||
| + | |||
| + | <WRAP tip> | ||
| + | Nach dem Neustart erscheint **Office UG** in der Spotify-App unter Geräte. Falls der alte Name noch erscheint: Spotify-App vollständig schließen und neu öffnen — der Cache aktualisiert sich nach ca. 10 Sekunden. | ||
| + | </ | ||
| ---- | ---- | ||
| - | ==== 5.2 Lautstärke einstellen | + | ===== 4. Webradio mit MPD ===== |
| - | Mixer starten: | + | ==== 4.1 MPD installieren ==== |
| <code bash> | <code bash> | ||
| - | alsamixer | + | apt-get install -y mpd mpc |
| </ | </ | ||
| - | * Headphone → 100 % | + | Die Abhängigkeitsliste ist auf Trixie sehr lang — einfach mit '' |
| - | * Nicht gemutet | + | |
| - | Speichern: | + | ==== 4.2 MPD konfigurieren ==== |
| <code bash> | <code bash> | ||
| - | alsactl store | + | nano / |
| </ | </ | ||
| - | ---- | + | < |
| + | # ── Grundeinstellungen ───────────────────────────────────────── | ||
| + | music_directory | ||
| + | playlist_directory | ||
| + | db_file | ||
| + | log_file | ||
| + | pid_file | ||
| + | state_file | ||
| + | user " | ||
| + | bind_to_address | ||
| + | port " | ||
| - | ==== 5.3 Audio-Ausgang festlegen ==== | + | # ── |
| + | audio_output { | ||
| + | type " | ||
| + | name " | ||
| + | device | ||
| + | format | ||
| + | mixer_type | ||
| + | } | ||
| - | <code bash> | + | # ── Logging ──────────────────────────────────────────────────── |
| - | dietpi-config | + | log_level |
| + | auto_update | ||
| </ | </ | ||
| - | Menü: | + | <WRAP important> |
| + | **Trixie-Hinweis:** Den Parameter '' | ||
| + | </ | ||
| - | * Audio Options | + | ==== 4.3 Datenbankverzeichnis anlegen (Trixie) ==== |
| - | * Force 3.5mm Jack | + | |
| - | OK → Reboot | + | <WRAP important> |
| + | **Trixie-spezifisch: | ||
| + | </ | ||
| - | ---- | + | <code bash> |
| + | mkdir -p / | ||
| + | chown -R mpd:audio / | ||
| + | systemctl restart mpd | ||
| + | systemctl enable mpd | ||
| + | systemctl status mpd # Sollte ' | ||
| + | </ | ||
| + | |||
| + | ==== 4.4 Radio Bob Streams einrichten ==== | ||
| - | ===== 6. Spotify-Gerätenamen ändern ===== | + | Jeder Sender bekommt eine eigene Playlist-Datei — so lassen sie sich in myMPD direkt per Tipp auswählen. |
| <code bash> | <code bash> | ||
| - | nano /etc/default/raspotify | + | nano /var/lib/mpd/ |
| + | </ | ||
| + | < | ||
| + | #EXTM3U | ||
| + | # | ||
| + | http:// | ||
| </ | </ | ||
| - | Eintragen: | + | <code bash> |
| + | nano / | ||
| + | </ | ||
| + | < | ||
| + | #EXTM3U | ||
| + | #EXTINF:-1,Radio BOB! Classic Rock (60er, 70er & 80er) | ||
| + | http:// | ||
| + | </ | ||
| + | <code bash> | ||
| + | nano / | ||
| + | </ | ||
| < | < | ||
| - | DEVICE_NAME=" | + | #EXTM3U |
| + | # | ||
| + | http:// | ||
| </ | </ | ||
| - | Dienst neu starten: | + | <code bash> |
| + | nano / | ||
| + | </ | ||
| + | < | ||
| + | #EXTM3U | ||
| + | #EXTINF:-1,Radio BOB! 70er Rock (Led Zeppelin, Queen, Pink Floyd...) | ||
| + | https:// | ||
| + | </ | ||
| <code bash> | <code bash> | ||
| - | systemctl restart raspotify | + | # Datenbank aktualisieren und Testlauf: |
| + | mpc update | ||
| + | mpc clear | ||
| + | mpc load BOB-Grunge | ||
| + | mpc play | ||
| + | mpc status | ||
| </ | </ | ||
| + | |||
| + | <WRAP info> | ||
| + | Aktuelle Stream-URLs immer unter [[https:// | ||
| + | </ | ||
| ---- | ---- | ||
| - | ===== 7. Anschluss an die Stereoanlage | + | ===== 5. Web-UI mit myMPD (PWA) ===== |
| - | Verbindung: | + | ==== 5.1 Warum myMPD? ==== |
| - | | + | myMPD ist in C geschrieben, |
| - | | + | |
| - | | + | |
| - | Anlage auf AUX stellen. | + | |< 100% 30% 70% >| |
| + | ^ Feature ^ Beschreibung ^ | ||
| + | | PWA | Zum Home-Screen hinzufügbar — wirkt wie eine native App | | ||
| + | | Standalone-Server | Ports 8080/8443, kein Apache/ | ||
| + | | 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) ==== |
| - | ===== 8. Radio BOB & Grunge einrichten ===== | + | <WRAP important> |
| - | ===== 8.1. Voraussetzungen & Installation ===== | + | **Trixie-Hinweis: |
| - | + | </ | |
| - | Zunächst müssen der Daemon und der Client installiert werden. | + | |
| <code bash> | <code bash> | ||
| - | apt update && apt install mpd mpc -y | + | dietpi-software |
| + | # → Browse Software → myMPD (ID 183) | ||
| + | # → Mit Leertaste auswählen → Install | ||
| </ | </ | ||
| - | ===== 8.2. Audio-Ausgang konfigurieren (ALSA) ===== | + | DietPi löst alle Abhängigkeiten automatisch auf. Pakete wie '' |
| - | Damit der Analog-Ausgang (Klinke) laut genug ist und nicht rauscht, muss er im Mixer eingestellt werden. | + | ==== 5.3 Service starten ==== |
| <code bash> | <code bash> | ||
| - | alsamixer | + | systemctl enable mympd |
| + | systemctl start mympd | ||
| + | systemctl status mympd # Sollte ' | ||
| </ | </ | ||
| - | - **F6** drücken und Soundkarte wählen (meist '' | + | myMPD läuft |
| - | - **Pfeiltasten** nutzen, um zum Balken '' | + | |
| - | - **M** drücken, um Stummschaltung aufzuheben (unten muss '' | + | |
| - | - **Pfeil hoch** drücken, bis Lautstärke | + | |
| - | - **Esc** drücken zum Beenden. | + | |
| - | Einstellungen dauerhaft speichern: | + | |< 100% 15% 85% >| |
| - | < | + | ^ Port ^ Verwendung ^ |
| - | alsactl store | + | | 8080 | HTTP — funktioniert, |
| + | | 8443 | HTTPS — empfohlen, einmalig Sicherheitswarnung akzeptieren | | ||
| + | |||
| + | Aufruf im Browser: | ||
| + | < | ||
| + | https:// | ||
| </ | </ | ||
| - | ===== 8.3. Playlist erstellen ===== | + | <WRAP tip> |
| + | Sicherheitswarnung beim ersten Aufruf einmalig akzeptieren (self-signed Zertifikat). Danach läuft myMPD normal. HTTPS auf Port 8443 ist Voraussetzung für die PWA-Installation auf dem Handy. | ||
| + | </ | ||
| - | Wir erstellen eine Playlist-Datei mit den Streaming-URLs von Radio BOB. | + | ==== 5.4 Erste Einrichtung ==== |
| - | <code bash> | + | myMPD verbindet sich nach der Installation via '' |
| - | nano /root/radio.m3u | + | |
| - | </ | + | |
| - | Fügen Sie folgenden Inhalt ein: | + | Die **myMPD-Startseite** ist zunächst leer. Schnellzugriff-Icons hinzufügen: |
| - | < | + | |
| - | https:// | + | - Kontextmenü (drei Punkte) → **„Zum Startbildschirm hinzufügen" |
| - | https:// | + | - Dasselbe für '' |
| - | https:// | + | |
| - | https:// | + | |
| - | </ | + | |
| - | Speichern mit **Strg+O**, **Enter**, Beenden mit **Strg+X**. | + | Einen Stream starten: |
| - | ===== 8.4. Playlist aktivieren (DietPi Pfad-Fix) ===== | + | |
| + | - **„Alle hinzufügen" | ||
| - | Standardmäßig sucht MPD unter DietPi die Musikdateien in einem speziellen Ordner. Die Datei muss dorthin verschoben und die Berechtigungen für den User '' | + | ==== 5.5 Als PWA auf dem Smartphone installieren ==== |
| + | |||
| + | === Android (Chrome / Edge): === | ||
| + | - '' | ||
| + | - Sicherheitswarnung einmalig akzeptieren | ||
| + | - Drei-Punkte-Menü → **„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 | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== 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. | ||
| + | |||
| + | |< 100% 50% 50% >| | ||
| + | ^ 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 ==== | ||
| - | **Verschieben und Rechte setzen:** | ||
| <code bash> | <code bash> | ||
| - | mv / | + | apt-get install -y snapserver snapclient |
| - | chown mpd:audio / | + | |
| </ | </ | ||
| - | **Datenbank aktualisieren: | + | ==== 6.3 MPD für Snapcast — Named Pipe anlegen ==== |
| <code bash> | <code bash> | ||
| - | mpc update | + | # Named Pipe erstellen: |
| + | mkfifo / | ||
| + | chown mpd:audio / | ||
| </ | </ | ||
| - | ===== 8.5. Radio steuern ===== | + | FIFO-Output in ''/ |
| - | Nun kann die Playlist geladen und abgespielt werden. | + | < |
| + | audio_output { | ||
| + | type " | ||
| + | name " | ||
| + | path "/ | ||
| + | format | ||
| + | mixer_type | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ==== 6.4 Snapserver konfigurieren ==== | ||
| - | **Playlist laden:** | ||
| <code bash> | <code bash> | ||
| - | mpc clear | + | nano / |
| - | mpc load radio | + | |
| - | mpc play | + | |
| </ | </ | ||
| - | **Sender wechseln:** | + | <code ini> |
| - | Die Playlist enthält 4 Sender (Live, AC/DC, Metal, Grunge). | + | [stream] |
| + | source = pipe:/// | ||
| - | <code bash> | + | [server] |
| - | mpc playlist | + | # Web-UI auf Port 1780 (optional, für Lautstärke-Anpassung pro Client) |
| - | mpc play 1 # Startet Sender 1 (Radio BOB Live) | + | |
| - | mpc play 4 # Startet Sender 4 (Grunge) | + | |
| - | mpc next # Nächster Sender | + | |
| - | mpc prev # Vorheriger Sender | + | |
| </ | </ | ||
| - | **Lautstärke regeln:** | ||
| <code bash> | <code bash> | ||
| - | mpc volume 90 # Setzt Lautstärke auf 90% | + | systemctl restart snapserver snapclient |
| + | systemctl enable snapserver snapclient | ||
| + | systemctl status snapserver | ||
| </ | </ | ||
| - | ====== 9. Websteuerung installieren (myMPD) ====== | + | ==== 6.5 Snapcast-Clients in weiteren Räumen |
| - | Anstatt alter Software wie Rompr nutzen wir **myMPD**. Es ist leichtgewichtig, mobilfreundlich und lässt sich direkt über DietPi installieren, | + | Auf jedem weiteren Gerät (z. B. Raspberry Pi Zero 2 W, Pi 3/4): |
| - | ===== 9.1 myMPD installieren ===== | + | <code bash> |
| + | apt-get install -y snapclient | ||
| - | Wir nutzen das DietPi-Software-Tool, um myMPD sauber ins System zu integrieren. | + | nano / |
| + | # START_SNAPCLIENT=true | ||
| + | # SNAPCLIENT_OPTS=" | ||
| - | <code bash> | + | systemctl enable snapclient |
| - | dietpi-software | + | systemctl start snapclient |
| </ | </ | ||
| - | - Wähle **" | + | <WRAP info> |
| - | - Suche nach **myMPD** (ID **166**). | + | Snapcast bietet eine eigene Web-UI auf Port **1780** ('' |
| - | - Wähle es mit der **Leertaste** aus. | + | </ |
| - | | + | |
| - | - Das System installiert alles Nötige automatisch. | + | |
| - | ===== 9.2 Alternative: | + | ---- |
| - | Wer es extrem puristisch mag, kann statt myMPD auch **YMPD** nutzen. Es verbraucht noch weniger RAM. | + | ===== 7. Zusammenspiel & Signalfluss ===== |
| - | < | + | ==== 7.1 Signalfluss ==== |
| - | dietpi-software install 125 | + | |
| + | < | ||
| + | ┌─────────────────────────────────────────────────────────────────┐ | ||
| + | │ Spotify App (Smartphone / PC) │ | ||
| + | │ └─→ Raspotify (librespot) ──→ ALSA hw: | ||
| + | │ | ||
| + | │ | ||
| + | ├─────────────────────────────────────────────────────────────────┤ | ||
| + | │ myMPD Web-UI (Browser / PWA) │ | ||
| + | │ └─→ MPD ──→ ALSA hw:0,0 ──→ HifiBerry DAC+ → Kenwood | ||
| + | │ | ||
| + | │ | ||
| + | │ | ||
| + | └─────────────────────────────────────────────────────────────────┘ | ||
| </ | </ | ||
| - | //(ID 125 ist YMPD in DietPi)// | ||
| - | ====== 10. Steuerung per Handy / Browser ====== | + | ==== 7.2 ALSA-Konflikt zwischen Raspotify und MPD ==== |
| - | ===== 10.1 IP-Adresse ===== | + | <WRAP alert> |
| + | **Wichtig: | ||
| + | </ | ||
| - | Die IP-Adresse des Raspberry Pi wurde festgelegt auf: | + | ==== 7.3 Optionale dmix-Lösung (Klangkompromiss) ==== |
| - | **192.168.178.60** | + | |
| - | ===== 10.2 Weboberfläche öffnen ===== | + | Falls gleichzeitiger Zugriff dennoch gewünscht ist, kann ALSA-dmix als Software-Mixer dienen. Für audiophile Ansprüche **nicht empfohlen**, |
| - | Öffne auf deinem Handy oder PC den Browser und gib die Adresse ein. | + | < |
| + | # /etc/asound.conf (dmix-Variante — nur falls unbedingt nötig): | ||
| + | pcm.dmixed { | ||
| + | type dmix | ||
| + | ipc_key 1024 | ||
| + | slave { | ||
| + | pcm " | ||
| + | rate 48000 | ||
| + | format S32_LE | ||
| + | period_size 1024 | ||
| + | buffer_size 8192 | ||
| + | } | ||
| + | } | ||
| + | pcm.!default { | ||
| + | type plug | ||
| + | slave.pcm dmixed | ||
| + | } | ||
| + | </ | ||
| - | * **Für myMPD (Standard): | + | ==== 7.4 Wechsel zwischen Spotify und Webradio ==== |
| - | [[http:// | + | |
| - | //Hinweis: Evtl. kommt eine SSL-Warnung ("Dies ist keine sichere Verbindung" | + | |
| - | * **Für YMPD (Alternative):** | + | === Von Spotify → Webradio |
| - | | + | - In der Spotify-App die Wiedergabe **pausieren** |
| + | - Ca. 3–5 Sekunden warten bis Raspotify den DAC freigibt | ||
| + | - In myMPD den gewünschten Stream starten | ||
| - | Jetzt hast du eine vollwertige Fernbedienung für deine Radio-Sender. | + | <code bash> |
| + | # Falls myMPD den DAC nicht bekommt — Raspotify manuell stoppen: | ||
| + | systemctl stop raspotify | ||
| + | mpc clear | ||
| + | mpc load BOB-Grunge | ||
| + | mpc play | ||
| + | # Raspotify danach wieder starten (wartet still im Hintergrund): | ||
| + | systemctl start raspotify | ||
| + | </ | ||
| - | ====== | + | === Von Webradio (myMPD) → Spotify: |
| + | | ||
| + | | ||
| + | - Wiedergabe starten | ||
| - | Wir erstellen ein Skript, das per Befehl sofort | + | <code bash> |
| + | # Falls Spotify | ||
| + | mpc stop | ||
| + | # Spotify-App neu verbinden | ||
| + | </ | ||
| - | ===== 11.1 Script anlegen | + | <WRAP tip> |
| + | **Faustregel: | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== 8. Autostart, Updates & Wartung | ||
| + | |||
| + | ==== 8.1 Alle Services auf Autostart setzen | ||
| <code bash> | <code bash> | ||
| - | nano / | + | systemctl enable raspotify mpd mympd |
| + | |||
| + | # Bei installiertem Snapcast zusätzlich: | ||
| + | systemctl enable snapserver snapclient | ||
| + | |||
| + | # Gesamtüberblick aller Service-Status: | ||
| + | systemctl status raspotify mpd mympd | ||
| </ | </ | ||
| - | Füge folgenden Inhalt ein: | + | ==== 8.2 Statische IP vergeben ==== |
| <code bash> | <code bash> | ||
| - | #!/bin/bash | + | # Über DietPi-Config (empfohlen): |
| - | # Playlist leeren | + | dietpi-config |
| - | mpc clear | + | # → Network Options → Adapters → Ethernet → Static |
| - | # Die Playlist " | + | |
| - | mpc load radio | + | # Oder manuell / |
| - | # Den 4. Sender in der Liste (Grunge) abspielen | + | auto eth0 |
| - | mpc play 4 | + | iface eth0 inet static |
| - | # Optional: Lautstärke auf 80% setzen | + | address 192.168.1.100 |
| - | mpc volume 80 | + | |
| + | | ||
| + | | ||
| </ | </ | ||
| - | Speichern mit **Strg+O**, **Enter**, Beenden mit **Strg+X**. | + | ==== 8.3 Updates einspielen ==== |
| - | ===== 11.2 Script ausführbar machen ===== | + | <code bash> |
| + | # DietPi-eigenes Update-System: | ||
| + | dietpi-update | ||
| - | Damit Linux das Skript als Programm erkennt: | + | # System-Pakete (MPD, Snapcast): |
| + | apt-get update && apt-get upgrade -y | ||
| - | <code bash> | + | # Raspotify und myMPD wurden über dietpi-software installiert: |
| - | chmod +x / | + | dietpi-software reinstall 170 # Raspotify |
| + | dietpi-software reinstall 183 # myMPD | ||
| </ | </ | ||
| - | ===== 11.3 Grunge starten ===== | + | <WRAP tip> |
| + | Die Konfigurationsdateien bleiben bei '' | ||
| + | </ | ||
| - | Egal wo du im Terminal bist, du kannst jetzt einfach tippen: | + | ==== 8.4 Nützliche Diagnosebefehle ==== |
| <code bash> | <code bash> | ||
| - | grunge.sh | + | # Lautstärkeregler prüfen und anpassen: |
| + | alsamixer | ||
| + | |||
| + | # ALSA-Gerätebelegung prüfen (wer blockiert hw:0,0?): | ||
| + | fuser / | ||
| + | |||
| + | # MPD-Logs live verfolgen: | ||
| + | tail -f / | ||
| + | |||
| + | # Snapcast-Verbindungen prüfen: | ||
| + | journalctl -u snapserver -f | ||
| + | |||
| + | # Aktuell spielenden Titel anzeigen: | ||
| + | mpc current | ||
| + | |||
| + | # Systemressourcen (CPU/RAM) des Pi 2B: | ||
| + | htop | ||
| </ | </ | ||
| - | Das Radio stoppt das aktuelle Programm und wechselt sofort zu Radio BOB Grunge. | + | ---- |
| - | Dieses Skript kann auch in Hausautomatisierungen (z. B. Home Assistant) oder auf Hardware-Taster am Gehäuse gelegt werden. | + | |
| + | ===== 9. Quick Reference — Ports & URLs ===== | ||
| - | ===== 12. Erweiterte Klangoptimierung | + | |< 100% 30% 15% 55% >| |
| + | ^ Service ^ Port ^ URL / Zweck ^ | ||
| + | | **myMPD Web-UI (HTTPS)** | 8443 | '' | ||
| + | | **myMPD Web-UI (HTTP)** | 8080 | '' | ||
| + | | **Snapcast Web-UI** | 1780 | '' | ||
| + | | MPD | 6600 | localhost only — via myMPD oder '' | ||
| + | | Raspotify (Zeroconf) | 44677 | Spotify-Connect-Discovery | ||
| + | | SSH | 22 | '' | ||
| - | ==== Software-Mixer deaktivieren | + | ---- |
| + | |||
| + | ===== 10. Fehlerbehebung ===== | ||
| + | |||
| + | ==== Spotify Connect-Gerät erscheint nicht ==== | ||
| <code bash> | <code bash> | ||
| - | nano /etc/ | + | systemctl status raspotify |
| + | journalctl -u raspotify -n 50 | ||
| + | |||
| + | # Zeroconf | ||
| + | apt-get install -y avahi-daemon | ||
| + | systemctl enable avahi-daemon && systemctl start avahi-daemon | ||
| </ | </ | ||
| - | Einfügen: | + | ==== Kein Ton / ALSA-Fehler ==== |
| - | < | + | < |
| - | pcm.!default { | + | # Lautstärke prüfen (oft nach Installation auf 0 oder Mute): |
| - | type hw | + | alsamixer |
| - | card 0 | + | |
| - | } | + | # Wer blockiert den DAC? |
| - | ctl.!default { | + | fuser /dev/snd/* |
| - | type hw | + | |
| - | | + | # ALSA-Konfiguration direkt testen: |
| - | } | + | aplay -D hw:0,0 / |
| + | |||
| + | # HifiBerry-Overlay aktiv? | ||
| + | dtoverlay -l | ||
| </ | </ | ||
| - | Neustart: | + | ==== MPD startet nicht — exit-code Fehler ==== |
| <code bash> | <code bash> | ||
| - | reboot | + | # Detaillierte Fehlerausgabe: |
| - | </ | + | journalctl -xeu mpd.service |
| - | ---- | + | # Häufigste Ursache auf Trixie: sticker_database noch in mpd.conf |
| + | # → Zeile entfernen: | ||
| + | nano / | ||
| + | # sticker_database | ||
| - | ===== 13. Dauerbetrieb optimieren ===== | + | # Zweithäufigste Ursache: Datenbankverzeichnis fehlt |
| + | mkdir -p / | ||
| + | chown -R mpd:audio / | ||
| - | <code bash> | + | systemctl restart mpd |
| - | nano / | + | |
| </ | </ | ||
| - | Hinzufügen: | + | ==== MPD startet nicht — Berechtigungsfehler ==== |
| - | < | + | < |
| - | avoid_warnings=1 | + | chown -R mpd:audio / |
| - | disable_splash=1 | + | chmod 750 / |
| + | |||
| + | # Named Pipe neu anlegen (falls Snapcast genutzt wird): | ||
| + | rm -f / | ||
| + | mkfifo / | ||
| + | chown mpd:audio / | ||
| + | |||
| + | systemctl restart mpd | ||
| </ | </ | ||
| - | Neustart: | + | ==== Radio Bob streamt nicht ==== |
| <code bash> | <code bash> | ||
| - | reboot | + | # Stream-URL direkt testen: |
| + | mpc clear | ||
| + | mpc add http:// | ||
| + | mpc play | ||
| + | mpc status | ||
| + | |||
| + | # Internetverbindung prüfen: | ||
| + | ping radiobob.de -c 4 | ||
| </ | </ | ||
| - | ---- | + | <WRAP info> |
| + | Aktuelle Stream-URLs immer unter [[https:// | ||
| + | </ | ||
| - | ===== 14. Bedienung im Alltag ===== | + | ==== myMPD nicht erreichbar |
| - | ==== Spotify ==== | + | <code bash> |
| + | # Auf welchem Port läuft myMPD? | ||
| + | ss -tlnp | grep mympd | ||
| + | # → Ausgabe zeigt Port 8080 (HTTP) und 8443 (HTTPS) | ||
| - | * Spotify-App öffnen | + | # Aufruf im Browser: |
| - | * Gerät auswählen | + | # https:// |
| - | * Musik starten | + | # http:// |
| - | ---- | + | systemctl status mympd |
| + | journalctl | ||
| + | </ | ||
| - | ==== Radio ==== | + | ==== Warteschlange leer / kein Stream startet |
| - | Per Weboberfläche oder: | + | In myMPD muss die Playlist erst in die Warteschlange geladen werden: |
| + | |||
| + | - Browse → Playlists → Stream antippen → **„Alle hinzufügen" | ||
| + | - Dann **Play** drücken | ||
| + | |||
| + | Oder per Kommandozeile: | ||
| <code bash> | <code bash> | ||
| + | mpc clear | ||
| + | mpc load BOB-Grunge | ||
| mpc play | mpc play | ||
| - | mpc stop | ||
| - | mpc next | ||
| - | mpc volume +5 | ||
| - | mpc volume -5 | ||
| </ | </ | ||
| - | ---- | + | ==== Raspotify oder myMPD Update nach Trixie-Upgrade |
| - | + | ||
| - | ==== Schnellstart Grunge | + | |
| <code bash> | <code bash> | ||
| - | grunge.sh | + | # Nach einem System-Upgrade neu installieren: |
| + | dietpi-software reinstall 170 # Raspotify | ||
| + | dietpi-software reinstall 183 # myMPD | ||
| + | |||
| + | # Konfiguration prüfen: | ||
| + | cat / | ||
| + | ls / | ||
| </ | </ | ||
| ---- | ---- | ||
| - | ===== Ergebnis ===== | + | <WRAP box round center 80%> |
| + | **Weiterführende Links**\\ | ||
| + | [[https:// | ||
| + | </ | ||
| - | Nach dieser Anleitung hast du: | + | ---- |
| - | + | //Getestet auf: Raspberry Pi 2B v1.1 + HifiBerry DAC+ → Kenwood HD 1000 · DietPi ARMv7 / Debian Trixie (13) · Stand: März 2026// | |
| - | * Spotify Connect | + | |
| - | * Radio BOB + Grunge | + | |
| - | * Handy-Steuerung | + | |
| - | * Optimierten Sound | + | |
| - | * Autostart | + | |
| - | * Headless-Betrieb | + | |
| - | * Stabilen Dauerbetrieb | + | |
| - | + | ||
| - | Deine Stereoanlage ist jetzt ein moderner Netzwerkplayer. | + | |
