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:
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:
- Beide LEDs leuchten grün für sehr kurze Zeit
- Linke LED blinkt, rechte LED ist grün
- Linke LED leuchtet grün, die rechte wechselt zwischen grün und rot
- Die Linke LED leuchtet weiterhin grün, die rechte sollte blinken
- 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.