Ubuntu-BlueTooth-UMTS via O2

Aus Markus' Wiki
Version vom 22. Februar 2009, 22:16 Uhr von Markus (Diskussion | Beiträge)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche

Ins Internet mit Ubuntu Feisty Fawn (7.04), ueber Bluetooth an einem Sony Ericsson K800i, per UMTS ins Internet

Der folgende Artikel beschreibt, wie man mit einem Dell-Notebook mit Ubuntu Feisty Fawn (7.04) ins Internet kommt, wenn man ein Sony Ericsson K800i dabei hat und das UMTS-Angebot von O2 nutzt.

Geräte:

  • Dell Vostro 1500, gekauft im Oktober 2007
  • Sony Ericsson K800i, gekauft im September 2007

Zum Dell-Notebook ist zu sagen, dass es eigentlich egal ist, welches Notebook man hat. Es muss eben einen BlueTooth-Adapter besitzen. Ubuntu Feisty Fawn läuft auf den allermeisten Notebooks ganz prima, deshalb gehe ich hier nicht weiter darauf ein. Ob BlueTooth unterstützt wird, sieht man am besten gleich nach dem Hochfahren mit folgenden Befehlen. Wir wollen das Handy ja als Modem benutzen, deshalb benötigen wir vor allem die RFCOMM-Unterstuetzung:

root@schlepptopp:~# dmesg | grep lueto
[ 21.676000] Bluetooth: Core ver 2.11
[ 21.676000] Bluetooth: HCI device and connection manager initialized
[ 21.676000] Bluetooth: HCI socket layer initialized
[ 21.852000] Bluetooth: HCI USB driver ver 2.9
[ 38.264000] Bluetooth: L2CAP ver 2.8
[ 38.264000] Bluetooth: L2CAP socket layer initialized
[ 38.448000] Bluetooth: RFCOMM socket layer initialized
[ 38.448000] Bluetooth: RFCOMM TTY layer initialized
[ 38.448000] Bluetooth: RFCOMM ver 1.8

Auf der Handyseite gehen wir auf "Einstellungen" -> "Verbindungen" -> "Bluetooth". Wir schalten die "Sichtbarkeit" ein. Dann schalten wir Bluetooth explizit ein.

Auf der Notebook-Seite installieren wir nun Pakete. Dazu muß das Notebook erst einmal überhaupt am Netz sein. Idealerweise haben wir das Notebook per LAN oder WLAN ans Internet gebracht. Mit

apt-get update

holen wir uns erst einmal die aktuellen Paketbeschreibungen. Dann installieren wir folgende Pakete:

sudo apt-get install bluez-utils bluez-pin ppp

Es kann gut sein, dass diese Pakete schon installiert sind. Dann staeten wir die BlueTooth-Services neu. Das "sudo" brauchen wir nur, wenn wir nicht "root" sind. Als "root" können wir das "sudo" weglassen.

sudo /etc/init.d/bluetooth restart

In Paket "bluez-utils" befindet sich ein Befehl namens hcitool. Nun scannen wir die Funkumgebung nach BlueTooth-Sendern:

root@schlepptopp:~# hcitool scan
Scanning ...
00:11:22:AA:BB:CC K800i

WICHTIG: Liebe Leser, immer wenn diese MAC-Adresse im weiteren Verlauf dieses Artikels verwendet wird, muesst ihr natuerlich die MAC-Adresse verwenden, die in eurem Fall angezeigt wird!!! Das hcitool entdeckt also nun das Handy, das ist schon mal ein Erfolg. Wenn man dieses Ergebnis nicht bekommt, funktioniert irgendwas mit dem BlueTooth nicht, dann lohnt es sich nicht, an dieser Stelle weiterzumachen. Dann muss man erst einmal die BlueTooth-Problematik klaeren. Die Schritte zur Konfiguration der BlueTooth-Verbindung ist in der Ubuntu-BlueTooth-Doku sehr gut beschrieben. Als nächstes muessen wir zusehen, dass das Pairing funktioniert. Das heisst, dass das Notebook und das Handy vereinbaren, dass sie ab nun miteinander Daten austauschen. Wie erotisch, auf dem Ubuntu kommt es jetzt zu einer "Paarungsanfrage" :-) Von welcher Seite aus das Pairing initialisiert wird, ist dabei egal. Auch das Handy kann so ein Pairing veranlassen. Das ist sogar ein wenig zuverlaessiger, deshalb machen wir das lieber so.

Fall 1: Wir machen das Pairing vom Handy aus. In diesem Fall gehen wir in "Meine Geraete" -> "Neues Geraet" und klicken auf "Hinzufuegen". Dann sollte das Notebook "gesehen" werden. In meinem K800i erscheint der "Schlepptopp-0". Wir klicken auf "Waehlen". Daraufhin duerfen wir eine Authentifizierungs-ID auf dem Handy eingeben. Ich ignoriere alle Sicherheitsbedenken und gebe "0000" ein. Daraufhin poppt ein Fensterchen auf dem Notebook hoch, auf dem ich die "0000" auch wieder eingebe. Kurz darauf haben die beiden Maschine sich gepaart und sind zufrieden :-)

Fall 2: Wir machen das Pairing vom Notebook aus. Lieber Fall 1, denn das hat bei mir (noch) nicht funktioniert. Was man machen muesste:

(1) hcitool cc 00:11:22:AA:BB:CC (2) hcitool con (3) hcitool auth 00:11:22:AA:BB:CC

