ubuntuusers.de

Hinweis: Dies ist ein statischer Snapshot unseres Wikis vom 25. März 2013 und kann daher nicht bearbeitet werden. Der aktuelle Artikel ist unter wiki.ubuntuusers.de zu finden.

UMTS per PCMCIA

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Hinweis:

Besitzer eines UMTS-fähigen Mobiltelefons können sich nach der Anleitung UMTS per Mobiltelefon ins Netz einwählen.

Internetzugang über UMTS und PCMCIA-Karten

Diese Anleitung zur Nutzung von UMTS setzt voraus, dass die UMTS-Datenkarte bereits korrekt erkannt wurde. In den meisten Fällen dürfte es sich hierbei um PCMCIA-Karten der Firma Option handeln, die als OEM-Versionen dann mit dem Aufdruck des jeweiligen Providers versehen werden. Auf der Rückseite lässt sich der Original-Hersteller aber noch erkennen.

Wer den Umgang mit den im Anschluss beschriebenen Skripten scheut, hat mit UMTSmon und Vodafone Mobile Connect zwei komfortable grafische Einwahlprogramme zur Auswahl. Auch eine Einwahl mit GNOME PPP ist möglich.

getestete Karten

  • Option 3G Datacard von T-Mobile (Ubuntu 6.06)

  • Option 3G Datacard von Vodafone (Ubuntu 7.04 64-Bit)

  • Option GTmax EMEA alias T-Mobile Web'n'Walk Card compact (Ubuntu 8.04, 7.10, 7.04)

  • Option GT 3G+ EMEA von T-Mobile (Ubuntu 9.10, 9.04, 8.10)

Initialisierung

Man steckt die PCMCIA-Karte in den vorgesehenen Schacht und ruft anschließend in einem Terminalfenster [1]

dmesg 

auf. Die letzten Zeilen geben Auskunft darüber, ob der Kernel die Karte richtig erkannt hat. Nachfolgend beispielhaft die Ausgabe für eine Option GTmax EMEA:

pccard: CardBus card inserted into slot 0
nozomi 0000:03:00.0: Init, cards_found: 1
nozomi 0000:03:00.0: Card type is: 2048
PCI: Enabling device 0000:03:00.0 (0000 -> 0002)
ACPI: PCI Interrupt 0000:03:00.0[A] -> GSI 18 (level, low) -> IRQ 19
nozomi 0000:03:00.0: Nozomi driver nozomi_tty
nozomi 0000:03:00.0: Version of card: 3
nozomi 0000:03:00.0: Initialization OK!

Korrekt erkannte PCMCIA-Karten werden später - je nach Karte - entweder über /dev/ttyUSB0, /dev/ttyACM0 oder /dev/noz0 angesteuert.

Test der Empfangsstärke

Für diesen kurzen Test muss das Programm

  • gcom (universe, [2]; )

installiert [3] werden. Außerdem muss die SIM-Karte für den UMTS-Zugang eingelegt sein. Nun kann man in einem Terminalfenster (/dev/... für die eigene Karte anpassen, siehe oben)

gcom -d /dev/noz0 

ausführen. Gegebenenfalls wird die PIN der SIM-Karte abgefragt (bei Failed to register Befehl wiederholen; evtl. Standort wechseln). Beispiel:

SIM ready
Waiting for Registration..(120 sec max)
Registered on Home network: "Vodafone.de",2
Signal Quality: 18,99

Die Signalqualität kann dabei zwischen 3 und 33 schwanken. Wichtig ist die Zahl hinter dem Providernamen ("Home network"): 0 steht für GPRS, 2 für UMTS (aus Geschwindigkeitsgründen zu bevorzugen). Nun können die eingangs beschriebenen grafischen Einwahlprogramme oder die nachfolgenden Skripte eingesetzt werden.

PPP-Konfiguration

Die initiale PPP-Konfiguration gestaltet sich recht einfach. Nach dem Aufruf von

sudo pppconfig 

im Terminal [1] ist eine neue Verbindung zu erstellen. Hier sind nun folgende Eingaben zu tätigen:

  • Name des Providers: dient zur späteren Auswahl, könnte z.B. umts lauten

  • DNS: dynamic

  • Authentifizierung: PAP

  • Login: xxxx (provider- und tarifabhängig)

  • Passwort: **** (provider- und tarifabhängig)

  • Geschwindigkeit: 460800

  • Impuls- oder Tonwahl: Tone

  • Rufnummer: *99# oder *99***1# (provider- und tarifabhängig)

  • Automatische Erkennung des Modems: Nein

  • Modem-Anschluss: /dev/xxx (siehe oben)

Die Daten der Verbindung können nun gespeichert und das Konfigurationsprogramm beendet werden.

Einbuchen ins Netz

Um überhaupt eine Verbindung herstellen zu können, muss sich die Karte aber erst einmal ins Netz "einbuchen". Wie vom Handy bekannt, geht das nicht ohne PIN. Um diese zu setzen, gibt es grundlegend zwei Möglichkeiten: fest auf der Karte setzen (gefährlich bei "abhanden kommen", aber bequem) oder vor der Anwahl (z.B. per Skript). Man öffnet einen Editor [4] mit Root-Rechten [5] und gibt folgenden Text ein (der aber nur als Vorlage dient):

#!/usr/bin/env perl

use strict;
use warnings;

