Bluetooth für das Mobiltelephon

Wie man seinen Computer unter Linux mit dem Mobiltelephon verbindet, Telephonnummern, SMS-Nachrichten, Anrufe und Kalendereinträge mit seinem Handy austauscht, die Zeit synchronisiert und SMS versendet.


Sprache: Deutsch, English

Inhaltsverzeichnis

externe Links: Für Nokia Handys Programme unter Linux entwickeln
Umweltfreundliche Elektronikhersteller ungifitiger Produkte
JavaScript - Fehler

Infrarot oder Bluetooth aktivieren

Bevor man damit beginnen kann Daten mit seinem Mobiltelephon auszutauschen muß für Bluetooth erst die Wireless Schnittstelle am Computer, meist durch einen Knopf oder Schiebregler aktiviert werden. Ebenso ist Bluetooth oder bei Verwendung der Infrarot-Schnittstelle IR am Handy zu aktivieren. Bei Verwendung der Infrarot-Schnittstelle ist darauf zu achten, daß beide Geräte "Blickkontakt" haben, daß sie also auf einer Linie liegen und kein Gegenstand dazwischen liegt, wie bei einem Lichtschranken.

Auf einem Nokia 6230 etwa kann Infrarot über Favoriten → Infrarot bzw. Bluetooth über Menü → Einstellungen → Verbindungen → Bluetooth → Bluetooth Ein aktiviert werden. Daraufhin erscheint das IR oder Bluetooth Symbol links oben am Display. Nach Beendigung der Datenübertragung ist es wahrscheinlich besser Bluetooth wieder auszuschalten, da es Strom verbraucht und Unbefugte das Gerät nicht versuchen zu hacken. In folgender Abhandlung wird aber Bluetooth der Vorteil gegeben, da die Schnittstelle neuer und einfacher zu bedienen ist (kein Sichtkontakt nötig).

Bluetooth Pairing

Nun geht es ans Bluetooth-Pairing. Damit zwei Bluetooth Geräte Daten miteinander austauschen können, müssen beide eine wecheselseitig beglaubigte Verbindung aufbauen. Dies geschieht meist dadurch, daß auf beiden Geräten ein übereinstimmendes Paßwort eingegeben wird. Die Koppelung bleibt auch nach dem Ein- und Ausschalten bestehen, solange bis sie explizit vom Benutzer wieder gelöst wird. Genau das kann aber zu Problemen bei erneuten Koppelungsversuchen führen. Wurde das Pairing auf einem der Geräte gelöst, so glaubt das andere, daß die Koppelung noch immer besteht. Vor einem erneuten Pairing müssen deshalb alte Koppelungen gelöscht werden.

Wenn alles gut läuft wird das Pairing sogar automatisch von der Desktopoberfläche angestoßen und der Benutzer braucht nur zwei mal denselben Code einzugeben. Sollte dies aus irgendeinem Grund nicht funktionieren oder will der Benutzer einfach weitere leidige Fehlerquelle ausschließen ist es vorteilhaft sich händisch ums Pairing zu kümmern:

Unter KDE4 legt sich das Programm kbluetooth4 in den Systemabschnitt der Kontrolleiste und kann dort über einen Rechtsklick auf Device-Manager zum Löschen alter Koppelungen und neuer Pairings verwendet werden. Das funktioniert allerdings nur auf einem KDE4 Desktop. Vergessen sie nicht vor einem erneuten Pairing dieses auch am Telephon zu löschen (Nokia 6230: Menü → Einstellungen → Verbindungen → Bluetooth → Gekoppelte Geräte → »Gerät« → Optionen → Beglaubig. Löschen). Im Test hat KDE4-bluetooth allerdings nur dann funktioniert wenn das Pairing vom Telephon initiiert wurde (siehe nächster Absatz).

Funktioniert es mit kbluetooth4 nicht, so kann man selbst under KDE3 (vormals guter Bluetooth support leider eingestellt) den Gnome bluetooth-wizard zu Rate ziehen. Das funktioiniert fast immer. Nicht vergessen eine allfällige Koppelung zuvor mit bluetooth-properties zu lösen. Alternativ dazu kann man über bluetooth-properties den "Rechner erkennbar machen" (discoverable) und das Pairing vom Telephon aus anstoßen (… Gekoppelte Geräte → »Gerät« → Optionen → Neues Gerät Koppeln).

