Kapitel 15. Serielle Verbindungen

Dieses Kapitel beantwortet häufig gestellte Fragen zu seriellen Verbindungen mit FreeBSD. PPP und SLIP werden im Abschnitt Netzwerke behandelt.

15.1. Wie kann ich feststellen, ob FreeBSD meine seriellen Schnittstellen gefunden hat?
15.2. Wie kann ich feststellen, ob FreeBSD meine Modemkarten gefunden hat?
15.3. Wie kann ich auf die seriellen Schnittstellen in FreeBSD zugreifen?
15.4. Wie kann ich die Unterstützung für eine Karte mit mehreren seriellen Schnittstellen aktivieren?
15.5. Kann FreeBSD mehrere Karten mit mehreren seriellen Schnittstellen mit den gleichen IRQs verwalten?
15.6. Kann ich die vorgegebenen seriellen Parameter für eine Schnittstelle einstellen?
15.7. Wie kann ich Einwahl-Logins über mein Modem aktivieren?
15.8. Wie kann ich ein Hardware-Terminal mit meiner FreeBSD Box verbinden?
15.9. Warum kann ich tip oder cu nicht laufen lassen?
15.10. Mein Hayes Modem wird nicht unterstützt - was kann ich tun?
15.11. Wie soll ich die AT Befehle eingeben?
15.12. Wieso funktioniert das <@> Zeichen für die pn Fähigkeit nicht?
15.13. Wie kann ich von der Kommandozeile eine Telefonnummer wählen?
15.14. Muss ich dabei jedes Mal die bps Rate angeben?
15.15. Wie kann ich möglichst komfortabel über einen Terminal-Server auf verschiedene Rechner zugreifen?
15.16. Kann tip mehr als eine Verbindung für jede Seite ausprobieren?
15.17. Warum muss ich zweimal Ctrl+P tippen, um ein Ctrl+P zu senden?
15.18. Warum ist auf einmal alles was ich schreibe in GROSSBUCHSTABEN??
15.19. Wie kann ich Dateien mit tip übertragen?
15.20. Wie kann ich zmodem mit tip laufen lassen?

15.1. Wie kann ich feststellen, ob FreeBSD meine seriellen Schnittstellen gefunden hat?

Wenn der FreeBSD Kernel bootet, testet er die seriellen Schnittstellen, für die er konfiguriert wurde. Sie können entweder Ihrem System aufmerksam beim Booten zusehen und die angezeigten Nachrichten lesen, oder Sie führen den Befehl

% dmesg | grep sio

aus, nachdem Ihr System hochgefahren ist und läuft.

Hier ist ein Beispiel einer Ausgabe nach dem oben genannten Befehl:

sio0: at 0x3f8-0x3ff irq 4 on isa
sio0: type 16550A
sio1: at 0x2f8-0x2ff irq 3 on isa
sio1: type 16550A
         

Es zeigt zwei serielle Schnittstellen. Die erste verwendet Port-Adresse 0x3f8, IRQ 4 und hat einen 16550A UART Chip. Die zweite benutzt ebenfalls einen 16550A UART, jedoch Port-Adresse 0x2f8 und IRQ 3. Modemkarten werden wie serielle Schnittstellen behandelt. Der einzige Unterschied ist, dass an diesen Schnittstellen immer ein Modem “angeschlossen” ist.

Der GENERIC Kernel beinhaltet Unterstützung für zwei serielle Schnittstellen, die den im Beispiel genannten Port und IRQ verwenden. Wenn diese Einstellungen nicht richtig für Ihr System sind, Sie Modemkarten hinzugefügt oder mehr serielle Schnittstellen haben als Ihre Kernelkonfiguration zulässt, konfigurieren Sie Ihren Kernel einfach neu. In dem Kapitel über die Kernelkonfiguration finden Sie mehr Details.

15.2. Wie kann ich feststellen, ob FreeBSD meine Modemkarten gefunden hat?

Die vorherige Frage sollte darauf eine Antwort geben.

