Mit der Auslieferung des Raspberry Pi 5 im Herbst 2024 hat sich bei einigen Low-Level-Tools der GPIO-Zugriff geändert: Für die Modelle bis einschließlich Raspberry Pi 4 erfolgt der GPIO-Zugriff über chip0
bzw. /dev/gpiochip0
. Beim Raspberry Pi musste dagegen chip4
bzw. /dev/gpiochip4
verwendet werden. Scripts, die universell auf alten und neuen Geräten laufen sollten, brauchten eine entsprechende Fallunterscheidung.
Mit Kernel 6.6.47, der mittlerweile standardmäßig als Update unter Raspberry Pi OS installiert wird, ändert sich wieder alles! Auch beim Raspberry Pi 5 muss nun /dev/gpiochip0
verwendet werden. Eine Referenz aller internen GPIO-Nummern gibt cat /sys/kernel/debug/gpio
.
Die Änderung betrifft unter anderem:
- Python: gpiozero, lgpio, gpiod
- Bash: gpioset, gpioget
- C: wiringpi, libgpiod
Scripts, die mit diesen Modulen bzw. Bibliotheken verfasst wurden, müssen geändert werden (Umstellung von GPIO-Chip 4 auf GPIO-Chip 0).
Auch gpiozero ist betroffen, siehe dieses Issue. Ein schneller Workaround ist export RPI_LGPIO_CHIP=0
.
Hinweis: Ich plane am 11.9.2024 einige Hardware-Tests durchzuführen und werde den Artikel dann noch einmal aktualisieren.
Persönliche Anmerkung
Diese ganze Angelegenheit ist ein einziges Trauerspiel. Dass beim Raspberry Pi 5 anfänglich /dev/gpiochip4
als interne GPIO-Schnittstelle verwendet wurde, war schon eine äußerst fragwürdige Entscheidung. Aber die Schnittstelle jetzt, fast ein Jahr nach dem Release des Raspberry Pi 5 und Raspberry Pi OS Bookworm, zu ändern, ist einfach irrsinnig. Mit dem Kernel-Update, das bei den meisten Raspberry Pis automatisch erfolgt, funktionieren unzählige GPIO-Scripts von einen Tag auf den anderen nicht mehr. So etwas muss von vorne herein vermieden werden, und, wenn es denn gar nicht anders geht, viel viel besser kommuniziert werden.
Hintergründe / Links
- https://forums.raspberrypi.com/viewtopic.php?t=359302
- https://forums.raspberrypi.com/viewtopic.php?t=361116
- https://github.com/domoticz/domoticz/issues/6040
- https://github.com/WiringPi/WiringPi/issues/280
- https://stackoverflow.com/questions/78452048/not-able-to-access-gpio-pins-on-my-raspberry-pi-5
- https://github.com/raspberrypi/linux/pull/6144
- https://github.com/gpiozero/gpiozero/issues/1166
Dieser Blog-Beitrag ist ursprünglich unter https://pi-buch.info/low-level-gpio-zugriff-geaendert-mit-kernel-6-6/ erschienen. Danke an Hr. Strohmayer, der mich als erster auf dieses Problem aufmerksam gemacht hat.