Für Konsolen-Freaks läßt sich die Discoverability d.h. die Sichtbarkeit des Computers für das Telephon mittels hciconfig hci0 piscan einschalten und mittels hciconfig hci0 noscan wieder ausgeschalten. Das Programm simple-agent (vormals: passkey-agent) aus bluez-test kann dann dafür verwendet werden die PIN-Eingabe am Computer zu managen, falls die Desktop-Umgebung dies nicht schafft (kbluetooth4). Alternativ kann man aber auch gleich den PIN vom Computer im Voraus festlegen indem man den pairing mode auf 'security auto' setzt und 'passkey "1234"' in /etc/bluetooth/hcid.conf einträgt und wartet bis das Pairing vom Computer angestoßen wird.

Informationen vom Mobiltelephon abfragen

Praktisch für die Inbetriebnahme ist auch die Abfrage folgender Parameter: "hciconfig -a" muß Informationen über die Bluetooth-Schnittstelle liefern sobald diese über einen Hardware-Schalter eingeschaltet worden ist oder sobald das Bluetooth-USB-device angesteckt worden ist. Ist das Handy dann eingeschalten und erreichbar muß "hcitool scan " dieses auch anzeigen. Zuguterletzt kann man sich noch mit sdptool search FTP/DUN/... über die unterstützen Protokolle des Handys informieren (DUN: Dial Up Network - mit Handy als Modem in Internet einwählen).

> hciconfig -a hci0: Type: USB BD Address: 00:10:60:D1:00:D3 ACL MTU: 310:10 SCO MTU: 64:8 UP RUNNING RX bytes:8532 acl:62 sco:0 events:181 errors:0 TX bytes:1463 acl:33 sco:0 commands:71 errors:0 Features: 0xff 0xff 0x8f 0xfe 0x9b 0xf9 0x00 0x80 Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3 Link policy: RSWITCH HOLD SNIFF PARK Link mode: SLAVE ACCEPT Name: 'linux-k7n1-0' Class: 0x4a010c Service Classes: Networking, Capturing, Telephony Device Class: Computer, Laptop HCI Ver: 2.0 (0x3) HCI Rev: 0xc5c LMP Ver: 2.0 (0x3) LMP Subver: 0xc5c Manufacturer: Cambridge Silicon Radio (10) > hcitool scan Scanning ... 00:0E:ED:52:74:5C Nokia elm > sdptool search FTP Inquiring ... Searching for FTP on 00:0E:ED:52:74:5C ... Service Name: OBEX File Transfer Service RecHandle: 0x10001 Service Class ID List: "OBEX File Transfer" (0x1106) Protocol Descriptor List: "L2CAP" (0x0100) "RFCOMM" (0x0003) Channel: 10 "OBEX" (0x0008) Language Base Attr List: code_ISO639: 0x656e encoding: 0x6a base_offset: 0x100 Profile Descriptor List: "OBEX File Transfer" (0x1106) Version: 0x0100

Wammu, ein Frontend für Gammu

Zeit am Handy synchronisieren & SMS versenden; Adressen, SMS

Wammu ist ein komfortables und weit verbreitetes GUI-Frontend für Gammu. Nach Durchklicken des Einrichtungsdialoges unter Angabe der über hcitool scan ermittelten Bluetoothadresse kann es losgehen. Es ist ganz einfach das Telephonnummernregister, SMS-Nachrichten und verpaßte sowie getätigte Anrufe vom Handy herunterzuladen. "Zeit Synchronisieren" ist auch ganz praktisch, wenn man Uhrzeit und Datum nicht jedesmal neu eingeben will, wenn die Batterie ausgefallen ist. Für das Versenden von SMS gibt es zahlreiche Möglichkeiten wie etwa für fetten oder kursiven Text. Allerdings muß im Gegensatz zu XGnooki und KMobiletools am Handy genügend Platz sein um das SMS vor dem Absenden zwischenzuspeichern. Exportiert werden können leider nur SMS-Nachrichten in das E-mail oder in ein XML-Format. Sonst können nur die gesamten Handy-Daten in einem Binärformat gespeichert werden.