15.3. Wie kann ich auf die seriellen Schnittstellen in FreeBSD zugreifen?

Die in sio(4) beschriebene serielle Schnittstelle sio2 (COM3 unter MS-DOS®/Windows®), ist /dev/cuaa2 für Geräte mit abgehenden Verbindungen und /dev/ttyd2 für Geräte mit eingehenden Verbindungen. Was ist der Unterschied zwischen den beiden Geräteklassen?

Sie benutzen ttydX für eingehende Verbindungen. Wird /dev/ttydX im blockierenden Modus geöffnet, wartet ein Prozess darauf, dass das entsprechende cuaaX Gerät inaktiv und der Empfangssignalpegel [1] aktiv ist. Wird das cuaaX Gerät geöffnet, vergewissert es sich, dass die serielle Schnittstelle nicht bereits von dem ttydX Gerät in Gebrauch ist. Sollte die Schnittstelle verfügbar sein, “stiehlt” es sie von dem ttydX Gerät. Das cuaaX Gerät kümmert sich nicht um Trägersignalerkennung. Mit diesem Schema und einem automatisch antwortenden Modem, können sich Benutzer von aussen einloggen, Sie können weiterhin mit demselben Modem wählen und das System kümmert sich um die Konflikte.

15.4. Wie kann ich die Unterstützung für eine Karte mit mehreren seriellen Schnittstellen aktivieren?

Die Sektion über die Kernelkonfiguration bietet Informationen darüber, wie Sie Ihren Kernel konfigurieren. Für eine Karte mit mehreren seriellen Schnittstellen, schreiben Sie eine sio(4) Zeile für jede serielle Schnittstelle auf der Karte in die Kernelkonfigurationsdatei. Aber achten Sie darauf, den IRQ und die Vektorbezeichnung nur in einem der Einträge zu plazieren. Alle seriellen Schnittstellen auf der Karte sollten sich einen IRQ teilen. Daher sollten Sie den IRQ nur beim letzten Eintrag angeben. Aktivieren Sie auch die COM_MULTIPORT Option.

Das folgende Beispiel ist geeignet für eine AST Karte mit 4 seriellen Schnittstellen, die IRQ 7 benutzt:

options "COM_MULTIPORT"
device sio4 at isa? port 0x2a0 tty flags 0x781
device sio5 at isa? port 0x2a8 tty flags 0x781
device sio6 at isa? port 0x2b0 tty flags 0x781
device sio7 at isa? port 0x2b8 tty flags 0x781 irq 7 vector siointr
         

Die Flags zeigen an, dass die Master-Schnittstelle die Minor-Nummer 7 (0x700) hat, Diagnosen während des Bootens ermöglicht sind (0x080), und dass sich alle Schnittstellen einen IRQ teilen (0x001).

15.5. Kann FreeBSD mehrere Karten mit mehreren seriellen Schnittstellen mit den gleichen IRQs verwalten?

Noch nicht. Sie müssen für jede Karte einen anderen IRQ verwenden.

15.6. Kann ich die vorgegebenen seriellen Parameter für eine Schnittstelle einstellen?

Das ttydX (oder cuaaX) Gerät ist das reguläre Gerät, das man in Anwendungen öffnet. Wenn ein Prozess es öffnet, hat es die voreingestellten Terminal Eingabe/Ausgabe-Einstellungen. Sie können diese Einstellungen mit dem Befehl

# stty -a -f /dev/ttyd1

ansehen. Wenn Sie die Einstellungen für dieses Gerät ändern, sind die Einstellungen gültig, bis das Gerät geschlossen wird. Wird es danach geöffnet, hat es wieder die vorgegebenen Einstellungen. Um Änderungen an den vorgegebenen Einstellungen vorzunehmen, können Sie das Anfangsstatus-Gerät öffnen und dessen Einstellungen anpassen. Um zum Beispiel den CLOCAL Modus, 8 Bits und XON/XOFF Datenflusskontrolle als Standard für ttyd5 einzustellen, geben Sie

