Mit »Geschwindigkeit« meinen wir eigentlich die »Datenübertragungsrate«, aber beinahe jeder sagt einfach (und nicht ganz richtig) »Geschwindigkeit«. Bei modernen Modems haben Sie bezüglich der Geschwindigkeit, die das Modem auf einer Telefonleitung verwendet, gar keine Wahl, da es automatisch die unter den gegebenen Umständen (z.B. Leitungsqualität) höchstmögliche Geschwindigkeit nutzt. Bei der Geschwindigkeit, die zwischen Modem und Computer verwendet wird, haben Sie aber sehr wohl eine Wahl. Diese Geschwindigkeit wird manchmal auch »DTE-Geschwindikeit« genannt, DTE bedeutet »Data Terminal Equipment« (oder auf Deutsch: Datenendgeräteeinrichung), denn Ihr Computer ist ein DTE. Sie müssen diese Geschwindigkeit hoch genug einstellen, damit dieser Teil der Kommunikationsstrecke keinen Flaschenhals darstellt. Die DTE Geschwindigkeit ist immer auf die höchst mögliche Geschwindigkeit für diese Verbindung eingestellt. Meistens wird aber die tatsächliche erreichte Geschwindigkeit darunter liegen.
Bei einem externen Modem ist die DTE Geschwindigkeit die Datenübertragungsrate (in Bits/s) auf der Verbindung zwischen dem Modem und dem PC. Bei einem internen Modem ist es ganz genauso, da das Modem auch einen seriellen Port emuliert. Vielleicht erscheint es ein wenig seltsam, wenn es eine Geschwindigkeitsbegrenzung für die Kommunikation zwischen Computer und Modemkarte gibt, da die Modemkarte ja mit dem Computer über einen viel schnelleren Bus verbunden ist. Es ist aber so, da das interne Modem einen dedizierten seriellen Port darstellt, der eben Geschwindigkeitsgrenzen und einstellbare Geschwindigkeiten hat.
Welche Geschwindigkeit sollten Sie wählen? Wenn es keine Datenkompression gäbe, könnte man für die DTE Geschwindigkeit exakt den selben Wert nehmen wie für die Modemgeschwindigkeit (auf der Telefonleitung). Die Datenkompression bewirkt, dass die Anzahl der Bytes, die vom Computer zum Modem gesendet werden, in eine kleinere Zahl von Bytes komprimiert werden, der Dateninhalt bleibt aber gleich. Beispiel: Wenn die Geschwindigkeit vom PC zum Modem 20.000 Bytes/s (bps) beträgt, und die Kompressionsrate beträgt 2:1, dann werden nur 10.000 Bytes/s über die Telefonleitung übertragen. Bei einer Kompressionsrate von 2:1 müssen Sie also für die DTE Geschwindigkeit das doppelte der maximalen Geschwindikeit auf der Telefonleitung einstellen. Beträgt die Kompressionsrate 3:1, müssen Sie die dreifache Geschwindigkeit wählen.
Die DTE Geschwindigkeit ist normalerweise über einen Menüpunkt in
Ihrem Terminalprogramm wählbar, oder über eine Option von getty
,
wenn sich jemand auf Ihrem System einwählt. Die DCE Geschwindigkeit
zwischen beiden Modems können Sie nicht einstellen.
Sie müssen die höchste von Ihrer Hardware unterstütze Geschwindigkeit herausfinden. Ende 1998 unterstützt die meiste Hardware nur Geschwindigkeiten bis 115,2 kbps. Einige wenige interne 56K Modems unterstützen 230,4 kbps. Neuere Linux Kernels unterstützen hohe Geschwindigkeiten (über 115,2 kpbs), aber aus folgenden Gründen könnte es problematisch sein, diese auch zu Nutzen:
stty
arbeitet nicht mit
dieser hohen Geschwindigkeit. setserial
hat eine Standardgeschwindigkeit von 115,2 kbps;
aber diese Einstellung ist leicht zu ändern.
Der Gerätetreiber für den seriellen Port stellt die Geschwindigkeit der Hardware durch das Senden eines »Divisors« ein (eine positive ganze Zahl). Dieser »Divisor« teilt die maximale Übertragungsgeschwindigkeit der Hardware, das Ergebnis ist eine kleinere Geschwindigkeit (mit Ausnahme des Divisors 1, mit dem die maximal mögliche Geschwindigkeit eingestellt wird). Hier ist eine Liste von gebräuchlichen Divisoren und den entsprechenden Geschwindigkeiten (unter der Annahme einer maximalen Geschwindigkeit von 115,2 kbps): 1 (115,2k), 2 (57,6k), 3 (38,4k), 6 (19,2k), 12 (9,6k), 24 (4,8k), 48 (2,4k), 96 (1,2k), etc.
Wenn Sie eine Geschwindigkeit von 115,2 kbps im Terminalprogramm oder
mit Hilfe von stty
auswählen, dann stellt der Gerätetreiber in
der Hardware den Divisor 1 ein, der offensichtlich die höchstmögliche
Geschwindigkeit bewirkt. Wenn Sie Hardware mit einer maximalen
Geschwindigkeit von z.B. 230,4 kbps verwenden, dann wird die Auswahl
von 115,2 kbps den Divisor 1 zur Folge haben und es wird in
Wirklichkeit 230,4 kbps eingestellt. Dies ist das Doppelte der
Geschwindigkeit, die Sie ausgewählt haben. Tatsächlich wird für jede
Geschwindigkeit, die Sie auswählen in Wirklichkeit die doppelte
Geschwindigkeit gesetzt. Wenn Sie Hardware hätten, die 460,8 kbps
unterstützen würde, würde die tatsächliche Geschwindigkeit auf das
vierfache des von Ihnen ausgewählten Wertes gesetzt.
Um diese Berechnungsweise zu korrigieren (aber nicht, um das
Problem in allen Fällen zu beheben) können Sie mit Hilfe von
setserial
den »baud_base«-Wert auf die tatsächliche maximale
Geschwindigkeit Ihres seriellen Ports setzen, z.B. auf 230,4 kbps.
Wenn Sie im Anwendungsprogramm oder durch stty
eine
Geschwindigkeit von 230,4 kbps wählen, wird der Divisor 1
verwendet und es wird die selbe Geschwindigkeit gesetzt, die Sie
ausgewählt haben.
Dabei gibt es aber ein Problem: stty
und viele Terminalprogramme
bieten maximal 115,2 kbps für die Geschwindigkeit an (Stand: Mitte 1999)
und es ist nicht möglich, höhere Geschwindigkeiten auszuwählen. In
diesen Fällen bleibt Ihnen nichts anderes übrig, als auf Einstellungen
mit Hilfe von setserial
zu verzichten und im Hinterkopf zu
behalten, dass die tatsächlich verwendete Geschwindigkeit stets
doppelt so hoch ist wie die von Ihnen ausgewählte Geschwindigkeit.
Es gibt noch einen zweiten Weg, der aber auch nicht viel besser ist. Mit dem Befehl
setserial /dev/ttyS2 spd_cust baud_base 230400 divisor 1
können Sie z.B. für den Port ttyS2
einen Divisor 1 (d.h. maximale
Geschwindigkeit) erzwingen, wenn
Sie im Terminalprogramm eine Geschwindigkeit von 38,4 kbps auswählen.
Die Verwendung der Option »spd_cust« ist an die Geschwindigkeit
38,4 kbps gekoppelt, näheres dazu finden Sie in der Manual Page von
setserial
.
Falls Sie zwei oder mehr verschiedene Geschwindigkeiten verwenden wollen, die so hoch sind, dass sie im Terminalprogramm nicht ausgewählt werden können, ist es nicht mehr so einfach wie oben beschrieben. Aber das Prinzip bleibt dasselbe. Sie können den Standardwert für »baud_base« beibehalten und dabei immer bedenken, dass Sie in Wirklichkeit einen Divisor bestimmen, wenn Sie eine Geschwindigkeit auswählen. Die tatsächliche Geschwindigkeit berechnet sich immer aus der maximalen Geschwindigkeit geteilt durch den Divisor, den der Gerätetreiber setzt.
Beachten Sie, dass der Wert für »baud_base« normalerweise wesentlich kleiner ist als die Frequenz des Quarzoszillators der Hardware. Die Oszillatorfrequenz wird häufig durch 16 geteilt, erst dieser Wert ergibt die tatsächliche Maximalgeschwindigkeit. Diese hohe Oszillatorfrequenz wird benötigt, damit jedes Bit mehrfach geprüft werden kann, um zu entscheiden, ob es sich um eine 0 oder um eine 1 handelt.
Für ein 56k Modem eignet sich ein 16650 UART am besten, aber nur wenige interne Modems oder serielle Schnittstellenkarten sind damit ausgerüstet. Am zweitbesten ist die Verwendung eines 16550 UART, der abgeändert wurde, um 230,4 kbps zu unterstützen. Die folgende Tabelle enthält die empfohlenen Geschwindikeiten des seriellen Ports in Abhängigkeit der Modemgeschwindigkeit:
Alle oben angegebenen Geschwindigkeiten können die V.42bis Datenkompression und die V.42 Fehlererkennung verwenden. Wird keine Datenkompression verwendet, kann die Geschwindigkeit auch kleiner als angegeben eingestellt werden, so lange sie über der Modemgeschwindigkeit liegt.