Den seriellen Port finden
Ein USB-Seriell-Adapter erscheint als zwei Dateien in /dev. Listen Sie sie vor und nach dem Einstecken auf, der neue Name ist Ihr Port:
ls /dev/cu.*
/dev/cu.Bluetooth-Incoming-Port
/dev/cu.debug-console
/dev/cu.usbserial-1420
Typische Namen sind cu.usbserial-XXXX für Adapter von FTDI und Prolific und cu.usbmodemXXXX für Boards, die sich als USB-Modem melden, wie viele Mikrocontroller-Boards. Die Nummer ändert sich mit der USB-Buchse.
Zu jedem Port gibt es auch einen Zwilling /dev/tty.*. Nehmen Sie den mit cu. Das tty-Gerät ist für eingehende Anrufe gedacht und wartet auf ein Trägersignal, das ein Konsolenkabel selten sendet, daher kann die Sitzung ohne Ausgabe hängen.
Erscheint kein neuer Port, prüfen Sie, ob macOS den Adapter überhaupt sieht:
ioreg -p IOUSB
Steht er dort, hat aber keinen Port, braucht der Chip einen Treiber seines Herstellers. Steht er nicht dort, versuchen Sie ein anderes Kabel: Manche USB-Kabel führen nur Strom.
Mit screen verbinden
screen ist in macOS enthalten und das schnellste serielle Terminal. Geben Sie Port und Baudrate an:
screen /dev/cu.usbserial-1420 9600
Der Bildschirm wird leer. Das ist normal: Eine Konsole gibt nichts aus, bis Sie etwas senden, also drücken Sie Return, und der Prompt erscheint. Nach der Baudrate können Sie Leitungseinstellungen im Stil von stty anhängen, durch Kommas getrennt:
screen /dev/cu.usbserial-1420 115200,cs8,-ixon,-ixoff
Hier steht cs8 für 8 Datenbits, und -ixon,-ixoff schalten die Software-Flusskontrolle aus.
Um screen zu beenden, drücken Sie Ctrl-A, dann K, dann Y. Ctrl-A und danach D trennt nur: Die Sitzung läuft weiter und belegt den Port. So finden und schließen Sie eine getrennte Sitzung:
screen -ls
screen -r
screen -X -S 98339 quit
Um alles mitzuschreiben, was das Gerät ausgibt, starten Sie screen mit -L. Es schreibt eine Datei namens screenlog.0 in den aktuellen Ordner.
Mit cu verbinden
cu ist das andere eingebaute Werkzeug. Am Mac braucht es sudo, weil es eine Lock-Datei in /var/spool/uucp anlegt. Ohne sudo bricht cu mit Line in use ab, auch wenn der Port frei ist. Genau das ist in unserem Test passiert.
sudo cu -l /dev/cu.usbserial-1420 -s 9600
Zum Verlassen von cu tippen Sie ~. am Zeilenanfang, also Return, dann Tilde, dann Punkt. Sind Sie per SSH mit dem Mac verbunden, fängt ssh dieselbe Folge zuerst ab, tippen Sie dann ~~.. Warum, erklärt der Leitfaden zu SSH-Escape-Sequenzen.
Baudrate, Parität und Flusskontrolle
Beide Seiten müssen dieselben Einstellungen nutzen, sonst sehen Sie Zeichensalat oder gar nichts. Die übliche Schreibweise ist die Baudrate plus 8N1: 8 Datenbits, keine Parität, 1 Stoppbit.
| Gerät | Übliche Einstellung |
|---|---|
| Switches, Router, Firewalls | 9600 8N1, ohne Flusskontrolle |
| Raspberry Pi, die meisten Linux-Boards | 115200 8N1, ohne Flusskontrolle |
| Mikrocontroller-Boards | Was die Firmware vorgibt, oft 115200 oder 9600 |
| Alte Modems und manche Industriegeräte | Teils 7E1 (7 Datenbits, gerade Parität) oder RTS/CTS |
Woran Sie falsche Werte erkennen: Zufällige Symbole bedeuten eine falsche Baudrate; Text mit einzelnen falschen Zeichen deutet auf Parität oder Datenbits; Ausgabe, die nach einer Bildschirmseite stoppt, deutet auf die Flusskontrolle. So sehen Sie die aktuelle Einstellung des Ports:
stty -f /dev/cu.usbserial-1420
Beim Raspberry Pi muss die serielle Konsole zuerst im System aktiviert werden. Der Leitfaden zu SSH auf dem Raspberry Pi deckt den Weg über das Netzwerk ab, sobald die Konsole ihre Arbeit getan hat.
Häufige Probleme
Resource busyoderLine in use. Ein anderes Programm belegt den Port, oft ein getrenntes screen. Finden Sie es mitlsof /dev/cu.usbserial-1420und schließen Sie es, oder führen Siescreen -lsaus.- Ein leerer Bildschirm. Drücken Sie Return. Kommt weiterhin nichts, prüfen Sie die Baudrate und dann, ob das Gerät ein Nullmodemkabel (gekreuzt) oder ein Rollover-Konsolenkabel braucht.
- Zeilen, die treppenartig versetzt sind, oder gar kein Zeilenumbruch. Das Gerät behandelt CR und LF anders. Viele Konsolen erwarten bei Return nur CR.
- Pfeiltasten oder Vollbildmenüs falsch dargestellt. Setzen Sie
TERMauf dem Gerät passend, siehe unknown terminal type.
screen oder ein eigenes serielles Terminal
screen und cu reichen für einen schnellen Blick. Ein eigenes serielles Terminal für den Mac hilft, wenn Sie oft an dieselben Geräte gehen: Es merkt sich Port und Leitungseinstellungen pro Gerät, listet die Ports auf und übersteht ein abgezogenes Kabel. So oder so: Sobald das Gerät im Netzwerk ist, wechseln Sie für die tägliche Arbeit zu SSH.
Fragen
Nehme ich am Mac /dev/tty.usbserial oder /dev/cu.usbserial?
Nehmen Sie /dev/cu. Das tty-Gerät wartet auf ein Trägersignal, das kaum ein Konsolenkabel sendet, und screen bleibt dann ohne Ausgabe stehen. Das cu-Gerät öffnet sofort.
Wie beende ich screen an einem seriellen Port?
Drücken Sie Ctrl-A, dann K, und antworten Sie mit Y. Schließen Sie stattdessen das Terminalfenster, kann screen im Hintergrund weiterlaufen und den Port belegen, der dann Resource busy meldet.
Warum zeigt meine serielle Konsole wirre Zeichen?
Die Baudrate stimmt nicht. Schließen Sie die Sitzung und probieren Sie die anderen üblichen Werte, zuerst 9600 und 115200, dann 19200, 38400 und 57600.
Braucht der Mac einen Treiber für einen USB-Seriell-Adapter?
Aktuelle macOS-Versionen bringen Treiber für die gängigen Chips mit. Erscheint der Adapter in ioreg -p IOUSB, aber kein Port /dev/cu., installieren Sie den Treiber des Chipherstellers.
Quellen
- screen(1), GNU-Screen-Handbuch
- cu(1), Taylor-UUCP-Handbuch
- stty(1), FreeBSD-Handbuch
- Raspberry-Pi-Dokumentation, UART-Konfiguration