Installation eines Alcatel Speedtouch(tm) USB Modems unter Linux

Autor
Danksagung
Allgemeines
Disclaimer
Benötigte Pakete
Vorbereiten des Kernels
Installation des PPPoATM-fähigen pppd
Kompilieren der SARlib
Kompilieren des SpeedTouch Kernelmoduls
Installation des HotPlug Mechanismus
Installieren des SpeedManagement Utilities
Anschließen des Modems an den USB
Starten des pppd, Test der Verbindung
Troubleshooting

Autor

Dieses HOWTO wurde von Alexander Griesser [http://www.tuxx-home.at] geschrieben. Die aktuellste Version dieses Dokumentes ist stets unter folgender Adresse zu finden: http://www.tuxx-home.at/HOWTO/.


Danksagung

Ich möchte hier im Speziellen Michael Wulz [pc_man@gmx.net] danken, der mir freundlicherweise seinen ADSL-Anschluß inklusive Modem für einige Stunden überlassen hat und somit die Grundlage für dieses HOWTO geliefert hat, Danke!


Allgemeines

Die Installation dieses Modems erfordert einiges an zusätzlicher Software. Zum einen benötigt man das (leider) binary-only verfügbare Speedmanagment-Tool von Alcatel, den Treiber für das Modem, eine allgemeine Bibliothek für die Kommunikation mit ATM-Geräten, sowie einen PPPoATM- fähigen ppp-Dämon. Der Linux Kernel muss ebenfalls mit speziellen Optionen neu übersetzt werden. Damit der Treiber automatisch beim Anschluss des Modems an den Computer geladen wird, benötigt man noch das USB-HotPlug Paket.
Dieses HOWTO bezieht sich auf die Installation auf einem Linux-System mit einer Kernelversion >= 2.4.16, Kernelversionen vor 2.4.16 beinhalten noch nicht den PPPoATM-Patch und müssen diesbezüglich erst um diese Funktionalität erweitert (gepatcht) werden.
Das Modem an sich funktioniert auch unter Linux zufriedenstellend, ich würde aber dennoch jedem der die Wahl hat, raten, ein Alcatel Speedtouch Home zu nehmen, die Installation gestaltet sich um einiges komfortabler und abgesehen davon wartet es auch mit einer Unzahl von nützlichen Features auf + einfache Konfiguration über ein Web-Frontend.


Disclaimer

Standard Disclaimers apply.


Benötigte Pakete


Am einfachsten sollte es sein, wenn man sich ein Verzeichnis innerhalb des eigenen Home-Verzeichnisses anlegt, in das man dann alle anfallenden Dateien speichern kann. In weiterer Folge gehe ich also davon aus, dass die komprimierten Archive und Pakete alle innerhalb des selben Verzeichnisses liegen und nicht umbenannt wurden.


Vorbereiten des Kernels

Es ist ratsam, immer die aktuellste stabile Kernelversion zu verwenden, wenn man spezielle Treiber oder Anforderungen an den Kernel hat. Beim Versuch, das SpeedTouch Modul unter Kernel Version 2.4.18 zu laden, trat ein "Bad Instruction Pointer" auf. Ich hab das dann nicht mehr näher verfolgt, aber mit einem Kernel der Version 2.4.16 funktioniert es problemlos.

Folgende Optionen müssen im Kernel aktiviert sein:

* Code Maturity Level Options
      o Prompt for development and/or incomplete code/drivers [Y] (CONFIG_EXPERIMENTAL)

* Loadable Module Support
      o Enable Loadable Module Support [Y] (CONFIG_MODULES)

* General Setup
      o Support for hot-pluggable devices [Y] (CONFIG_HOTPLUG)

* Networking Options
      o Packet Socket [Y] (CONFIG_PACKET)
      o Asynchronous Transfer Mode (ATM) (EXPERIMENTAL) [Y] (CONFIG_ATM)

* Network Device Support
      o PPP (Point-to-Point Protocol) Support [Y] (CONFIG_PPP)
      o PPP Deflate Compression [Y] (CONFIG_PPP_DEFLATE)

* USB Support
      o Support for USB [Y] (CONFIG_USB)
      o Preliminary USB Device Filesystem [Y] (CONFIG_USB_DEVICEFS)
      o UHCI (Intel PIIX4, VIA,...) Support [M] (CONFIG_USB_UHCI)
      o OHCI (Compaq, iMacs, OPTi, SiS, ALi, ...) support [M] (CONFIG_USB_OHCI)

* Network Device Support
      o PPP over ATM (EXPERIMANTAL) [Y] (CONFIG_PPPOATM)

SMP Support im Kernel sollte deaktiviert werden, im Zusammenhang mit den USB-Treibern gibts da derzeit noch einige Ungereimtheiten. Zur Wahl des USB-HostControllers:
Ob UHCI oder OHCI kann man in den meisten Fällen dem Output von "lspci" entnehmen:

[tuxx@monsterchen -=- ~] lspci | grep -i hci
00:07.2 USB Controller: VIA Technologies, Inc. UHCI USB (rev 1a)
00:07.3 USB Controller: VIA Technologies, Inc. UHCI USB (rev 1a)
[tuxx@monsterchen -=- ~]

Dementsprechend muss dann natürlich nur noch der Treiber im Kernel aktiviert werden, für den man auch Hardware bereitstellen kann. Jetzt muss der Kernel nur noch übersetzt werden, die Module installiert und man kann schon den ersten Testlauf mit dem neuen Kernel starten. Für Informationen rund um das Kompilieren des Kernels möchte ich hier auf das
KERNEL-HOWTO [http://www.ldp.at/HOWTO/Kernel-HOWTO.html] verweisen.
Die Sourcen dieses Kernels sollten unter "/usr/src/linux" erreichbar sein, am besten durch Anlegen eines symbolischen Links, wenn das Verzeichnis, in dem sich die Sourcen derzeit befinden _NICHT_ "/usr/src/linux" heißt.

Wenn das System dann ordnungsgemäß gebootet hat, wird das USB-DevFS mit folgendem Befehl in die Verzeichnisstruktur eingehängt:

mount -t usbdevfs none /proc/bus/usb

Unter Umständen ist das USB-DevFS schon standardmäßig gemountet. Das überprüft man am besten mit folgender Eingabe:

[tuxx@monsterchen -=- ~] mount | grep usbdevfs
none on /proc/bus/usb type usbdevfs (rw)
[tuxx@monsterchen -=- ~]

Wenn der Mountvorgang schon beim Systemstart durchgeführt werden soll, dann reicht es, einfach folgende Zeile in die Datei "/etc/fstab" einzufügen:

none            /proc/bus/usb   usbdevfs defaults    0    0


Installation des PPPoATM-fähigen pppd

Ein weiterer wichtiger Punkt ist die Installation des pppd. Dieser Dämon ist bei jeder gängigen Distribution schon im Lieferumfang enthalten, allerdings nur bei den wenigsten schon in einer ATM-kompatiblen Version. Sollte die verwendete Distribution nicht über einen PPPoATM-fähigen pppd verfügen, muss eine dem Paketmanagement entsprechende Version von http://sourceforge.net/project/showfiles.php?group_id=23818 installiert werden. Nach der Installation des pppd sollte man speziell darauf achten, dass die Datei "/usr/lib/pppd/plugins/pppoatm.so" vorhanden ist; diese Datei ist für den weiteren Verlauf unerlässlich.

Als nächstes sollte man sich vergewissern, dass das Device "/dev/ppp" existiert und wie folgt angelegt wurde:

monsterchen:~# file /dev/ppp
/dev/ppp: character special (108/0)
monsterchen:~# 

Sollte dieses Device nicht existieren, dann muß es mit Hilfe von mknod oder MAKEDEV angelegt werden. Die Syntax für die beiden Befehle sieht so aus:

cd /dev
mknod ppp c 108 0


cd /dev
./MAKEDEV ppp

Abschließend ist nur noch die Datei "/etc/ppp/options" mit folgendem Inhalt zu füllen:

lock 
defaultroute
noipdefault
noauth
passive
asyncmap 0
lcp-echo-interval  2
lcp-echo-failure   7
name user@domain   
user user@domain

plugin /usr/lib/pppd/plugins/pppoatm.so
8.48

Wie unschwer zu erkennen ist, muss in den beiden Zeilen "name" und "user" der String user@domain durch den Usernamen beim Provider ersetzt werden. Wenn Jet2Web ADSL verwendet wird, dann reicht der Username aus. Bei Inode allerdings ist auch noch als Domain "inode.at" anzugeben, womit dieser String dann bei Inode Usern z.B. "user123@inode.at" lautet.
Die letzte Zeile dieser Datei (in unserem Fall 8.48) definiert das VPI/VCI ATM Wertepaar. Dieses sollte in Österreich durchgängig 8.48 sein. Sollte hier bei einem österreichischen Provider ein anderes Wertepaar notwendig sein, würde ich mich sehr über eine kurze Meldung diesbezüglich freuen, damit das ins HOWTO aufgenommen werden kann, danke.

Die Authentifizierung beim Provider erfolgt dann entweder mittels CHAP oder PAP. Jet2Web und Inode sollten mit beiden Protokollen zurecht kommen, deshalb ist es egal, in welcher Datei ("/etc/ppp/chap-secrets" resp. "/etc/ppp/pap-secrets") man die Userdaten einträgt.
Für beide Varianten gilt die selbe Syntax, die auch in den führenden Kommentarzeilen dieser Dateien ersichtlich ist:

user@domain            *           password


Kompilieren der SARlib

Um das SpeedTouch Kernelmodul erfolgreich übersetzen zu können, müß zuerst die SARlib übersetzt werden. Dies gestaltet sich denkbar einfach, wie in folgender Box ersichtlich:

tar xvfz sarlib-0.2.4.tar.gz
ln -s sarlib-0.2.4 sarlib
cd sarlib
make

Der symbolische Link namens "sarlib" ist deshalb notwendig, weil in späterer Folge das SpeedTouch Kernelmodul nach einem Verzeichnis "../sarlib" suchen wird. Die Versionsnummer kann sich natürlich unterscheiden, zum Zeitpunkt als dieses HOWTO verfasst wurde, war die Version 0.2.4 der SARlib aktuell und auf der SARlib Website hat es auch längere Zeit schon keine Änderungen mehr gegeben.


Kompilieren des SpeedTouch Kernelmoduls

Die aktuellste Version des SpeedTouch Moduls war zum Erstellungsdatums dieses HOWTOs die Verison 1.5, auch hier hat sich schon einige Zeit nichts gravierendes mehr geändert. Entpacken, Kompilieren und Installieren folgt auch hier dem Standardschema:

tar xvfz speedtouch-1.5.tar.gz
cd SpeedTouch
make

Beim Kompilieren mit neueren Kernelversionen werden mit hoher Wahrscheinlichkeit Warnings bezüglich malloc.h auftreten, diese kann man aber getrost ignorieren.
Abschließend muss das Modul noch installiert werden. Dazu meldet man sich als Benutzer "root" an und mit "make install" wird dann auch gleich der Installationsvorgang gestartet. Wenn alles gut ging, dann sollte der Output dem meinigen hier unten ähnlich sehen:

monsterchen:/home/tuxx/usb-adsl/SpeedTouch# make install
mkdir -p /lib/modules/`uname -r`/kernel/drivers/usb
cp speedtch.o /lib/modules/`uname -r`/kernel/drivers/usb
/sbin/depmod -aq
monsterchen:/home/tuxx/usb-adsl/SpeedTouch#

Unter Umständen können beim Starten von "depmod" Meldungen bezüglich Unresolved symbols in speedtch.o auftreten, das sollte uns aber nicht weiter kümmern.


Installation des HotPlug Mechanismus

In den meisten Fällen sollte die Distribution über dieses Paket verfügen und dieses auch gleich richtig konfigurieren. Ist dies nicht der Fall, dann muss die Installation manuell durchgeführt werden. Die manuelle Installation der Pakete erfolgt abhängig vom verwendeten Paketmanager :

RPM:
rpm -Uhv hotplug.rpm

DEB:
dpkg -i hotplug.rpm
bzw.
apt-get install hotplug

Natürlich ist es auch möglich, HotPlug selbst zu kompilieren. Nähere Informationen dazu findet man dann im beiliegenden README-File.
Anschließend sollte man sich noch vergewissern, dass HotPlug beim Systemstart gestartet wird.


Installieren des SpeedManagement Utilities

Das Speedmanagement Utility kümmert sich auch um die Einträge für den Hotplug Mechanismus und besteht leider nur als binary -> Die Installation umfasst hier nur das Entpacken und anschließende Installieren des Utilities:

monsterchen:/home/tuxx/usb-adsl# tar xvfz speedmgmt.tar.gz
mgmt/mgmt.o
mgmt/speedtouch
mgmt/speedtch.usermap
mgmt/INSTALL
mgmt/iface.h
mgmt/Makefile
mgmt/LICENSE
mgmt/VERSION
mgmt/ChangeLog
monsterchen:/home/tuxx/usb-adsl# cd mgmt
monsterchen:/home/tuxx/usb-adsl/mgmt# make install
cp speedmgmt /usr/sbin/
mkdir -p /etc/hotplug/usb
cp speedtouch /etc/hotplug/usb/speedtouch
chmod a-wrx /etc/hotplug/usb/speedtouch
chmod u+rx /etc/hotplug/usb/speedtouch
mv /etc/hotplug/usb.usermap /etc/hotplug/usb.usermap.bak
cat /etc/hotplug/usb.usermap.bak | grep -v speedtouch > /etc/hotplug/usb.usermap
cat speedtch.usermap >> /etc/hotplug/usb.usermap
monsterchen:/home/tuxx/usb-adsl/mgmt#


Anschließen des Modems an den USB

Nun sollten alle Vorkehrungen getroffen sein, um einen ersten Versuch zu wagen, das Modem anzuschließen. Bei einwandfreier Konfiguration sollten die LEDs am Modem in folgendem Muster aufleuchten:

  1. Beide LEDs leuchten grün für sehr kurze Zeit
  2. Linke LED blinkt, rechte LED ist grün
  3. Linke LED leuchtet grün, die rechte wechselt zwischen grün und rot
  4. Die Linke LED leuchtet weiterhin grün, die rechte sollte blinken
  5. Zum Schluß sind beide LEDs grün

In der Datei "/var/log/messages" sollte dann z.B. folgender Output enthalten sein:

Apr 22 22:01:37 monsterchen kernel: hub.c: USB new device connect on bus1/2, assigned device number 2
Apr 22 22:01:37 monsterchen kernel: usb-uhci.c: interrupt, status 2, frame# 295
Apr 22 22:01:38 monsterchen kernel: hub.c: USB new device connect on bus1/2, assigned device number 3
Apr 22 22:01:38 monsterchen kernel: usb.c: USB device 3 (vend/prod 0x6b9/0x4061) is not claimed by any active driver.
Apr 22 22:01:38 monsterchen /etc/hotplug/usb.agent: Setup speedtouch for USB product 6b9/4061/0 
Apr 22 22:01:38 monsterchen /etc/hotplug/usb.agent: Module setup speedtouch for USB product 6b9/4061/0
Apr 22 22:01:38 monsterchen kernel: usb.c: registered new driver Alcatel SpeedTouch USB
Apr 22 22:01:38 monsterchen kernel: usb_control/bulk_msg: timeout
Apr 22 22:01:38 monsterchen kernel: usbdevfs: USBDEVFS_BULK failed dev 3 ep 0x85 len 512 ret -110
Apr 22 22:01:43 monsterchen kernel: usb_control/bulk_msg: timeout


Starten des pppd, Testen der Verbindung

Nun ist es soweit, wir sollten uns mit Hilfe des pppd problemlos mit dem Provider verbinden können. Dazu gibt man einfach "pppd" auf der Kommandozeile ein und achtet auf etwaige Logmeldungen im Syslog bzw. in der Datei "/var/log/messages". Die Verbindung sollte nun bestehen bleiben. Infos zu Redial Scripts oder ähnlichem finden sich ebenfalls in dieser HOWTO-Sammlung.


Troubleshooting

Sollte das Modem trotz dieser Anleitung nicht zur Mitarbeit bewegt werden können, dann stehen auch noch diverse Online-Foren zur Verfügung, in denen man auftretende Probleme diskutieren kann. Dazu sollte man _AUSREICHEND_ Informationen (Fehlermeldungen, genaue Beschreibung dessen, was bereits gemacht wurde, etc. etc.) zusammentragen, um die Leute in diesen Foren mit wichtigen Informationen zu versorgen. Eine sehr gute österreichische Newsgroup ist z.B. at.linux.