Harting Development

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

Lukas Fuchs vor 3 Monaten 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

Deye Wechselrichter einrichten: Schritt-für-Schritt-Anleitung für eine reibungslose Inbetriebnahme

AUTOR • Sep 12, 2026
Netzwerk & Routing

WLAN mit Zeitschaltuhr steuern: So automatisierst du Geräte sauber und zuverlässig

AUTOR • Sep 11, 2026
Netzwerk & Routing

Handy Symbolfuehrer: Bedeutung der Symbole auf Ihrem Smartphone einfach erklärt

AUTOR • Sep 11, 2026
Sicherheit & Hardening

Hidden Text in Image erkennen: Methoden, Tools und Grenzen im Überblick

AUTOR • Sep 10, 2026
Systemadministration

SSD im PC einbauen: Schritt-für-Schritt-Anleitung für Einsteiger

AUTOR • Sep 10, 2026
Netzwerk & Routing

WLAN Verbindung zur Fritzbox bricht ständig ab: Ursachen und Lösungen, die sofort helfen

AUTOR • Sep 10, 2026
Linux-Server

SMB Freigabe in Linux mounten: Schritt-für-Schritt Anleitung für stabile Samba- und CIFS-Mounts

AUTOR • Sep 10, 2026
Linux-Server

Linux Mint Xfce Systemanforderungen: Wie wenig Hardware du wirklich brauchst

AUTOR • Sep 09, 2026
Sicherheit & Hardening

Hochsicherheit: Definition, Strategien und Maßnahmen für maximale Sicherheit

AUTOR • Sep 09, 2026
Netzwerk & Routing

OpenWrt auf Fritzbox installieren: So machst du deine Fritzbox zum flexiblen Router

AUTOR • Sep 09, 2026
Systemadministration

CMD Köln: Symptome, Diagnose und Behandlung einfach erklärt

AUTOR • Sep 09, 2026
Systemadministration

Die Zukunft des Zeitmanagements: Ein tiefer Einblick in 'Time Lab'

AUTOR • Sep 08, 2026
Systemadministration

Linux Mint Speicherplatz freigeben: Die schnellsten Methoden für mehr freien Platz

AUTOR • Sep 08, 2026
Cloud & Virtualisierung

iCloud Time Machine: So sicherst du Daten richtig auf Mac, iPhone und iPad

AUTOR • Sep 07, 2026
Linux-Server

Hoymiles Firmware Update Anleitung: So aktualisierst du deinen Wechselrichter sicher und schnell

AUTOR • Sep 07, 2026
Automatisierung & Scripting

PDF Bearbeitung unter Linux: Anleitung und bewährte Verfahren für schnelle, saubere Ergebnisse

AUTOR • Sep 07, 2026
Systemadministration

STD Meta: So baust du eine starke Meta-Strategie für bessere Sichtbarkeit

AUTOR • Sep 07, 2026
Netzwerk & Routing

Fritzbox 7590 defekter WLAN Chip: Symptome, Ursachen und was du jetzt tun solltest

AUTOR • Sep 06, 2026
Linux-Server

MX Linux auf Deutsch: Die komplette Anleitung für Installation, Sprache und erste Schritte

AUTOR • Sep 06, 2026
Linux-Server

Linux auf Surface installieren: So läuft dein Microsoft Surface mit Linux stabil und schnell

AUTOR • Sep 06, 2026

Beliebte Beiträge

Systemadministration

Backup Linux Mint: So sicherst du dein System schnell, sauber und zuverlässig

AUTOR • Jul 16, 2026
Monitoring & Logging

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

AUTOR • Jun 11, 2026
Linux-Server

Linux auf Surface installieren: So läuft dein Microsoft Surface mit Linux stabil und schnell

AUTOR • Sep 06, 2026
Systemadministration

So erstellen Sie einfach eine Textdatei unter Windows 11

AUTOR • Jul 16, 2025
Netzwerk & Routing

Der ultimative Leitfaden zum WireGuard Manager: Installation und Betrieb leicht gemacht

AUTOR • Jun 19, 2025
Automatisierung & Scripting

Nahtlose Integration von Siemens HomeConnect in Home Assistant: Die ultimativen Schritte zur Homematic Smart Home Steuerung

AUTOR • Jun 19, 2025
Sicherheit & Hardening

Home Assistant SSH aktivieren: So schaltest du sicheren Terminal-Zugriff in Minuten frei

AUTOR • Jun 16, 2026
Linux-Server

Thunderbird unter Linux: Installation, Konfiguration und Fehlerbehebung ohne Umwege

AUTOR • Jul 12, 2026
Linux-Server

Grub Customizer fuer Linux Mint: Bootloader einfach anpassen und verwalten

AUTOR • Jun 10, 2026
Netzwerk & Routing

WLAN-Probleme mit der FRITZ!Box 7530: Ursachen und Lösungen

AUTOR • Jan 03, 2026
Linux-Server

So formatierst du einen USB-Stick für den Raspberry Pi: Eine Schritt-für-Schritt-Anleitung

AUTOR • Jul 16, 2025
Systemadministration

Die perfekte Hz-Einstellung für deinen Monitor: So machst du es richtig!

AUTOR • Jun 26, 2025
Systemadministration

Wie Sie die RAM-Geschwindigkeit herausfinden: Eine Schritt-für-Schritt-Anleitung

AUTOR • Jun 26, 2025
Systemadministration

In die Tiefen der Rechenleistung: So funktioniert ein Prozessor

AUTOR • Jun 25, 2025
Sicherheit & Hardening

Tipps und Tricks zur BIOS-Konfiguration des HP EliteBook

AUTOR • Jun 15, 2025
Netzwerk & Routing

Sami-Lesebär/WLAN: So richtest du die WLAN-Funktion richtig ein und löst typische Probleme

AUTOR • Aug 12, 2026
Netzwerk & Routing

Roborock WLAN Verbindung ändern: Schritt-für-Schritt Anleitung für neues Netzwerk ohne Stress

AUTOR • Aug 16, 2026
Linux-Server

USB-Geräte unter Linux anzeigen: So findest du angeschlossene Geräte schnell und zuverlässig

AUTOR • Aug 28, 2026
Systemadministration

Memory Dump: Was ist das und wie wird es genutzt?

AUTOR • May 21, 2026
Automatisierung & Scripting

Die umfassende Shelly 1 Plus Anleitung: Dein Weg zur smarteren Steuerung

AUTOR • Jul 01, 2025