UMTS on FreeBSD

Autor: bert2002
Datum: 21.9.2006
Homepage: https://www.pissflitsche.net

An dieser Stelle möchte ich euch zeigen wie man unter FreeBSD mit UMTS online geht. Ich habe eine Merlin 630 die per seriel-over-pcmcia angesprochen wird (neuere von eplus funktionieren noch nicht wirklich). Es gibt noch ein Problem mit der Verbindung, aber das laesst sich durch einen kleinen “Patch” im Kernel beheben (keine grosse sache).

Kernel patchen

Wir müssen eine Zeile im Kernel ändern. Bei mir ist das in der Zeile 1929 anzufinden.

Ihr müsst folgendes:
Datei: /usr/src/sys/dev/sio/sio.c

cp4ticks = speed / 10 / hz * 4;

in

cp4ticks = speed / 10 / 100 * 40;

umändern und dann den Kernel neucompilieren und Installieren ( make buildkernel && make installkernel && reboot ).

Karte initialisieren und Pin übergeben

Wenn ihr jetzt die Karte in den PCMCIA Slot einsteckt sollte ihr etwas ähnliches sehen wie sowas hier (dmesg):

pccard0: Allocation failed for cfe 7
sio4: at port 0x2f8-0x2ff 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 0x2e8-0x2ef 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.
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):

#!/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 = “XXX”;$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 ppp.conf wie folgt anpassen:

Datei: /etc/ppp/ppp.conf

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

UMTS Einwahl

Jetzt ist es auch schon soweit und wir können uns einwählen (*spannung*). 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>

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. Ich hatte das Problem das meine DNS irgendwie ueber UMTS nicht so ganz wollten und habe zwei DNS Server von eplus direkt genommen und jetzt funktioniert alles.

Datei: /etc/resolv.conf

nameserver 212.23.97.2
nameserver 212.23.97.3

Wenn das so geklappt hat, seit ihr mit UMTS online und ich wuensche euch Viel Spass…
Das ganze hätte nicht ohne die Schlagkräftige Hilfe von bsdforen.de geklappt und an die geht mein tiefster Dank!

Leave a Reply

Your email address will not be published.

Time limit is exhausted. Please reload CAPTCHA.

This site uses Akismet to reduce spam. Learn how your comment data is processed.