Surfstick einrichten

Aus wiki.archlinux.de

Wer einen Surfstick des Mobilfunk-Anbieters O2 besitzt, möchte diesen eventuell auch unter Arch benutzen. Dies ist mit dem Standard-Kernel ab mindestens Version 2.6.27 ohne zusätzliche Kernelmodule problemlos möglich. Es wird vermutlich auch mit älteren Kerneln funktionieren, wurde vom Initial-Autor des Artikels allerdings nicht getestet.

Für die Einrichtung stehen zwei Lösungswege offen. Zum Einen bietet sich die Möglichkeit, den Surfstick mittels comgt und wvdial in Verbindung mit pppd manuell einzurichten, zum Anderen bietet sich mit umtsmon eine GUI-Basierende Konfiguration an.

Prinzipiell ist diese Vorgehensweise auch auf die Sticks anderer Anbieter übertragbar, sofern diese auf dem HUAWAI E160/E220 basiert.

Hardware

Der vom Autor zum Testen im Prozess der Initialisierung dieses Wiki-Artikels verwendete Surfstick ist laut Beschriftung der „HUAWEI E160 HSDPA USB Stick“, lsusb gibt folgendes aus.

Bus 001 Device 009: ID 12d1:1003 Huawei Technologies Co., Ltd. E220 HSDPA Modem / E270 HSDPA/HSUPA Modem

Bei Anschluss des Surfsticks werden dem System zwei USB-GSM-Modems übergeben. „ttyUSB0“ ist das Verbindungs-Modem, und „ttyUSB1“ wird vom Stick selbst für interne Zwecke verwendet.

[ 2103.645260] usb 5-3: GSM modem (1-port) converter now attached to ttyUSB0
[ 2103.645305] usb 5-3: GSM modem (1-port) converter now attached to ttyUSB1

Die Status-Anzeige blinkt blau, wenn der Stick im „Stand-By“ ist, oder initialisiert wird, um leuchtet bei Betrieb grün.

Einrichtung per Befehlszeile

Zur Einrichtung am CLI werden zwei Tools benötigt, dies sind wvdial und comgt. Ersteres befindet sich im „community“-Repository, letzteres ist im „extra“-Repository verfügbar. Beide Tools können aus den entsprechenden Repositorys mit Pacman installiert werden.

pacman -Sy comgt wvdial

Sollte das Internetverbindungsaufbau-System nicht installiert sein, so müssen die Pakete ebenfalls noch installiert werden.

pacman -Sy rp-pppoe ppp

… wobei dies bei einer Standard-Installation nicht nötig ist.

Konfiguration

Vor der Verwendung des Surfsticks unter Arch müssen noch einige Dinge konfiguriert werden. Auch ist es ratsam, sich ein Script oder eine Bash-Funktion zu erstellen, um den Stick zu initialisieren, da man sonst alle Schritte manuell ausführen muss.

wvdial

Über das PPP-Einwahlprogramm „wvdial“ wird die Verbindung über das Surfstick-Modem ins Internet aufgebaut. Damit das Programm die richtigen Befehle ausführt, muss ein Script erstellt werden. Es wird davon ausgegangen, dass der Surfstick als einziges Modem verwendet werden soll. Falls nicht, muss statt „Dialer Defaults“ einfach ein anderer Name angegeben werden.

[Dialer Defaults]
Modem = /dev/ttyUSB0
ISDN = off
Modem Type = USB Modem
Baud = 115200
Init = ATZ
Init2 ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
Init3 AT+CGDCONT=1,"IP","surfo2"
Init4 =
Init5 =
Init6 =
Init7 =
Init8 =
Init9 =
Phone = *99#
Phone1 =
Phone2 =
Phone3 =
Phone4 =
Dial Prefix =
Dial Attempts = 100
Dial Command = ATM1L3DT
Ask Password = off
Password = o2
Username = o2
Auto Reconnect = on
Abort on Busy = off
Carrier Check = on
Check Def Route = on
Abort on No Dialtone = on
Stupid Mode = off
Idle Seconds = 0
Auto DNS = on

Username und Passwort müssen so belassen werden. Dies wird als Datei „/etc/wvdial.conf“ abgespeichert.

Script

Möchte man nicht jedes mal mehrere Befehle eingeben, wenn man den Surfstick initialisieren will, kann man sich ein kleines Script, oder eine Bash-Funktion erstellen. Im Beispiel wird eine Bash-Funktion verwendet, die in der bashrc von root notiert wurde.

