Harting Development

tty in Linux: Das Terminal-Tool für die serielle Kommunikation

Lukas Fuchs vor 11 Stunden Netzwerk & Routing 3 Min. Lesezeit

Was ist tty in Linux?

In der Unix-Welt bezieht sich tty (Teletype) auf eine textbasierte Benutzeroberfläche, die typischerweise über eine serielle Schnittstelle mit einem Terminalgerät verbunden ist. tty wird in Linux als Schnittstelle für die serielle Kommunikation verwendet, was es zu einem wertvollen Werkzeug für Entwickler, Administratoren und Hobbyisten macht.

Wie funktioniert tty?

TTY fungiert als virtuelles Terminal, mit dem sich Benutzer über eine serielle Leitung mit einem anderen Gerät verbinden können. Es bietet einen interaktiven Eingabeaufforderungsmodus, in dem Befehle eingegeben und Ausgabe empfangen werden kann. Die serielle Leitung überträgt Daten zwischen dem Computer und dem angeschlossenen Gerät, wodurch eine bidirektionale Kommunikation ermöglicht wird.

Anwendungsfälle von tty

TTY hat verschiedene Anwendungsfälle, darunter:

  • Fernsteuerung von Servern und Geräten über serielle Konsolen
  • Interaktion mit eingebetteten Systemen und Mikrocontrollern
  • Fehlersuche und Debugging von seriellen Geräten
  • Automatisierung von Aufgaben über serielle Protokolle
  • Kommunikation mit legacy-Systemen, die nur serielle Schnittstellen unterstützen

Verwendung von tty für die serielle Kommunikation

tty ist ein leistungsstarkes Werkzeug für die serielle Kommunikation unter Linux. Es ermöglicht dir den direkten Zugriff auf serielle Ports und die Steuerung des Datenflusses zwischen deinem Computer und externen Geräten wie Mikrocontrollern, Sensoren und Modems.

Konfiguration der tty-Einstellungen

Um eine serielle Verbindung über tty herzustellen, musst du zunächst die Einstellungen des tty-Geräts konfigurieren. Dazu gehören:

  • Gerätename: Der Name des tty-Geräts, z. B. /dev/ttyS0.
  • Baudrate: Die Datenübertragungsrate in Bits pro Sekunde.
  • Datenbits: Die Anzahl der Datenbits pro Zeichen.
  • Stoppbits: Die Anzahl der Stoppbits am Ende jedes Zeichens.
  • Parität: Die Methode zur Fehlererkennung (z. B. ungerade, gerade oder keine).

Du kannst diese Einstellungen mit dem Befehl stty festlegen, gefolgt von den entsprechenden Optionen. Beispielsweise kannst du die Baudrate auf 9600 bps, 8 Datenbits, 1 Stoppbit und keine Parität mit dem folgenden Befehl einstellen:

stty -F /dev/ttyS0 9600 -parenb -parodd cs8 -cstopb

Senden und Empfangen von Daten über tty

Sobald die tty-Einstellungen konfiguriert sind, kannst du Daten über den seriellen Port senden und empfangen. Dazu verwendest du die Befehle cat und echo.

Um Daten zu senden, verwende den folgenden Befehl:

echo "Daten" > /dev/ttyS0

Um Daten zu empfangen, verwende den folgenden Befehl:

cat /dev/ttyS0

Du kannst auch Programme wie minicom oder picocom verwenden, um eine interaktive serielle Schnittstelle einzurichten. Diese Programme bieten eine benutzerfreundliche Oberfläche zum Senden und Empfangen von Daten und zur Überwachung des seriellen Datenflusses.

Auflisten verfügbarer tty-Geräte

Um eine serielle Kommunikation mit tty durchzuführen, musst du zunächst die verfügbaren tty-Geräte auf deinem System auflisten. Dies ermöglicht es dir, das entsprechende Gerät auszuwählen, über das du eine Verbindung herstellen möchtest.

