Es gibt zwei Typen von Modems für einen PC: externe und interne Modems. Das interne Modem wird im PC installiert (dazu müssen Sie u.a. das Gehäuse öffnen), während das externe Modem einfach an die serielle Schnittstelle angeschlossen wird. Interne Modems sind häufig preisgünstiger, verbrauchen in der Regel weniger Energie und beanspruchen keinen Platz auf Ihrem Schreibtisch. Externe Modems sind sehr viel einfacher zu installieren und zu konfigurieren, und verfügen über Kontrollanzeigen. Sie lassen sich leicht an einen anderen Computer anschliessen. Die meisten externen Modems haben keinen Ausschalter, und verbrauchen daher auch Energie, wenn sie nicht gebraucht werden. Es empfiehlt sich daher, das Modem-Netzteil aus der Steckdose zu ziehen, um Energie und Kosten zu sparen. Achten Sie beim Anschluss eines externen Modems auch darauf, dass der serielle Port des PC in der Lage ist, die Daten mit der notwendigen Geschwindigkeit an das Modem zu liefern. Nach Möglichkeit sollte ein UART 16550 verwendet werden, da die CPU hierdurch entlastet wird.
Für Linux stellen interne Modems ein besonderes Problem dar. Sie funktionieren aber genauso gut wie externe Modems, unter der Voraussetzung, dass Sie keines der Modems verwenden, die nur unter MS Windows funktionieren und dass Sie bereit sind, u.U. eine Menge Zeit in die Konfiguration zu investieren. Vorsicht: einige der Modems, die nur unter MS Windows laufen, sind nicht unbedingt auch als solche gekennzeichnet. Vereinbaren Sie beim Kauf ein Rückgaberecht, falls das Modem nicht unter Linux funktioniert.
Die meisten modernen Modems sind PnP Modems. Sie haben folgende Möglichkeiten:
isapnp
Programmsisapnp
ist
schwer verständlich, das Plug-and-Play HOWTO bietet aber
eine Hilfestellung. Wenn das PnP BIOS die Konfiguration durchführen
soll, müssen Sie lediglich dafür sorgen, dass das BIOS weiß, dass Sie
kein PnP Betriebssystem verwenden. Dennoch können dabei Fehler auftreten
(siehe
Wie ist die Hardware des seriellen Ports eingestellt?.
Ein Kernelpatch kann ebenfalls kompliziert sein, und für die neuesten
Kernel ist u.U. kein Patch verfügbar.
Viele Linux Anwender sind der Ansicht, dass es am einfachsten ist, sich ein externes Modem zu besorgen und anzuschliessen. Aber da moderne Peripheriegeräte meistens PnP Geräte sind, müssen Sie sich sowieso früher oder später mit diesem Problem auseinandersetzen. Dennoch ist die zweckmäßigere (aber auch teurere) Lösung der Einsatz eines externen Modems.
Viele externe Modems sind als »Plug-and-Play« gekennzeichnet, aber sie sollten genauso gut funktionieren wie nicht-PnP Modems. Weil Sie normalerweise das Modem mit dem seriellen Port verbinden, der seine eigenen Werte für IRQ und I/O-Adresse hat, braucht das Modem keine PnP Funktionalität für diese Einstellungen. Dennoch muss natürlich der serielle Port entsprechend konfiguriert werden, falls die Standardeinstellung nicht übernommen werden kann.
Wie kann ein externes Modem ein PnP-Modem sein, wenn es nicht durch PnP
konfiguriert werden kann? Nun, es hat eine spezielle PnP Identifikation
eingebaut, die von einem PnP Betriebssystem durch den seriellen Port
abgefragt werden kann. Ein PnP Betriebssystem weiß dann, welcher Modemtyp
an welchem seriellen Port angeschlossen ist. In diesem Fall brauchen Sie
in Anwendungsprogrammen den Port nicht einzustellen (wie z.B.
/dev/ttyS2
oder COM3). Aber wenn Sie kein PnP Betriebssystem
verwenden, müssen Sie diese Einstellungen manuell vornehmen.
Der Anschluss eines externen Modems an eine serielle Schnittstelle ist vergleichsweise einfach. Modems benötigen einfache Modemkabel (keine »Null-Modem Kabel«) ohne gekreuzte Leitungen, wie sie im Fachhandel erhältlich sein sollten. Für den Anschluss am seriellen DB-9 oder DB-25 Stecker des Computers benötigen Sie eine Buchse am Modemkabel (keinen Stecker). Verbinden Sie das Modem mit dem seriellen Port. Wenn Sie die Standardeinstellung für IRQ und I/O-Adresse übernehmen, können Sie jetzt ein Kommunikationsprogramm starten und das Modem selbst konfigurieren.
Zur Installation eines internen Modems wird das Gehäuse des PC geöffnet und die Modemkarte wird in einen freien Steckplatz der Hauptplatine gesteckt. Es gibt Modems für ISA Steckplätze und für PCI Steckplätze. Während externe Modems mit einem kurzen Kabel mit der seriellen Schnittstelle verbunden werden, ist die serielle Schnittstelle bei internen Modems bereits eingebaut. Mit anderen Worten: Die Modemkarte ist sowohl ein Modem als auch eine serielle Schnittstelle.
Die I/O-Adresse und der IRQ für die serielle Schnittstelle werden vor der
Installation durch sogenannte »Jumper« eingestellt. Dies sind winzige
Steckbrücken, die Kontakt zwischen bestimmten Pins der Karte herstellen.
PnP Modems (oder genauer der serielle Schnittstellenanteil der Modemkarte)
verwenden keine Jumper zur Konfiguration, sondern werden durch spezielle
Konfigurationsbefehle eingestellt. Solche Befehle können von einem
PnP BIOS, dem isapnp
-Programm (nur für ISA-Bus!) oder von einem PnP
Betriebssystem gesendet werden. Windows 9x beherscht diese Art der
Konfiguration. Mit Linux haben Sie folgende Möglichkeiten der Konfiguration
(keine der Möglichkeiten ist immer einfach):
isapnp
(evtl. automatisch beim Booten)
Die Mehrheit der seit etwa Mitte 1998 hergestellten internen Modems arbeiten nicht unter Linux (Winmodems o.ä.). Andere übliche Bezeichnungen sind HSP (Host Signal Processor), HCF (Host Controlled Family) und Soft-... Modem. Diese Modems überlassen die meiste (oder die gesamte) Arbeit dem Prozessor (CPU) des Rechners. Sie können keine Daten komprimieren, sie besitzten keine Möglichkeiten der Fehlererkennung und können Daten nicht packetieren. Diese Arbeit muss von der CPU geleistet werden. Weil hierfür nur Windows-Software zur Verfügung steht (bisher wurde diese Software nicht auf Linux portiert), wird ein solches Modem unter Linux nicht funktionieren. Dazu muss das Modem einen seriellen Port simulieren. Eine Liste der Modems, die unter Linux funktionieren, finden Sie hier:
http://www.o2.net/~gromitkc/winmodem.html
»Software Modem« wäre eigentlich die bessere Bezeichnung für »Winmodem«. Diesem Namen kann man wenigstens entnehmen, dass diese Software nur unter MS Windows funktioniert. Der Name »Winmodem« ist übrigens auch ein geschütztes Warenzeichen für einen besonderen Modemtyp.
Wie können Sie herausfinden, ob Ihr internes Modem unter Linux funktioniert? Zunächst müssen Sie den genauen Typ Ihres Modems in Erfahrung bringen. Falls Sie den Typ nicht wissen, und Sie auch MS Windows auf Ihrem Linux-PC installiert haben, können Sie dies mit einem Mausklick auf das Modem-Symbol in der Systemsteuerung herausfinden. Sehen Sie dann am besten in der ein paar Zeilen weiter oben erwähnten Modemliste nach. Wenn dies nicht weiterhilft oder nicht durchführbar ist, können Sie auch in der Dokumentation nachsehen, die mit dem Modem geliefert wurde. Suchen Sie nach einem Abschnitt wie »Systemvoraussetzungen« (engl. »System Requirements«). Vielleicht ist dieser Abschnitt klein gedruckt, lesen Sie ihn sorgfältig. Falls Windows als eine der Systemvoraussetzungen aufgelistet ist, wird es unter Linux wahrscheinlich nicht funktionieren.
Andererseits könnte das Modem unter Linux funktionieren, wenn nicht ausdrücklich erwähnt ist, dass Sie Windows benötigen. Falls von »Designed for Windows« die Rede ist, bedeutet das u.U. nur, dass es Microsofts Plug and Play Spezifikation unterstützt. Das wäre in Ordnung, da diese auch von Linux unterstützt wird (bis jetzt allerdings nicht besonders gut). »Designed for Windows« gibt also keinerlei Hinweis darauf, ob das Modem unter Linux funktioniert oder nicht. Sie können die Internetseite des Herstellers zu Rate ziehen oder dort per E-Mail nachfragen. Ich habe mal eine Internetseite gesehen, in der ausdrücklich stand, dass das eine Modell unter Linux funktioniert, während dies für ein anderes Modell nicht zutraf.
Soweit dem Autor bekannt, gibt es im Moment keine Bestrebungen, Winmodems unter Linux zu unterstützen. Vielleicht hilft es, wenn Sie den Hersteller auffordern, die Treiber auf Linux zu portieren.
Folgende interne Modems sollten gemieden werden:
Dieser Modemtyp verwendet DSPs (digitale Signalprozessoren). Die Software für diese Prozessoren muss unmittelbar vor dem Gebrauch des Modems von der Festplatte des PC in den Speicher des DSP übertragen werden. Unglücklicherweise wird diese Übertragung durch DOS/Windows-Programme bewerkstelligt, unter Linux ist dies nicht möglich. Normale Modems, die unter Linux arbeiten, verfügen häufig ebenfalls über einen DSP (auf der Verpackung wird damit Werbung gemacht), aber die Software für den Betrieb ist im Modem gespeichert. In diesem Fall handelt es sich nicht um ein »DSP Modem« im Sinne dieses Absatzes, und das Modem sollte unter Linux funktionieren. Ein Beispiel für ein DSP Modem ist »Aptiva MWAVE« von IBM.
Wenn ein DSP Modem eine serielle Schnittstelle simuliert, ist es unter Linux
verwendbar, da Linux zur Kommunikation mit einem Modem ebenfalls die
serielle Schnittstelle verwendet. Wenn Sie zusätzlich zu Linux auch noch
DOS/Windows auf dem selben PC installiert haben, können Sie das Modem wie
folgt nutzen: Zuerst installieren Sie den Treiber unter DOS (verwenden Sie den
DOS-Treiber, nicht den Treiber für Windows). Starten Sie dann DOS/Windows,
stellen Sie sicher, dass das Modem initialisiert wird, und starten Sie Linux,
ohne den PC abzuschalten. Eine Möglichkeit hierfür ist der Aufruf von
loadlin.exe
. Dies ist ein DOS-Programm, welches Linux von DOS aus bootet
(siehe auch das Config HOWTO). Eine andere einfache Möglicheit ist,
gleichzeitig die Tasten STRG-ALT-ENTF zu drücken. Das Modem bleibt an
der selben seriellen Schnittstelle angeschlossen (und an der selben
I/O-Adresse), die auch unter DOS verwendet wird.
Modems, die einen Rockwell RPI Treiber benötigen, sind unter Linux nicht voll nutzbar, da die Treibesoftware nicht unter Linux läuft. Der RPI Treiber sorgt für die Datenkomprimierung und Fehlererkennung, indem er Software für MS Windows verwendet. Wenn Sie das Modem ohne Treibersoftware verwenden wollen (und auf die Datenkomprimierung und Fehlererkennung verzichten), können Sie die Verwendung des RPI Treibers sehr einfach deaktivieren, indem Sie dem Modem bei jedem Einschalten einen entsprechenden Initialisierungsbefehl (Init-String) senden. Bei Davids Modem lautet der Befehl »+HO«. Auf die Datenkomprimierung zu verzichten, ist kein so großer Nachteil, wie man zunächst meinen könnte. Die meisten großen Dateien, die Sie über das Internet herunterladen könnnen, sind bereits komprimiert, und jeder Versuch, sie noch weiter zu komprimieren, verlangsamt die Datenübertragung eher.
Ein PCI Modem ist ein Modem, dass sich auf einer Steckkarte befindet, die in einen freien PCI Steckplatz auf der Hauptplatine des PC eingesteckt wird. Unglücklicherweise scheint es so, als ob beinahe alle PCI Modems nicht unter Linux funktionieren, auch wenn hin und wieder davon berichtet wird, dass es wieder jemandem gelungen sei, ein PCI Modem unter Linux erfolgreich einzusetzen.
Wenn Sie ein PCI Modem installiert haben, sehen Sie sich den Inhalt
der Datei /proc/pci
an. Wenn Sie eine hohe Speicheradresse sehen
(z.B. »0xfebfff00«), nutzt das Modem eventuell einen gemeinsamen
Speicherbereich.
Das gemeinsame Nutzen eines Speicherbereichs wird unter Linux nicht
unterstützt. Wenn es keine hohe Speicheradresse gibt und die einzige
Adresse, die Sie sehen, ist eine I/O-Adresse kleiner als »0xffff??«, dann
könnte das Modem funktionieren. Ich bin nicht sicher, ob diese Methode
immer geeignet ist, festzustellen, ob ein Modem unter Linux betrieben
werden kann oder nicht. Falls Sie erfolgreich ein PCI Modem unter
Linux verwenden, lassen Sie mir bitte Informationen darüber zukommen,
wie die Datei /proc/pci
aussieht oder anhand welchen Eintrags man
feststellen kann, ob ein Modem unter Linux läuft oder nicht.