function o2ss {
  ifconfig eth0 down
  mknod /dev/ppp c 108 0 2>/dev/null
  COMGTPIN=1234 comgt PIN -d /dev/ttyUSB0
  sleep 5
  wvdial
  ifconfig eth0 up
}

Zuerst wird eth0 offline gesetzt. Dies ist nötig, da wvdial, bzw. pppd dadurch eventuell verwirrt werden können. Es wird dann ein neuer Device Node erstellt, und Fehlermeldungen dabei verworfen. Gelegentlich kann das Device nämlich mal nicht vorhanden sein, und so wird es automatisch neu erstellt. Wenn es schon vorhanden ist, wird so keine Fehlermeldung angezeigt.

Es wird dann mittels „comgt“ die PIN, im Beispiel „1234“, an die SIM-Karte übergeben, und diese damit geöffnet, da der Surfstick danach einen Moment braucht, um die SIM-Karte freizugeben, wird durch das darauffolgende „sleep“ fünf Sekunden gewartet. Will man die PIN nicht in einer Datei stehen haben, bietet sich eine etwas angepasste Methode an (siehe Optimieren).

Nun wird „wvdial“ ausgeführt, wenn nur eine Konfiguration – und diese als „Dialer Default“ – eingetragen wurde, reicht der Aufruf so, ansonsten muss er um den Eintrags-Namen erweitert werden, etwa „wvdial surfstick“, wenn der Konfigurationsabschnitt „surfstick“ heißt.

Durch „wvdial“ wird selbständig „pppd“ gestartet, und durch diesen die Verbindung über das Modem ins Internet aufgebaut. Alle nötigen Daten werden durch den O2-DHCP-Server bereitgestellt und von „pppd“ automatisch dem System übergeben.

# o2ss
SIM ready
--> WvDial: Internet dialer version 1.60
--> Cannot get information for serial port.
--> Initializing modem.
--> Sending: ATZ
ATZ
OK
--> Modem initialized.
--> Sending: ATM1L3DT*99#
--> Waiting for carrier.
ATM1L3DT*99#
CONNECT
--> Carrier detected.  Waiting for prompt.
--> Don't know what to do!  Starting pppd and hoping for the best.
--> Starting pppd at Sat Apr 18 22:14:50 2009
--> Pid of pppd: 5503
--> Using interface ppp0
--> local  IP address 10.68.85.169
--> remote IP address 10.64.64.64
--> primary   DNS address 193.189.244.197
--> secondary DNS address 193.189.244.205

Das geöffnete Shell-Fenster dient zur Kontrolle und Statusanzeige. Wenn in dem Fenster Strg+C gedrückt wird, wird die Verbindung getrennt, ebenso, wie, wenn das Fenster geschlossen wird.

Optimieren

Will man seine PIN nicht im Klartext in einer Datei stehen haben, sondern jedes mal verdeckt eingeben, kann man sich foldenden Scriptes, anstatt des oben angegebenen …

COMGTPIN=1234 comgt PIN -d /dev/ttyUSB0

… bedienen. Das Script setzt zuerst die Shell in den Passwort-Eingabemodus und Fragt das Passwort ab, setzt die Shell dann wieder zurück in den vorherigen Modus, und führt „comgt“ aus.

trap "stty echo ; exit" 1 2 15
echo -n "PIN: "
stty -echo
read PIN
COMGTPIN=${PIN} comgt PIN -d /dev/ttyUSB0
stty echo
echo 
trap "" 1 2 15

„trap“ sichert, dass die Shell wieder in den ursprünglichen Modus zurückwechselt, wenn man die Eingabe mit Strg+C o.ä. abbricht.

Grafische Einrichtung

Eine weitere Methode, den Surfstick unter Arch zu verwenden, ist, umtsmon einzusetzen. umtsmon ist ein Qt3-Basierendes Programm, das im AUR verfügbar ist, und aus diesem AUR installiert werden kann. Zusätzlich wird das Paket „qt3“ benötigt, das im „extra“-Repository vorhanden ist, und mittels Pacman installiert werden kann.

pacman -Sy qt3
Die Einstellung der Profildaten

Nach der Installation kann das Tool mittels „umtsmon“ gestartet werden, es bedarf dann aber noch der Einstellung eines Profils. Zuerst wird allerdings die PIN abgefragt, um die SIM-Karte zu öffnen. Über „Verbindung → Profile“ gelangt man zum Profil-Editor, hier muss man ein neues Profil anlegen.

