Das FreeBSD-Handbuch
Zurück | Kapitel 27. Serielle Datenübertragung | Weiter

# 27.2. Einführung

> Warnung: Mit FreeBSD 8.0 wurden die Gerätedateien für serielle Ports von `/dev/ttyd`N`` in `/dev/ttyu`N`` umbenannt. Setzen Sie noch FreeBSD 7.X ein, müssen Sie die Befehle in den folgenden Abschnitten entsprechend anpassen.

## 27.2.1. Begriffe

bps

  Bits pro Sekunde – Einheit für die Übertragungsgeschwindigkeit.

DEE (DTE)

  Datenendeinrichtung (Data Terminal Equipment) – zum Beispiel Ihr Computer.

DÜE (DCE)

  Datenübertragungseinrichtung (Data Communications Equipment) – Ein Modem.

RS-232

  EIA (Electronic Industries Association) Norm für die serielle Datenübertragung.

In diesem Abschnitt wird der Begriff “Baud” nicht für Übertragungsgeschwindigkeiten gebraucht. Baud bezeichnet elektrische Zustandswechsel pro Zeiteinheit, die Taktfrequenz, während “bps” (Bits pro Sekunde) der richtige Begriff für die Übertragungsgeschwindigkeit ist (die meisten Pedanten sollten damit zufrieden sein).

## 27.2.2. Kabel und Schnittstellen

Um ein Modem oder einen Terminal an Ihr FreeBSD-System anzuschließen, muss Ihr Computer über eine serielle Schnittstelle verfügen. Zusätzlich brauchen Sie noch das passende Kabel, um das Gerät mit der Schnittstelle zu verbinden. Wenn Sie mit Ihren Geräten und den nötigen Kabeln schon vertraut sind, können Sie diesen Abschnitt überspringen.

### 27.2.2.1. Kabel

Es gibt verschiedene serielle Kabel. Die zwei häufigsten sind Nullmodemkabel und Standard-RS-232-Kabel. Die Dokumentation Ihrer Hardware sollte beschreiben, welchen Kabeltyp Sie benötigen.

#### 27.2.2.1.1. Nullmodemkabel

Ein Nullmodemkabel verbindet einige Signale, wie die Betriebserde, eins zu eins, andere Signale werden getauscht: Die Sende- und Empfangsleitungen werden zum Beispiel gekreuzt.

Sie können das Kabel für die Anbindung eines Terminals auch selbst herstellen. Die folgende Tabelle enthält die Signalnamen von RS-232C sowie die Pinbelegung für einen Stecker vom Typ DB-25. Beachten Sie dabei aber, dass der Standard zwar eine direkte Verbindung beider Pin 1 (Protective Ground) vorschreibt, diese aber in vielen Fällen nicht vorhanden ist. Einige Terminals benötigen nur die Pins 2, 3 und 7 für eine korrekte Funktion, während andere eine unterschiedliche Konfiguration als die in den folgenden Beispielen gezeigte benötigen.

Tabelle 27-1. Nullmodemkabel vom Typ DB-25-zu-DB-25

Signal | Pin # |  | Pin # | Signal
--- | --- | --- | --- | ---
SG | 7 | verbunden mit | 7 | SG
TD | 2 | verbunden mit | 3 | RD
RD | 3 | verbunden mit | 2 | TD
RTS | 4 | verbunden mit | 5 | CTS
CTS | 5 | verbunden mit | 4 | RTS
DTR | 20 | verbunden mit | 6 | DSR
DTR | 20 | verbunden mit | 8 | DCD
DSR | 6 | verbunden mit | 20 | DTR
DCD | 8 | verbunden mit | 20 | DTR

Die folgenden zwei Schemata werden heutzutage ebenfalls häufig eingesetzt:

Tabelle 27-2. Nullmodemkabel vom Typ DB-9-zu-DB-9

Signal | Pin # |  | Pin # | Signal
--- | --- | --- | --- | ---
RD | 2 | verbunden mit | 3 | TD
TD | 3 | verbunden mit | 2 | RD
DTR | 4 | verbunden mit | 6 | DSR
DTR | 4 | verbunden mit | 1 | DCD
SG | 5 | verbunden mit | 5 | SG
DSR | 6 | verbunden mit | 4 | DTR
DCD | 1 | verbunden mit | 4 | DTR
RTS | 7 | verbunden mit | 8 | CTS
CTS | 8 | verbunden mit | 7 | RTS

Tabelle 27-3. Nullmodemkabel vom Typ DB-9-zu-DB-25

Signal | Pin # |  | Pin # | Signal
--- | --- | --- | --- | ---
RD | 2 | verbunden mit | 2 | TD
TD | 3 | verbunden mit | 3 | RD
DTR | 4 | verbunden mit | 6 | DSR
DTR | 4 | verbunden mit | 8 | DCD
SG | 5 | verbunden mit | 7 | SG
DSR | 6 | verbunden mit | 20 | DTR
DCD | 1 | verbunden mit | 20 | DTR
RTS | 7 | verbunden mit | 5 | CTS
CTS | 8 | verbunden mit | 4 | RTS

