Phoniebox - 2 separate Soundkarten

  • Guten Abend Leute,


    die Phoniebox ist echt nen super Projekt und mein erstes RPi-Gebastel.


    Ich habe, wie ich finde, eine ganz gute Box zusammengebaut. Sie ist quasi im Dauereinsatz.

    Ich habe mich für die tasterlose Variante entschieden (außer einen An-Aus-Taster mit LED).

    Zur wesentlichen Hardware:

    - Raspberry Pi 3b+

    - HiFiBerry MiniAMP + Speedlink Lautsprecher

    - EasyAcc Powerbank + OnOffShim

    - Neuftech RFID-Reader


    Ich nutze die Spotify-Version der Phoniebox.


    Ich habe zugegebenermaßen wenig Ahnung weder von Elektrontechnik, noch von Programmiererei und dem ganzen Background.

    Umso eher bin ich froh, dass die Box gut läuft.


    Soweit, so gut...


    Mein Kleiner hat nun ein Faible für Kopfhörer entwickelt (mir solls Recht sein ;-P).


    Nun habe ich mir eine einfache USB Kopfhörer Soundkarte (DuKabel USB Externe Soundkarte auf 3,5 mm Klinke) gekauft und diese auch schon ins Ghäuse integriert und angeschlossen.


    Jetzt möchte ich mich an die Implementierung der Karte machen und stoße an meine Grenzen.


    Ich steuere die Box über RFID-Tags und möchte erreichen, dass ein Tag auf Kopfhörer schaltet, der andere auf Lautsprecher.


    Ich hab schonmal etwas umherprobiert (mit alsa, asound, blablabla) aber hab nie einen Ton aus den Kopfhörern bekommen, weswegen ich meine Versuche nicht weiter vertiefen möchte.


    Aber wie stelle ich das ganze denn nun auf Hardwareebene an?


    Hier mein bisheriger Stand:


    Code
    pi@phoniebox:~ $ cat /proc/asound/cards
    
    
    0 [sndrpihifiberry]: HifiberryDac - snd_rpi_hifiberry_dac
    snd_rpi_hifiberry_dac
    1 [Device         ]: USB-Audio - USB Audio Device
    GeneralPlus USB Audio Device at usb-3f980000.usb-1.1.2, full speed


    Code
    pi@phoniebox:~ $ cat /proc/asound/modules
    0 snd_soc_hifiberry_dac
    1 snd_usb_audio


    Code
    pi@phoniebox:~ $ mpc outputs
    Output 1 (Mute) is disabled


    Die Karte wird also vom System erkannt, ist aber bei mpc noch nicht gelistet.


    Ich habe sie schonmal in der Liste gehabt, habs aber wegen Nichtfunktioineren wieder resettet und möchte gerne eure Expertise dazu, um es von vornherein richtig zu machen und sie auch mit der Phoniebox verwenden zu können.


    Wie gehe ich nun detailliert vor, um die Karte zum Einsatz zu bringen?


    Habt vielen Dank im Voraus!


    Stefan

  • Guten Abend!


    Ich habe nun nochmal etwas rumprobiert.


    in der asound.conf siehts bei mir nun so aus:



    Über aplay ...

    Code
    aplay -D kopfhoerer /usr/share/sounds/alsa/Front_Center.wav

    kann ich nun zumindest über eine Ausgabe über den Kopfhörer erreichen.


    Jetzt bekomme ich aber Sound der Phoniebox nicht an die Kopfhörer gesendet.


    Ich hatte bereits mehrere Ideen, die alle nicht geklappt haben.

    In der asound.conf die Kopfhörer als default zu setzen klappt leider nicht. Da bekomme ich dann gar keinen Sound mehr.

    In der mpd.conf habe ich versucht, einen Audio_output zu definieren, aber da bin ich mangels Durchsicht und Verknüpfung zur Phoniebox gescheitert.


    Ich vermute, dass es mit dem iFace_name zusammenhängt, warum ich keinen Sound ausgegeben bekomme.

    Für den MiniAmp muss ich ja in der Datei Audio_iFace_Name "Master" verwenden.

    Vermutlich nutzt die USB-Karte aber einen anderen iFace-Name. Könnte es daran liegen?

    Und wie könnte ich das Problem dann lösen?


    Danke für eure Hilfe!

  • Hi,


    ich hab nun viel rumprobiert.


    Benzinbruder, du hast aber den entsprechenden Tipp gegeben, Danke dir.

    Ich hatte diesen Artikel auch schon vorher gefunden, bei mir wollte es aber partout nicht funktionieren.


    Doch wer lesen kann, ist klar im Vorteil.


    Die dort beschriebene Lösung ist für die Phoniebox Classic Version, nicht für die Spotify Version.


    Bei der Classic Version wird MPD verwendet und dann klappt das auch, die Spotify Version nutzt aber Mopidy, was mich zuerst total verwirrt hat.


    Zuletzt klappte es aber nach vielem Versuchen wie folgt:


    Meine asound.conf habe ich wie von mir oben beschrieben gelassen

    Es gibt 2 Versionen der mopidy.conf (/etc/mopidy/):

    Code
    ...
    [audio]
    output = alsasink
    mixer_volume = 30
    ...


    Code
    ...
    [audio]
    output = alsasink device=kopfhoerer
    mixer_volume = 30
    ...

    Diese beiden Versionen werden entsprechend per Triggerung durch einen RFID-Tag in die richtige mopidy.conf geschrieben und dann der Service neugestartet.


    ~/RPi-Jukebox-RFID/scripts/rfid_trigger_play.sh:

    Code
    ...
            $SWITCHSPEAKER)
                    sudo cp /etc/mopidy/mopidy_speaker.conf /etc/mopidy/mopidy.conf && sudo service mopidy restart
                    ;;
            $SWITCHKOPFHOERER)
                     sudo cp /etc/mopidy/mopidy_kopfhoerer.conf /etc/mopidy/mopidy.conf && sudo service mopidy restart
                    ;;
    ...


    $SWITCHSPEAKER und $SWITCHKOPFHOERER sind entsprechend in der ~/RPi-Jukebox-RFID/settings/rfid_trigger_play.conf definiert.


    So funktioniert es für mich nun wunderbar.

    Einizges Manko ist, dass beim Wechsel auf die Kopfhörer die Wiedergabe komplett stoppt und man sie neustarten muss, sie setzt nicht fort. Aber das ist eher eine kleine Nebensache und mein Kleiner entscheidet sich idR vorher, ob der per Kopfhörer oder Lautsprecher hören möchte.


    Danke für eure Unterstützung!

  • Hey Leute,


    ich muss nochmal kurz um Unterstützung bitten.


    Beim Start der Phoniebox möchte ich es nun so haben, dass immer die Lautsprecher aktiv sind und nicht das zuletzt verwendete Device.


    Als Überlegung hatte ich, in irgendeinem Startscript aus dem Init.d-Ordner (vornehmlich das mopidy-Script) ganz am Anfang das einzufügen, damit vor dem Start des Service die mopidy.conf nochmal mit den Speaker-Daten gefüllt wird:


    Code
    sudo cp /etc/mopidy/mopidy_speaker.conf /etc/mopidy/mopidy.conf


    Das funktioniert leider nicht, die alte mopidy.conf bleibt erhalten. Als mögliche Ursache habe ich gedacht, dass vlt. sudo noch nicht bereit zur Verwendung ist und habe es noch ins Script als required mit aufgenommen. Aber auch da hat sich nix getan. Auch mit dem Befehl cp ohne sudo vorangestellt war das Überschreiben der mopidy.conf erfolglos.


    Was übersehe ich da gerade, warum das Datei-Kopieren über das mopidy-Starterscript nicht funktioniert?


    Danke für eure Hilfe.


    EDIT: mir fällt gerade ein, dass Mopidy ja als Service gestartet wird. Kann es sein, dass dann das init.d-Script gar nicht verwendet wird, sondern jenes?

    /lib/systemd/system/mopidy.service

    Dann würde es sich erschließen, warum ich nicht kopieren kann. Ich werds wohl heute Abend nochmal mit den Eintragungen in der mopidy.service versuchen, mal schauen, obs dann klappt.