# stty -f /dev/ttyid5 clocal cs8 ixon ixoff

ein. Eine gute Stelle um dies zu tun ist in /etc/rc.serial. Jetzt hat eine Anwendung diese Einstellungen als Standardwerte, wenn sie ttyd5 öffnet. Die Anwendung kann die Einstellungen jedoch immer noch nach Belieben verändern.

Man aber kann auch bestimme Einstellungen davor schützen, von einer Anwendung verändert zu werden, indem man Veränderungen am “lock state” Gerät vornimmt. Um beispielsweise die Geschwindigkeit von ttyd5 auf 57600 bps festzusetzen:

# stty -f /dev/ttyld5 57600

Wenn jetzt eine Anwendung ttyd5 öffnet und versucht die Geschwindigkeit zu verändern, wird diese bei 57600 bps bleiben.

Natürlich sollten Sie das Schreiben auf die Anfangsstatus- und lock state-Geräte nur root erlauben. Das MAKEDEV(8) Skript tut dies nicht, wenn es die Geräte-Einträge erstellt.

15.7. Wie kann ich Einwahl-Logins über mein Modem aktivieren?

Also Sie wollen ein Internet Service Provider werden, ja? Als erstes brauchen Sie eines oder mehrere Modems, die automatisches Antworten beherrschen. Ihr Modem sollte auf Trägersignalerkennung reagieren und nicht fortlaufend die Leitung offen halten. Es muss auflegen und sich neu initialisieren können, wenn die “Data Terminal Ready” (DTR) Leitung ausgeschaltet wird. Es sollte wahrscheinlich RTS/CTS oder gar keine lokale Datenflusskontrolle benutzen. Zuletzt muss es eine konstante Geschwindigkeit zwischen dem Computer und sich selbst verwenden, aber es sollte (um die Anrufer freundlich zu behandeln) eine Geschwindigkeit zwischen sich und dem entfernten Modem aushandeln können.

Für viele Modems, die mit dem Hayes Befehlssatz kompatibel sind, erzeugt der folgende Befehl diese Einstellungen und legt sie im nicht-flüchtigen Speicher ab:

AT &C1 &D3 &K3 &Q6 S0=1 &W

Die Sektion über das Senden von AT-Befehlen bietet weitere Informationen, wie man diese Einstellungen vornimmt, ohne zu einem MS-DOS Terminalprogramm zu flüchten.

Als nächstes erstellen Sie einen Eintrag in /etc/ttys für das Modem. Diese Datei listet alle Schnittstellen auf, auf denen das Betriebssystem Einlogversuche erwartet. Fügen Sie eine solche Zeile hinzu:

ttyd1 "/usr/libexec/getty std 57600" dialup on insecure

Diese Zeile bedeutet, dass an der zweiten seriellen Schnittstelle (/dev/ttyd1) ein Modem angeschlossen ist, das mit 57600 bps läuft und keine Parität besitzt (std.57600 aus /etc/gettytab). Der Terminal-Typ für diese Schnittstelle ist “dialup” (Einwahl). Die Schnittstelle ist eingeschaltet (on) und “unsicher” (insecure) - das bedeutet, man kann sich über diese Schnittstelle nicht als root einloggen. Für Einwahlanschlüsse wie diesen, benutzen Sie den ttydX Eintrag.

Es ist relativ geläufig, dialup als Terminal-Typ zu verwenden. Viele Benutzer richten in ihren .profile oder .login Dateien eine Abfrage für das eigentliche Terminal ein, wenn der Start-Typ dialup ist. Das Beispiel zeigt die Schnittstelle als unsicher und um über diese Schnittstelle root zu werden, müssen Sie sich als normaler Benutzer einloggen und su(1). Wenn sie secure (“sicher”) als Einstellung verwenden, kann sich root direkt einloggen.

Nachdem Sie Modifikationen in /etc/ttys vorgenommen haben, müssen Sie ein hangup oder HUP Signal an init(8) senden:

