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: lgpio, libgpiod, wiringpi
Scripts, die mit diesen Modulen bzw. Bibliotheken verfasst wurden, müssen geändert werden (Umstellung von GPIO-Chip 4 auf GPIO-Chip 0). Im Folgenden habe ich diesbezüglich Anleitungen für diverse Fälle zusammengefasst.
13.9.2024: Mit dem neuesten Update von Raspberry Pi OS wird ein Link von /dev/gpiochip4
auf /dev/gpiochip0
eingerichtet, wodurch die Auswirkungen des veränderten Kernels in den meisten Fällen nicht mehr spürbar sind.
ls -l /dev/gpiochip*
crw-rw---- 1 root gpio 254, 0 13. Sep 08:39 /dev/gpiochip0
crw-rw---- 1 root gpio 254, 10 13. Sep 08:39 /dev/gpiochip10
crw-rw---- 1 root gpio 254, 11 13. Sep 08:39 /dev/gpiochip11
crw-rw---- 1 root gpio 254, 12 13. Sep 08:39 /dev/gpiochip12
crw-rw---- 1 root gpio 254, 13 13. Sep 08:39 /dev/gpiochip13
lrwxrwxrwx 1 root root 9 13. Sep 08:39 /dev/gpiochip4 -> gpiochip0
Von gpiozero gibt es mittlerweile eine aktualisierte Version, die das richtige Chip-Device erkennt.
Low-Level-GPIO-Zugriff geändert mit Kernel 6.6 weiterlesen →