[1] MLD-5.x / Systems / Raspberry PI / RasPi MLD und Custom Device Tree Blob (Ziel: Ein Signal bei HALT)
 

Offline LiNoKa

  • Newbie
  • *
  • Posts: 6
    • View Profile
Hallo liebe MLD-Gemeinde!

Zunächst mal vielen Dank für MLD an Claus & Co. Ich habe MLD nun seit einem Jahr auf einem RasPi im praktischen Einsatz.
(die Postkarte habe ich auch noch im Hinterkopf - inkl. eines leicht schlechten Gewissens - die kommt noch).

Doch nun zu meiner Frage:

Ist es möglich beim RasPi-MLD einen "Custom Device Tree Blob" anzulegen/einzuspielen, so wie in folgendem Link beschrieben?
https://www.raspberrypi.org/documentation/configuration/pin-configuration.md

Ich habe leider nicht (mehr) viel Ahnung von Linux bzw. ist das ja auch eher RasPi-Wissen.
Einige Google Recherche deutet darauf hin, dass dies vielleicht mein eigentliches Problem lösen könnte und das sieht wie folgt aus:

Ich benötige ein Signal vom RasPi-MLD, welches
A. Beim Einschalten der Stromversorgung unverzüglich HIGH=1 ist und welches
B. erst nach sauberem Herunterfahren des OS wieder LOW=0 wird.
(darf auch invertiert sein)


Mit diesem Signal möchte ich ein Relais schalten, welches die Netzspannung komplett trennt.

(Info am Rande: Beim Banana Pi, auf dem hier OpenMediaVault läuft, funktioniert dies bereits hervorragend, denn speziell beim Banana Pi erfüllt die 3,3 V-Versorgung bereits die Anforderung A. und B.)

Für das Einschalten, wäre dann ein Einschalt-Taster(! 240V-Netzspannung!) parallel zu dem Relais-Kontakt zuständig:
Bei dessen Betätigung wird der RasPi versorgt und das besagte Signal hält (quasi) sofort das Relais und der Taster kann losgelassen werden.
Und nach sauberem Herunterfahren fällt das Relais wieder ab und der RasPi (inkl. Sundtek-Stick-/HDD-Netzteile) ist von der Netzspannung getrennt.

Ich habe bereits versucht mittels eines /etc/init.d-Skriptes den GPIO03 auf LOW = off zu setzen (Das wäre dann mein invertiertes Wunsch-Signal).
Zumindest wird GPIO03 nach Shutdown automatisch wieder HIGH, da hier wohl ein fester interner Pull-Up-Widerstand existiert.
Das Init-Skript funktioniert auch, allerdings schlägt dies erst sehr, sehr spät zu:
Für das Einschalten müsste der Taster dann nämlich eine gefühlte Minute gedrückt werden bis das GPIO-Signal das Relais endlich hält.
Oder ich müßte noch eine Timer-Schaltung vorsehen, welche diese Zeit überbrückt - das muss doch einfacher gehen.

Dann bin ich aber auf diesen für mich noch sehr ominösen "Custom Device Tree Blob" gestossen.
Falls ich das richtig verstehe, kann man hier (u.A.) die GPIO-Zustände quasi RasPi-Firmware-seitig auf eigene Standard-Werte definieren.

Und wenn ich diesen Beitrag richtig verstehe, könnte ich damit genau das gewünschte Signal hinbekommen (sicher bin ich mir da aber auch noch nicht):
https://www.raspberrypi.org/forums/viewtopic.php?p=783274

Ich habe ja im letzten Jahr schon so einige meiner MLD-Problemchen mit Googelei und Geduld gelöst, aber hierbei frage ich lieber mal vorher.

Viele Grüße,

Kai
MLD 5.1 - RasPi 2 B - 2 x Sundtek SkyTV Ultimate (5 & 6) - HDD über USB/SATA Adapter

Offline clausmuus

  • Administrator
  • Expert Member
  • ********
  • Posts: 20415
    • View Profile
    • ClausMuus.de
RasPi MLD und Custom Device Tree Blob (Ziel: Ein Signal bei HALT)
« Reply #1 on: January 15, 2017, 21:49:31 »
Hi,

Willkommen an Bord!

Du kannst eigene dtb's einfach im Ordner /boot/overlays ablegen, und über die /boot/config.txt einstellen, dass diese geladen werden soll.

