Neuigkeiten:

Am Sonntag den 8.12.2024 kann es ab ca. 8:00 Uhr zu kurzzeitigen Einschränkungen / Ausfällen bei den Diensten des FHEM Vereines kommen.
Die Server müssen mal gewartet und dabei neu gestartet werden ;)

Hauptmenü

GPIO Bookworm

Begonnen von Otto123, 26 März 2024, 23:07:33

Vorheriges Thema - Nächstes Thema

Otto123

Information
Der Zugriff über die Schnittstelle sysfs-gpio (/sys/class/gpio/export) wird ab Bookworm nicht mehr unterstützt.
Die neue Methode arbeitet mit gpiod Tools (debian paket) oder pinctrl (Raspberry Pi OS Tool).
Weitere Informationen z.B. hier: https://pi-buch.info/gpio-reloaded-ii-bash/
oder hier https://www.acmesystems.it/gpiod
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Frank_Huber

mein Test System ist schon länger auf Bookworm, ich habe das Image von OctoPI drauf.
GPIO war nie ein Problem.
ABER: heute mal wieder OS und FHEM Update gemacht und siehe da, GPIO Meldungen im Log:

erst kommt das hier für jeden in FHEM definierten GPIO
2024.04.26 11:32:25 1: Can't open file: GPIO_IN_04, active_low
2024.04.26 11:32:25 1: Can't open file: GPIO_IN_04, edge

dannach noch das hier auch 1x pro definiertem GPIO:
2024.04.26 11:34:15 1: PERL WARNING: Use of uninitialized value $val in string eq at ./FHEM/51_RPI_GPIO.pm line 272, <$fh> line 501.
soweit ich es in FHEM testen kann funktionieren die GPIOs aber.
da momentan nichts angeschlossen ist kann ich es nicht auf Hardware Basis testen, das hole ich nächste Woche nach.

Wollte die Info nur mal hier ergänzen. Das ganze scheint durch ein OS Update zu kommen dass im März bzw April verteilt wurde.
mein letztes Update war ca. am 1.3.

klausw

Der Zugriff auf die GPIOs über /sys/class/gpio/ funktioniert auch in Bookworm noch.
Allerdings hat /sys/class/gpio inzwischen wohl den Status deprecated bekommen.
Daher kann es gut sein, das es in näherer Zukunft entfernt wird.

Lediglich beim Pi5 hat sich die Nummerierung im Vergleich zu den Vorgängern geändert:
https://forum.fhem.de/index.php?msg=1312147
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

Otto123

#3
Ich wäre vorsichtig mit der Aussage "in näherer Zukunft", ich meine der Grund für meine Nachricht war ein aktuelles debian für den Pi, wo die Funktion schon raus war. https://forum.fhem.de/index.php?topic=137496.0

Und wie ich es verstanden habe, ist es eine Kernelfunktion. Es kann also bei jedem Update plötzlich rausfliegen. Das Ende (deprecated) wurde 2015 (inzwischen) angekündigt und vielleicht ist nach 10 Jahren endgültig Schluss? 2025 kommt schneller als man denkt.

Ich würde jetzt nicht fummeln und ignorieren - geht doch noch - sondern umstellen auf supportete Schnittstellen.  ;)
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

klausw

Also ist es beim aktuellen Debian schon entfernt worden?
Ich habe bisher immer nur das Raspberry OS verwendet. Da wurde es demnach noch mit reingenommen.

Fummeln muss man ja nicht groß, mit dem richtigen OS geht es ja.  8)

Allerdings muss ich dir rechtgeben das es so nicht bleiben kann. Wer weiß wie lange es Raspberry OS noch beibehält und andere Einplaninenrechner könnten bereits außen vor sein.

Könnte gpiod (gpioget, gpioset, pinctrl...) eine Lösung sein?
Gibt es noch andere Möglichkeiten die man sich ansehen sollte?
Ich würde schon gern auf etwas Nachhaltiges setzen wenn ich das Modul umbaue.
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