Alternative Gammu-Frontends wie GammUI, Kammu, GnomeGammu und QtPhoneSync (alles Linux) oder das GAMMU graphical User Interface für Windows konnten leider nicht getestet werden.

Gammu als Konsolentool

Wenn es nur darum geht Daten vom Telephon herunterzuladen und als Textdatei zur späteren Bearbeitung abzuspeichern ist überhaupt einfacher und besser Gammu direkt und ohne Frontend zu verwenden:

> gammu getallsms >all.sms # backupsms(/restoresms) add. deletes SMS from phone > gammu backupsms all-backup.sms # -all & -yes um alles mit ja zu beantworten Delete each sms after backup? (ja/nein/IMMER/EINMAL/NIE) nein Backup sms from folder "Eingang" (SIM)? (ja/nein/IMMER/EINMAL/NIE) ja Backup sms from folder "Gesendete Obj." (SIM)? (ja/nein/IMMER/EINMAL/NIE) ja Backup sms from folder "Eingang"? (ja/nein/IMMER/EINMAL/NIE) ja Backup sms from folder "Gesendete Obj."? (ja/nein/IMMER/EINMAL/NIE) ja Backup sms from folder "Gespeicherte"? (ja/nein/IMMER/EINMAL/NIE) ja Backup sms from folder "Vorlagen"? (ja/nein/IMMER/EINMAL/NIE) ja > gammu backup contacts.vcf Strg+C drücken, um zu unterbrechen... Überprüfe das Telefonbuch des Telefons Backup phone phonebook? (ja/nein/IMMER/EINMAL/NIE) ja Reading: 100 Prozent > gammu backup calender+todo.vcs Strg+C drücken, um zu unterbrechen... Überprüfe Telefon-Kalender Checking phone todos

Die Daten werden als direkt lesbarer und einfach zu parsender Text gespeichert. "vcf" & "vcs" sind zudem standartisierte Dateiformate, die von jedem Programm aus lesbar sein sollten. Ganz hat der direkte Import ohne Konvertierung jedoch sowohl in Thunderbird als auch via KAddressBook im Test nicht hingehaut. Beim Herunterkopieren der SMS liefert getallsms das textuell besser lesbare Format während jenes von Backup dem von Gammu entspricht und zum späteren Wiederherstellen gedacht ist.

XGnokii, ein Frontend für Gnokii

Nummern, Termine, SMS ansehen und versenden

XGnokii stellt eine weitere Alternative zu Wammu/Gammu dar. Um es unter openSUSE 11.2 zum Laufen zu bringen mußte man einerseits dem /var/lock-Verzeichnis "users"-Rechte geben und andererseits eine gnokiirc editieren. Im Prinzip wäre es möglich, die Datei /etc/gnokiirc an seine Bedürfnisse anzupassen. Einfacher ist es jedoch sich gleich ein neues ~/.gnokiirc anzulegen.

~/.gnokiirc [global] port = 00:0E:ED:52:74:5C model = 6230 connection = bluetooth

Unter Port setzt man wieder die über hcitool scan ermittelte Bluetoothadresse ein. Model ist das Handy-Modell, in diesem Fall ein Nokia 6230. Im Prinzip wäre es auch möglich /etc/gnokiirc zu editieren. Davon will ich aber abraten, da diese Datei durch die vielen Kommentare extrem unübersichtlich ist und man port, model und connection schnell im falschen Abschnitt editiert, während unser eigenes "~/.gnokiirc" nur eine global-Sektion kennt. Es folgt die Anpassung von /var/lock ohne die XGnokii im Test nicht gestartet ist.

> ls -ld /var/lock/ drwxrwxr-t 6 root root 4096 19. Jan 12:36 /var/lock/ > chgrp users /var/lock/ > ls -ld /var/lock/ drwxrwxr-t 6 root users 4096 20. Jan 19:46 /var/lock/

Sollte es mit der direkten Bluetooth-Verbindung nicht klappen kann Gnooki auch über die /dev/rfcomm0-Schnittstelle, wie im nächsten Abschnitt erläutert, betrieben werden.

port = /dev/rfcomm0 model = AT connection = serial rfcomm_channel = 1