# kill -HUP 1

Das bringt init(8) dazu, die Datei /etc/ttys neu einzulesen. init startet dann an allen als eingeschaltet (on) markierten Schnittstellen die getty-Prozesse. Sie können herausfinden ob noch Logins für Ihre Schnittstelle verfügbar sind, wenn Sie folgendes eingeben:

% ps -ax | grep '[t]tyd1'

Sie sollten etwas sehen, das so ähnlich aussieht wie:

747 ?? I    0:00:04 /usr/libexec/getty std.57600 ttyd1

15.8. Wie kann ich ein Hardware-Terminal mit meiner FreeBSD Box verbinden?

Wenn Sie einen anderen Computer als Terminal für Ihr FreeBSD System verwenden wollen, verbinden Sie die beiden seriellen Schnittstellen mit einem Nullmodem-Kabel. Wenn Sie ein “echtes” (Hardware-)Terminal benutzen, lesen Sie die Begleitinformationen.

Ändern Sie /etc/ttys wie oben angegeben. Wenn Sie zum Beispiel ein WYSE-50 Terminal mit der fünften seriellen Schnittstelle verbinden wollen, schreiben Sie einen Eintrag wie diesen:

ttyd4 "/usr/libexec/getty std.38400" wyse50 on secure

Das Beispiel zeigt, dass die Schnittstelle an /dev/ttyd4 mit einem wyse50 Terminal mit 38400 bps und ohne Parität (std.38400 aus /etc/gettytab) verbunden ist und root Logins möglich sind (secure).

15.9. Warum kann ich tip oder cu nicht laufen lassen?

Vielleicht sind auf Ihrem System die Programme tip(1) und cu(1) nur von uucp und der Gruppe dialer ausführbar. Sie können die Gruppe dialer verwenden, um zu kontrollieren wer Zugriff auf Ihr Modem oder entfernte Systeme hat. Fügen Sie sich einfach selbst zur Gruppe dialer hinzu.

Als Alternative können Sie jeden Benutzer auf Ihrem System tip(1) und cu(1) verwenden lassen, dazu müssen Sie das folgende eingeben:

# chmod 4511 /usr/bin/cu
# chmod 4511 /usr/bin/tip

15.10. Mein Hayes Modem wird nicht unterstützt - was kann ich tun?

Eigentlich ist die Onlinehilfe für tip(1) nicht mehr aktuell. Es gibt einen eingebauten, allgemeinen Hayes Wähler. Verwenden Sie einfach at=hayes in /etc/remote.

Der Hayes Treiber ist nicht schlau genug, um ein paar der erweiterten Merkmale von neueren Modems zu erkennen - Nachrichten wie BUSY, NO DIALTONE oder CONNECT 115200 verwirren ihn nur. Sie sollten diese Nachrichten mit Hilfe von ATX0&W abschalten, wenn Sie tip benutzen.

Das Anwahl-Timeout von tip(1) beträgt 60 Sekunden. Ihr Modem sollte weniger verwenden, oder tip denkt, dass ein Kommunikationsfehler vorliegt. Versuchen Sie es mit ATS7=45&W.

Tatsächlich unterstützt die ausgelieferte Version von tip(1) es noch nicht vollständig. Die Lösung ist, tipconf.h im Verzeichnis /usr/src/usr.bin/tip/tip zu editieren. Dafür benötigen Sie natürlich die Quellcode Distribution.

Editieren Sie die Zeile #define HAYES 0 in #define HAYES 1 um. Dann führen Sie make und make install aus. Es sollte jetzt funktionieren.

15.11. Wie soll ich die AT Befehle eingeben?

Erstellen Sie einen so genannten direct Eintrag in /etc/remote. Wenn Ihr Modem zum Beispiel an der ersten seriellen Schnittstelle, /dev/cuaa0, angeschlossen ist, dann fügen Sie die folgende Zeile hinzu:

