Warum sendet die serielle Schnittstelle meines Raspi wirre Zeichen?

  • Warum sendet die serielle Schnittstelle meines Raspi wirre Zeichen?


    Einleitung:
    In diesem FAQ wird aufgezeigt, wie und welche Änderungen notwendig sind um die rs232 des Raspi zur seriellen Kommunikation zu nutzen.


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



    Achtung! 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 ( siehe auch die Infos -> über diesen Link <- )
    Das ist der derzeitige Stand. Ob und wann sich da was ändert ist im Moment nicht bekannt.
    Wie Michael ( -> maus3333 <- ) -> in diesem Thread <- schreibt, ist das - oft beschriebene - Prozedere mit dem Deaktivieren von Bluetooth nicht notwendig.
    Es genügt also zu gewährleisten, dass die serielle Konsole nicht auf /dev/ttyS0 aktiviert ist.
    (Stand: 30.06.2016).


    [hr]


    Unter Raspbian Jessie wird die serielle Konsole folgendermassen deaktiviert:


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

    Code
    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

    Code
    sudo systemctl disable serial-getty@ttyAMA0.service


    ausgeführt werden.
    Die aktuelle Einstellung könnt ihr mit

    Code
    sudo systemctl status serial-getty@ttyAMA0.service


    überprüfen.
    [hr]


    Folgende Beschreibung gilt für Raspbian wheezy:


    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:

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


    ändern nach:

    Code
    #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:

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


    ändern nach:

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


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


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


    cheers,
    -ds-