# Substitute xxx with your device, i.e. ttyUSB0 or noz0
my $modem = "/dev/xxx";
# Substitute yyyy with your PIN.
# You should probably put your PIN somewhere else, e.g. on a USB stick,
# an encrypted file system or something else, and read it from there...
# You have been warned!
my $pin = "yyyy";

$SIG{ALRM} = sub {
        die("timeout: no response from modem $modem\n");
};

(MODEM, "+<", $modem) or die("can't open modem $modem");
alarm(10);
print(MODEM "AT+CPIN=\"$pin\"\n\r");
while (<MODEM>) {
        if (m/OK/) {
                close(MODEM);
                print("PIN accepted\n");
                exit(0);
        }
        if (m/ERROR/) {
                close(MODEM);
                print("PIN rejected\n");
                exit(1);
        }
} 

Diesen speichert man dann z.B. unter /usr/local/sbin/setpin und setzt die Rechte [6] im Terminal mit

sudo chmod 700 /usr/local/sbin/setpin 

so, dass nur root die Datei anschauen darf (man will ja nicht unbedingt, dass jeder Benutzer die PIN sehen kann!).

Alternativ kann man folgende leicht abgewandelte Form des Skriptes nutzen. Es hat den Vorteil, dass die PIN nicht auf dem Rechner gespeichert wird, da sie direkt abgefragt wird. Dieses kann man dann unter /usr/local/bin/setpin speichern. Am Ende wird noch eine 3-sekündige Pause gemacht: falls man sich einen Starter auf der Oberfläche anlegt, kann man noch den Erfolg der Eingabe kontrollieren, bevor sich das Fenster schließt.

#!/usr/bin/env perl

use strict;
use warnings;

# Substitute xxx with your device, i.e. ttyUSB0 or noz0
my $modem = "/dev/xxx";
my $pin = "";

print "Please enter PIN: ";
$pin=<STDIN>;

$SIG{ALRM} = sub {
        die("timeout: no response from modem $modem\n");
};

(MODEM, "+<", $modem) or die("can't open modem $modem");
alarm(10);
print(MODEM "AT+CPIN=\"$pin\"\n\r");
while (<MODEM>) {
        if (m/OK/) {
                close(MODEM);
                print("PIN accepted\n");
                sleep(3);
                exit(0);
        }
        if (m/ERROR/) {
                close(MODEM);
                print("PIN rejected\n");
                sleep(3);
                exit(1);
        }
}
sleep(3);

Hier braucht die Berechtigung nicht so restriktiv zu sein, da die PIN nicht im Skript gespeichert ist. Folgender Befehl setzt die Ausführen-Berechtigung [3] für alle Benutzer des Rechners:

sudo chmod 755 /usr/local/bin/setpin 

Jetzt kann man das Skript starten; entweder das erste als Root mit

sudo /usr/local/sbin/setpin 

oder das angepasste als normaler Benutzer:

/usr/local/bin/setpin 

Ist all das so weit geschehen, kann nun mit

pon umts 

die Verbindung aufgebaut werden.

Alternativer Verbindungsaufbau mit wvdial

Leider scheint die oben beschriebene Variante via pppconfig nicht bei jedem zu funktionieren, daher sei an dieser Stelle ein alternativer Lösungsweg erläutert, der das Programm wvdial zum Verbindungsaufbau benutzt. Falls es noch nicht installiert ist:

which wvdial 

muss es erst installiert werden [4].

Nun führt man einfach wvdial in einem Terminalfenster aus. Beim ersten Start des Programms wird automatisch die Datei ~/.wvdial.conf erstellt. Diese öffnest du nun mit einem Editor deiner Wahl und ersetzt die darin enthaltenen Zeilen mit den folgenden:

[Dialer Defaults]
Init1 = ATZ
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
Modem Type = Analog Modem
Baud = 460800
New PPPD = yes
# Substitute xxx with your device, i.e. ttyUSB0 or noz0
Modem = /dev/xxx
ISDN = 0

[Dialer umts-pin]
Init3 = AT+CPIN=XXXX

[Dialer umts]
Dial Command = ATD
Carrier Check = no
# Substitute yyy with your dialin number, i.e. *99# or *99***1#
Phone = yyy
Password = none
Username = none
Stupid Mode = 1
# Substitute "zzz" with your APN, i.e. "web.vodafone.de"
Init4 = AT+CGDCONT=1,"IP","zzz"
Dial Attempts = 2

XXXX wird mit der eigenen (vierstelligen) Pin ersetzt. Jetzt kann man wvdial wie folgt aufrufen:

wvdial umts-pin 

Anschließend kann man sich mit:

wvdial umts 

ins UMTS-Netz einwählen.

Probleme und Lösungen

Während der NetworkManager ab Ubuntu 8.10 Intrepid Ibex mit UMTS USB-Sticks relativ zuverlässig funktioniert, wenn man die Startschwierigkeiten mit USB ModeSwitch behoben hat, war die Unterstützung von PCMCIA-Karten bisher so gut wie nicht-existent.

Network-Manager ab Ubuntu 9.10

Durch Veränderungen im Kernel kann bei einigen PCMCIA-Karten keine Verbindung hergestellt werden: die Karten werden zwar einwandfrei erkannt, nur die Kommunikation über den Kernel läuft nicht. Hierzu ist es erforderlich, einen neueren Mainline-Kernel ab 2.6.32-8 zu installieren. Ubuntu 10.04 Lucid Lynx verwendet diese Kernel-Version standardmäßig.

Software


ubuntuusers.local › WikiUMTS per PCMCIA