> Anmerkung: Wird ein Pin eines Kabels mit zwei Pins des anderen Kabels verbunden, werden dazu in der Regel zuerst die beiden Pins mit einem kurzem Draht verbunden. Danach wird dieser Draht mit dem Pin des anderen Endes verbunden.

Die eben besprochenen Schemata scheinen die beliebtesten zu sein. Es gibt aber noch weitere Varianten. Im Buch RS-232 Made Easy wird beispielsweise SG mit SG verbunden, TD mit RD, RTS und CTS mit DCD, DTR mit DSR, und umgekehrt.

#### 27.2.2.1.2. Standard RS-232C Kabel

Ein Standard-RS-232C-Kabel verbindet alle Signale direkt, das heißt das Signal “Transmitted Data” wird mit dem Signal “Transmitted Data” der Gegenstelle verbunden. Dieses Kabel wird benötigt, um ein Modem mit einem FreeBSD-System zu verbinden. Manche Terminals benötigen dieses Kabel ebenfalls.

### 27.2.2.2. Schnittstellen

Über serielle Schnittstellen werden Daten zwischen dem FreeBSD-System und dem Terminal übertragen. Dieser Abschnitt beschreibt die verschiedenen Schnittstellen und wie sie unter FreeBSD angesprochen werden.

#### 27.2.2.2.1. Arten von Schnittstellen

Da es verschiedene Schnittstellen gibt, sollten Sie vor dem Kauf oder Selbstbau eines Kabels sicherstellen, dass dieses zu den Schnittstellen Ihres Terminals und FreeBSD-Systems passt.

Die meisten Terminals besitzen DB-25-Stecker. Personal Computer haben DB-25- oder DB-9-Stecker. Wenn Sie eine serielle Multiportkarte für Ihren PC besitzen, haben Sie vielleicht RJ-12- oder RJ-45-Anschlüsse.

Die Dokumentation Ihrer Geräte sollte Aufschluss über den Typ der benötigten Anschlüsse geben. Oft hilft es, wenn Sie sich den Anschluss einfach ansehen.

#### 27.2.2.2.2. Schnittstellenbezeichnung

Unter FreeBSD sprechen Sie die serielle Schnittstelle (Port) über einen Eintrag im `/dev` Verzeichnis an. Es gibt dort zwei verschiedene Einträge:

- Schnittstellen für eingehende Verbindungen werden `/dev/ttyu`N`` genannt. Dabei ist `N` die Nummer der Schnittstelle, deren Zählung bei Null beginnt. Allgemein wird diese Schnittstelle für Terminals benutzt. Diese Schnittstelle funktioniert nur, wenn ein “Data Carrier Detect” Signal (DCD) vorliegt.

- Für ausgehende Verbindungen wird `/dev/cuad`N`` verwendet. Dieser Port wird normalerweise nur von Modems genutzt. Sie können ihn allerdings für Terminals benutzen, die das “Data Carrier Detect” Signal nicht unterstützen.

Wenn Sie einen Terminal an die erste serielle Schnittstelle (`COM1` in MS-DOS®), angeschlossen haben, sprechen Sie ihn über `/dev/ttyu0` an. Wenn er an der zweiten seriellen Schnittstelle angeschlossen ist, verwenden Sie `/dev/ttyu1`, usw.

## 27.2.3. Kernelkonfiguration

In der Voreinstellung benutzt FreeBSD vier serielle Schnittstellen, die in MS-DOS-Kreisen als `COM1`, `COM2`, `COM3` und `COM4` bekannt sind. Momentan unterstützt FreeBSD einfache Multiportkarten (z.B. die BocaBoard 1008 und 2016) und bessere wie die von Digiboard und Stallion Technologies. In der Voreinstellung sucht der Kernel allerdings nur nach den Standardanschlüssen.

Um zu überprüfen, ob der Kernel eine Ihrer seriellen Schnittstellen erkennt, achten Sie auf die Meldungen beim Booten, oder schauen sich diese später mit `/sbin/dmesg` an. Insbesondere sollten Sie auf Meldungen achten, die mit den Zeichen `sio` anfangen.

> Tipp: Das folgende Kommando zeigt Ihnen nur die Meldungen an, die die Folge `sio` enthalten:

>     # /sbin/dmesg | grep 'sio'

Auf einem System mit vier seriellen Schnittstellen sollte der Kernel die folgenden Meldungen ausgeben:

    sio0 at 0x3f8-0x3ff irq 4 on isa
    sio0: type 16550A
    sio1 at 0x2f8-0x2ff irq 3 on isa
    sio1: type 16550A
    sio2 at 0x3e8-0x3ef irq 5 on isa
    sio2: type 16550A
    sio3 at 0x2e8-0x2ef irq 9 on isa
    sio3: type 16550A