H3 Verfügbare tty-Geräte auflisten

tty-Geräte befinden sich typischerweise im Verzeichnis /dev. Um alle verfügbaren tty-Geräte aufzulisten, kannst du den folgenden Befehl verwenden:

ls /dev/tty*

Dieser Befehl listet alle Geräte auf, die mit "tty" beginnen. Beispielsweise könntest du folgende Ausgabe sehen:

/dev/tty0
/dev/tty1
/dev/ttyUSB0
/dev/ttyACM0

H3 Interpretieren der Ausgabe

  • /dev/tty0 und /dev/tty1 sind virtuelle Konsolengeräte, die nicht für die serielle Kommunikation verwendet werden.
  • /dev/ttyUSB0 ist ein USB-zu-Seriell-Konverter, der häufig für die serielle Kommunikation verwendet wird.
  • /dev/ttyACM0 ist ein Abstract Control Model (ACM)-Gerät, das auch häufig für die serielle Kommunikation verwendet wird.

Die spezifischen tty-Geräte, die auf deinem System verfügbar sind, hängen von deiner Hardwarekonfiguration ab.

H3 Auswählen eines tty-Geräts

Sobald du die verfügbaren tty-Geräte aufgelistet hast, kannst du dasjenige auswählen, über das du eine Verbindung herstellen möchtest. Überlege dir, welches Gerät mit dem seriellen Gerät verbunden ist, mit dem du kommunizieren möchtest, und wähle das entsprechende tty-Gerät aus.

Zugriff auf ein tty-Gerät

Nachdem du die verfügbaren tty-Geräte auf deinem System aufgelistet hast, kannst du auf ein bestimmtes tty-Gerät zugreifen, um mit dem entsprechenden seriellen Gerät zu kommunizieren.

Öffnen eines tty-Geräts

Um ein tty-Gerät zu öffnen, verwendest du die Funktion open() in C oder Serial() in Python. Du musst den Gerätepfad als Argument angeben, z. B. /dev/ttyUSB0 für das erste USB-Seriengerät.

Überwachungsmodus

Im Überwachungsmodus kann das Programm den Zustand des tty-Geräts überwachen, ohne Daten zu senden oder zu empfangen. Dies ist nützlich, um Ereignisse zu erkennen oder Statusinformationen abzurufen.

Nicht-blockierender Modus

Im Nicht-blockierenden Modus gibt die read()- oder write()-Funktion keinen Fehler zurück, wenn keine Daten zu lesen oder zu schreiben sind. Stattdessen gibt sie einen speziellen Wert zurück, um anzuzeigen, dass die Operation nicht ausgeführt werden konnte. Dies ist nützlich für die Verarbeitung von Echtzeitdaten oder die Implementierung von ereignisgesteuerten Programmen.

Konfigurieren der tty-Einstellungen

Damit tty ordnungsgemäß funktioniert, musst du seine Einstellungen konfigurieren. Dies umfasst Folgendes:

Geschwindigkeit (Baudrate): Geschwindigkeit, mit der Daten übertragen werden. Verwende den Befehl stty -F <tty-Gerät> speed <Geschwindigkeit> (z. B. stty -F /dev/ttyUSB0 speed 9600).

Parität: Überprüfungsmethode zur Erkennung von Datenübertragungsfehlern. Wähle eine Parität (z. B. none, odd, even) mit dem Befehl stty -F <tty-Gerät> parity <Parität>.

Datenbits: Anzahl der Bits in jedem Datenwort. Übliche Optionen sind 7 oder 8, die du mit stty -F <tty-Gerät> data <Bits> einstellst.

Stoppbits: Anzahl der Bits, die das Ende eines Datenwords signalisieren. In der Regel 1 oder 2, einstellbar mit stty -F <tty-Gerät> stopbits <Bits>.