Ich bin nicht sicher, wie schnell das erste Init Script ausgeführt wird, aber wenn Du in Dein init Script per "priority=9" Parameter in der init Section sehr früh starten lässt, sollte das nur wenige Sekunden dauern, bis das start ausgeführt wird.
Wenn Du dann noch das Einschalt Signal über einen Kondensator kurz pufferst, brauchst Du den Taster nur kurz drücken. und auch das Ausschalten würde um ein paar Sekunden verzögert, so das der RPI sauber runterfahren kann, bevor das Netzteil aus geht.

Claus
MLD 5.5 - Raspberry PI - 7" Touch TFT - Squeeze Play
MLD 5.5 - lirc yaUsbIR - OctopusNet - XFX GeForce 9300 mit Intel E3200 - 2GB RAM - 12TB HDD - Lian Li PC-C37B - Samsung LE40A559

Offline LiNoKa

  • Newbie
  • *
  • Posts: 6
    • View Profile
RasPi MLD und Custom Device Tree Blob (Ziel: Ein Signal bei HALT)
« Reply #2 on: January 17, 2017, 19:00:53 »
Moin Claus,

danke für Deine Antwort.

Du kannst eigene dtb's einfach im Ordner /boot/overlays ablegen, und über die /boot/config.txt einstellen, dass diese geladen werden soll.

Ok, ich habe da mal nachgeschaut:
In meiner /boot/config.txt gibt es bereits einen Eintrag
Code: [Select]
dtoverlay=lirc-rpi
In der Tat habe ich irgendwann einen IR-Empfänger über GPIO zum Laufen bekommen und das hat wohl über meine WebIF-Einstellungen zu diesem Eintrag geführt(?)
Ich nehme mal an, das es auch nur genau EIN AKTIVES Overlay geben darf und kann, oder? In /boot/overlays sind ja neben dem lirc-rpi jede Menge mehr, aber vermutlich nur als Beispiel und nicht aktiv(?)

Wäre es richtig, wenn ich da wie folgt vorgehe, um die LIRC-dtb-Einstellung nicht zu verlieren:
  • apt-get install device-tree-compiler - der wird aber leider nicht gefunden. Vermutlich muß ich da einen Eintrag in /etc/apt/sources.list machen, aber wie genau?
  • Das /boot/overlays/lirc-rpi.dtb in ein lirc-rpi.dts wandeln (mit dem device-tree-compiler) und am besten nach z.B. my-lirc-rpi.dts kopieren
  • In dem my-lirc-rpi.dts meinen gewünschten GPIO03 auf Standard LOW=0 (nach Rspi.org-Anleitung etc.pp.) konfigurieren
  • Das my-lirc-rpi.dts wieder in my-lirc-rpi.dtb kompilieren und letzteres dann in /boot/config.txt eintragen bzw. darauf abändern.

Ich bin nicht sicher, wie schnell das erste Init Script ausgeführt wird, aber wenn Du in Dein init Script per "priority=9" Parameter in der init Section sehr früh starten lässt, sollte das nur wenige Sekunden dauern, bis das start ausgeführt wird.

Das habe ich probiert und es hat merkwürdigerweise nur beim ersten Bootversuch funktioniert: Meine GPIO03-Test-LED ging dann "schon" nach 30 Sek. aus, statt erst nach einer Minute.
Bei weiteren Kaltstarts hat sie dann nur einmal kurz AUS-geblinkt und blieb dann ständig an. Sehr merkwürdiges zweideutiges Ergebnis.
Ich würde auch lieber erst mal die dtb-Sache weiterverfolgen und dann mal schauen, wie sich das verhält und ob und wo noch Verzögerungen notwendig sind.

Kai
MLD 5.1 - RasPi 2 B - 2 x Sundtek SkyTV Ultimate (5 & 6) - HDD über USB/SATA Adapter

Offline clausmuus

  • Administrator
  • Expert Member
  • ********
  • Posts: 20415
    • View Profile
    • ClausMuus.de
RasPi MLD und Custom Device Tree Blob (Ziel: Ein Signal bei HALT)
« Reply #3 on: January 17, 2017, 23:56:38 »
Hi,

Du kannst beliebig viele DTBs gleichzeitig laden. Ich weiß nur nicht ob die alle in einer Zeile eingetragen werden müssen, oder ob Du pro overlay eine neue Zeile schreiben darfst. Ich glaube aber letzteres. Die dtb Dateien im /boot/overlay Ordner sind keine Beispiele, sondern alles Konfigurationen um bestimmte Hardware zu aktivieren.

