Schlagwort-Archive: GPIO

Low-Level-GPIO-Zugriff geändert mit Kernel 6.6

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

GPIO Reloaded II: Bash

Das ist der zweite Teil einer Mini-Serie zur GPIO-Nutzung am Raspberry Pi 5:

  • GPIO Reloaded I: Python (gpiozero, lgpio, gpiod, rpi-lgpio)
  • GPIO Reloaded II: Bash (gpiod, gpioget, gpioset, pinctrl)
  • GPIO Reloaded III: Kamera (rpicam-xxx, Picamera2)

Zu den wichtigsten Neuerungen beim Raspberry Pi 5 zählt nicht nur der viel schnellere SoC (System-on-a-Chip), sondern auch ein eigener I/O-Controller, der als eigener Chip realisiert ist (RP1). Dieser I/O-Chip bringt mit sich, dass etablierte Mechanismen zur GPIO-Steuerung nicht mehr funktionieren. Besonders stark betroffen sind Kommandos, die im Terminal oder in Bash-Scripts aufgerufen werden.

Achtung, Update: Beginnend mit Kernel 6.6 hat sich der Low-Level-GPIO-Zugriff beim Raspberry Pi 5 verändert und erfolgt nun — wie bei älteren Modellen — via /dev/gpiochip0. Siehe auch https://pi-buch.info/low-level-gpio-zugriff-geaendert-mit-kernel-6-6/.

GPIO Reloaded II: Bash weiterlesen

GPIO Reloaded I: Python

Dieser Artikel ist der Auftakt einer Mini-Serie, die sich mit der Script-Programmierung des Raspberry Pi 5 beschäftigt. Geplant sind drei Artikel:

  • GPIO Reloaded I: Python (gpiozero, lgpio, gpiod, rpi-lgpio)
  • GPIO Reloaded II: Bash (gpiod, gpioget, gpioset, pinctrl)
  • GPIO Reloaded III: Kamera (rpicam-xxx, Picamera2)

Hinter den Kulissen hat sich mit der Vorstellung des Raspberry Pi 5 mehr geändert, als es in den ersten Testberichten den Anschein hatte. Schuld daran ist der neue I/O-Chip RP1, der unter anderem für die Kommunikation mit der GPIO-Leiste und der Kamera zuständig ist. Der RP1 bringt natürlich viele Vorteile mit sich (u.a. die Möglichkeit, zwei Kameras anzuschließen und größere Bild- bzw. Videomengen zu verarbeiten); er führt aber auch dazu, dass über Jahre etablierte Module und Kommandos nicht mehr funktionieren. Ja, die Raspberry Pi Foundation hat vorgearbeitet und empfiehlt schon eine Weile alternative Werkzeuge. Aber aus Bequemlichkeit blieben viele Programmierer bei langjährig bewährten Tools. Damit ist jetzt Schluss. Wer den Pi 5 als Maker-Tool nutzen will, muss umlernen.

Achtung, Update: Beginnend mit Kernel 6.6 hat sich der Low-Level-GPIO-Zugriff beim Raspberry Pi 5 verändert und erfolgt nun — wie bei älteren Modellen — via /dev/gpiochip0. Siehe auch https://pi-buch.info/low-level-gpio-zugriff-geaendert-mit-kernel-6-6/.

GPIO Reloaded I: Python weiterlesen

Raspberry Pi 4 und Raspbian Buster: Erste Tests

Mittlerweile hatte ich Gelegenheit, einen Raspberry Pi 4 (1-GByte-Modell) auszuprobieren.

Raspberry Pi 4

Updates: Siehe die Überschrift »Updates« am Ende des Beitrags.

Inbetriebnahme

Erste Tests erfordern in der Regel neue Kabel oder Adapter. Statt den Minicomputer wie bisher mit einem normalen HDMI-Anschluss auszustatten, sind es nun zwei Micro-HDMI-Buchsen. Die Chance, dass Sie ein geeignetes Kabel oder einem Adapter im Keller finden, ist verschwindend … Ganz klar ist mir ehrlich gesagt auch nicht, wozu der Raspberry Pi zwei HDMI-Ausgänge braucht. Zum Basteln auf jeden Fall nicht. Eine normale HDMI-Buchse wäre sinnvoller.

Raspberry Pi 4 und Raspbian Buster: Erste Tests weiterlesen

Das Kommando raspi-gpio

Heute bin ich über ein Kommando gestolpert, das mir bisher nicht aufgefallen ist und das tatsächlich relativ neu ist: raspi-gpio. Dieses Kommando erfüllt eine ähnliche Aufgabe wie das gpio-Kommando von WiringPi: Es ermöglicht es, den Zustand der GPIOs auszulesen bzw. zu verändern. Darüber hinaus kann es eine Menge Details über die möglichen alternativen Funktionen von GPIOs ermitteln.

Das Kommando raspi-gpio weiterlesen

Ubuntu MATE 15.10 auf dem Raspberry Pi 2

Nach wie vor bietet die MATE-Variante von Ubuntu die beste Unterstützung für den Raspberry Pi. Vorausgesetzt wird die Version 2 mit einer ARMv7-CPU. Die älteren Modelle, aber auch das neue Zero-Modell enthalten dagegen ein System-on-a-Chip mit ARMv6-Architektur, das nicht kompatibel zu Ubuntu ist.

Die Hardware-Unterstützung für den Raspberry Pi hat sich in der aktuellen Version stark gegenüber Ubuntu MATE 15.04 verbessert. Einzig raspi-config oder ein vergleichbares Konfigurationswerkzeug fehlt noch.

Ubuntu MATE 15.10 auf dem Raspberry Pi 2 weiterlesen