cuaa0:dv=/dev/cuaa0:br#19200:pa=none

Verwenden Sie die höchste bps Rate, die Ihr Modem in der br Fähigkeit unterstützt. Geben Sie dann tip cuaa0 ein und Sie sind mit Ihrem Modem verbunden.

Wenn auf Ihrem System keine /dev/cuaa0 Datei existiert, geben Sie folgendes ein:

# cd /dev
# sh MAKEDEV cuaa0

Oder benutzen Sie cu als root mit dem folgenden Befehl:

# cu -lline -sspeed

line steht für die serielle Schnittstelle (/dev/cuaa0) und speed für die Geschwindigkeit (57600). Wenn Sie mit dem Eingeben der AT Befehle fertig sind, beenden Sie mit ~..

15.12. Wieso funktioniert das <@> Zeichen für die pn Fähigkeit nicht?

Das <@> Zeichen in der Telefonnummerfähigkeit sagt tip, dass es in der Datei /etc/phones nach einer Nummer suchen soll. Aber <@> ist auch ein spezielles Zeichen in den Dateien, in denen Fähigkeiten beschrieben werden, wie /etc/remote. Schreiben Sie es mit einem '\' (backslash):

pn=\@

15.13. Wie kann ich von der Kommandozeile eine Telefonnummer wählen?

Stellen Sie einen “allgemeinen” Eintrag in /etc/remote. Zum Beispiel:

tip115200|Dial any phone number at 115200 bps:\
      :dv=/dev/cuaa0:br#115200:at=hayes:pa=none:du:
tip57600|Dial any phone number at 57600 bps:\
      :dv=/dev/cuaa0:br#57600:at=hayes:pa=none:du:
         

Mit einem Befehl wie tip -115200 5551234 können Sie dann wählen. Sollten Sie cu(1) im Gegensatz zu tip(1) bevorzugen, verwenden Sie einen allgemeinen cu-Eintrag:

cu115200|Use cu to dial any number at 115200bps:\
        :dv=/dev/cuaa1:br#57600:at=hayes:pa=none:du:
         

Zum Wählen können Sie dann cu 5551234 -s 115200 eingeben.

15.14. Muss ich dabei jedes Mal die bps Rate angeben?

Schreiben Sie einen tip1200 oder einen cu1200 Eintrag, aber geben Sie auch die bps Rate an, die Ihr Modem wirklich unterstützt. Leider denkt tip(1), dass 1200 bps ein guter Standardwert ist und deswegen sucht es nach einem tip1200-Eintrag. Natürlich müssen Sie nicht wirklich 1200 bps benutzen.

15.15. Wie kann ich möglichst komfortabel über einen Terminal-Server auf verschiedene Rechner zugreifen?

Sie müssen nicht warten bis Sie verbunden sind, und jedes Mal CONNECT Rechner eingeben, benutzen Sie tip's cm Fähigkeit. Sie können diese Einträge in /etc/remote verwenden:

pain|pain.deep13.com|Forrester's machine:\
        :cm=CONNECT pain\n:tc=deep13:
muffin|muffin.deep13.com|Frank's machine:\
        :cm=CONNECT muffin\n:tc=deep13:
deep13:Gizmonics Institute terminal server:\
        :dv=/dev/cuaa2:br#38400:at=hayes:du:pa=none:pn=5551234:
         

Mit den Befehlen tip pain oder tip muffin können Sie eine Verbindungen zu den Rechnern pain oder muffin herstellen; mit tip deep13 verbinden Sie sich mit dem Terminal Server.

15.16. Kann tip mehr als eine Verbindung für jede Seite ausprobieren?

Das ist oft ein Problem, wenn eine Universität mehrere Telefonleitungen hat und viele tausend Studenten diese benutzen wollen.

Erstellen Sie einen Eintrag für Ihre Universität in /etc/remote und benutzen Sie <\@> für die pn Fähigkeit:

big-university:\
        :pn=\@:tc=dialout