XGnokii hat wie Wammu eine SMS, Kalender und Kontakt - Funktion. Adreßbucheinträge können hinzugefügt und auf das Handy zurückübertragen werden. SMSes vom Handy können über "Messages → Activate SMS reading" heruntergeladen werden. Ebenso kann man vom Computer aus über das Handy SMS versenden.

Der Export der Rufnummern erfolgt als CSV (comma separated value) und ist einfacher zu lesen als das .vcf von Gammu. SMSe können leider nur einzeln exportiert werden.

rfcomm - Gerätedatei anlegen und freigeben

Viele Programme wie KMobileTools wollen, daß man zuvor eine Bluetooth Verbindung mit dem Handy aufbaut. Dies ist u.a. auch für die Modem-Einwahl via Handy notwendig. Hierfür eignet sich das Tool "rfcomm" (Radio Frequency Communication), welches eine serielle Schnittstelle emuliert. Dabei geben wir die zuvor die über hcitool scan ermittelte Bluetooth-Adresse unseres Handys an.

> rfcomm release 00:0E:ED:52:74:5C; Can't release device: No such device > ls /dev/rfcomm* ls: Zugriff auf /dev/rfcomm* nicht möglich: Datei oder Verzeichnis nicht gefunden > rfcomm bind 0 00:0E:ED:52:74:5C 1 > ls /dev/rfcomm* /dev/rfcomm0 > rfcomm show 00:0E:ED:52:74:5C rfcomm0: 00:0E:ED:52:74:5C channel 1 clean

Um nun komfortabel mit Benutzerprogrammen wie KMobileTools, Wammu (Gammu frontend), XGnokii (Gnokii frontend) auf das MobilTelephon zugreifen zu können, muß die Gerätedatei für den Benutzer auch lesbar sein. Dies erreicht man indem man sich zur Gruppe dialout hinzufügt und daraufhin ab- und erneut anmeldet (Starten von einer frischen bash-Instanz wäre sonst auch einen Test wert.).

> ls -l /dev/rfcomm0 ls: Zugriff auf /dev/rfcomm1 nicht möglich: Datei oder Verzeichnis nicht gefunden > ls -l /dev/rfcomm0 crw-rw---- 1 root dialout 216, 0 19. Jan 12:07 /dev/rfcomm0 > groupmod -A elm dialout > groups # als User ohne Root-Recht users www audio at video vboxusers # logout & login; oder: su $USER als root > groups users www dialout audio at video vboxusers

Wie man sehen kann gehört das Gerät der Gruppe dialout. Das bedeutet, daß Benutzerprogramme wie KMobileTools nicht darauf zugreifen können, solange man nicht der Gruppe dialout beitritt (groupmod).

KMobileTools

SMS ansehen und vom Computer aus versenden

Eine ebenfalls sehr praktische GUI-Amnwendung ist KMobileTools. Diese vertraut darauf, daß die Emulation für eine Serielle Schnittstelle bereits eingerichtet ist (siehe rfcomm - Gerätedatei anlegen und freigeben). SMS können bequem am Computer editiert und über das Mobiltelephon versandt werden. Ebenfalls interessant ist die »Browse SMS« - Funktion, mit der man eine Liste aller am Handy gespeicherten SMS ansehen und selektiv einzelne SMS abspeichern kann. Das Speichern aller SMS führt zur direkten Speicherung aller SMS als reinen Text (im Gegensatz zur ge-Taggten Speicherung von Gammu), der nur durch Bindestrichzeilen getrennt ist. Die Funktion zum Anschauen des Telephonbuchs hat im Test für das Nokia 6230 leider nicht funktioniert.

Datenübertragung mittels OBEX

Photos von Handy herunterladen

Viele Desktop-Umgebungen bieten automatisch ein bluetooth:/ oder obex:/ bzw. obexftp:/ - Protokoll an, welches in der Browser-Adreßleiste eingegeben werden kann. Unter KDE für openSUSE 11.2 war diese direkte Art der Kommunikation leider nicht verfügbar. Auch müssen so nicht alle Ordner, die direkt über obexftp erreichbar sind angezeigt werden. ObexFTP ist eine Notwendigkeit um Photos vom Handy herunterladen zu können, da die bisher besprochenen Frontends nur Adressen, Termine und SMSes synchronisieren konnten.

