Der Wunsch nach einem günstigen, fernsteuerbaren Mulitroom Audio System hat mich dazu bewogen, dieses Thema in Angriff zu nehmen. Herausgekommen ist dabei ein Prototyp, der vielleicht als Grundlage für ähnliche Projekte gut zu gebrauchen ist. Deshalb möchte ich euch das Ergebnis nicht vorenthalten.
Grundsätzlich ähnelt der Ansatz den allseits bekannten Raspi + DAC + passende Software = Multiroom Client Konzept.
Allerdings gab es von meiner Seite einige Anforderungen, die sich zu allen mir bisher bekannten Umsetzungen unterschieden:
Herausgekommen ist dabei ein 1HE-Gerät mit Raspberry 1B (war vorhanden), 8 Endstufen-Modulen, Standard 19V-Notebook Netzteil und der von anderen Projekten bereits bekannten 8-Kanal-Soundkarte Logilink 7.1. Die Unkosten betrugen in meinem Fall durch die schon vorhandenen Teile < 50 €. Leider hat sich der Preis der Endstufenmodule (Stand 01.12.21) zwischenzeitlich vervielfacht.
Die Herausforderungen bei der Hardware waren:
Herausforderungen auf der Softwareseite:
Das bisherige Ergebnis:
image_55023.jpg
Eckdaten:
*die passende asound.conf für vier Stereo- bzw. 8 Monokanäle
Die zusätzlich erstellten "Ausgänge" tauchen im System nirgends auf. Lediglich durch die Verknüpfung mit dem Befehl "-o" in den einzelnen Instanzen werden sie angesprochen (oder natürlich auch mit jedem anderen Player auf der Kommandozeile), also davon nicht verwirren lassen. Auch können die einzelnen Instanzen bis dato nicht separat über die pCP-Konfigurationsoberfläche angesprochen werden, wohl aber über die Oberfläche des LMS.
piCorePlayer 3.02 Einstellungen:
weitere Instanzen von squeezelite können mit einem Befehl wie
erstellt werden.
ab piCorePlayer 3.11 hat sich offenbar die Syntax geändert:
Wichtig dabei, für jede Instanz ist eine eindeutige (und frei gewählte!) MAC-Adresse und ein passender Name zu verwenden. GPIO Port auf eigene Bedürfnisse anpassen.
Falls mehr zusätzliche Instanzen benötigt werden, empfiehlt es sich die o.g. Befehle gleich direkt in der bootlocal.sh anzulegen und dort abzuspeichern.
Das Schaltbild für die simple Mute-Schaltung per GPIO.
Es ist so angedacht, dass die Endstufen gemutet sind sobald die 3,3V am Raspi anliegen, also sofort nachdem die Spannungsversorgung besteht und erst (per Low-Pegel an den Raspi Outputs) freigegeben werden, wenn ein Kanal aktiv ist. Das Schalten per High-Pegel würde zu unerwünschten Effekten beim Booten/Reboot des Raspi führen.
amp_mute.png
ggf. nützliche Komponenten für den Elektronikteil:
Weitere Punkte - vor dem Basteln noch zu beachten
Rauschen an Ausgängen minimieren - ab Werk kommen die Module mit 32dB Verstärkung
Nachträglich die Lautstärkeeinstellung mit alsamixer anpassen und dauerhaft speichern:
ruft die aktuelle Soundkarteneinstellung auf, mit F6 ist das richtige Audiogerät auswählbar und mit den Pfeiltasten die Lautstärke (in %) des jeweiligen Kanals zu justieren.
zum Abspeichern der Einstellungen.
In meinem Fall reicht je nach Raumsituation ein Wert zwischen 5 und 10%.
Im Detail werden verschiedene Maßnahmen zu Rauschreduktion in diesem Beitrag von Hochpass erläutert. Die eleganteste Variante dabei ist, die Verstärkung der Module auf ein brauchbares Niveau (meist 20-26dB) anzupassen.
Für ein optimales Ergebnis sollten diese Hinweise bereits vor dem Auf-/Zusammenbau des Gerätes beherzigt werden.
Wärmeentwicklung bei Rackeinbau beobachten, bei mir bisher unkritisch.
Passende Beschaltung um Ausschaltplopp zu eliminieren, nur notwendig, wenn das Gerät z.B. bei Abwesenheit oder Nachts komplett vom Strom gekappt werden soll
Es gibt auch andere Endstufenmodule, die direkt mit eingebauter Beschaltung gegen Ausschaltplopp geliefert werden, hier gibt es dann aber meist keinen nach außen geführten Mute-Anschluss.
Ich habe es letztlich so gelöst, dass ich den Raspi über sein eigenes Netzteil versorge und auch (per Aktor) schalte, also unabhängig vom Endstufennetzteil.
Als All-in-One Lösung würde ich derzeit einen simplen 2fach Schaltaktor mit in das Gehäuse verbauen, der nach Bedarf Raspi und Endstufen bzw. deren Netzteil separat schaltet. Das bringt viele zusätzliche Möglichkeiten (auch wenn der Raspi z.B. 24/7 durchlaufen soll und die Endstufen nicht). Auch eine Einschaltverzögerung der Endstufen, bis ein stabiler Zustand, d.h. pCP komplett hochgefahren, erreicht ist, ist damit kein Problem, eine zusätzliche Logikmaschine ist dafür hilfreich, ansonsten muss der Schaltaktor über entsprechende Zeitfunktionen an den Ausgängen verfügen.
Selbstverständlich kann man das Ganze auch vollkommen anders und eleganter/besser lösen - deshalb alle Angaben ohne Gewähr,
Wer wirklich Teile davon nachbauen möchte sollte möglichst wissen was er tut, und wie welche Bauteile entsprechend zu dimensionieren sind! Nachbauten auf eigene Gefahr!
Stand 19.05.2021:
Das oben beschriebene System läuft nun seit mehr als vier Jahren in unveränderter Form zuverlässig im Zusammenspiel mit den entsprechenden EDOMI LBS.
Auf den folgenden Seiten wurden von vielen Nutzern noch nützliche Hinweise zum erfolgreichen Nachbau beigetragen. Durchlesen lohnt sich unbedingt!
Stand 01.12.2021:
Links erneuert, Hinweis auf Fake-Module bei den Endstufen und Preisgefüge ergänzt.
Hier gibt es noch eine Linkliste zu Ergänzungen und weiterführenden Informationen zum Aufbau (Stand 10.12.2021) von rasor89
Grundsätzlich ähnelt der Ansatz den allseits bekannten Raspi + DAC + passende Software = Multiroom Client Konzept.
Allerdings gab es von meiner Seite einige Anforderungen, die sich zu allen mir bisher bekannten Umsetzungen unterschieden:
- zentraler Verstärker/Controller für den IT-Schrank
- möglichst niedrige Stromaufnahme im Standby / Betrieb (>20W Standby = NoGo)
- mindestens 4 unabhängig steuerbare Stereo-Ausgänge
- über vorhandene Plugins/Logikmodule mit verschiedenen Systemen (HS/Wiregate/Edomi,..) nutzbar
- bei Bedarf per Aktor vollständig abschaltbar (ohne negative Folgen für das eingesetzte Betriebssystem)
- kompakt
Herausgekommen ist dabei ein 1HE-Gerät mit Raspberry 1B (war vorhanden), 8 Endstufen-Modulen, Standard 19V-Notebook Netzteil und der von anderen Projekten bereits bekannten 8-Kanal-Soundkarte Logilink 7.1. Die Unkosten betrugen in meinem Fall durch die schon vorhandenen Teile < 50 €. Leider hat sich der Preis der Endstufenmodule (Stand 01.12.21) zwischenzeitlich vervielfacht.
Die Herausforderungen bei der Hardware waren:
- Endstufenmodule mit Standby-Schaltung finden, die bis ca. 24V Betriebsspannung und bis herab zu 4Ohm vertragen
- Stromversorgung von Raspi und Verstärkerteil massetechnisch entkoppeln um Störungen zu vermeiden (hat viele Nerven gekostet)
- passende Beschaltung finden, um die Ausgänge galvanisch getrennt per Raspi schalten zu können
Herausforderungen auf der Softwareseite:
- piCorePlayer so modifizieren, dass 4 Stereo Outputs und 4 squeezelite-Instanzen mit der Logilink Soundkarte möglich sind (war ein Kampf)
- alsamixer, asound.conf* und andere Dinge händisch anpassen und Änderungen dauerhaft speichern
Das bisherige Ergebnis:
image_55023.jpg
Eckdaten:
- piCorePlayer 3.02 als Softwaregrundlage, mit vier squeezelite-Instanzen, LMS läuft auf externem PC/NAS, intern ist ebenso möglich
- 8x TPA3118D2 Endstufenmodule ACHTUNG! Es sind derzeit viele Fake-Angebote mit gefälschten TPA3118D2 (28 statt 32 Pins) im Umlauf. Im Zweifelsfall Händler vorab kontaktieren oder über DE-Händler mit einfacherer Rückgabemöglichkeit bestellen.
- 19V, 90W Notebook-Netzteil
- 5V, 1A Schaltnetzteil für Raspi
- Logilink 7.1 Soundkarte
- 8x Optokoppler für GPIO Ausgänge zur Mute-Schaltung
- Verbrauch im Standby (alle Kanäle inaktiv) ca. 5,5W
- Verbrauch in Betrieb (alle Kanäle aktiv, geringe Lautstärke ca. 10W
- Verbrauch nach Abschalten per Aktor -> nichts; im Gegensatz zu anderen Systemen ist das hier ausdrücklich möglich und erwünscht
*die passende asound.conf für vier Stereo- bzw. 8 Monokanäle
Code:
######################################################################### ## CUSTOM ASOUND.CONF by mfd https://knx-user-forum.de/member/7968-mfd ######################################################################### ## Channel splitting your UA0099 USB sound card to get up to four ## independent stereo outputs (...and more ) ######################################################################### ## stereofront = the FRONT labeled green jack ## stereosurround = the SURROUND labeled black jack ## stereocenter = the CENTER / BASS labeled yellow jack ## stereoback = the BACK labeled black jack ## stereoall = all stereo outputs ## ## for up to eight mono output channels use: ## ## monofrontl = the FRONT labeled green jack - tip ## monofrontr = the FRONT labeled green jack - ring ## monosurroundl = the SUROUND labeled black jack - tip ## monosurroundr = the SUROUND labeled black jack - ring ## monocenterl = the CENTER / BASS labeled yellow jack - tip ## monocenterr = the CENTER / BASS labeled yellow jack - ring ## monobackl = the BACK labeled black jack - tip ## monobackr = the BACK labeled black jack - ring ######################################################################### ######################################################################### ## labels and colors could be different for differnt vendors or ## versions of the device (Logilink, Sewell, Sweex, ...) ######################################################################### ## put this file into your /ect/asound.conf ######################################################################### pcm.logilink { # alias for our sound card type hw # must be hw in our case card 1 # check your correct card number by typing device 0 # 'aplay -l' in your terminal } # the 1st usb card on the Raspi shows as # card 1: Device [USB Sound Device], device 0: USB Audio [USB Audio] ctl.logilink { type hw card 1 device 0 } pcm.dmixer { type dmix ipc_key 1024 # must be unique number on your system ipc_perm 0666 # neccesary for normal user to have access slave.pcm "logilink" slave { period_time 0 period_size 1024 buffer_size 4096 rate 44100 channels 8 } bindings { 0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 } } pcm.!default { type plug slave.pcm "dmixer" } pcm.stereofront { type plug slave { pcm "dmixer" channels 8 } ttable.0.0 1 ttable.1.1 1 } pcm.stereocenter { type plug slave { pcm "dmixer" channels 8 } ttable.0.2 1 ttable.1.3 1 } pcm.stereoback { type plug slave { pcm "dmixer" channels 8 } ttable.0.4 1 ttable.1.5 1 } pcm.stereosurround { type plug slave { pcm "dmixer" channels 8 } ttable.0.6 1 ttable.1.7 1 } pcm.stereoall { type plug slave { pcm "dmixer" channels 8 } ttable.0.0 1 # input left and right to all 4 l+r outputs ttable.1.1 1 ttable.0.2 1 ttable.1.3 1 ttable.0.4 1 ttable.1.5 1 ttable.0.6 1 ttable.1.7 1 } pcm.monofrontl { type route slave { pcm "dmixer" channels 8 } ttable.0.0 1 # in-channel 0, out-channel 0, 100% volume ttable.1.0 1 # in-channel 1, out-channel 0, 100% volume } pcm.monofrontr { type route slave { pcm "dmixer" channels 8 } ttable.0.1 1 ttable.1.1 1 } pcm.monocenterl { type route slave { pcm "dmixer" channels 8 } ttable.0.2 1 ttable.1.2 1 } pcm.monocenterr { type route slave { pcm "dmixer" channels 8 } ttable.0.3 1 ttable.1.3 1 } pcm.monobackl { type route slave { pcm "dmixer" channels 8 } ttable.0.4 1 ttable.1.4 1 } pcm.monobackr { type route slave { pcm "dmixer" channels 8 } ttable.0.5 1 ttable.1.5 1 } pcm.monosurroundl { type route slave { pcm "dmixer" channels 8 } ttable.0.6 1 ttable.1.6 1 } pcm.monosurroundr { type route slave { pcm "dmixer" channels 8 } ttable.0.7 1 ttable.1.7 1 }
piCorePlayer 3.02 Einstellungen:
weitere Instanzen von squeezelite können mit einem Befehl wie
Code:
/mnt/mmcblk0p2/tce/squeezelite-armv6hf -n "piCorePlayer2" -o stereosurround -a 80:::0: -m ab:cd:ef:12:34:02 -C 1 -G 8:L -z
ab piCorePlayer 3.11 hat sich offenbar die Syntax geändert:
Code:
[FONT=arial]/usr/local/bin/squeezelite -n "piCorePlayer2" -o stereosurround -a 80:::0: -m ab:cd:ef:12:34:02 -C 1 -G 8:L -z[/FONT]
Falls mehr zusätzliche Instanzen benötigt werden, empfiehlt es sich die o.g. Befehle gleich direkt in der bootlocal.sh anzulegen und dort abzuspeichern.
Das Schaltbild für die simple Mute-Schaltung per GPIO.
Es ist so angedacht, dass die Endstufen gemutet sind sobald die 3,3V am Raspi anliegen, also sofort nachdem die Spannungsversorgung besteht und erst (per Low-Pegel an den Raspi Outputs) freigegeben werden, wenn ein Kanal aktiv ist. Das Schalten per High-Pegel würde zu unerwünschten Effekten beim Booten/Reboot des Raspi führen.
amp_mute.png
ggf. nützliche Komponenten für den Elektronikteil:
- Siebelkos für Spannungsversorgung der Endstufenmodule
- Lochstreifenplatine(n)
- Buchsenleiste(n) um den Raspi zu kontaktieren
- Bauteile für Optokopplerbeschaltung
- Kabelmaterial mit passenden Querschnitten
Weitere Punkte - vor dem Basteln noch zu beachten
Rauschen an Ausgängen minimieren - ab Werk kommen die Module mit 32dB Verstärkung
Nachträglich die Lautstärkeeinstellung mit alsamixer anpassen und dauerhaft speichern:
Code:
alsamixer
Code:
sudo alsactl store sudo filetool.sh -b
In meinem Fall reicht je nach Raumsituation ein Wert zwischen 5 und 10%.
Im Detail werden verschiedene Maßnahmen zu Rauschreduktion in diesem Beitrag von Hochpass erläutert. Die eleganteste Variante dabei ist, die Verstärkung der Module auf ein brauchbares Niveau (meist 20-26dB) anzupassen.
Für ein optimales Ergebnis sollten diese Hinweise bereits vor dem Auf-/Zusammenbau des Gerätes beherzigt werden.
Wärmeentwicklung bei Rackeinbau beobachten, bei mir bisher unkritisch.
Passende Beschaltung um Ausschaltplopp zu eliminieren, nur notwendig, wenn das Gerät z.B. bei Abwesenheit oder Nachts komplett vom Strom gekappt werden soll
Es gibt auch andere Endstufenmodule, die direkt mit eingebauter Beschaltung gegen Ausschaltplopp geliefert werden, hier gibt es dann aber meist keinen nach außen geführten Mute-Anschluss.
Ich habe es letztlich so gelöst, dass ich den Raspi über sein eigenes Netzteil versorge und auch (per Aktor) schalte, also unabhängig vom Endstufennetzteil.
Als All-in-One Lösung würde ich derzeit einen simplen 2fach Schaltaktor mit in das Gehäuse verbauen, der nach Bedarf Raspi und Endstufen bzw. deren Netzteil separat schaltet. Das bringt viele zusätzliche Möglichkeiten (auch wenn der Raspi z.B. 24/7 durchlaufen soll und die Endstufen nicht). Auch eine Einschaltverzögerung der Endstufen, bis ein stabiler Zustand, d.h. pCP komplett hochgefahren, erreicht ist, ist damit kein Problem, eine zusätzliche Logikmaschine ist dafür hilfreich, ansonsten muss der Schaltaktor über entsprechende Zeitfunktionen an den Ausgängen verfügen.
Selbstverständlich kann man das Ganze auch vollkommen anders und eleganter/besser lösen - deshalb alle Angaben ohne Gewähr,
Wer wirklich Teile davon nachbauen möchte sollte möglichst wissen was er tut, und wie welche Bauteile entsprechend zu dimensionieren sind! Nachbauten auf eigene Gefahr!
Stand 19.05.2021:
Das oben beschriebene System läuft nun seit mehr als vier Jahren in unveränderter Form zuverlässig im Zusammenspiel mit den entsprechenden EDOMI LBS.
Auf den folgenden Seiten wurden von vielen Nutzern noch nützliche Hinweise zum erfolgreichen Nachbau beigetragen. Durchlesen lohnt sich unbedingt!
Stand 01.12.2021:
Links erneuert, Hinweis auf Fake-Module bei den Endstufen und Preisgefüge ergänzt.
Hier gibt es noch eine Linkliste zu Ergänzungen und weiterführenden Informationen zum Aufbau (Stand 10.12.2021) von rasor89
Kommentar