dtb Dateien kannst Du nicht in dts zurück umwandeln (würde mich jedenfalls sehr wundern). Du musst Dir also die original dts Quelle im Netz suchen, und kannst diese dann nach dem anpassen in eine dtb übersetzen. Das geht aber nicht mit der MLD (für die MLD gibt es keinerlei Entwickler Werkzeuge). Dafür musst Du Dir ein kleines Debian installieren.

Claus
MLD 5.5 - Raspberry PI - 7" Touch TFT - Squeeze Play
MLD 5.5 - lirc yaUsbIR - OctopusNet - XFX GeForce 9300 mit Intel E3200 - 2GB RAM - 12TB HDD - Lian Li PC-C37B - Samsung LE40A559

Offline LiNoKa

  • Newbie
  • *
  • Posts: 6
    • View Profile
RasPi MLD und Custom Device Tree Blob (Ziel: Ein Signal bei HALT)
« Reply #4 on: January 18, 2017, 19:04:35 »
Da habe ich wohl noch einige Missverständnisse... ;)

Du kannst beliebig viele DTBs gleichzeitig laden. (...)
Dann könnten die aber doch konkurrieren: DTB-Nr.1 sagt GPIO03 ist Low mit PullUp und DTB-Nr.2 sagt aber High mit PullDown - wer gewinnt?

dtb Dateien kannst Du nicht in dts zurück umwandeln(...)

Unter
https://www.raspberrypi.org/documentation/configuration/pin-configuration.md
steht
Quote
Similarly, a .dtb file can be converted back to a .dts file, if required.
dtc -I dtb -O dts -o dt-blob.dts /boot/dt-blob.bin

Und als Debian zum (de-)kompilieren könnte ich ja vielleicht mein BananaPi (bananian) verwenden....zumindest versuch ich das nachher mal....

Kai
MLD 5.1 - RasPi 2 B - 2 x Sundtek SkyTV Ultimate (5 & 6) - HDD über USB/SATA Adapter

Offline clausmuus

  • Administrator
  • Expert Member
  • ********
  • Posts: 20415
    • View Profile
    • ClausMuus.de
RasPi MLD und Custom Device Tree Blob (Ziel: Ein Signal bei HALT)
« Reply #5 on: January 18, 2017, 19:22:26 »
Hi,

Ja, konkurrieren können die DTBs. Deshalb sind die ja auch nicht alle aktiv, sondern man muss die aktivieren die man braucht.

Das man DTBs dekompilieren kann wusste ich nicht. Und ja, Du kannst dafür Dein Bananian nehmen.

Claus
MLD 5.5 - Raspberry PI - 7" Touch TFT - Squeeze Play
MLD 5.5 - lirc yaUsbIR - OctopusNet - XFX GeForce 9300 mit Intel E3200 - 2GB RAM - 12TB HDD - Lian Li PC-C37B - Samsung LE40A559

Offline LiNoKa

  • Newbie
  • *
  • Posts: 6
    • View Profile
RasPi MLD und Custom Device Tree Blob (Ziel: Ein Signal bei HALT)
« Reply #6 on: January 19, 2017, 13:27:09 »
Moin Claus,

der dtc läuft nun unter bananian und ich habe mir das lirc-rpi-overlay mal rüberkopiert.

Nun verstehe ich leider nicht, woher ich die
/boot/dt-blob.bin
bekomme, die für den dtc-Aufruf erforderlich ist (hab schon versucht zwei Seiten Text dazu auf www.raspberrypi.org zu verstehen...).

Kai
MLD 5.1 - RasPi 2 B - 2 x Sundtek SkyTV Ultimate (5 & 6) - HDD über USB/SATA Adapter

Offline clausmuus

  • Administrator
  • Expert Member
  • ********
  • Posts: 20415
    • View Profile
    • ClausMuus.de
RasPi MLD und Custom Device Tree Blob (Ziel: Ein Signal bei HALT)
« Reply #7 on: January 20, 2017, 13:18:58 »
Wo Du die dt-blob.bin her bekommst weiß ich nicht, aber unter https://github.com/raspberrypi/firmware/tree/master/extra git es die dt-blob.dts

Claus
MLD 5.5 - Raspberry PI - 7" Touch TFT - Squeeze Play
MLD 5.5 - lirc yaUsbIR - OctopusNet - XFX GeForce 9300 mit Intel E3200 - 2GB RAM - 12TB HDD - Lian Li PC-C37B - Samsung LE40A559

Offline LiNoKa

  • Newbie
  • *
  • Posts: 6
    • View Profile