Flusssteuerung: Mechanismus zur Verhinderung von Datenüberläufen. Verwende stty -F <tty-Gerät> crtscts für hardwarebasierte oder stty -F <tty-Gerät> ixon für softwarebasierte Flusssteuerung.

Lokaler Modus: Optionen zur lokalen Verarbeitungsoptionen. Deaktiviere beispielsweise die Eingabe-Echo mit stty -F <tty-Gerät> -echo.

Verwende den Befehl stty -F <tty-Gerät> -a, um alle aktuellen tty-Einstellungen anzuzeigen.

Daten über tty senden und empfangen

Daten senden

Um Daten über tty zu senden, verwendest du die write()-Funktion. Diese Funktion nimmt two Argumente:

  • Den Dateideskriptor für das tty-Gerät, das du verwenden möchtest
  • Die Daten, die du senden möchtest

Beispiel:

int fd = open("/dev/ttyUSB0", O_WRONLY);
write(fd, "Hallo Welt!", 11);
close(fd);

Daten empfangen

Um Daten über tty zu empfangen, verwendest du die read()-Funktion. Diese Funktion nimmt three Argumente:

  • Den Dateideskriptor für das tty-Gerät, das du verwenden möchtest
  • Den Puffer, in den die empfangenen Daten geschrieben werden sollen
  • Die maximale Anzahl von Bytes, die gelesen werden sollen

Beispiel:

int fd = open("/dev/ttyUSB0", O_RDONLY);
char buf[1024];
int bytes_read = read(fd, buf, sizeof(buf));
close(fd);

Fehlerhandling

Es gibt eine Reihe von Fehlern, die beim Senden oder Empfangen von Daten über tty auftreten können. Einige der häufigsten Fehler sind:

  • EAGAIN: Der Vorgang konnte nicht sofort abgeschlossen werden.
  • EINTR: Der Vorgang wurde durch ein Signal unterbrochen.
  • EIO: Ein E/A-Fehler ist aufgetreten.
  • EINVAL: Ungültige Argumente wurden für den Vorgang bereitgestellt.

Du kannst die errno-Variable verwenden, um den Fehlercode für einen tty-Fehler abzurufen. Die folgende switch-Anweisung zeigt, wie verschiedene Fehlercodes verarbeitet werden können:

switch (errno) {
    case EAGAIN:
        // Der Vorgang konnte nicht sofort abgeschlossen werden.
        break;
    case EINTR:
        // Der Vorgang wurde durch ein Signal unterbrochen.
        break;
    case EIO:
        // Ein E/A-Fehler ist aufgetreten.
        break;
    case EINVAL:
        // Ungültige Argumente wurden für den Vorgang bereitgestellt.
        break;
    default:
        // Ein unbekannter Fehler ist aufgetreten.
        break;
}

Fehlerbehebung bei tty-Problemen

Wenn du Probleme mit tty hast, kannst du die folgenden Schritte zur Fehlerbehebung ausprobieren:

Überprüfen, ob das tty-Gerät verfügbar ist

  • Verwende den Befehl dmesg, um zu prüfen, ob das tty-Gerät erkannt wurde.
  • Stelle sicher, dass das tty-Gerät durch die Berechtigungen deiner Gruppe und anderen Benutzern zugänglich ist.

Verbindungsprobleme

  • Überprüfe, ob die serielle Verbindung korrekt verkabelt und angeschlossen ist.
  • Stelle sicher, dass die Einstellungen auf beiden Seiten (Host und Gerät) übereinstimmen, wie z. B. Baudrate, Datenbits und Parität.
  • Versuche, das tty-Gerät zurückzusetzen, indem du den Befehl stty sane ausführst.

Datenübertragungsprobleme

  • Überprüfe, ob die Daten im richtigen Format gesendet und empfangen werden.
  • Passe ggf. die tty-Einstellungen für die Datenübertragung wie Puffergröße und Zeitlimits an.
  • Überwache die Datenübertragung mit einem Tool wie minicom oder picocom, um Probleme zu erkennen.

