GPIO am Raspberry Pi 5: RPi.GPIO funktioniert nicht – diese Alternativen gibt es

Raspberry Pi 5 8GB Board

Du hast deinen alten Raspberry-Pi-Code auf den Pi 5 übertragen und plötzlich kommt eine kryptische Fehlermeldung? Dann bist du nicht allein. Das beliebte Python-Paket RPi.GPIO funktioniert auf dem Raspberry Pi 5 nicht mehr – und das ist kein Bug, sondern eine architektonische Entscheidung. In diesem Artikel erkläre ich dir warum, und zeige dir die einfachsten Wege, deinen Code wieder zum Laufen zu bringen.

Das Problem: Warum läuft RPi.GPIO nicht auf dem Pi 5?

Wenn du RPi.GPIO auf einem Raspberry Pi 5 verwendest, siehst du etwa diesen Fehler:

python3 blink.py

pi@raspberrypi5:~ $ python3 blink.py
Traceback (most recent call last):
  File „blink.py“, line 1, in <module>
    import RPi.GPIO as GPIO
  File „/usr/lib/python3/dist-packages/RPi/GPIO/__init__.py“
RuntimeError: This module can only be run on a Raspberry Pi!

Der Grund steckt im Inneren des Pi 5: Raspberry Pi hat erstmals einen eigenen I/O-Chip namens RP1 entwickelt. Dieser Chip übernimmt alle externen Schnittstellen des Pi 5 – also die GPIO-Pins, USB-Ports, Ethernet, Kamera und Display-Ports. Er ist über einen PCIe-2.0-x4-Bus an den Hauptprozessor BCM2712 angebunden.

RPi.GPIO setzt auf direkten Speicherzugriff (/dev/mem) auf die Hardware-Register des Prozessors. Auf dem Pi 5 liegen die GPIO-Register aber nicht mehr beim Hauptprozessor, sondern beim RP1 – deshalb greift RPi.GPIO ins Leere.

Neuere Bibliotheken nutzen stattdessen das Linux-Kernel-Interface /dev/gpiochip, was auf allen Raspberry-Pi-Modellen funktioniert. Und genau das ist der Weg nach vorne.

Die drei Alternativen im Überblick

Bibliothek Pi 5 kompatibel Drop-in-Replacement Empfehlung
RPi.GPIO ❌ Nein Nicht mehr verwenden
rpi-lgpio ✅ Ja ✅ Ja Bestehenden Code einfach retten
gpiozero ✅ Ja ❌ Nein Neue Projekte, einfachste API
lgpio ✅ Ja ❌ Nein Maximale Kontrolle, Low-Level

Option 1: rpi-lgpio – der einfachste Weg für bestehenden Code

rpi-lgpio ist ein Drop-in-Replacement für RPi.GPIO: du tauschst nur das installierte Paket aus, dein Python-Code bleibt unverändert. Das Paket stellt dieselbe API wie RPi.GPIO bereit, verwendet im Hintergrund aber das moderne lgpio-Interface.

Installation auf Raspberry Pi OS Bookworm

Seit Raspberry Pi OS Bookworm müssen Python-Pakete in einer virtuellen Umgebung installiert werden (Stichwort PEP 668). Ohne venv verweigert pip die Installation. So geht es:

Die virtuelle Umgebung musst du bei jedem neuen Terminal-Start erneut aktivieren (source ~/gpio-env/bin/activate), oder du trägst die Aktivierung in dein Startskript ein.

Wichtig: rpi-lgpio und RPi.GPIO können nicht gleichzeitig in derselben Python-Umgebung installiert sein.

Code-Beispiel: Vorher / Nachher

Dein bisheriger Code bleibt exakt gleich – du musst nichts ändern:

Genau derselbe Code läuft auf dem Pi 5, sobald rpi-lgpio installiert ist. Kein einziger Import muss geändert werden.

Option 2: gpiozero – die empfohlene Lösung für neue Projekte

gpiozero ist die offizielle Empfehlung der Raspberry Pi Foundation für neue Projekte. Die Bibliothek ist auf Raspberry Pi OS vorinstalliert, funktioniert auf allen Pi-Modellen (1 bis 5) und hat eine deutlich einfachere API als RPi.GPIO.

Für den Pi 5 unter aktuellen Kernel-Versionen musst du explizit den lgpio-Pin-Factory angeben:

Der Wert chip=4 ist wichtig: Beim Pi 5 ist der GPIO-Controller (RP1) am /dev/gpiochip4 erreichbar – bei älteren Pi-Modellen ist es chip=0.

Noch einfacher geht es über eine Umgebungsvariable, ohne den Code anzupassen:

Option 3: lgpio direkt – für erfahrene Nutzer

Wer maximale Kontrolle möchte, kann die lgpio-Bibliothek direkt verwenden. Das ist der Low-Level-Weg, erfordert aber mehr Code:

lgpio ist auf Raspberry Pi OS Bookworm bereits vorinstalliert, kann aber auch über apt nachinstalliert werden:

Welche Bibliothek soll ich nehmen?

  • Bestehender RPi.GPIO-Coderpi-lgpio installieren, fertig. Kein Code ändern.
  • Neues Projekt startengpiozero verwenden. Einfachste API, vorinstalliert, von Raspberry Pi Foundation empfohlen.
  • Maximale Kontrolle / Performancelgpio direkt nutzen.

Für die meisten Maker-Projekte ist gpiozero die beste Wahl: weniger Code, lesbarerer Code, und du musst dir keine Gedanken mehr über GPIO.cleanup() oder Chip-Nummern machen.

Fazit

Der Raspberry Pi 5 bringt durch den neuen RP1-I/O-Chip eine wichtige Änderung mit, die bestehenden GPIO-Code brechen kann. Die gute Nachricht: die Migration ist in den meisten Fällen auf wenige Minuten beschränkt. Mit rpi-lgpio läuft alter RPi.GPIO-Code ohne eine einzige Code-Änderung weiter. Für neue Projekte empfehle ich den Umstieg auf gpiozero – die API ist deutlich angenehmer und zukunftssicherer.

Welche GPIO-Pins der Pi 5 hat und was sie können, zeigt dir unser interaktives GPIO-Pinout-Tool.

Ähnliche Beiträge