UMTS per PCMCIA

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

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

  1. Ein Terminal öffnen

  2. Programme installieren

  3. Einen Editor öffnen

  4. Root-Rechte

  5. Rechte für Dateien und Ordner ändern

Inhaltsverzeichnis
  1. Getestete Karten
  2. Initialisierung
  3. Test der Empfangsstärke
  4. PPP-Konfiguration
  5. Einbuchen ins Netz
  6. Alternativer Verbindungsaufbau mit wvdial
  7. Grafische Einwahlprogramme
  8. Problembehebung
  9. Links

Diese Anleitung zur Nutzung von UMTS bzw. des Internetzugangs über PCMCIA-Karten setzt voraus, dass die UMTS-Datenkarte bereits korrekt erkannt wurde. In den meisten Fällen dürfte es sich hierbei um 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, kann den Network-Manager oder verschiedene grafische Einwahlprogramme einsetzen.

Getestete Karten

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 folgende Programm installiert [2] werden:

Paketliste zum Kopieren:

sudo apt-get install comgt 

Oder mit apturl die Pakete installieren. Link: apt://comgt

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)

comgt -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 ist eine neue Verbindung zu erstellen. Hier sind nun folgende Eingaben zu tätigen:

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 [3] mit Root-Rechten [4] 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 Recht 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 [5] 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 immer zu funktionieren, daher sei an dieser Stelle ein alternativer Lösungsweg erläutert, der das Programm wvdial zum Verbindungsaufbau benutzt. Dazu installiert man folgendes Paket:

Paketliste zum Kopieren:

sudo apt-get install wvdial 

Oder mit apturl die Pakete installieren. Link: apt://wvdial

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.

Grafische Einwahlprogramme

Problembehebung

Während der NetworkManager ab Ubuntu 8.10 mit UMTS USB-Sticks relativ zuverlässig funktioniert (wenn man die Startschwierigkeiten mit USB ModeSwitch behoben hat), war die Unterstützung von PCMCIA-Karten zum Zeitpunkt der Erstellung des Artikels so gut wie nicht existent. Zumindest unter Ubuntu 16.04 werden die obigen Karten inzwischen problemlos automatisch erkannt und unter der Bezeichnung "Mobiles Breitband" bereitgestellt.

Damit sind die oben genannten alternativen Einwahlprogramme prinzipiell überflüssig (auch wenn sie immer noch funktionieren).