Berechtigungsprobleme

  • Stelle sicher, dass du über die erforderlichen Berechtigungen zum Zugriff auf das tty-Gerät verfügst.
  • Verwende den Befehl chmod oder chown, um die Berechtigungen anzupassen.

Hardwareprobleme

  • Überprüfe, ob die serielle Schnittstelle richtig funktioniert.
  • Probiere, ein anderes tty-Gerät oder einen anderen seriellen Port zu verwenden.
  • Wende dich an den Hersteller des Geräts, um Unterstützung bei Hardwareproblemen zu erhalten.

Andere Tipps

  • Konsultiere die Dokumentation von tty für detailliertere Informationen.
  • Verwende die Befehlszeilenoption -v mit tty-Befehlen, um zusätzliche Informationen zur Fehlerbehebung zu erhalten.
  • Suche in Online-Foren und Stackoverflow nach ähnlichen Problemen und Lösungen.

Weitere Beiträge

Folge uns

Neue Beiträge

Cloud & Virtualisierung

Proxmox auf Mac Mini installieren: So machst du aus Apples Mini-PC einen starken Virtualisierungsserver

AUTOR • Jun 11, 2026
Systemadministration

Die ultimative Anleitung zu rsync Fernkopien für Profis: schnell, sicher, effizient

AUTOR • Jun 11, 2026
Monitoring & Logging

Hoymiles HM 800 blinkt rot: Ursachen, Fehlerbehebung und schnelle Lösungen

AUTOR • Jun 11, 2026
Linux-Server

Linux WLAN Treiber installieren: So bringst du dein WLAN schnell zum Laufen

AUTOR • Jun 11, 2026
Monitoring & Logging

Hoymiles HM-800 blinkt grün: Bedeutung, Ursachen und schnelle Lösungen

AUTOR • Jun 11, 2026
Netzwerk & Routing

WLAN Probleme mit der FRITZ!Box 7590: So findest du die Ursache und behebst sie schnell

AUTOR • Jun 11, 2026
Linux-Server

Fernzugriff auf Ubuntu-Systeme mit Remote Desktop Protocol (RDP): So richtest du es schnell und sicher ein

AUTOR • Jun 11, 2026
Systemadministration

Linux-Ordnergröße anzeigen: Methoden, um Speicherplatz zu verwalten

AUTOR • Jun 11, 2026
Linux-Server

Baldurs Gate 3 unter Linux: Anleitung für begeisterte Spieler, die sofort loslegen wollen

AUTOR • Jun 11, 2026
Netzwerk & Routing

Xiaomi WLAN Probleme: Ursachen finden und beheben – die schnelle Anleitung

AUTOR • Jun 11, 2026
Netzwerk & Routing

WLAN GHz-Bänder auf dem iPhone schnell finden: So prüfst du 2,4 GHz, 5 GHz und 6 GHz

AUTOR • Jun 10, 2026
Netzwerk & Routing

WLAN Änderung für Ring Kamera: Schritt-für-Schritt-Anleitung ohne Stress

AUTOR • Jun 10, 2026
Cloud & Virtualisierung

Erstellung virtueller Maschinen unter Linux: Ein umfassender Leitfaden für schnelle, saubere Setups

AUTOR • Jun 10, 2026
Systemadministration

Windows 11 WLAN aktivieren: Schritt-für-Schritt-Anleitung ohne Umwege

AUTOR • Jun 10, 2026
Netzwerk & Routing

Dein LAN in WLAN verwandeln: So wählst du den besten LAN-zu-WLAN-Adapter

AUTOR • Jun 10, 2026
Automatisierung & Scripting

iTunes unter Linux: Installation und Nutzung auf einem Nicht-Apple-System

AUTOR • Jun 10, 2026
Netzwerk & Routing