ObexFTP ist ein kleines übersichtliches Kommandozeilentool um auf einfache Weise Dateien wie etwa Photos zwischen Handy und Computer hin und her zu übertragen. Soll nicht wie standardmäßig die Infrarotschnittstelle (-i) verwendet werden sondern Bleutooth ist einfach ein -b oder ein -t /dev/rfcomm0 (siehe Gerätedatei anlegen und freigeben) anzugeben. Egal ob der Bluetooth-Zugriff direkt vonstatten geht oder über eine Gerätedatei läuft muß mit jedem neu abgesetzten obexftp-Befehl eine neue Verbindung aufgebaut werden, welche vom Handy aus jedesmal zu bestätigen ist, sofern man die Bestätigung am Nokia 6230 nicht über Menü → Einstellungen → Verbindungen → Bluetooth → Gekoppelte Geräte → »Gerät« → Optionen → Verbindung nur mit Bestätigung → Wählen → Nein abschaltet.

Da ein jeweils erneuter Verbindungsaufbau langsam ist und die Bestätigungen lästig sein können setzt man am besten gleich mehrere obexftp-Befehle auf einmal ab: -c »dir« wechselt das Verzeichnis -l entspricht ls, -g »Datei« einem GET (herunterladen) und -p »Datei« einem PUT (hinaufladen). Deshalb darf man auch die Reihenfolge der Optionen nicht vertauschen. Untenliegendes Beispiel zeigt wie man mit sed die Dateinamen aus den XML-Directory Listings extrahiert um dann gleich alle Dateien aus einem Ordner herunterzuladen.