Otto123

So nahe untersucht habe ich das ja nicht. Aber in einem aktuellen debian für den Pi (auch für mich ein ungewöhnliches OS) war sysfs-gpio nicht mehr drin und mit gpiod hat die Aktivierung von Pin17 funktioniert. Ich habe nur ein bisschen gelesen und mag da keine strategische Aussage treffen ;)
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

gunfried

#6
Moinsen zusammen,
eben hat sich meine SD Karte verabschiedet und ich musste den Pi3 für die Terrarien neu aufsetzen. Rasperian (aktuelle Version Bookworm) heruntergeladen, auf die SD übertrage, FHEM installiert,... Alles soweit gut, bis auf dass ich die RPI_GPIO's nicht schalten konnte.

Anstatt hier ins Forum zu schauen, habe ich mich auf die Suche gemacht und bin hier über die Ursache des Problems gestolpert: https://www.thegoodpenguin.co.uk/blog/stop-using-sys-class-gpio-its-deprecated/

Wie ihr schon geschrieben habt, ist unter dem Kernel 6.6 der Zugriff auf die GPIO's nicht mehr über sysfs möglich. Entsprechend funktioniert das FHEM Modul RPI_GPIO nicht mehr unter Bookworm (6.6er Kernel).

Da ich nur 7 GPIO-Ausgänge zu schalten habe, habe ich mir kurzerhand eine kleine Funktion gebastelt und in ein Modul gepackt:
sub set_GPIO($$) {
  my ( $myPort, $myEvent ) = @_;

  my $mytimestamp = int(time());
 
  if ($myEvent eq "on") {
    system("gpioset","gpiochip0",$myPort."=1");
    Log 1,"---> " .localtime($mytimestamp)." GPIO-Port: ". $myPort." --> Event: on";
  } else {
    system("gpioset","gpiochip0",$myPort."=0");
    Log 1,"---> " .localtime($mytimestamp)." GPIO-Port: ". $myPort." --> Event: on";
  }
}

Auf die 7 RPI_GPIO's habe ich mir dann als Pflaster ein Notify gelegt, welches die Funktion aufruft:
define n_TerraLampe_GPIO_13 notify TerraLampe:.* {set_GPIO(13,$EVENT)}
Ich weiß, dass ist keine saubere und dauerhafte Lösung, aber so braucht meine Tochter sich keine akuten Sorgem mehr um ihre Tiere machen ;) . Die RPI_GPIO-Devices habe ich erst einmal unverändert gelassen. Wenn ich das Device nun triggere, dann erscheint zwar eine Meldung im Log...:
2024.05.06 13:50:00 1: Can't open file: TerraLampe, value ... Diese werde ich erst einmal ignorieren.

@klausw: Unter dem oben genannten Link gibt es auch einen Link zu einer Auflistung von verschiedenen Subsystem-Treibern für den GPIO Zugriff. Das könnte für dich interessant sein: https://www.kernel.org/doc/html/v4.17/driver-api/gpio/drivers-on-gpio.html

Vielleicht hilft der Workaround ja dem Einem oder Anderen...

LG

Wernieman

Die Logmeldung könntest Du wegbekommen, in dem Du die Devices zu Dummys migrierst ....
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Michael70

#8
Hallo klausw,

um nochmal auf Deine Frage zurück zu kommen welche Methode in Zukunft verwendet werden soll...
So wie ich es gelesen habe ist der große Vorteil von gpiod dass es Standardmäßig schon installiert ist und natürlich auch mit dem Pi 5 komatibel ist.
D.h. wenn Du das Modul für RPI_GPIO umschreiben würdest, könnte es ohne weitere Änderungen gleich am Raspberry OS funktionieren.
Ich selber verwende bisher nur Raspberry's bis zur Version 4, habe aber mit Bookworm natürlich das gleiche Problem,
deswegen ist es bei mir auch noch nicht im Einsatz.
Ich würde mich aber als Tester anbieten.

