UMTS

Betrifft OS:
FreeBSD

In diesem Artikel will ich euch zeigen, wie ihr mit einer Novatel Merlin 630 unter FreeBSD surfen könnt. Die Karte kann UMTS und GPRS und ich habe sie von E-Plus. Ich habe die Karte unter FreeBSD 6.1 und 6.2 erfolgreich getestet. Mir kommt es irgendwie vor das UMTS unter FreeBSD 6.2 schneller ist, aber das kann auch an anderen Ursachen liegen.

Kernel patchen

Leider müssen wir eine kleine Veränderung am Kernel vornehmen. Wir müssen die Datei /usr/src/sys/dev/sio/sio.c in der Zeile 1929 wie folgt ändern:

cp4ticks = speed / 10 / hz * 4;

in

cp4ticks = speed / 10 / 100 * 40;

Nachdem wir das geändert haben müssen wir den Kernel neu compilieren und booten. Wie das geht, steht hier ganz gut.

Karte initialisieren

Zunächst müssen wir auch schauen, ob die Karte richtig erkannt wurde. Dazu stecken wir sie in den PCMCIA-Slot und schauen uns die Datei /var/log/messages an. Dabei müsste sowas erscheinen:

pccard0: Allocation failed for cfe 7
sio4: at port 0×2f8-0×2ff irq 11 function 0 config 15 on pccard0
sio4: type 16550A
sio4: unable to activate interrupt in fast mode - using normal mode
pccard0: Allocation failed for cfe 7
pccard0: Allocation failed for cfe 15
sio5: at port 0×2e8-0×2ef irq 11 function 1 config 23 on pccard0
sio5: type 16550A
sio5: unable to activate interrupt in fast mode - using normal mode

Dann wurde alles einwandfrei erkannt. Bitte versucht nicht das Device sio4 oder ein anderes zu suchen, so wie ich, denn die heissen anders und zwar cuadX. Jetzt dürfte eure Karte vor sich hin blinken und zwar ROT.

PIN übergeben

Als nächstes müssen wir der Karte den PIN übergeben und das machen wir mit einem Perl script (es gibt auch noch eine andere möglichkeit, aber die habe ich nicht erfolgreich getestet). Hier das Script:

#!/usr/bin/perl
use strict;
use warnings;my $modem =/dev/cuad4″;
# Substitute xxxx with your PIN.
# You should probably put your pin somewhere else, e.g. on an USB stick,
# an encrypted file system or something else, and read it from there…
# You have been warned!
my $pin = “XXXX”;$SIG{ALRM} = sub {
	die(”timeout: no response from modem $modem\n);
};
open(MODEM, "+<", $modem) or die("can't open modem $modem");
alarm(10);
print(MODEM "AT+CPIN=\"$pin\"\n\r");
while () {
	if (m/OK/) {
		close(MODEM);
		print("PIN accepted\n");
		exit(0);
	}
	if (m/ERROR/) {
		close(MODEM);
		print("PIN rejected\n");
		exit(1);
	}
}

Das Device an sich sollte bei euch auch das gleiche sein, falls nicht einfach anpassen und euren PIN dort eingeben. Ist zwar nicht das tollste da es in Klartext da steht, aber man kann nicht alles haben… Wenn ihr das Perl script jetzt ausführ sollte ein “PIN accepted” kommen. Falls nicht schaut dochmal ob die SIM-Karte Richtig herum in der Karte steckt face-wink.png Jetzt sollte die Karte anfangen Blau zu pingen (falls ihr in einem UMTS-Gebiet seid).

PPP-Konfigurieren

Jetzt müssen wir ppp konfigurieren und zwar benutzen wir das auf Userland-Ebene, also müssen wir die /etc/ppp/ppp.conf wie folgt anpassen:

3g:
set ifaddr 10.253.253.253/0 10.253.253.252/0 255.255.255.255
set log local chat error warning connect
set dial “ABORT ERROR ABORT BUSY ABORT NO\sCARRIER TIMEOUT 8 \
-AT+cops?;+csq;+creg?;+cgreg?-OK ATe0v1&d2&c1 OK AT+cgdcont=1,\”IP\”,\”internet.eplus.de\”,\”\”,1,1 OK \dATDT\T TIMEOUT 60 CONNECT”
set cd 30!
set crtscts on
set timeout 0
set reconnect 3 90
set speed 115200
set vj slotcomp off
disable mppe shortseq ipv6cp vjcomp pred1 deflate24 acfcomp protocomp
deny mppe deflate24 pred1 protocomp
set login
set device /dev/cuad4
set authname eplus
set authkey gprs
set phone “*99*1#”
add default HISADDR

Wenn ihr einen anderen Anbieter als Eplus benutzt müsst ihr natürlich den Authnamen und die Nummer ändern.

UMTS Einwählen

Jetzt ist es auch schon soweit und wir können uns einwählen. Das erreichen wir durch einen simplen Befehl:

# ppp 3g
jetzt befinden wir uns in der “ppp console” und müssen noch “dial” einegeben, damit wir uns verbinden:
PPP ON zlaptop> dial
daraufhin sollte etwas ähnliches erscheinen wie folgendes:
ppp ON zlaptop> dial
Chat: Phone: *99*1#
Chat: deflink: Dial attempt 1 of 1
Chat: Expect(8):
ppp ON zlaptop> Chat: Expect timeout
Chat: Send: AT+cops?;+csq;+creg?;+cgreg?
Chat: Expect(8): OK
Chat: Received: AT+cops?;+csq;+creg?;+cgreg?
Chat: Received: +COPS: 0,0,”E-Plus”,3
Chat: Received:
Chat: Received: +CSQ: 18,99
Chat: Received:
Chat: Received: +CREG: 0,1
Chat: Received:
Chat: Received: +CGREG: 0,0
Chat: Received:
Chat: Received: OK
Chat: Send: ATe0v1&d2&c1
Chat: Expect(8): OK
Chat: Received: ATe0v1&d2&c1
Chat: Received: OK
Chat: Send: AT+cgdcont=1,”IP”,”internet.eplus.de”,”",1,1
Chat: Expect(8): OK
Chat: Received:
Chat: Received: OK
Chat: "Send: ATDT*99***1#"
Chat: Expect(60): CONNECT
Chat: Received:
Chat: Received: CONNECT
Ppp ON zlaptop>
PPp ON zlaptop>
PPP ON zlaptop>
Falls es keinen Fehler gab, können wir noch schauen, ob wir eine IP bekommen haben (kann so ~15 Sekunden dauern):
[steffen@zlaptop umts]$ ifconfig tun0
tun0: flags=8051 mtu 1500
inet 10.161.xxx.xx –> 10.253.253.252 netmask 0xffffffff
Opened by PID 656
jetzt könnt ihr schon anfangen und wild in der Gegend herumpingen.

Tipp

Ich hatte das Problem, daß meine DNS-Server irgendwie über UMTS nicht so ganz wollten und habe deshalb zwei DNS-Server direkt von eplus genommen und jetzt funktioniert alles. Dazu tragen wir in der /etc/resolv.conf folgendes ein:

nameserver 212.23.97.2
nameserver 212.23.97.3

Wenn das so geklappt hat, seid ihr mit UMTS online und ich wünsche euch Viel Spaß…

Siehe auch