Zitat von blaum
Beitrag anzeigen
Ankündigung
Einklappen
Keine Ankündigung bisher.
8-Kanal Multiroom Audio Controller+Verstärker auf piCorePlayer Basis
Einklappen
X
-
Zitat von blaum Beitrag anzeigenIch schätze, es muss etwas getan werden, um die Reihenfolge der USB-Boxen fest zu machen...Zitat von tomster2 Beitrag anzeigenJa, hat jemand. Durchsuche einfach Mal diesen Thread.
Kommentar
-
Ich steck zwar alles andere als im Detail in der ALSA-Konfig, aber letztendlich machst du in der asound.conf doch genau das. Du definierst mit card und device die jeweilige Soundkarte, respektive deren "Hardwareadresse". Zumindest solang Du die Soundkarten nicht dauernd umsteckst, bleibt die Reihenfolge doch gleich.
--edit wegen nomml nachgedacht--
Wenn die Karten an einem USB-Hub angeschlossen sind (oder umgesteckt werden), kann das natürlich anders ausschauen. Da wechseln die Zuweisungen schon gerne Mal. Ich hatte das in einem anderen Fall (vor Jahren) über eine "feste" Zuweisung der tty-devices mittels udev-Rules gemacht. Keine Ahnung, ob das auf tinycore linux auch geht (oder in konkretem Fall hilft). Ich vermute aber schon.
So in etwa:
https://www.meintechblog.de/2020/09/...en-ansprechen/
--edit vom edit--
Anscheined adressiert ALSA dieses Problem wohl selbst:
Module ordering problems
It may be that the sound card order is wrong after booting, but running (as root)
/etc/init.d/alsasound restart
or
/sbin/alsa force-reload
gives the wanted card order.
This can happen because udev is loading some sound driver before alsasound, and alsasound gets confused. A restart will first unload all the sound modules and when restarting, alsasound will work as expected.
Von daher vermute ich, dass picoreplayer beim Start genau DAS macht. Einfach ALSA am Ende des Bootvorgangs neu zu starten.Zuletzt geändert von tomster2; 29.06.2021, 13:20.
Kommentar
-
Hallo zusammen,
mein Setup läuft seit längerem absolut stabil und zuverlässig. Auch die kürzliche Erweiterung um eine zweite Soundkarte um 10 Lautsprecher bedienen zu können, hat problemlos geklappt.
Aber, wie ich festgestellt habe, füllen die durch rc.local gestarteten Skripts kontinuierlich meine Logging-Dateien auf bis der Speicherplatz meiner SD-Karte des Raspberry vollständig gefüllt ist.
Meine rc.local Datei schaut folgendermaßen aus:
Code:#!/bin/sh -e # # This script is executed at the end of each multiuser runlevel. # Make sure that the script will "exit 0" on success or any other # value on error. FLAG="/opt/afterfirstboot.lock" FIRSTBOOT="/boot/first-boot.sh" # Only executed after first boot if [ ! -f "$FLAG" ]; then echo "[openHABian] Flag file 'afterfirstboot.lock' not found, continuing with '$FIRSTBOOT' script." if [ ! -f "$FIRSTBOOT" ]; then "[openHABian] 'first-boot.sh' not found, Exiting."; exit 0; fi if (/bin/bash "$FIRSTBOOT"); then echo "[openHABian] Finishing up... " echo "[openHABian] Created after first boot script succeeded (see /etc/rc.local). Do not delete." > "$FLAG" else echo "[openHABian] Script '$FIRSTBOOT' failed." fi fi (/bin/sleep 15 && sudo systemctl start knxd) (sudo systemctl stop openhab) (/bin/sleep 90 && sudo mount 192.168.178.25:/ /mnt/nas) (/bin/sleep 100 && sudo systemctl start knxd) (squeezelite -n "Hobbyraum" -o stereofront2 -a 80:::0: -m ab:cd:ef:12:34:60 -z) (squeezelite -n "Küche" -o stereosurround2 -a 80:::0: -m ab:cd:ef:12:34:61 -z) (squeezelite -n "Bad EG" -o monocenterr2 -a 80:::0: -m ab:cd:ef:12:34:62 -z) (squeezelite -n "Bad DG" -o monocenterl2 -a 80:::0: -m ab:cd:ef:12:34:63 -z) (squeezelite -n "Garage" -o stereoback2 -a 80:::0: -m ab:cd:ef:12:34:64 -z) (squeezelite -n "Fitness" -o stereofront1 -a 80:::0: -m ab:cd:ef:12:34:65 -z) (sudo /home/tc/muting_power.sh) exit 0
Code:$ [ 282.501908] rc.local[657]: + [ 1 = 0 ] Stopped ab:cd:ef:12:34:61. Mute GPIO10. . Count: 1 [ 282.503582] rc.local[657]: + [ 0 -ge 3 ] [ 282.514338] rc.local[657]: + COUNT1=1 [ 282.515837] rc.local[657]: + echo Stopped ab:cd:ef:12:34:60 or ab:cd:ef:12:34:65. Mute GPIO9. . Count: 1 [ 282.519399] rc.local[657]: + echo ab:cd:ef:12:34:61 status 0 0 [ 282.521009] rc.local[657]: + echo exit [ 282.526613] rc.local[657]: + nc 192.168.178.25 9090 [ 282.528257] rc.local[657]: + RESULT=ab%3Acd%3Aef%3A12%3A34%3A61 status 0 0 player_name%3AK%C3%BCche player_connec$ [ 282.530332] rc.local[657]: + + echo ab%3Acd%3Aef%3A12%3A34%3A61 status 0 0 player_name%3AK%C3%BCche player_connec$ [ 282.533546] rc.local[657]: playlist%20shuffle%3A0 playlist%20mode%3Aoff seq_no%3A0 playlist_cur_index%3A0 playli$ [ 282.535575] rc.local[657]: + [ 1 = 0 ] [ 282.537345] rc.local[657]: + [ 0 -ge 3 ] [ 282.539227] rc.local[657]: + COUNT2=1 [ 282.540589] rc.local[657]: + echo Stopped ab:cd:ef:12:34:61. Mute GPIO10. . Count: 1 [ 282.542285] rc.local[657]: + echo ab:cd:ef:12:34:62 status 0 0 [ 282.544530] rc.local[657]: + echo exit Stopped ab:cd:ef:12:34:62 or ab:cd:ef:12:34:63. Mute GPIO11. . Count: 1 [ 282.546525] rc.local[657]: + nc 192.168.178.25 9090 [ 282.554855] rc.local[657]: + RESULT=ab%3Acd%3Aef%3A12%3A34%3A62 status 0 0 player_name%3ABad%20EG player_connecte$ [ 282.558283] rc.local[657]: + + echo ab%3Acd%3Aef%3A12%3A34%3A62grep status mode%3Aplay 0 [ 282.562666] rc.local[657]: 0 player_name%3ABad%20EG player_connected%3A1 player_ip%3A192.168.178.44%3A48876 powe$ [ 282.564523] rc.local[657]: + [ 1 = 1 ] Stopped ab:cd:ef:12:34:64. Mute GPIO25. . Count: 1 All players stopped. Count power off: 1
Code:Sep 29 17:17:10 openHABianPi knxd[646]: Layer 0 [18:C.tpuarts/log 0.006] Start Sep 29 17:17:10 openHABianPi knxd[646]: Layer 0 [20:C.tpuarts/log 0.006] Start Sep 29 17:17:10 openHABianPi knxd[646]: Layer 0 [19:C.tpuarts/TPU_ser 0.007] Opened /dev/ttyAMA0 with baud 19200 Sep 29 17:17:10 openHABianPi knxd[646]: Layer 2 [19:C.tpuarts/TPU_ser 0.007] Opened Sep 29 17:17:10 openHABianPi knxd[646]: Layer 2 [19:C.tpuarts/TPU_ser 0.007] Buffer Setup on fd 4 Sep 29 17:17:10 openHABianPi knxd[646]: Layer 0 [20:C.tpuarts/log 0.007] Started Sep 29 17:17:10 openHABianPi knxd[646]: Layer 8 [17:C.tpuarts/LowF 0.007] state: new > start Sep 29 17:17:10 openHABianPi knxd[646]: Layer 0 [17:C.tpuarts/LowF 0.007] SendReset 01 Sep 29 17:17:10 openHABianPi knxd[646]: Layer 0 [20:C.tpuarts/log 0.007] Send(001): 01 Sep 29 17:17:10 openHABianPi knxd[646]: Layer 4 [15:C.tpuarts/Conn 0.007] >up Sep 29 17:17:10 openHABianPi knxd[646]: Layer 3 [12:B.unix/local 0.007] Start: cfg:B.unix Sep 29 17:17:10 openHABianPi knxd[646]: Layer 5 [12:B.unix/local 0.007] down => >up Sep 29 17:17:10 openHABianPi knxd[646]: Layer 8 [12:B.unix/local 0.007] OpenLocalSocket /tmp/knx Sep 29 17:17:10 openHABianPi knxd[646]: Layer 8 [12:B.unix/local 0.008] LocalSocket opened Sep 29 17:17:10 openHABianPi knxd[646]: Layer 5 [12:B.unix/local 0.008] >up => up Sep 29 17:17:10 openHABianPi knxd[646]: Layer 4 [12:B.unix/local 0.008] up Sep 29 17:17:10 openHABianPi knxd[646]: Layer 5 [12:B.unix/local 0.008] Started Sep 29 17:17:10 openHABianPi knxd[646]: Layer 4 [12:B.unix/local 0.008] up Sep 29 17:17:10 openHABianPi knxd[646]: Layer 3 [ 9:A.tcp/inet 0.008] Start: cfg:A.tcp Sep 29 17:17:10 openHABianPi knxd[646]: Layer 5 [ 9:A.tcp/inet 0.008] down => >up Sep 29 17:17:10 openHABianPi knxd[646]: Layer 8 [ 9:A.tcp/inet 0.008] OpenInetSocket 6720
Kommentar
-
Zitat von marhal Beitrag anzeigenHallo alle zusammen
So Teile sind bestelltund dann kann es losgehen ans Nachbauen. Hat jemand von euch vielleicht ein Bestückungsplan für die Platine ? Wo ich mich etwas dran halten kann ? Sprich wo der Kondensator hinkommt. Wie habt ihr diese gestaltet ?
Gruß
Marhal
hast Du eventuell eine Teileliste ?
Kommentar
-
Guten Morgen zusammen,
ich habe diesen Thread schon sicher 2 Jahre in meinen Favoriten und jetzt kommt es so langsam in die Richtung einer Umsetzung. Vielen Dank für die vielen Infos!!
Ich hätte dennoch 2 Fragen:- Ich möchte das ganze nicht mit einem Pi sondern einem Container unter Proxmox umsetzen. USB Soundkarte durchreichen und Squeezelite Instanzen anlegen sollte hier nicht das Problem sein. Wie kann ich allerdings die Mute-Schaltung umsetzen? Könnte man das auch mit einem Aktor lösen?
- Wir nutzen im offenen Küchenbereich sehr oft einen Echo um über Amazon Musik zu hören. Wie wird das in diesem Setup eingebunden bzw. hat das jemand am laufen.
Ich dachte an den Input eines Echo Dot über Klinke an den Mic Eingang der Soundkarte. Dann bin ich über das Waveinput Plugin des LMS gestolpert. Wenn das funktioniert, müsste allerdings der Player das Waveplugin "Track" dauerhaft spielen, egal ob der Echo gerade eine Ausgabe hat oder nicht?
Kommentar
-
Zitat von znaeb Beitrag anzeigen[*]Ich möchte das ganze nicht mit einem Pi sondern einem Container unter Proxmox umsetzen. USB Soundkarte durchreichen und Squeezelite Instanzen anlegen sollte hier nicht das Problem sein. Wie kann ich allerdings die Mute-Schaltung umsetzen? Könnte man das auch mit einem Aktor lösen?
Kommentar
-
Zitat von znaeb Beitrag anzeigenGuten Morgen zusammen,
ich habe diesen Thread schon sicher 2 Jahre in meinen Favoriten und jetzt kommt es so langsam in die Richtung einer Umsetzung. Vielen Dank für die vielen Infos!!
Ich hätte dennoch 2 Fragen:- Ich möchte das ganze nicht mit einem Pi sondern einem Container unter Proxmox umsetzen. USB Soundkarte durchreichen und Squeezelite Instanzen anlegen sollte hier nicht das Problem sein. Wie kann ich allerdings die Mute-Schaltung umsetzen? Könnte man das auch mit einem Aktor lösen?
- Wir nutzen im offenen Küchenbereich sehr oft einen Echo um über Amazon Musik zu hören. Wie wird das in diesem Setup eingebunden bzw. hat das jemand am laufen.
- ich habe das so ähnlich am laufen bei mir, allerdings habe ich das mit MPD realisiert:
- Virtualisierung: XCP-ng (open soruce XenServer)
- VM als Medienzentrale mit durchgereichter 8-Kanal USB-Soundkarte
- Soundkarte ist in 4x2 Kanäle aufgeteilt für bis zu 4 Zimmer (natürlich beliebig erweiterbar)
- Jedes Zimmer hat einen Verstärker, der an einem Aktor hängt -> Edomi-logik über MPD-client-Erweiterung ist dafür natürlich notwendig -> wird ein Zimmer ausgewählt, schaltet der Aktor den Verstärker ein
- es gehen natürlich auch alle Zimmer parallel
- Ist auch kein Zimmer mehr aktiv, wird der MPD-client abgeschaltet
- in MPD sind aktuell eingebunden: lokale Musikdatenbank, webradio
- die wichtigesten features sind dabei direkt in edomi realisiert (Lautstärke, Zimmerauswahl, Start, Stop, Vor, Zurück, cover, etc.), den Rest öffne ich bei Bedarf über eine eingebundene website und "MYMPD"
Zitat von znaeb Beitrag anzeigen
Ich dachte an den Input eines Echo Dot über Klinke an den Mic Eingang der Soundkarte. Dann bin ich über das Waveinput Plugin des LMS gestolpert. Wenn das funktioniert, müsste allerdings der Player das Waveplugin "Track" dauerhaft spielen, egal ob der Echo gerade eine Ausgabe hat oder nicht?
Die Einbindung von amazon echo könnte dabei über das "upmpdcli" erfolgen, damit ist es möglich UPNP input beim MPD server zu realisieren.
Airplay -> upmpdcli -> mpd-server -> abspielen im gewünschten Zimmer
Habe ich schon mal erfolgreich getestet. Allerdings gibt es das Problem, dass es dabei zu einer gewissen Latenz kommt, was dem UPNP geschuldet ist. Das ist für mich aber nicht ok, somit habe ich das nicht weiter verfolgt. Mangels Zeit habe ich mich hier auch noch nicht weiter drum gekümmert. Der Rest läuft super stabil.
Kommentar
-
Genau, so wie du das mit EDOMI beschreibst, hätte ich mir das auch gedacht. In Pseudocode so irgendwie. Beliebig komplexer.Code:If playing set on Else set off end
Ich hätte schon echt große Lust so ein Setup nachzubauen. Aber die Integration von Amazon music ist bei unserem Usecase Zuhause ein KO-Kriterium.
In dem Fall hilft nur eine echte Audio-Matrix. Oder gibt es ein anderes Bauteil, das 2 Audiosignale ferngesteuert umschalten kann?
Kommentar
-
Über Edomi, das MPD_plugin und mympd-api-call lässt sich bei mir alles abfragen / schalten / visualisieren. Man muss ja nicht nur denn Aktor anwählen, sondern muss dem mpd-client auch sagen, er möge auf der soundkarte jetzt diesen Kanal "aktiv" schalten. Das geht aber ganz einfach per shell-skript, da ist der mpd-client wirklich super stabil zu betreiben. Man kann bei jedem Schaltvorgang in edomi bzw. beim Start von edomi die Stati abfragen und das dann über die Edomi-Logik abbilden. In dem Fall mit einem Amazon-Echo würde ich mal einen http-input-stream (digitale Variante) oder wie oben beschrieben, den Mikrofoneingang, nutzen. Hab ich aber tatsächlich noch nie ausprobiert.
Knacken/ploppen tut bei mir natürlich nix, weil bei mir die "Bastellösung" nur auf der softwareseite liegt. Als hardware verwende eine ich eine echte Audio-Matrix mit recht günstiges PA-euqipment (weil kompatibel zum 19" Schaltschrankformat) mit softstart-Funktion -> damit es eben nicht knackt. Ein Abwählen des Zimmers in Edomi bewirkt zum einen das softwareseitige Deaktivieren des Soundkanals und parallel ein richtiges Abschalten der Endstufe.
Natürlich kostet das ganz mehr als eine Bastellösung, aber wenn mir da mal was abraucht, dann eben Endstufe raus und neue Endstufe rein und weiter geht's. Alles was es im KNX-Bereich für multiroom gibt, kostet um ein Vielfaches mehr.
Kommentar
-
Als USB-Soundkarte verwende ich diese hier, aufgeteilt auf 4x2 Stereo-Kanäle:
Renkforce RF-4355800 7.1 Soundkarte
Als Verstärker ist es dieses Modell, 1x pro Raum:
the t.amp S-75 MK II Endstufe
Dazu braucht es dann noch das entsprechende Audio-Kabel:
Mini-Klinke-Stereo auf 2x6,3mm Klinke
Alternativ wurde mir in einer längeren Diskussion auch dieser hier empfohlen:
the t.amp E400 Stereo-Endstufe
Hat aus meiner Sicht aber den Nachteil, dass dieser einen aktiven Lüfter hat. Da ich nicht so viel Leistung brauche und die kleinen multiroom-Lautsprecher sowieso nur als Hintergrundbeschallung taugen/verwendet werden, ist die Endstufe bei mir mehr als ausreichend. Die "audiophilen Qualitätsprobleme" liegen hier nicht an der Endstufe sondern an den kleinen Wandlautsprechern.
Die USB-Soundkarte ist aktuell eher aus der Not gebohren, mir wäre eine PCIe-Variante eigentlich lieber, da diese verschiedene Vorteile innerhalb der VM hätte, aber ich hab nichts vernünftiges für Linux gefunden, die auch preislich ok wäre. Das ist ggf. noch nicht final und würde ich ändern, wenn ich was besseres finde. Andererseits für die Wandlautsprecher auch vollkommen ausreichend.
Kommentar
Kommentar