VG, Michael
Raspberry Pi 4 (Raspberry OS Bullseye), FHEM 6.2, 1-Wire USB Busmaster. Anwendung: Kellerlüftung und Heizung Zirkulationspumpe, Balkon PV Überschuss Steuerung

Ellert

Ich würde auch auf gpiod setzen, da es auf einem frisch aufgesetzten Raspberry OS sofort einsatzbereit ist.

Laut Statistik nutzen 245 Installationen RPI_GPIO und etwa 16% der verwenden Perl 5.36, das mit Bookworm ausgeliefert wird.

bertl

Hallo Klaus,

Zitat von: klausw am 29 April 2024, 23:04:50Der Zugriff auf die GPIOs über /sys/class/gpio/ funktioniert auch in Bookworm noch
Ich wollte mit meinem Raspi 3B auf Bookworm 64Bit umsteigen und da hat der Zugriff auf die GPIOs über RPI_GPIO nicht funktioniert.
Bin daher wieder auf Bullseye zurück gewechselt.

Zitat von: klausw am 01 Mai 2024, 23:22:36Ich würde schon gern auf etwas Nachhaltiges setzen wenn ich das Modul umbaue.
Gibt es von deiner Seite schon konkrete Pläne ob und wenn ja, ab wann du das Modul umbauen wirst?

Es wäre schade nicht auf das jeweils aktuelle Betriebssystem wechseln zu können.
Ich verwende 15 GPIO's (7 Output und 8 Input) - die Output-GPIO's kann man ja relativ einfach setzten (z.B. gpioset) aber wie bekomme ich bei den Input-GPIO's Veränderungen mit um darauf in FHEM reagieren zu können?

Danke für deine Info
Robert

Stelaku

Hallo Robert

Hier hat Klaus eine Möglichkeit erklärt wie Du unter Bookworm die GPIO´s wieder mit Fhem nutzen kannst.
WiringPi hat auch ein update für bookworm bekommen. Das findest Du hier.
Dann funktionieren die Eingänge auch wieder ohne Externen Pull up Wiederstand.

Viele Grüße

Stephan

Burny4600

#12
Wie sieht es mit 1-Wire unter Bookworm aus. Gibt es da schon Erfahrungen?

Ich habe mit Bookworm Lite 32Bit und 1-Wire ab Pi3B+ Probleme.
Da kann ich unter raspi-config 1-Wire aktivieren und der Eintrag in der /boot/firmware/config.txt Datei wird durchgeführt, aber nach dem Neustart ist unter $ lsmod | grep w1 und $ lsmod | grep wire von 1-Wire nichts zu sehen.

Verwende ich die gleiche Konfiguration beim Pi3B funktioniert 1-Wire.
Am Pi3B+ liegt es auch nicht, da der Pintest für den GPIO4 keinen Fehler ausgibt.

$ pintest -p 4
This program checks the board's user-accessible GPIO pins. The board's model is: Raspberry Pi 3B+ rev
1.3. The following pins are selected for testing:

GPIO4

Please ensure that nothing is connected to any of the pins listed above for the test duration.

Proceed with test? [y/N] y
Testing GPIO4...ok

Alles inklusive WiringPi ist aktuell, trotzdem funktioniert 1-Wire nicht.
Mfg Chris

Raspberry Pi 2-5, Betriebssystem: Bullseye Lite, Bookworm Lite
Schnittstellen: RFXtrx433E, SIGNALduino, MQTT, nanoCUL, HM-MOD-UART, 1-Wire, LAN, ser2net, FHEM2FEHEM
Devices: FS20, IT, Homematic, MQTT, TEK603, WMR200, YouLess, S.USV, APC-USV, PV-Deye, PV-Fronius, Resol VBUS & DL2