> obexftp -b -l -c / Scanning for (null) ... Found: 00:0E:ED:52:74:5C Browsing 00:0E:ED:52:74:5C ... Connecting...done Receiving "(null)"...\ <!DOCTYPE folder-listing SYSTEM "obex-folder-listing.dtd" [ <!ATTLIST folder mem-type CDATA #IMPLIED> ]> <folder-listing version="1.0"> <folder name="Galerie" created="20030101T000000" user-perm="R" mem-type="DEV "/> </folder-listing> done Sending ""... done Disconnecting...done > obexftp -b -c /Galerie -l 2>&1 | egrep "<(folder|file) name" <folder name="" user-perm="RW" mem-type="MMC"/> <folder name="Fotos" created="20030101T000000" user-perm="R" mem-type="DEV"/> <folder name="Videoclips" created="20030101T000000" user-perm="R" mem-type="DEV"/> <folder name="Musikdat." created="20030101T000000" user-perm="R" mem-type="DEV"/> <folder name="Grafiken" created="20030101T000000" user-perm="R" mem-type="DEV"/> <folder name="Töne" created="20030101T000000" user-perm="R" mem-type="DEV"/> <folder name="Aufnahmen" created="20030101T000000" user-perm="R" mem-type="DEV"/> > obexftp -b -c /Galerie/Fotos | sed -n 's#.*file name="\([^"]*\)".*#\1#p' >files.lis > obexftp -b -c /Galerie/Fotos $(sed -s "s#^#-g #" <files.lis) Scanning for (null) ... Found: 00:0E:ED:52:74:5C Browsing 00:0E:ED:52:74:5C ... Connecting...done Sending ""... Sending "Galerie"... Sending "Fotos"... done Receiving "Bild000.jpg"...\done Receiving "Bild001.jpg"...\done Receiving "Bild002.jpg"...|done Receiving "Bild003.jpg"...\done Receiving "Bild004.jpg"...\done ... > obexftp -b -c /Galerie/Grafiken $(obexftp -b -c /Galerie/Grafiken -l | sed -n 's#.*file name="\([^"]*\)".*#-g \1#p') ... Receiving "Dots4.jpg"...-done Receiving "Flower.jpg"...|done ... > modprobe ircomm-tty > ls /dev/ircomm ircomm0 ircomm11 ircomm14 ircomm17 ircomm2 ircomm22 ircomm25 ircomm28 ircomm30 ircomm5 ircomm8 ircomm1 ircomm12 ircomm15 ircomm18 ircomm20 ircomm23 ircomm26 ircomm29 ircomm31 ircomm6 ircomm9 ircomm10 ircomm13 ircomm16 ircomm19 ircomm21 ircomm24 ircomm27 ircomm3 ircomm4 ircomm7 > irattach /dev/ttyS1 -s

Das Handy als Modem zur Interneteinwahl

Dial Up Networking / Tethering

Sich über das Handy mit dem Computer ins Internet einwähen zu können ist sicherlich eine der nützlichsten Funktionen eines guten Mobiltelephons. Um zu testen ob ihr Mobiletelephon DialUpNetworks unterstützt geben sie wie in Abschnitt "Informationen vom Mobiltelephon abfragen" »sdptool serch DUN« ein. Hierfür ist es zuerst notwendig eine Serielle Schnittstelle /dev/rfcomm0 zu emulieren. Das Programm, das wir zur Einwahl verwenden werden ist wvdial. Hier eine Beispielkonfiguration von /etc/wvdial.conf für GPRS unter Orange:

[Dialer GSM] Init1 = ATZ Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 Init3 = AT+CGDCONT=1,”IP”,”wap.orange.at”,"",0,0 Modem = /dev/rfcomm0 Phone = *99# Username = wap Password = wap New PPPD = yes ISDN = no BAUD = 115200 Stupid Mode = yes Carrier Check = no [Dialer GPRS] Phone = *99# Stupid Mode = 1 Inherits = BluetoothMobile Username = orange Password = wap

Jetzt kann man sich mit wvdial GPRS eigentlich schon einwählen. Für eine funktionsfähige Internetverbindung müssen allerdings noch das Routing mit ip route change/add default via »myip« und zumeist auch Proxyserver konfiguriert werden. Die IP-Adresse für ppp erhält man über ein einfaches ip route. Die Proxyserver konfiguriert man unter Suse in /etc/sysconfig/proxy. Die richtigen Einstellungen für die Proxies finden sich am Handy ( Dienste → Einstellungen → Verbindungseinstellungen → Aktive Diensteinstellungen zeigen → Primärer/Sekundärer Proxy). Es ist ganz praktisch sich hierfür ein einfaches Skript zu schreiben (wvdial; warten auf ppp + Routing&Proxy-Konfiguration). Für die Einwahl via Modem kann es erforderlich sein, daß der Prozeß smpppd läuft.

Zusammenfassung und Ausblick

Mobiltelephone verschiedener Hersteller

Während Nokia, Alcatel, Motorola, BenQ/Siemens und viele andere Mobiltelephonhersteller die hier vorgestellten Bluetooth-Standards alle seit jeher unterstützt haben, muß man die Bluetoothunterstützung für Apple iPhones und Android Phones via Apps aus dem Appstore nachrüsten. Offiziell unterstützt das iPhone Bluetooth nur für das Headset (Kopfhörer).

Für die Einwahl ins Internet gibt es auf der Android-Plattformen viele Möglichkeiten über sog. Tethering Apps; ob über Bluetooth, USB oder WLAN. Zwar sollten Android-Handies auch eine Kontakt-Synchronisation mit dem Webmail-Account von Google bieten, doch muß diese Funktion leider auf Google-Webmail Konten beschränkt bleiben; da könnte Bluetooth nach wie vor weiterhelfen. Google Mailaccounts haben den nicht zu unterschätzenden Nachteil, daß es im Fall von Problemen keinen Support gibt, was vor allem für viele professionelle und sicherheitskritische Anwender nicht in Frage kommt. Außerdem will nicht jeder, daß Google in Besitz seiner ganzen persönlichen Daten kommt. Ohne GMail-Registrierung bleibt man aber selbst aus dem Google Marketplace ausgeschlossen.

Daß Android ein Linux basiertes Betriebssystem ist hilft da nur wenig, da immer auch proprietäre Gerätetreiber, Goodies und eine Entwicklungsumgebung, die sich mit freier Software nicht ohne weiteres übersetzen läßt, mit im Spiel sind. Und wer wirklich Linux auf seinem Handy laufen haben will kann ja zu einem Ubuntu-Handy oder Meego/Maemo-Handy greifen; demnächst sollen auch Handies für die Mozilla Plattfrom herauskommen.