RasPi MLD und Custom Device Tree Blob (Ziel: Ein Signal bei HALT)
« Reply #8 on: January 21, 2017, 20:06:37 »
Hallo Claus,

es klappt jetzt :) und zwar tatsächlich exakt nach dieser Anleitung
https://www.raspberrypi.org/forums/viewtopic.php?p=783274
und auch auf der MLD mit einer zusätzlichen neu kompilierten /boot/dt-blob.bin.

Ich habe nun auch den GPIO-25 nach der Anleitung verwendet.
Auf GPIO-03 (habe damit ich auch mal probiert) scheint noch irgendetwas anderes zuzugreifen, was auch das merkw. Verhalten bei dem init.d-Skript erklären würde.

Noch eine letzte Frage:
Ich trau mich kaum, weil ich fürchte das offensichtliche zu übersehen...aber ich find's nicht
Wie realisiere ich spez. auf der MLD einen GPIO-Taster, der shutdown -h now aufruft?

Viele Grüße,
Kai
MLD 5.1 - RasPi 2 B - 2 x Sundtek SkyTV Ultimate (5 & 6) - HDD über USB/SATA Adapter

Offline clausmuus

  • Administrator
  • Expert Member
  • ********
  • Posts: 20415
    • View Profile
    • ClausMuus.de
RasPi MLD und Custom Device Tree Blob (Ziel: Ein Signal bei HALT)
« Reply #9 on: January 21, 2017, 23:36:38 »
Hi,

werfe mal einen Blick in das /usr/bin/controlSqueezeVolume Script aus dem volumecontrol Paket. Dort wird auf Änderungen auf drei GPIO Pins gelauscht.

Claus
MLD 5.5 - Raspberry PI - 7" Touch TFT - Squeeze Play
MLD 5.5 - lirc yaUsbIR - OctopusNet - XFX GeForce 9300 mit Intel E3200 - 2GB RAM - 12TB HDD - Lian Li PC-C37B - Samsung LE40A559

Offline LiNoKa

  • Newbie
  • *
  • Posts: 6
    • View Profile
RasPi MLD und Custom Device Tree Blob (Ziel: Ein Signal bei HALT)
« Reply #10 on: January 22, 2017, 21:52:51 »
Danke Claus,

das hat geholfen :)
Habe mir das volumecontrol-Paket mal installiert und als Vorlage genommen (...und zum Schluss wieder deinstalliert).

werfe mal einen Blick in das /usr/bin/controlSqueezeVolume Script aus dem volumecontrol Paket (...)

Danach habe ich mir gebaut:

/usr/bin/controlPoweroff
Spoiler (show / hide)

Und nicht zu vergessen auch Dein /etc/init.d/controlSqueezeVolume Start-Skript, wo ich lernen konnte, wie man das obige Skript dann als daemon startet:

/etc/init.d/controlPoweroff
Spoiler (show / hide)

Dabei frage ich mich allerdings noch, ob der stop)-Code auch genutzt/erreicht wird, wo doch im init) kein stop=1 steht (auch in /etc/init.d/controlSqueezeVolume nicht).
Ist aber vermutlich auch nicht so entscheidend, ob der sauber gestoppt wird, denn...

...es funktioniert nun. :)

Ich wünsch Dir eine frohe Woche.

Viele Grüße,
Kai
MLD 5.1 - RasPi 2 B - 2 x Sundtek SkyTV Ultimate (5 & 6) - HDD über USB/SATA Adapter

Offline clausmuus

  • Administrator
  • Expert Member
  • ********
  • Posts: 20415
    • View Profile
    • ClausMuus.de
RasPi MLD und Custom Device Tree Blob (Ziel: Ein Signal bei HALT)
« Reply #11 on: January 22, 2017, 23:07:47 »
Nein, der stop Code wird beim herunterfahren nicht ausgeführt. Aber der ist hilfreich, wenn man mal eben das Teil anhalten will.

Claus
MLD 5.5 - Raspberry PI - 7" Touch TFT - Squeeze Play
MLD 5.5 - lirc yaUsbIR - OctopusNet - XFX GeForce 9300 mit Intel E3200 - 2GB RAM - 12TB HDD - Lian Li PC-C37B - Samsung LE40A559

[1] MLD-5.x / Systems / Raspberry PI / RasPi MLD und Custom Device Tree Blob (Ziel: Ein Signal bei HALT)
 



Users Online Users Online

0 Members and 1 Guest are viewing this topic.