Bei mir habe ich das Problem, dass die Basisband-Connection (der Befehl mit dem "cc") nur sehr kurz dauert. Sobald (1) zu ende ist, kann man mit (2) nachprüfen, ob die Verbindung auch wirklich existiert. Wenn man die Zeit anhalten koennte, dann koennte man auch den Befehl (3) eingeben. Was dann passiert, kann ich nicht sagen, denn meine Basisband-Verbindung waehrte immer viel zu kurz. Also belassen wir es dabei und machen die Paarung vom Handy aus. Siehe Fall 1.

Im Paket "bluez-utils" befindet sich auch ein Werkzeug namens sdptool. Dieses benutzen wir nun, um das Handy ein bisserl auszufragen, was es denn so alles kann.

root@schlepptopp:~# sdptool browse 00:11:22:AA:BB:AC
Browsing 00:11:22:AA:BB:CC ...
Service Description: Sony Ericsson K800
Service RecHandle: 0x10000
Service Class ID List:
"PnP Information" (0x1200)

Service Name: OBEX SyncML Client
Service RecHandle: 0x10001
Service Class ID List:
UUID 128: 00000002-0000-1000-8000-0002ee000002
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 1
"OBEX" (0x0008)

Service Name: Dial-up Networking
Service RecHandle: 0x10002
Service Class ID List:
"Dialup Networking" (0x1103)
"Generic Networking" (0x1201)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 2
Profile Descriptor List:
"Dialup Networking" (0x1103)
Version: 0x0100

Service Name: Serial Port
Service RecHandle: 0x10003
Service Class ID List:
"Serial Port" (0x1101)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 3

Service Name: PAN Network Access Point
Service Description: NAP provides access to internet for one connecting PANu
Service RecHandle: 0x10008
Service Class ID List:
"Network Access Point" (0x1116)
Protocol Descriptor List:
"L2CAP" (0x0100)
PSM: 15
"BNEP" (0x000f)
Version: 0x0100
SEQ8: 0 6 dd

Language Base Attr List:
code_ISO639: 0x656e
encoding: 0x6a
base_offset: 0x100
Profile Descriptor List:
"Network Access Point" (0x1116)
Version: 0x0100

.............etc.

Die ganze Liste kann man im Konqueror auch ansehen, zwar mit weniger Informationen, dafuer aber grafisch aufbereitet. Mit der URL "bluetooth:/" bekommt man eine Uebersicht aller bekannten BlueTooth-Stationen. Ein Klick auf das Symbol meines K800i ergibt folgendes Bild:

K800i Konqueror.png

Interessant ist eigentlich nur, auf welchem Channel der Service "DialUp Networking" sitzt. In meinem Fall ist das der Channel 2. Diese Information kann man der Textausgabe vermutlich etwas besser entnehmen. Mit dieser Information editieren wir die Datei /etc/bluetooth/rfcomm.conf und fuegen folgenden Block ein. Das fuehrt nun dazu, dass der bluetooth-Dienst ein Device-Node "/dev/rfcomm0" generiert, wenn er das Handy sieht.

rfcomm0 {
bind yes;
device 00:11:22:AA:BB:CC;
channel 2;
comment "K800i";
}

Damit es auch dazu kommt, starten wir den BlueTooth-Dienst neu (/etc/init.d/bluetooth restart). Wenn es dabei zu einer Fehlermeldung kommt, die besagt, dass kein sdp-Server gefunden werden konnte, dann ignorieren wir diese erst einmal. Wichtig ist vor allem, dass das Device-Node "/dev/rfcomm0" angelegt wurde.

Als Nächstes kuemmern wir uns darum, dass wvdial korrekt funktioniert. Dazu tragen wir in der Datei /etc/wvdial.conf folgende Zeilen ein:

[Dialer Defaults]
Phone = *99#
Username = nil
Password = nil
New PPPD = yes
Dial Command = ATDT
[Dialer O2]
Modem = /dev/rfcomm0
Baud = 460800
Dial Command = ATDT
Init2 = ATZ
Init3 = ATM0
Init4 = AT+CGDCONT=1,"IP","surfo2"
FlowControl = crtscts
Modem Type = Analog Modem

Achtung: O2 achtet nicht auf Username und Password. Damit das wvdial nicht durcheinanderkommt, geben wir zum Ersatz "nil" ein. Dann starten wir die Verbindung mit dem Befehl "wvdial O2". Wir sehen folgenden Output:

root@schlepptopp:~# wvdial O2
--> WvDial: Internet dialer version 1.56
--> Cannot get information for serial port.
--> Initializing modem.
--> Sending: ATZ
ATZ
OK
--> Sending: ATZ
ATZ
OK
--> Sending: ATM0
ATM0
OK
--> Sending: AT+CGDCONT=1,"IP","surfo2"
AT+CGDCONT=1,"IP","surfo2"
OK
--> Modem initialized.
--> Sending: ATDT*99#
--> Waiting for carrier.
ATDT*99#
CONNECT
~[7f]}#@!}!}!} }9}#}%B#}%}(}"}'}"}"}&} } } } }%}&Z%
)[08]N~
--> Carrier detected. Waiting for prompt.
~[7f]}#@!}!}"} }9}#}%B#}%}(}"}'}"}"}&} } } } }%}&Z%
)D#~
--> PPP negotiation detected.
--> Starting pppd at Sat Oct 27 18:21:25 2007
--> Pid of pppd: 7120
--> Using interface ppp0
--> local IP address 10.73.164.217
--> remote IP address 10.64.64.64
--> primary DNS address 195.182.110.132
--> secondary DNS address 62.134.11.4

Das wars! Viel Spaß!!!!!

Interessante und hilfreiche Links:

   * Bluetooth Setup - Eine Doku von Ubuntu selber
   * BlueTooth DialUp - Eine Doku von Ubuntu selber
   * Eine Doku ( Blog) von einem Hacker mit Kuerzel YK
   * Mobile-Anleitung von der Ubuntu User-Seite