HifiBerry MiniAMP und das Knacken im Zusammenhang mit dem OnOff Shim

Registriere dich jetzt, um exklusive Vorteile zu genießen! Als registriertes Mitglied kannst du Inhalte herunterladen und profitierst von einem werbefreien Forum.
Mach mit und werde Teil unserer Community!
  • Hallo,


    ich habe mir auch gerade eine Phoniebox zusammengebaut und konnte alle Probleme lösen und das Teil funktioniert einwandfrei. Bis auf ein kleines Detail. Und bevor jetzt hier alle beim neuen User schreien: "Benutz die verdammte Suchfunktion". Das habe ich und zwar nicht nur die dieses Forums, sondern auch die große, Weltweite - Der HifiBerry MiniAMP knackt - wie bekannt - beim Ein- und Ausschalten des Raspberry PI (also entweder bei Netztrennung oder beim An- und Abschalten durch das OnOff Shim). Alle Antworten und Erwähnungen beschränken sich immer wieder auf ein "Ist halt so". Ich möchte es aber irgendwie perfekt haben und experimentiere daher schon seit ein paar Stunden herum.


    Man bekommt das ganze Knack-frei (und im Leerlauf auch 100% Rausch-frei), wenn man GPIO 16 (PIN 36) mit einem 10 kOhm Widerstand gegen GND schaltet. Das setzt im MiniAMP das Signal für MUTE auf LOW und schaltet den MiniAMP damit komplett auf lautlos. Das gilt dann auch für das komplett Ein- bzw. Ausschalten.


    Was mich dabei aber wundert, bei mir gibt die Ausgabe von gpio read 16 (habe auch 36 probiert, war mir nicht sicher, ob man GPIO oder PIN Nummer verwendet) dann trotzdem eine 1 aus, obwohl der Pegel auf LOW stehen müsste. Die Abschaltung erfolgt aber trotzdem. Laut Schaltplan (des HifiBerry MiniAMP) wird der PIN mit einem 10kOhm Widerstand auf dem HifiBerry auf HIGH gezogen. Rein rechnerisch komme ich dann auf ~2,5V, was der Raspberry ja noch als HIGH sieht. Deswegen habe ich auch 1kOhm gegen GND getestet, was aber ebenfalls in einem HIGH Signal endet. Da sind wir rechnerisch bei 0,45V. Da müsste der Raspberry PI ja eigentlich mal so langsam ein LOW annehmen.


    Unabhängig davon, dass der Raspberry hier für mich unsinnige Werte anzeigt, funktioniert die Abschaltung aber im Prinzip wunderbar. Damit das nun beim einschalten funktioniert, müsste GPIO nun eigentlich immer ein pull down bekommen, welches bei Wiedergabe dann "abgeschaltet" wird. Sprich bei Wiedergabe bräuchte an ein pull up, bzw müsste halt die Schaltung gegen GND öffnen.


    Hier kommt nun der Punkt, wo mich meine Kenntnisse dann auch schon verlassen. Angenommen ich würde einen GPIO als Output verwenden (bei mir sind nur noch GPIO 14, 15 und theoretisch 7) frei, wie könnte ich da dann den pull down öffnen und schließen?


    Hier übrigens für Interessierte mein aktuelles Setup, es fehlt noch das Gehäuse:

  • Ich bin einer Lösung ein gutes Stück näher. Im Prinzip wird es wohl ganz einfach: Ich hänge einen Widerstand mit 10kOhm zwischen PIN 34 und 36, was den HifiBerry MiniAMP nach dem Booten erstmal komplett muted (kein Knacken mehr). Vor einer Wiedergabe setze ich den PIN 36 (GPIO16) dann auf HIGH und definiere ihn als Output PIN um. Bei Pause/Stop/Herunterfahren muss der PIN 36 dann wieder auf LOW gezogen werden.


    raspi-gpio set 16 op dh - schaltet also den HifiBerry MiniAMP EIN

    raspi-gpio set 16 op dl - schaltet also den HifiBerry MiniAMP AUS


    Jetzt muss ich eigentlich nur noch schauen, dass ich das in den Quelltext der Phoniebox gebaut bekomme. ;)

  • Wer jetzt wissen will, wie ich es gelöst habe, kann gerne bei der Doku zu meiner Phoniebox nachschauen. Es ist eine Kombination aus der Drahtbrücke oben, etwas Anpassung an der /boot/config.txt und einem Skript beim herunterfahren. Ich lebe nun erstmal mit dem geringen rauschen, wenn nichts abgespielt wird. So muss an am Quellcode der Phoniebox nichts ändern.

    • Official Post

    Wer jetzt wissen will, wie ich es gelöst habe, kann gerne bei der Doku zu meiner Phoniebox nachschauen.

    Naja... Ich finde es ja richtig gut, dass Du eine, wie ich finde, wirklich interessante Lösung gefunden hast, aber würde das dann trotzdem gerne hier im Forum sehen wollen. Mit Deiner Signatur machst Du ja schon "Werbung" für Deinen Blog, von deinen heutigen letzten Beiträgen mal abgesehen. ;)

  • Ich habe in der Signatur doch nur den Raspberry PI bezogenen Beitrag verlinkt. Werbung wollte ich nicht machen. Sorry, wenn das so rüber kam. Ich hatte nur eigentlich keine Muße das noch mal zu tippen, nachdem hier in diesem Beitrag nicht eine Antwort kam und ich mich etwas verloren fühlte.


    Zur Sache: Ich habe nun im Prinzip meine oben schon erwähnte Drahtbrücke mit 10kOhm zwischen GPIO16 und GND gesetzt. Damit ist der HifiBerry MiniAMP dann erstmal gemuted beim hochfahren. In der /boot/config.txt definiere ich den MiniAMP dann als INPUT Pin und setze ihn auf HIGH: gpio=16=op,dh.


    Beim herunterfahren habe ich nun in rc.0 und rc.6 (also bei shutdown und reboot) ein kleines Script gelegt, welches im Prinzip GPIO16 dann wieder auf INPUT zurückstellt. Dadurch ist der MiniAMP dann wieder gemuted. Letzteres funktioniert allerdings nicht perfekt. Das kurze Knacken ist nur reduziert in der Lautstärke, aber nicht völlig weg. Ich denke hier müsst wer mit der Kenntnissen noch irgendein Bauteil hinzufügen. Dann wäre das knacken vermutlich völlig weg.


    Die Variante mit GPIO26 (Shutdown PIN) des Raspberry PI habe ich nicht hinbekommen. Mir ist laut der spärlichen Doku auch nicht ganz klar, ob man den Shutdown wieder rückgängig machen kann, oder ob das ein finales ausschalten sein soll. Die Doku schweigt sich auch leider dazu aus, ob da ein HIGH oder LOW erwartet wird oder welche Spannung man da braucht. Vielleicht hat da ja noch jemand Ideen. Ich würde mich ja wirklich sehr freuen, das noch komplett weg zu bekommen.

  • Zur Sache: Ich habe nun im Prinzip meine oben schon erwähnte Drahtbrücke mit 10kOhm zwischen GPIO16 und GND gesetzt. Damit ist der HifiBerry MiniAMP dann erstmal gemuted beim hochfahren. In der /boot/config.txt definiere ich den MiniAMP dann als INPUT Pin und setze ihn auf HIGH: gpio=16=op,dh.


    Beim herunterfahren habe ich nun in rc.0 und rc.6 (also bei shutdown und reboot) ein kleines Script gelegt, welches im Prinzip GPIO16 dann wieder auf INPUT zurückstellt. Dadurch ist der MiniAMP dann wieder gemuted. Letzteres funktioniert allerdings nicht perfekt. Das kurze Knacken ist nur reduziert in der Lautstärke, aber nicht völlig weg. Ich denke hier müsst wer mit der Kenntnissen noch irgendein Bauteil hinzufügen. Dann wäre das knacken vermutlich völlig weg.


    Hi Klaviatur,

    danke für die Lösung und die Erklärungen. Ich bin ein ziemlicher Anfänger, habe aber mittlerweile auch eine sehr schöne Box fertig gestellt und möchte nun den Feinschliff mit der Drahtbrücke hinbekommen.


    Ich habe die /boot/config.txt um "gpio=16=op,dh" ergänzt und einfach folgende Zeilen copy/paste umgesetzt:

    Code
    echo '#!/bin/bash' >> ~/mute-miniamp
    echo 'raspi-gpio set 16 ip' >> ~/mute-miniamp
    echo 'raspi-gpio set 26 op dl' >> ~/mute-miniamp
    sudo mv ~/mute-miniamp /etc/init.d/mute-miniamp
    sudo chown root:root /etc/init.d/mute-miniamp
    sudo chmod o+x /etc/init.d/mute-miniamp
    sudo ln -s /etc/init.d/mute-miniamp /etc/rc0.d/K01mute-miniamp
    sudo ln -s /etc/init.d/mute-miniamp /etc/rc6.d/K01mute-miniamp


    Die Drahtbrücke habe ich mit 100k Ohm Widerstand gelötet und auf PIN 34 und 36 (GND und GPIO16) aufgesteckt. Ich nutze ein Extensionboard und habe in die Reihe vor dem MiniAmp die Drahtbrücke aufgesteckt. (siehe Bild)


    Leider funktioniert es nicht. Habe ich etwas übersehen?


    Danke und viele Grüße,


    Jacky

  • Musst du ausprobieren. Wenn du mit `raspi-gpio set 16 op dh` danach das "rauschen" wieder einschalten kannst, könnte es gehen.


    Hast du ohne die Drahtbrücke mit dem Widerstand beim Hochfahren des Raspberry PI Interferenzen auf den Lautsprechern, wenn du das Ohr nah dran hältst?

  • Ok, werd ich ausprobieren.


    Aber aktuell kann ich das Rauschen (also den MiniAmp) mit raspi-gpio set 16 op dl ausschalten und raspi-gpio set 16 op dh einschalten. Leider fährt das System aktuell im eingeschalteten Zustand hoch.


    Ja, ich habe ohne Drahtbrücke die Interferenzen beim Hochfahren.

  • Der Widerstand darf maximal so groß sein, dass man mit einem `raspi-gpio set 16 op dh` wieder einschalten kann. Der Raspberry hat da für bestimmte Spannungen irgendwelche Grenzen. Wobei diese Grenze hier nicht vom Raspberry definiert wird, sondern ja vom Chip auf dem HifiBerry MiniAMP.

    Falls ein 680Ohm Widerstand nicht reicht, kannst du auch 2 in Reihe schalten. Ich bin da aber sicherlich kein Experte. Habe das durch Versuch und Irrtum ausprobiert und 10kOhm funktioniert hier gut.


    Die Interferenzen bleiben bei mir dann nach dem Start bei Zugriffen auf das Dateisystem. Besonders störend ist das bei mir, wenn es im abgespielten Track gerade leiser ist. Laut HifiBerry ist es kein Problem und sei normal. ;(

  • Hi,


    Klaviatur cool, das muss ich mal antesten! Das Thema ist mir komplett durch die Lappen gegangen, sehr gute Arbeit. Hast Du denn das "setzen" nach LOW und HIGH noch anders gelöst? Da es mittlerweile ja eine Art Bootsquenz-Dienst gibt für die Phoniebox, könnte man das super vor dem Startsound setzen. Andersrum verwendest Du ja auch den OnOffShim, dort kann man das prima nach abspielen des Shutdown-Sounds integrieren.


    Ich war etwas verwirrt, welche Widerstände Du nun benutzt hast. Mit 10k Ohm liege ich richtig?


    Grüße

    splitti

  • Hallo,


    ich habe 10kOhm verwendet. Aber scheinbar reicht auch ein kleinerer Widerstand. Da die Box bei den Kindern seit Weihnachten täglich im Einsatz ist, habe ich auch kein Softwareupdate mehr gemacht (hatte da ein paar Dinge angepasst). In die neuen Start- und Stoppskripte sollte sich das setzen von Low und High ja gut integrieren lassen.


    Falls ich da noch mal testen will, muss ich wohl eine zweite Box bauen. Die Kinder geben die nicht mehr her. 🙈

  • Kenne ich, daher hab ich hier mittlerweile eine Testbox und zwei Testsysteme mit Displays. Das Thema ist nen dickes Hobbys geworden. Aber echt starke Idee das so zu lösen, lieben Dank!

    Ich werde das sicher auch verbloggen, wo ich das Scripttechnisch hinterlege und hier informieren.