Die Daten in den Abschnitten „einloggen“ und „Erweiterte PPP-Einstellungen“ sollten so übernommen werden, wie sie im Screenshot vorhanden sind, das Passwort lautet auch hier „o2“. Hat man keine echte Flatrate, sondern einen Volumen- oder Zeit-Tarif, kann man unter „Monatliche Daten/Zeitlimits“, ob und wann das Tool eine Warnmeldung ausgeben soll.

Mit einem Klick auf „Speichern“ speichert man das Profil, und kann den Profilmanager dann schließen.

umtsmon ist Verbunden und zeigt Statusmeldungen an

Will man nun mit dem Surfstick online gehen, klickt man auf das zweite Icon im Hauptfenster (die Darstellung von zwei Computern). „umtsmon“ baut nun die Verbindung anhand der im Profil eingestellten Daten auf. Im Statusbereich werden die übertragenen Datenmengen sowie die Signalstärke angezeigt.

Das Versenden von SMS-Nachrichten funktioniert ebenfalls. Über den Menüpunkt „SMS“, oder das Icon mit dem Briefumschlag kann man eine neue SMS-Nachricht erstellen und über den erscheinenden Dialog versenden, eine UMTS-Verbindung muss dazu nicht bestehen.

Beim Testen innerhalb der Vorbereitungen für die Initialisierung dieses Artikels war „umtsmon“ zwar eine Fehlermeldung aus, dass die SMS nicht versendet wurde, sie kam allerdings dennoch an. Der Empfang von SMS-Nachrichten klappte beim Testen jedoch nicht.

Über den Menüpunkt „PIN-Einstellungen“ kann man die PIN ändern oder die PIN-Abfrage deaktivieren.

Offline gehen kann man mit dem Icon rechts neben dem Verbindungsicon. Alternativ kann man das Fenster auch einfach schließen. Die Verbindung wird dann getrennt.

Fehlerbehebung

Bei der Verwendung des Script-Lösung, sowie der grafischen Lösung können einige Probleme und Ungereimtheiten auftreten. Die gängigsten Probleme werden hier erfasst.

Keine Namensauflösung möglich

Es kann unter gewissen Konfigurationen vorkommen, dass nach dem Verbinden per Script die resolv.conf falsche Besitzangaben und falsche Rechte hat. Dies resultiert darin, dass man nur als root auf das DNS zugreifen kann, und als Nutzer keine Auflösung von Domains mehr möglich ist.

Ein Workaround dafür ist, eine pppd-Startdatei anzupassen. Dazu wechselt man in das Verzeichnis „/etc/ppp/ip-up.d/“, dort bearbeitet oder erstellt man eine Datei „00-dns.sh“

Entweder muss man hier ganz am Ende der Datei, oder in der neuen, leeren Datei folgendes reinschreiben.

chmod 640 /etc/resolv.conf
chown root:network /etc/resolv.conf

Dadurch wird der Standard für diese Datei wiederhergestellt, und man hat auch als normaler Nutzer wieder Zugriff auf die Namensauflösung.

Merkwürdige Ausgaben von pppd

Sollten beim Aufrufen des Scripts Ausgaben wie …

--> pppd: ��[10]a& [08]@&

… beim starten von „pppd“ durch „wvdial“ erscheinen, sieht dies zwar nicht so schön aus, hat aber auf die Funktionsfähigkeit des Scripts keinen Einfluss. Sollten einen die Anzeigen sehr stören, so kann man das Script wie folgt aufrufen:

o2ss 2>1 | grep -v -- '--> pppd:'

Allerdings funktioniert nun das Trennen mittels Strg+C oder das Schließen des Fensters nicht mehr. Man muss den PPP-Daemon manuell beenden (z.B. mittels „killall pppd“).

umtsmon sieht merkwürdig aus

„umtsmon“ verwendet Qt3, und durch dieses standardmäßig das sehr in die Jahre gekommene „Motif“-Grafik-Toolkit. Man muss also ein Qt3-Theme installieren. Qt3 übernimmt nicht automatisch ein eingestelltes Theme für Qt4. Auch GTK-Themes werden nicht übernommen.

umtsmon findet den Stick nicht

Obwohl „gksu“ als optionale Abhängigkeit vorgeschlagen wird, funktioniert das Programm nur als root ordnungsgemäß. Wenn „umtsmon“ als User gestartet wird, wird der Stick nicht erkannt. Wenn man „gksu“ installiert hat, kann man umtsmon wie folgt aufrufen.

gksu umtsmon

Dies kann man sich auch ins Menü eintragen. Vor dem Start von „umtsmon“ erscheint nun ein Fenster, das zur Eingabe des root-Passwortes auffordert.

Weblinks