dialout:\
        :dv=/dev/cuaa3:br#9600:at=courier:du:pa=none:
         

Listen Sie die Telefonnummern der Universität in /etc/phones auf:

big-university 5551111
big-university 5551112
big-university 5551113
big-university 5551114
         

tip(1) probiert jede der Nummern in der aufgelisteten Reihenfolge und gibt dann auf. Möchten Sie, dass tip beim Versuchen eine Verbindung herzustellen nicht aufgibt, lassen Sie es in einer while-Schleife laufen.

15.17. Warum muss ich zweimal Ctrl+P tippen, um ein Ctrl+P zu senden?

Ctrl+P ist das voreingestellte Zeichen, mit dem eine Übertragung erzwungen werden kann und wird benutzt, um tip(1) zu sagen, dass das nächste Zeichen direkt gesendet werden soll und nicht als Fluchtzeichen interpretiert werden soll. Mit Hilfe der ~s Fluchtsequenz, mit der man Variablen setzen kann, können Sie jedes andere Zeichen als “force”-Zeichen definieren.

Geben Sie ~sforce=zeichen ein und drücken Sie Enter. Für zeichen können Sie ein beliebiges einzelnes Zeichen einsetzen. Wenn Sie zeichen weglassen, ist das “force”-Zeichen “nul”, das Sie mit Ctrl+2 oder Ctrl+SPACE eingeben können. Ein guter Wert für zeichen ist Shift+Ctrl+6, welches ich erst auf ein paar Terminal-Servern in Benutzung gesehen habe.

Sie können das “force”-Zeichen auch bestimmen, indem Sie in $HOME/.tiprc das folgende einstellen:

force=single-char

15.18. Warum ist auf einmal alles was ich schreibe in GROSSBUCHSTABEN??

Sie müssen Ctrl+A eingegeben haben, das “raise”-Zeichen von tip(1) das speziell für Leute mit defekten Caps Lock Tasten eingerichtet wurde. Benutzen Sie ~s wie oben und setzen Sie die Variable “raisechar” auf etwas, das Ihnen angemessen erscheint. Tatsächlich kann die Variable auf das gleiche Zeichen wie das “force”-Zeichen gesetzt werden, wenn Sie diese Fähigkeiten niemals benutzen wollen.

Hier ist ein Muster der .tiprc Datei, perfekt für Emacs Benutzer, die oft Ctrl+2 und Ctrl+A tippen müssen:

force=^^
raisechar=^^
         

Das ^^ steht für Shift+Ctrl+6.

15.19. Wie kann ich Dateien mit tip übertragen?

Wenn Sie mit einem anderen UNIX® System kommunizieren, können Sie Dateien senden und empfangen - mit ~p (put) und ~t (take). Diese Befehle lassen cat(1) und echo(1) auf dem entfernten System laufen, um Dateien zu akzeptieren und zu senden. Die Syntax ist:

~p <local-file> [<remote-file>]
~t <remote-file> [<local-file>]
         

Es gibt keine Fehlerkontrolle, deshalb sollten Sie besser ein anderes Protokoll benutzen, wie zmodem.

15.20. Wie kann ich zmodem mit tip laufen lassen?

Zuerst installieren Sie ein zmodem Programm aus der Ports-Sammlung (eines der beiden aus der comms-Kategorie, lrzsz oder rzsz).

Um Dateien zu empfangen, starten Sie das Programm zum Senden auf dem entfernten Computer. Drücken Sie dann Enter gefolgt von ~C rz (oder ~C lrz, wenn Sie lrzsz installiert haben), um diese lokal zu empfangen.

Um Dateien zu senden, starten Sie das Programm zum Empfangen auf dem entfernten Computer. Drücken Sie dann Enter gefolgt von ~C sz Dateien (oder ~C lsz Dateien), um sie zum entfernten System zu senden.

Fußnoten

[1]

Mit “Empfangssignalpegel” oder “Trägersignalerkennung” wird hier die carrier detect Leitung bezeichnet.

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>.