Die UART-Schnittstelle am Raspberry Pi ist für die serielle Kommunikation mit Mikrocontrollern, GPS-Modulen, GSM-Modems und anderen Geräten unverzichtbar. Standardmäßig ist der UART jedoch als serielle Konsole belegt und muss erst für eigene Projekte freigegeben werden. In diesem Artikel zeige ich euch, wie das unter Raspberry Pi OS Bookworm funktioniert – mit den wichtigen Unterschieden zwischen den Pi-Modellen.
UART am Raspberry Pi – Unterschiede je nach Modell
Beim Raspberry Pi gibt es zwei UART-Hardware-Einheiten:
- PL011 (vollwertig, stabil) – auch „UART0″ oder „ttyAMA0″
- Mini UART (einfacher, frequenzabhängig) – auch „UART1″ oder „ttyS0″
Beim Pi 3, Pi 4 und Pi 5 ist der PL011 standardmäßig dem Bluetooth-Modul zugeordnet, der Mini UART wird als Konsole verwendet. Für eigene Projekte wollt ihr in der Regel den vollwertigen PL011 nutzen.
| Modell | Konsole | Bluetooth | GPIO UART |
|---|---|---|---|
| Pi 1, 2 | ttyAMA0 (PL011) | – | ttyAMA0 |
| Pi 3, 4, 5, Zero 2W | ttyS0 (Mini UART) | ttyAMA0 (PL011) | ttyS0 oder ttyAMA0* |
*Mit Bluetooth deaktivieren wird ttyAMA0 (PL011) für den GPIO freigegeben.
Konfigurationsdatei öffnen
Unter Raspberry Pi OS Bookworm liegt die Konfigurationsdatei unter:
|
1 |
sudo nano /boot/firmware/config.txt |
Ältere Versionen (Bullseye und älter): /boot/config.txt
Methode 1: UART aktivieren (einfach, alle Modelle)
Diese Methode funktioniert auf allen Pi-Modellen. Der Mini UART (ttyS0) wird für GPIO-Pins 14/15 verfügbar gemacht, die serielle Konsole wird deaktiviert.
Fügt in der config.txt ans Ende ein:
|
1 |
enable_uart=1 |
Dann muss die serielle Konsole in der cmdline.txt deaktiviert werden:
|
1 |
sudo nano /boot/firmware/cmdline.txt |
Entfernt den Eintrag console=serial0,115200 aus der Zeile. Die Zeile sollte danach ungefähr so aussehen:
|
1 |
console=tty1 root=PARTUUID=xxxxxx rootfstype=ext4 fsck.repair=yes rootwait |
Neu starten:
|
1 |
sudo reboot |
Nach dem Neustart ist UART auf /dev/ttyS0 verfügbar.
Methode 2: PL011 UART nutzen – Bluetooth deaktivieren (Pi 3/4/5, empfohlen)
Für zuverlässige serielle Kommunikation empfehle ich auf Pi 3, 4, 5 und Zero 2W den vollwertigen PL011 UART zu verwenden. Dazu muss Bluetooth deaktiviert werden.
In /boot/firmware/config.txt am Ende hinzufügen:
|
1 |
dtoverlay=disable-bt |
Außerdem den Bluetooth-Dienst deaktivieren:
|
1 2 |
sudo systemctl disable hciuart sudo systemctl disable bluetooth |
Serielle Konsole wie in Methode 1 aus der cmdline.txt entfernen. Nach einem Neustart ist /dev/ttyAMA0 (PL011) für eigene Zwecke verfügbar.
UART testen
Nach der Aktivierung könnt ihr UART mit einem einfachen Test prüfen. Verbindet dazu GPIO 14 (TXD) und GPIO 15 (RXD) mit einem Kabel (Loopback-Test):
|
1 2 |
sudo apt install minicom -y minicom -D /dev/ttyAMA0 -b 9600 |
Was ihr tippt, sollte direkt wieder erscheinen (Loopback). Beendet minicom mit STRG+A → X.
Alternativ über Python:
|
1 2 3 4 5 6 7 8 |
sudo apt install python3-serial -y python3 -c " import serial s = serial.Serial('/dev/ttyAMA0', 9600, timeout=1) s.write(b'Hallo UART\n') print(s.readline()) s.close() " |
UART über raspi-config aktivieren
Einfacher geht es auch über raspi-config:
|
1 |
sudo raspi-config |
Wählt „3 Interface Options“ → „I5 Serial Port“. Dann:
- „Would you like a login shell to be accessible over the serial?“ → Nein
- „Would you like the serial port hardware to be enabled?“ → Ja
Nach einem Neustart ist der Serial Port aktiv.
Typische Anwendungsfälle
- GPS-Module (z.B. NEO-6M, NEO-M8N) – senden NMEA-Daten über UART
- GSM/LTE-Modems (z.B. SIM800, SIM7600)
- Arduino / Mikrocontroller – Datenaustausch über serielle Schnittstelle
- Smartmeter-Lesekopf – optischer Auslesekopf für Stromzähler (SML-Protokoll)
- RS485-Adapter – für industrielle Busprotokolle (Modbus etc.)