Wenn Ihr Kernel nicht alle seriellen Schnittstellen erkennt, müssen Sie Ihren Kernel über die Datei `/boot/device.hints` konfigurieren. Zusätzlich können Sie Einträge für Geräte, die auf Ihrem System nicht vorhanden sind, aus dem Kernel entfernen.

Die Hilfeseite sio(4) enthält weitere Informationen zu seriellen Schnittstellen und Multiportkarten. Seien Sie vorsichtig, wenn Sie Konfigurationsdateien von älteren FreeBSD-Versionen verwenden, da sich die Syntax und die Bedeutung der Optionen zwischen verschiedenen Versionen geändert hat.

> Anmerkung: `port IO_COM1` ist ein Ersatz für `port 0x3f8`, `IO_COM2` bedeutet `port 0x2f8`, `IO_COM3` bedeutet `port 0x3e8` und `IO_COM4` steht für `port 0x2e8`. Die angegebenen IO-Adressen sind genau wie die Interrupts 4, 3, 5 und 9 üblich für serielle Schnittstellen. Beachten Sie bitte, dass sich normale serielle Schnittstellen auf ISA-Bussen keine Interrupts teilen können. Multiportkarten besitzen zusätzliche Schaltkreise, die es allen 16550As auf der Karte erlauben, sich einen oder zwei Interrupts zu teilen.

## 27.2.4. Gerätedateien

Die meisten Geräte im Kernel werden durch Gerätedateien in `/dev` angesprochen. Die `sio` Geräte werden durch `/dev/ttyu`N`` für eingehende Verbindungen und durch `/dev/cuad`N`` für ausgehende Verbindungen angesprochen. Zum Initialisieren der Geräte stellt FreeBSD die Dateien `/dev/ttyu`N`.init` und `/dev/cuad`N`.init` zur Verfügung. Zusätzlich existieren Dateien für das Sperren von Gerätedateien (Locking). Dabei handelt es sich um die Dateien `/dev/ttyu`N`.lock` und `/dev/cuad`N`.lock`. Diese Dateien werden benutzt, um Kommunikationsparameter beim Öffnen eines Ports vorzugeben. Für Modems, die zur Flusskontrolle `RTS/CTS` benutzen, kann damit `crtscts` gesetzt werden. Die Geräte `/dev/ttyld`N`` und `/dev/cuala`N`` (locking devices) werden genutzt, um bestimmte Parameter festzuschreiben und vor Veränderungen zu schützen. Weitere Informationen zu Terminals finden Sie in termios(4), sio(4) erklärt die Dateien zum Initialisieren und Sperren der Geräte, stty(1) beschreibt schließlich Terminal-Einstellungen.

## 27.2.5. Konfiguration der seriellen Schnittstelle

Anwendungen benutzen normalerweise die Geräte `ttyu`N`` oder `cuad`N``. Das Gerät besitzt einige Voreinstellungen für Terminal-I/O, wenn es von einem Prozess geöffnet wird. Mit dem folgenden Kommando können Sie sich diese Einstellungen ansehen:

    # stty -a -f /dev/ttyu1

Sie können diese Einstellungen verändern, sie bleiben allerdings nur solange wirksam, bis das Gerät geschlossen wird. Wenn das Gerät danach wieder geöffnet wird, sind die Voreinstellungen wieder wirksam. Um die Voreinstellungen zu ändern, öffnen Sie das Gerät, das zum Initialisieren dient und verändern dessen Einstellungen. Um beispielsweise für `ttyu5` den `CLOCAL` Modus, 8-Bit Kommunikation und `XON/XOFF` Flusssteuerung einzuschalten, setzen Sie das folgende Kommando ab:

    # stty -f /dev/ttyu5.init clocal cs8 ixon ixoff

In `/etc/rc.d/rc.serial` werden die systemweiten Voreinstellungen für serielle Geräte vorgenommen.

Um zu verhindern, dass Einstellungen von Anwendungen verändert werden, können Sie die Geräte zum Festschreiben von Einstellungen (“locking devices”) benutzen. Wenn sie beispielsweise die Geschwindigkeit von `ttyu5` auf 57600 bps festlegen wollen, benutzen Sie das folgende Kommando:

    # stty -f /dev/ttyld5 57600

Eine Anwendung, die `ttyu5` öffnet, kann nun nicht mehr die Geschwindigkeit ändern und muss 57600 bps benutzen.

Die Geräte zum Initialisieren und Festschreiben von Einstellungen sollten selbstverständlich nur von `root` beschreibbar sein.

Zurück | Zum Anfang | Weiter
Serielle Datenübertragung | Nach oben | Terminals

Wenn Sie Fragen zu FreeBSD haben, schicken Sie eine E-Mail an <de-bsd-questions@de.FreeBSD.org>.
Wenn Sie Fragen zu dieser Dokumentation haben, schicken Sie eine E-Mail an <de-bsd-translators@de.FreeBSD.org>.