The Hunting of the Snark
"Just the place for a Snark!" the Bellman cried,
As he landed his crew with care;
Supporting each man on the top of the tide
By a finger entwined in his hair.
"Just the place for a Snark! I have said it twice:
That alone should encourage the crew.
Just the place for a Snark! I have said it thrice:
What I tell you three times is true."
This is just a place to dump my more or less brilliant thoughts on stuff i like or dislike and sometimes even utter nonsense in front of whoever wants to read it. Depending on the target audience, my mood and the phases of the moon, some texts may be in english while others are in german or even completely uncomprehensible... enjoy -
Heiko
Dies ist ein Platz um ein paar mehr oder weniger brilliante Ideen über Dinge die ich mag oder nicht mag und manchmal auch reinen Blödsinn unters Volk zu bringen. Je nach Zielgruppe, Laune und Mondphase sind die einzelnen Texte in Englisch, Deutsch oder auch komplett unverständlich... viel spass -
Heiko
Einen Raspberry Pi mit der Funktion dtoverlay=gpio-shutdown in /boot/config.txt sauber runter fahren ist gut - aber aus ist er damit noch nicht.
Dafür gibt es noch das Overlay gpio-shutdown: eine Funktion, die am ende des Shutdown noch mal einen gpio-pin steuern kann, der dann z.B. ein Relais schaltet.
Als Schaltung kann man dafür ein Relais mit einem Pull-Up Wiederstand gegen +5V und an einen normalerweise als Eingang geschalteten GPIO-Pin schalten (hier GPIO 26 an Pin 37). Wenn der dann beim Herunterfahren des Pi auf 0V gezogen wird, schaltet das Relais ab. 
Ein Taster, der den Schalter des Relais selbst kurz überbrückt dient als Einschalter. Sobald Spannung am Raspberry anliegt, sorgt der Pull-Up Wiederstand dafür, dass das Relais angezogen wird und bleibt.
Der zweite Taster zwischen GPIO 3 und 0V löst ein shutdown Signal aus.
Wenn dann das Herunterfahren beendet ist, wird GPIO 26 auf 0V geschaltet und das Relais schaltet ab. Als loser Drahtverhau auf dem Tisch sieht das so aus:
Als Relais habe ich eine kompakte Platine mit Optokoppler genommen. Nicht, dass ih hier etwas glavanisch trennen will. Aber so kann man sicher sein, dass der GPIO-Pin und der Pull-Up Wiederstand auf jeden Fall nur eine LED als Last bedienen müssen und auch keine plötzlichen Spannungsspizten beim Ein- oder Ausschalten auf den Pi zurückschlagen.
(um nicht mit abgeschnittenen USB Kabeln hantieren zu müssen um die vom Relais geschalteten 5V in den Raspberry einzuspeisen: das geht gut über Pins an der 40-poligen Steckerleiste: GND/0V z.B. an Pin 39 und +5V an Pin 2)
Dazu sind dann folgende Einträge in /boot/config.txt notwendig:
dtoverlay=gpio-poweroff,gpiopin=26,active_low=0,input=0,active_delay_ms=3000
dtoverlay=gpio-shutdown,gpio_pin=3,active_low=1,gpio_pull=up
Mit einem modernen USB Netzteil, das laut Aufdruck 0,01W verbraucht wenn keinerlei Leistung am Ausgang abgenommen wird, sieht das auch Energie-mäßig schon ganz gut aus...
Für Projekte, in denen ein Raspberry Pi ohne Tastatur und Monitor seine Arbeit tut, ist es sehr nervig, einen Weg für das saubere Herunterfahren zu finden: Per ssh anmelden? Einen Web-Dienst für das Ausschalten einrichten? ...
Der Raspberry Pi 5 hat einen Power Button. Juhuu...
Aber auch wenn der Knopf fehlt: das können auch die älteren Modelle schon. Einfach den Eintrag
dtoverlay=gpio-shutdown
in der Datei /boot/config.txt hinzufügen und einen Button zwischen GPIO3 (Pin 5) und GND (z.B. Pin 6, genau gegenüber) anschließen. Wenn der Raspberry Pi aktiv ist, wird beim Drücken des Knopfes ein shutdown -h now ausgelöst und in ein paar Sekunden ist er ordentlich heruntergefahren. Dann kann bedenkenlos der Strom ausgeschaltet werden, ohne dass das Dateisystem kaputt geht.
Alternaiv kann der Knopf in heruntergefahrenem Zustand gedrückt werden. Dann wird der angehaltene Prozessor neu gestartet und der Pi fährt ordentlich neu hoch.
Ein kleiner Pi Zero 2W braucht in diesem heruntergefahrenen Zustand noch ca. 50 mA. Ein Pi 3 oder 4 benotigt mehr.
Wer GPIO3 für andere Funktionen nutzen will (z.B. für I2C), kann auch einen alternativen Pin für das ausschalten definieren. Die Einschalt-Funktion ist aber anscheinend fest an GPIO3 gebunden.
Die volle Liste der Parameter der gpio-shutdown Funktion ist unter Raspbian in /boot/overlays/README zu finden.
Es gibt wieder neue Dela-Übersetzungen: bis zum 25.4. wird Dank der Übersetzungs-Arbeit von Christian Knöppler jeden Tag ein neuer übersetzter Strip hier erscheinen.