WLAN Probleme mit der o2 HomeBox 6641: Lösungen und Tipps für stabiles Internet

AUTOR • Jun 10, 2026
Linux-Server

OneDrive auf Linux synchronisieren: So halten Sie Ihre Dateien nahtlos aktuell

AUTOR • Jun 10, 2026
Cloud & Virtualisierung

BlueStacks für Linux: So nutzen Sie Android-Apps auf Ihrem PC ohne Umwege

AUTOR • Jun 10, 2026
Cloud & Virtualisierung

Ford Sync 3 drahtlos aktualisieren: So bringen Sie Ihr System ohne Kabel auf den neuesten Stand

AUTOR • Jun 10, 2026

Beliebte Beiträge

Netzwerk & Routing

Erweiterung des WLAN-Signals: So vergrößerst du die Reichweite deiner WLAN-Antenne

AUTOR • May 09, 2024
Netzwerk & Routing

Bluetooth und WLAN gleichzeitig nutzen: So geht's

AUTOR • May 09, 2024
Netzwerk & Routing

WLAN-Einrichtung unter Windows XP: Schritt-für-Schritt-Anleitung

AUTOR • May 09, 2024
Automatisierung & Scripting

ESP8266 und ESP32: Optimierung des WLANs für eingebettete Systeme

AUTOR • Apr 19, 2024
Netzwerk & Routing

Panasonic TV mit Smartphone verbinden: Schritt-für-Schritt-Anleitung zur kabellosen Verbindung

AUTOR • Apr 19, 2024
Linux-Server

Linux Dateien löschen: So entfernen Sie Dateien sicher und effizient

AUTOR • Apr 17, 2024
Netzwerk & Routing

Die ultimative Anleitung zur Optimierung deiner FRITZ!Box-Antenne für ein starkes und stabiles WLAN

AUTOR • May 09, 2024
Netzwerk & Routing

ALDI TALK WiFi Calling: Nahtlose Anrufe über WLAN

AUTOR • Apr 19, 2024
Netzwerk & Routing

WLAN dBm-Tabelle: Signalstärke verstehen und Netzwerkprobleme beheben

AUTOR • Oct 13, 2025
Netzwerk & Routing

cURL für Linux: Befehle, Optionen und Beispiele für effektive Datenübertragung

AUTOR • Apr 17, 2024
Netzwerk & Routing

HP Envy 6032 mühelos mit WLAN verbinden: Schritt-für-Schritt-Anleitung

AUTOR • Apr 19, 2024
Systemadministration

WinSCP unter Linux: Die ultimative Anleitung zur Verwaltung von Remote-Dateien

AUTOR • Apr 17, 2024
Netzwerk & Routing

Die Signalstärke dBm Tabelle: Eine umfassende Analyse

AUTOR • Dec 12, 2024
Netzwerk & Routing

Linux IP-Adresse anzeigen: Eine Anleitung

AUTOR • Dec 12, 2024
Netzwerk & Routing

DNS-Server unter Linux: Einrichtung, Konfiguration und Verwaltung

AUTOR • Apr 17, 2024
Sicherheit & Hardening

Aktivierung von SSH unter Ubuntu: Schritt-für-Schritt-Anleitung

AUTOR • Apr 17, 2024
Linux-Server

Arch Linux Installation: Eine Schritt-für-Schritt-Anleitung für Einsteiger

AUTOR • Apr 17, 2024
Sicherheit & Hardening

Fronius Wechselrichter zurücksetzen: Häufige Fragen und Lösungen

AUTOR • May 10, 2025
Netzwerk & Routing

Die ultimative Anleitung: Teckin Steckdose – Smart Home einfach gemacht

AUTOR • Apr 19, 2024
Netzwerk & Routing

FRITZ!Box 7520: Der umfassende Ratgeber für Highspeed-Heimnetzwerke

AUTOR • Apr 19, 2024