Serielle Konsole auf dem Mac mit screen und /dev/tty.usbserial

Stecken Sie den USB-Seriell-Adapter ein und führen Sie ls /dev/cu.* aus, um seinen Port zu finden, zum Beispiel /dev/cu.usbserial-1420. Dann starten Sie screen /dev/cu.usbserial-1420 9600 mit der Baudrate des Geräts, oft 9600 oder 115200, und drücken Return. Zum Beenden von screen drücken Sie Ctrl-A, dann K, dann Y.

Lieber den Port aus einer Liste wählen, statt Gerätepfade zu tippen? Wardterm speichert jede Konsole mit ihren Leitungseinstellungen, wie einen Server. Zeigen

Aktualisiert am . Ausgeführt unter macOS 27 mit dem mitgelieferten screen 4.00.03 und cu: Ports mit ls /dev/cu.* aufgelistet, screen im Hintergrund an einem eingebauten Port mit stty-Optionen geöffnet, aufgelistet und mit screen -X quit geschlossen, und cu ohne sudo gestartet, um den Lock-Fehler zu zeigen.

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, Firewalls9600 8N1, ohne Flusskontrolle
Raspberry Pi, die meisten Linux-Boards115200 8N1, ohne Flusskontrolle
Mikrocontroller-BoardsWas die Firmware vorgibt, oft 115200 oder 9600
Alte Modems und manche IndustriegeräteTeils 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 busy oder Line in use. Ein anderes Programm belegt den Port, oft ein getrenntes screen. Finden Sie es mit lsof /dev/cu.usbserial-1420 und schließen Sie es, oder führen Sie screen -ls aus.
  • 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 TERM auf 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

Mehr zu SSH auf jedem System

Alle Anleitungen