Phoniebox 2.0 rc7: MPD spielt über RFID-Karte gewählte Musik nicht ab

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Also ich habe momentan das Problem, dass mein onoffahim rumzickt, ich muss meinen Pi direkt an die powerbank schließen, sonst bootet er alle 5 sek neu. Also Probleme gibt es bei mir auch immer wieder :) dafür kann mein Kind die Box durch die Gegend pfeffern und es scheint ihr nichts auszumachen.. bis auf den onoffshim..

    Da tippe ich auf Undervoltage. Ich habe meinen OnOffShim wirklich gequält, bei 450 Grad daran gelötet, mir der Zange das Teil verbogen, damit ich ich nen PIN Header abkriege. Der ist krum und schief, aber der lüppt perfekt!

    Wie betreibst Du den OnOffShim? Mittlerweile rate ich von Jumperkabeln ab, direkt aufgesteckt und es rennt!

  • Phoniebox 2.0 rc7: MPD spielt über RFID-Karte gewählte Musik nicht ab? Schau mal ob du hier fündig wirst!

  • Da tippe ich auf Undervoltage. Ich habe meinen OnOffShim wirklich gequält, bei 450 Grad daran gelötet, mir der Zange das Teil verbogen, damit ich ich nen PIN Header abkriege. Der ist krum und schief, aber der lüppt perfekt!

    Wie betreibst Du den OnOffShim? Mittlerweile rate ich von Jumperkabeln ab, direkt aufgesteckt und es rennt!

    Yup, momentan mit Jumperkabeln, das direkte ist auch der nächste Schritt, neben einem Griff und dem umlegen der uusb-Buchse. Hab vorhin ein bisschen rumgewackelt und jetzt geht es wieder.. klingt nach schlechtem Kontakt.

  • Womit ich mittlerweile gerne arbeite ist das hier: GPIO Extension HAT [Anzeige]

    Da löte ich dann auch direkt den OnOffShim drauf, der Hifiberry stört auch nicht und alle Pins sind noch frei.

  • Womit ich mittlerweile gerne arbeite ist das hier: GPIO Extension HAT [Anzeige]

    Da löte ich dann auch direkt den OnOffShim drauf, der Hifiberry stört auch nicht und alle Pins sind noch frei.

    Hm, finde ich gut. Ich glaube das versuche ich mal. Mit einer Lochrasterplatte, die ich dann direkt auf die GPIO-Leiste löte - low-cost Variante ^^

    Edit:

    Ich habe mich wieder dagegen entschieden, zu eng mit dem OnOffShim und ohne female-Steckleiste eh doof.

    Einmal editiert, zuletzt von RhineFire (19. Januar 2020 um 09:55)

  • OnOffShim:

    curl https://get.pimoroni.com/onoffshim | bash

    eintippen und den RPi neu booten. Das war's...

    ...fast:

    Wenn man den Taster zum Ausschalten sehr(?) lange drückt, wird der RPi zwar heruntergefahren, aber die Versorgungsspannung durch den OnOffShim nicht ausgeschaltet und es fließen weiterhin ca. 80-90mA Strom. Auch das Umschalten des LED-Pins von GPIO17 (Pin 11) auf GPIO27 (Pin 13) in der Konfigurationsdatei /etc/cleanshutd.conf hat nichts gebracht. Der Hintergedanke war, die "Doppelbelegung" von GPIO17 (trigger_pin und led_pin) zu beseitigen.

    Inhalt von /etc/cleanshutd.conf

    Gerade Kinder haben kein Gefühl dafür, wie lange sie die Taste drücken dürfen/sollen...

    Wenn alle Stricke reißen, baue ich an den trigger_pin einen Timer mit einem NE555 (oder so) dran. Unschön, aber was soll's?

    Oder hat da jemand eine bessere Idee bzw. eine softwareseitige Lösung?

  • Als Quercheck habe ich gerade getestet, ob der Bug (oder das Feature :X) beim OnOffShim auch auftritt, wenn man den clean-shutdown-Daemon mit

    curl https://get.pimoroni.com/onoffshim | bash

    auf einem jungfräulichen Raspbian Buster Lite (vom 26.09.2019) aufspielt:

    Auch da führt es dazu, dass der OnOffShim bei gedrückt gehaltener Taste die Versorgungsspannung nicht abschaltet.

    Ich vermute mittlerweile, dass der Fehler dann auftritt, wenn die Taste noch betätigt ist, wenn die Versorgungsspannung abgeschaltet werden soll. Dann leuchtet nämlich auch die rote LED auf dem OnOffShim. Mir fallen spontan zwei ungetestete theoretische Möglichkeiten ein:

    * GPIO4 (Pin 7) "power off" per Software auf den passenden Pegel (high oder low?) setzen oder der Einfachheit halber als Eingang konfigurieren, um die Elektronik des OnOffShim nicht fälschlicherweise erneut zu triggern?

    * Den clean-shutdown-Daemon während des Herunterfahrens (rechtzeitig) beenden: Allerdings weiß ich als Linux-Dauernoob nicht, wie man dies überhaupt und möglichst geschickt anpackt...

  • schlizbäda wieso ist bei dir ganze zeit ström am pi?

    eine 5v pin von Shin zum 5v Pi

    3,3V muss nicht eingeschlossen sein (nur wenn LED am Shin soll leuchtet)

    GND zum GND

    und die beide Pin 7/gpio4 und Pin11/gpio17

    Installer von Pimoroni ohne Veränderung und die Kiste läuft.

    Wenn du steckst in Shin ström versorgung leuchtet bei pi keine LED also ist getrennt von strom.

    Ein Shin GPIO Link .

  • Meine Erfahrung: ich hatte anfangs meine python Scripte sehr unsauber, da gab es kein schönes Handling, wenn der Prozess beendet wurde. Heißt das Display hat weiter Strom gezogen usw. Da ist die Kiste ab und an hängen geblieben, schien so, als ein gewisses mindestmaß an Power den Shim abhält vom abschalten. Btw, sollte #daemon_active=1 auskommentiert sein. Hast Du sicher ;)

    Mittlerweile habe ich alles Scripte überarbeitet und lasse sauber LEDs und Variablen clearen, auschalten usw. Seitdem gar keine Probleme. Probleme gibt es leider auch dann, wenn der Shim nicht direkt verlötet ist, per Kabel hab ich eindeutig häufiger Probleme dank Undervoltage. Lustigerweise beim Ausschalten :conf:

  • BLÖD:
    Dass der OnOffShim bei gedrückter Taste nicht abschaltet, ist zu 99,7% ein Hardwareproblem!

    Mit folgendem Low-Level-Versuch habe ich zunächst festgestellt/verifiziert, dass der OnOffShim die Versorgung abschaltet, wenn der als Ausgang konfigurierte GPIO4 (Pin 7) einen Lowpegel liefert:

    Shellkommandos zum Schalten von GPIO4
    Code
    sudo -i
    /bin/echo 4 > /sys/class/gpio/export              # Link im Dateisystem für GPIO4 erstellen 
    /bin/echo out > /sys/class/gpio/gpio4/direction   # GPIO4 als Ausgang ("out") konfigurieren
    /bin/echo 0 > /sys/class/gpio/gpio4/value         # GPIO4 auf Lowpegel setzen

    Meine Tests haben gezeigt, dass der RPi bereits beim Kommando

    /bin/echo out > /sys/class/gpio/gpio4/direction

    auf low schaltet, da 0 offenbar der Startwert ist, wenn man auf "out" umschaltet.

    Beim Herunterfahren des RPi mit dem Kommando

    sudo shutdown -h now habe ich bemerkt, dass eine ausführbare Datei, z.B. ein Shellskript, das in /lib/systemd/system-shutdown von systemd im Rahmen des Herunterfahrens aufgerufen wird.

    Shellskript gpio-shutoff.sh aus dem Retropie-Forum

    Quelle: https://retropie.org.uk/forum/topic/15…from-pimoroni/3

    Wenn der Taster des OnOffShim an GPIO17 (Pin 11) während der Abarbeitung des Skripts betätigt ist, schaltet der OnOffShim die Versorgung nicht ab! :wallbash:

    Da gibt es jetzt zwei Möglichkeiten, die ich noch nicht getestet habe:

    1. Da die LED des OnOffShim ebenfalls an GPIO17 hängt, programmtechnisch einen anderen GPIO für die LED-Anzeige verwenden, z.B. GPIO27 (Pin 13), der bei meiner Phoniebox noch frei ist.

    2. Über eine Elektronik (Monoflop, Timer-IC NE555) oder im Shellskript selbst dafür sorgen, dass der Taster über einen Transistor vom GPIO17 getrennt wird, so dass am GPIO17 sein Zustand "gedrückt" nicht erkannt wird.

    Punkt 2 werde ich morgen mal ausprobieren und dann hier wieder berichten...

    Zum Abschluss für heute habe ich den RPi nochmals bei gedrückter Taste mit sudo shutdown -h now heruntergefahren und die Taste losgelassen, wenn die LED aufgrund der for iteration-Schleife im obigen Skript blinkt. Das ist früh genug, um einen Transistor zu sperren. Jetzt hoffe ich nur noch, mir damit kein Henne-Ei-Problem einzufangen.

    Gut's Nächtle! :sleepy:

  • Bei Poweroff hatte ich Probleme überhaupt wieder einzuschalten. Anscheinend kappt sich dann der OnOffShim auch seine Minireserve Ströme. Hört sich doof an, war bei meinen Tests leider so.

  • Beinahelösung für das Ausschaltproblem beim OnOffShim

    hyle: Die Anweisung sudo poweroff anstelle von sudo shutdown -h now hat an der Problematik nichts geändert. Allerdings ist diese Anweisung kürzer, schöner und prägnanter. Danke.

    splitti79: Also mit dem Einschalten über den OnOffShim habe ich keinerlei Probleme. Das läuft ja offensichtlich direkt über die Hardware der OnOffShim-Leiterplatte. Da werde ich mir demnächst nochmals eine besorgen, um sie durchzumessen (und für kommende Projekte). Die jetzige habe ich nämlich bereits auf meinen MiniAmp aufgelötet, ähnlich wie Du auf Deinem GPIO Extension HAT [Anzeige]. Das ist beinahe ein Kunstwerk geworden:

    Bilder von meinen Lochrasterbasteleien für OnOffShim und MiniAmp

    OnOffShim auf MiniAmp aufgelötet:

    Wichtig ist mir, dass die Sachen fest verlötet sind, um die Wackelkontakte, von denen einige andere Foristen berichten, von vorneherein als Fehlerursache ausschließen zu können.

    Zur Verarbeitung meiner Lochrasterplatine: Schön ist es nicht, aber selten!

    ...und so zusammengebaut wird es auf den RPi in der Phoniebox gesteckt:

    Mein Lösungsansatz:

    Der externe Taster, der auf der OnOffShim-Platine an den beiden Lötpunkten angeschlossen werden kann, wird bei mir über den Öffnerkontakt eines Relais geschaltet. Damit verhält er sich normalerweise so wie der fest verbaute. Beim Herunterfahren wird aber das Relais über den GPIO27 angesteuert, so dass der (gedrückte) Taster vom OnOffShim getrennt wird. Damit wird der RPi auch bei gedrückt gehaltenem Taster ausgeschaltet.

    Allerdings fällt dann die gesamte Versorgungsspannung ab und der immer noch gedrückt gehaltene Taster wird vom OnOffShim als betätigt erkannt. Der RPi (Phoniebox) bootet neu. Der Vorteil ist, dass der RPi in diesem Falle noch bedienbar bleibt, nicht wie vorher, dass der RPi im Shutdown-Modus ist und die rote LED die Powerbank leersäuft und die Kiste nicht auf die Tasten reagiert.

    Insgesamt gibt es mit dieser Lösung drei Modi für den OnOffShim-Taster:

    a) kurz betätigen: Phoniebox fährt hoch

    b) etwas länger betätigen zum Herunterfahren der Phoniebox

    c) richtig lange betätigen für einen Reboot (Neustart) der Phoniebox

    Damit kann ich leben.

    Hier noch ein Bild von einer handgezeichneten Schaltplanskizze:

    Die Software werde ich jetzt dann noch anpassen und in einem eigenen Beitrag vorstellen...

    Schönen Restsonntag noch!

  • OnOffShim Teil 2 -- die Software:

    ich habe nun tatsächlich cyperghosts Idee aus dem Retropie-Forum übernommen und die lediglich aus zwei Shellskripten bestehende Software verwendet und für meine Phoniebox angepasst:

    1. onoffshim_switch.sh

    In diesem Shellskript wird der GPIO17 (Pin 11) als Eingang konfiguriert und in einer Schleife im Abstand von einer Sekunde eingelesen, ob der OnOffShim-Taster (oder der parallel angeschlossene Taster der Phoniebox) den Pin auf low zieht. Wenn ja wird die Schleife verlassen.

    Es wird der Shutdownsound abgespielt und der RPi mit dem Kommando poweroff heruntergefahren.

    Dieses Skript muss beim Hochfahren des RPi gestartet werden, was ich über einen Aufruf in der Datei /etc/rc.local umgesetzt habe.

    2. onoffshim_gpio-shutoff.sh

    Zunächst wird der GPIO27 (Pin 13, Variable $cut_pin) als Ausgang konfiguriert und auf 1 gesetzt, um das Relais anzusteuern, das den OnOffShim-Taster trennt (siehe Beitrag #34).

    Dann wird der GPIO17 (Pin 11, Variable $led_pin) auf Ausgang umkonfiguriert, um zunächst in der for-Schleife die rote LED auf dem OnOffShim dreimal blinken zu lassen. Schließlich wird der GPIO4 (Pin 7, Variable $poweroff_pin) als Ausgang konfiguriert und auf low geschaltet, damit der OnOffShim die Versorgungsspannung abschaltet. Da das Relais zu diesem Zeitpunkt den Taster an GPIO17 trennt, ist es egal, ob der Taster gedrückt ist oder nicht. Da nach Abschalten der 5V-Versorgungsspannung auch das Relais wieder abfällt und über den Öffnerkontakt den Taster zuschaltet, wird der RPi neu gestartet, wenn der Taster immer noch gedrückt wird.

    Damit diese Routine beim Herunterfahren aufgerufen wird, muss sie in systemd eingebunden werden: Das Shellskript muss nach /lib/systemd/system-shutdown/onoffshim_gpio-shutoff.sh kopiert werden.

    EDIT am 23.11.2020: --> siehe auch hier

    Jetzige Funktionsweise:

    * Das Einschalten über GPIO17 ist eine im OnOffShim rein hardwaremäßig umgesetzte Funktionalität.

    * Das Abschalten/Herunterfahren erfolgt über Drücken des Tasters an GPIO17 für die Dauer einer Sekunde

    * Wird der Taster solange gedrückt, bis die Versorgungsspannung und damit das Relais abfällt, erkennt der OnOffShim ein Drücken des Tasters und startet den RPi neu. Diese Möglichkeit betrachte ich mittlerweile nicht mehr als Bug, sondern als Feature ;) Beim Drücken des Tasters erhält man optisches und akustisches Feedback:

    Die LED im Taster habe ich antiparallel zur LED auf dem OnOffShim angeschlossen, so dass sie leuchtet, wenn die auf dem OnOffShim aus ist. Somit dient sie als PowerOn-Anzeige. Wenn der Taster gedrückt wird, geht die LED aus, was als Rückmeldung betrachtet werden kann.

    Bei Erkennen des Tastendrucks an GPIO17 wird zunächst in onoffshim_switch.sh der Shutdownsound abgespielt. Der Anwender weiß somit, dass die Box herunterfährt. Wenn noch eine Audioausgabe über mpd läuft, hört sie jetzt auf. Beim Herunterfahren durch systemd blinkt im Skript onoffshim_gpio-shutoff.sh die LED dreimal. Wird der Taster weiterhin gedrückt gehalten, initiiert man einen Reboot.

    Hier noch meine Versionen dieser Dateien:

  • Ich werde das mal durchtesten, hab mir drei Pi's 4 besorgt, auch der Installer wird aktuell von mehreren parallel bearbeitet. Bei mir lief er zuletzt durch, momentan hab ich kein gutes Gefühl, wie sich das weiter entwickelt.

    Zum OnOffShim: Wie gesagt, habe dieses Verhalten nicht, es läuft wirklich alles sauber bei mir. Aber wenn man dadurch ggf. etwas Code-Overhead sparen kann, why not.

    • Offizieller Beitrag

    Wie gesagt, habe dieses Verhalten nicht, es läuft wirklich alles sauber bei mir.

    splitti79 Dazu ist zu sagen, dass (fast) jeder andere keine Probleme mit irgendwas hat und alles sauber funktioniert, ABER sobald schlizbäda ein Projekt beginnt... Steine im Weg so hoch wie die Alpen. Das ist Irre, aber echt! :no_sad: Und ich bewundere ihn aus tiefstem Herzen für seinen Biss! :thumbup: Nach dem Motto: "Und bist Du nicht willig, so nehm ich einen Drehmel." << Ist passiert, kein Scherz! :lol:

  • Ok, das kenne ich bei mir in Teilen auch. Btw. hab ich die Anleitung von schlizbäda etwas anpassen "kürzen" können um den HifiBerry ans rennen zu kriegen. Habs so oft gemacht, bis ich die wirklich notwendigen Steps nieder geschrieben hab :D

    Bei mir geht vor allem immer was kaputt, gestern meine knapp 2 Jahre alte Lötstation von esra ;( Ich passe meinen Blog aktuell auch permanent an, weil ich ja weiter viel lerne und das "Optimum" sicher nocht nicht erreicht ist. Momentan tendiere ich tatsächlich dazu einen komplett neuen Installer zu entwickeln, github ist zwar ziemlich geil, aber aktuell hab ich das Gefühl: viele Köche verderben den Brei. Man will es lauffähig kriegen, aber macht sich keine Gedanken welche Pakete wirklich notwendig sind. Mir graut es nur vor dem Aufwand... Ich weiß auch nicht wie MiczFlor das sieht, aber da muss für meine Begriffe deutlich mehr Struktur in den Code, in der Dokumentation im Code, Quellangaben usw. Im Endeffekt war das mit Stretch super, aber durch die diversen Entwickler, die nicht mehr da sind, fehlt die Erfahrung wie ich finde. Github hin oder her, ich lese mir doch nicht mehr alle Versionshinweise der letzten zwei Jahre durch, InlineDocumentation macht manchmal richtig Sinn und darf auch länger sein als das CodeFragment... Mal sehen wo die Reise hingeht.

  • Full Ack! :thumbup: Du kennst ja meine Meinung zu diesem Projekt. ;)


    Meiner Meinung nach ist ihm das Projekt über den Kopf gewachsen und nun kaum noch, bzw. schwer zu retten.

    Ich kenne seine Vorraussetzungen grundlegend nicht. Ich acker mich nach und nach durch all möglichen Scripte, aber einige haben für mich keine Daseinsberechtigung, da die irgendwann irgendwer mal hochgeladen hat, keine richtige Dokumentation, aber die Dateien sind da. Vielleicht mache ich mir noch die Mühe, es gibt viele Sachen die 1 zu 1 übernommen werden können, aber gerade alles Python-technische gehört massiv überarbeitet. Also möchte nix gegen Mics sagen, eher helfen und alles lauffähig kriegen. Ich weiß aber, warum ich den Code für OLED Display und LED Control nicht mit in den Installer gebracht habe. Wie gesagt, bald hab ich 5 Raspberrys hier nur für Phonieboxen zum testen, mein 2er hat aber leider nen Schatten, da müssen es die 4er richten.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!