Raspberry Pi: Aktivieren der seriellen Schnittstelle

Aktivieren der seriellen Schnittstelle des Raspberry Pi

Um die rs232 des Raspi zur seriellen Kommunikation zu nutzen, muss diese erst für andere Dienste des Systems deaktiviert und Ausgaben beim Bootvorgang unterbunden werden.

Sonderfall Raspberry Pi Modell 3

Beim Raspberry Pi Modell 3 gibt es eine Inkompatibilität mit dem UART.
Die Schnittstelle heisst auf dieser Plattform /dev/ttyS0 und nicht /dev/ttyAMA0.
Das hängt damit zusammen, dass beim Pi 3 der UART0 für den integrierten Bluetooth Controller verwendet wird, da er unabhängig von der Core-Frequenz läuft.
Nähere Informationen hierzu z.B. unter https://frillip.com/raspberry-pi-3-uart-baud-rate-workaround.

Auf manchen Websites wird empfohlen, das integrierte bluetooth zu deaktivieren um die Standard-Schnittstelle /dev/ttyAMA0 wieder benutzen zu können.
Das ist meines Erachtens aber wirklich nur dann notwendig, will man partout /dev/ttyAMA0 auf den GPIOs 14 und 15 haben.
Um bluetooth zu deaktivieren muss die Datei /boot/config.txt mit root-Rechten geändert werden.

Dazu am Ende der Datei die Zeile:

dtoverlay=pi3-disable-bt

einfügen und speichern.

Nun muss noch das bluetooth-Modem deaktiviert werden.

Das erfolgt über systemctl mit dem Kommando:

sudo systemctl disable hciuart

Mach einem Neustart sollte jetzt /dev/ttyAMA0 wie gewohnt zur Verfügung stehen.

Vorgehen bei Raspbian Jessie

Da unter Jessie keine inittabe mehr exisitert und zudem die Dienste über systemd statt über sysVinit gestartet werden, reicht es aus, mit

sudo systemctl stop serial-getty@ttyAMA0.service

den Dienst der seriellen Konsole auf der rs232 zu stoppen.

Soll auch nach einem Neustart dieser Dienst deaktiviert bleiben, muss stattdessen

sudo systemctl disable serial-getty@ttyAMA0.service

ausgeführt werden.

Die aktuelle Einstellung kann mit

sudo systemctl status serial-getty@ttyAMA0.service

überprüft werden.

Vorgehen bei Raspbian Wheezy

Alle Änderungen müssen als root vorgenommen werden (sudo vor das Kommando oder gleich sudo bash für eine root-shell).

Zunächst die Datei /etc/inittab ändern. I.d.R. findet man ganz unten eine Zeile, in der ttyAMA0 drin steht. Die muss auskommentiert werden:

T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100

ändern nach:

#T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100

Dann die Datei /boot/cmdline.txt editieren. Da steht einiges drin, das ebenfalls zu ttyAMA0 gehört. Das muss entfernt werden:

dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait

ändern nach:

dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait

Nach einem reboot (shutdown -r now) sollte über die rs232 nichts mehr ausgegeben werden.

Schreibe einen Kommentar