Bluetooth Syncronisation

Aus Gentoo Linux Wiki

Wechseln zu: Navigation, Suche
Dieser Teil ist Artikel der Hardware Serie.
Laptops Motherboards Servers Eingabegeräte RAID Controller TV Karten Wireless Andere Hardware Andere Architekturen alphabetischer Hardware Index


Dieser Artikel hat das Ziel wie es in der Überschrift angeben ist, noch nicht erfüllt. Da es scheinbar aus technischer Sicht noch nicht möglich ist eine Bluetooth Synchronisation mit einem PocketPC durchzuführen (siehe dazu die Anmerkungen in diesem Artikel).

Inhaltsverzeichnis

[Bearbeiten] Einleitung

Dieses HowTo ist eine Beschreibung um einen PocketPC mit dem PC oder Laptop über Bluetooth verbinden. Es wird dringend empfohlen die USB-HowTo Verbindung_PocketPC_über_SynCE.

Die meisten Laptop bringen bereits eine integrierte Bluetooth-Schnittstelle von Haus aus mit. Bei Erstellung dieser Anleitung wurde jedoch ein Bluetooth Stick der Firma Denqbarverwendet.

verwendete Hard- u. Software:

  • HTC "Blue Angel" vertrieben über div. Mobilfunktbetreiber wie
    • T-Mobile als MDA3 (MDA III)
    • O2 als XDA 3
    • Vodafone als VPA 3
  • Betriebsystem: Windows Mobile 2003 SE - Version 4.21.1088 (Build 14132)
    • ROM-Version: 1.22.01 GER
    • Radio-Version: 1.13.00
    • Protokoll-Version: 1337.42

Linux System:

  • Gentoo 2005.1 mit KDE 3.4.1

[Bearbeiten] Kernelkonfiguration

Die Kernelkonfiguration beziehen sich auf den Kernel in Version 2.6.12-gentoo-r6. In der Version 2.6.13 liegt das Bluetooth Subsystem unter dem Pfad -> Device Drivers. Folgende Treiber wurden möglichst als Module eingebunden, damit man diese später schnell mal entladen kann und wieder neustarten. Da bei Tests das Bluetooth System öfters mal mit Verbindungsproblemen hängen blieb.

Location:
-> Device Drivers
 -> Networking Support
 <M> Bluetooth subsystem support  ---> 
   --- Bluetooth subsystem support
   <M>   L2CAP protocol support
   <M>   SCO links support
   <M>   RFCOMM protocol support
   [*]     RFCOMM TTY support
   <M>   BNEP protocol support
   [*]     Multicast filter support
   [*]     Protocol filter support
   <M>   HIDP protocol support
   Bluetooth device drivers  --->
     <M> HCI USB driver
     [*]   SCO (voice) support
     <M> HCI UART driver
     [*]   UART (H4) protocol support
     [*]   BCSP protocol support
     [*]     Transmit CRC with every BCSP packet
     <M> HCI BCM203x USB driver
     <M> HCI BPA10x USB driver
     < > HCI BlueFRITZ! USB driver
     <M> HCI VHCI (Virtual HCI device) driver
Location:
-> Device Drivers
 -> USB support
 <*> Support for Host-side USB
   [*]   USB device filesystem
   ...
   <*>   EHCI HCD (USB 2.0) support
   [ ]     Full speed ISO transactions (EXPERIMENTAL)
   [ ]     Root Hub Transaction Translators (EXPERIMENTAL)
   <*>   OHCI HCD support
   <*>   UHCI HCD (most Intel and VIA) support
   ...
   ---   USB Bluetooth TTY can only be used with disabled Bluetooth subsystem

Das "USB Bluetooth TTY" Modul kann hier schon nicht mehr deaktiviert werden, da es bereits durch Einbinden des Bluetooth Subsystems hart aktiviert wurde.

Ein sehr gutes HowTo den Kernel neu zu kompilieren gibt es schon bei Gentoo-wiki Kernel_manuell_kompilieren.


[Bearbeiten] Programme installieren

Vor der Installation ist es ratsam die erforderlichen USE-Flags gleich in die Datei /etc/make.conf einzupflegen bzw. hinzuzufügen:

 bluetooth, irmc

Das USE-Flag "bluetooth" sollte jeden klar sein warum das nötig ist. Das USE-Flag "irmc" hingegen ist für das gleichnamige Protokoll notwendig, um bei Daten zum Client (Handy) zu übertragen. (siehe dazu Anmerkungen)

Der Befehl für die Installation des KDE-Bluetooth-Frontends lautet:

 emerge -av kdebluetooth

Wer das Fenstersystem Gnome benutzt installiert einfach "gnome-bluetooth" eingeben. Dabei werden verschiedene Server- und Clientdienste installiert, u.a. für die OBEX Schnittstelle welche für die Dateiübertragung realisiert.


[Bearbeiten] Konfigurationsdateien

Die Konfigurationsdateien für das Bluetoothsystem befinden sich bei Gentoo unter /etc/bluetooth/... bzw. /etc/conf.d/bluetooth.conf

Für eine automatische Verbindung die Datei /etc/bluetooth/rfcomm.conf folgende 2 Parameter anpassen:

  • "bind" auf yes stellen
  • nach "device" die MAC Adresse des Gerätes angeben

[Bearbeiten] MAC Adresse herausfinden

Hierfür gibt es 2 Möglichkeiten

  1. mit dem Tool hcitool
  Connections:
       > ACL 00:09:2D:20:CE:B9 handle 1 state 1 lm MASTER

leicht erkennbar nach ACL steht die MAC

  1. wer nicht so gern Befehle eingibt kann dies natürlich auch mit Klickerrei erreichen, direkt über den PocketPC
    • mit dem Stift auf das Bluetoothicon tippen
    • den Reiter "Verfügbarkeit" auswählen
    • Nummer nach "Adresse:" ablesen und dann in der oben genannten Datei eintragen ;-)


TIPP: die Verschlüsselung und lästige Zugriffsgewährung sollte man in der Datei /etc/bluetooth/hcid.conf beim Testen erstmal auskommentieren

Datei: /etc/bluetooth/hcid.conf
 # Authentication and Encryption (Security Mode 3)
 #auth enable;
 #encrypt enable;



[Bearbeiten] Module starten

Die erforderlichen Module kann man alle durch Eingabe von

 modprobe -v -o bluetooth l2cap sco rfcomm bnep hidp hci_usb hci_uart bcm203x hci_vhci

in die Kommandozeile starten, dies ist jedoch sehr uneffektiv da man dieses Procedere bei jedem Neustart von Gentoo Linux wiederholen müsste. Jedoch kann man dies einmal zu testzwecken tun, um zu sehen ob auch keine Fehlermeldungen ausgegeben werden.

Daher tragen wir die Module einfach in die Datei /etc/modules.autoload.d/kernel-2.6 ein um sie automatisch beim Hochfahren des Systems zu starten.

 #Modules for bluetooth support
 bluetooth
 l2cap
 sco
 rfcomm
 bnep
 hidp
 hci_usb
 hci_uart
 bcm203x
 hci_vhci

[Bearbeiten] Starten und Stoppen des Bluetoothdienstes

Nach der Installation kann man den Dienst noch in den Autostart des Fenstersystems einbinden:

 rc-update add bluetooth default

Jetzt muss man natürlich nicht neustarten damit der Dienst aktiv wird. Händisch geht es einfach mit der Eingabe durch

 /etc/init.d/bluetooth start

Entsprechend der Startscriptkonventionen bei fast jedem Linux lässt sich der Dienst mit:

 /etc/init.d/bluetooth stop 
 meist will man den Dienst jedoch gleich danach starten:
 /etc/init.d/bluetooth restart


[Bearbeiten] USB Bluetooth Stick

Dies hatte bei mir unter Linux überhaupt keine Probleme bereitet. Eingesteckt und wurde sofort richtig erkannt tail -f /var/log/messages. Nicht so unter Windows XP SP2, wo ohne die mitgelieferte CD gar nix erkannt wurde. Wenn man nun den USB-Bluetooth Stick einsteckt sollte das KDE Bluetooth Icon im SystemTray von grau zu weiß wechseln (siehe Screenshots). Der Stick wurde somit richtig erkannt und KDE gibt dies grafisch über das weiße Icon zurück.

Bild:Bluetooth_kdeicon_dark.png wird zu Bild:Bluetooth_kdeicon_white.png

Das Icon wird dann noch blau hinterlegt, wenn eine Verbindung zu einem anderen Bluetoothgerät besteht.

[Bearbeiten] Bluetooth Konsolen Tools

Wenn man im KDEBluetooth Programm das entsprechende Geräte anklick wird automatisch eine Verbindung hergestellt. Danach öffnet sich der Konqueror und zeigt die verfügbaren Dienste an.

Für die Konsolenbediener unter euch gibt es aber auch schöne Befehle, um dies "per Hand" durchzuführen und ggf. noch mehr Einstellungen und Optionen dadurch gewinnen kann.

Das wichtigste Tool hierbei ist hcitool:

 Um die erreichbaren Geräte zu identifizieren genügt ein:
 # hcitool scan
 das gleiche kann aber sdptool  auch, nur werden gleich alle verfügbaren Dienste des Gerätes mit angezeigt:
 # sdptool browse

Ein weiteres wichtiges Tool ist rfcomm, mit welchem man serielle Verbindungen aufbauen kann und ggf. eine Modemverbindung mit pppd initieren kann (Vorraussetzung ist die Anpassung der Verbindungsscripte). Bei verschiedenen Test mit meinem MDA3 wurde die Verbindung jedoch nur ganz kurz aufgebaut und sofort wieder getrennt.

Was jedoch mit dem USB-Stick und dem rfcomm Tool wunderbar funktioniert hatte war die Verbindung mit meinem GPS Empfänger (ugs: GPS Maus) von Navilock. Einfach mit hcitool cc <MAC Adresse> eine Verbindung aufgebaut und anschließend mit rfcomm bind /dev/rfcomm0 <MAC Adresse> eine serielle Verbindung aufgebaut. Was die GPS Maus so empfängt lässt sich mit cat /dev/rfcomm0 anzeigen. Dies sind die NMEA Codes, welche durch die Programme "QGPS" oder "GPSdrive" (siehe Links) interpretiert werden können.

[Bearbeiten] Pairing

Um ein PDA mit dem PC zu verbinden ist ein sogenanntes Pairing nötig. Dabei werden die beidem Geräte miteinandern "Bekanntgemacht"

Zuerst muss der PC erkennbar (discoverable) gemacht werden, dies geht entweder über Kbluetooth, oder in der Konsole mit dbus. Dazu einfach

 # dbus-send --system --type=method_call --print-reply --dest=org.bluez \
   /org/bluez/hci0 org.bluez.Adapter.SetMode string:discoverable

als root in die Konsole eingeben und mit

 # dbus-send --system --type=method_call --print-reply --dest=org.bluez \
   /org/bluez/hci0 org.bluez.Adapter.GetMode

Prüfen ob es funktioniert hat.

Als nächstes muss man den SerialPort Service starten (als root) mit

  # sdptool add SP

Jetzt kann man mit dem Bt Manager auf dem PDA den PC suchen und unter Geräte / Neu ... hinzufügen. Dabei muss bei der abfrage welches Profiel gewählt werden soll der Haken bei ActiveSync gesetzt werden. Sobald der PC hinzugefügt wurde sollte im ActiveSync unter Extras der Menupunkt "Verbinden über Bt mit ..." stehen.

Jetzt kann der Bluetooth-Mode des PCs wider auf connectable gestellt werden, es muss ja nicht jeder wissen das Sie da sind. Dazu einfach

 # dbus-send --system --type=method_call --print-reply --dest=org.bluez \
   /org/bluez/hci0 org.bluez.Adapter.SetMode string:connectable

als root in die Konsole eingeben und wieder mit

 # dbus-send --system --type=method_call --print-reply --dest=org.bluez \
   /org/bluez/hci0 org.bluez.Adapter.GetMode

Prüfen ob es funktioniert hat.

[Bearbeiten] Verbindung über DUN herstellen

DUN steht für (Bluetooth) Dial-Up Network. Damit lassen sich Netzwerkverbindungen zwischen PDA und PC über Bt einrichten, was genau das richtige für der verbindung mit ActiveSync ist.

Unter Linux gibt es dafür den DUN daemon dund, welcher eine PPP Verbindung zwischen PC und PDA erstellt, diese muss aber erst konfiguriert werden. Dazu ändern / erstellen Sie die Datei /etc/ppp/peers/dun

Datei: /etc/ppp/peers/dun
 noauth
 local
 proxyarp
 debug
 ms-dns 192.168.2.1
 192.168.2.33:192.168.2.201
 crtscts
 linkname synce-device


  • debug : ist optional
  • ms-dns 192.168.2.1 : die IP sollte die ihres Routers sein
  • 192.168.2.33:192.168.2.201 : die erste IP sollte die ihres PCs sein und die zweite die, die Sie ihrem PDA geben wollen

Jetzt starten wir den DUN daemon dund

 # dund --listen --activesync --msdun call dun
  • --listen : bedeutet das er auf eingehende verbindungen wartet
  • --activesync : gibt an das eine verbindung mit ActiveSync hergestellt werden soll

Nun müssen wir noch vdccm starten, dies können Sie über die Konsole oder SIe starten Raki, denn dies startet vdccm automatisch wenn es noch nicht gestartet ist und bietet gleich noch ein paar weier funktionen.

Wenn Sie jetzt im ActiveSync (auf ihrem PDA) auf Extras / Verbinden über Bt mit ... klicken sollte eine verbindung erstellt werden.

Sollten Sie mit dem PDA über Bt ins Lan / Internet wollen müssen Sie nurnoch

 # echo 1 > /proc/sys/net/ipv4/ip_forward
 # iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

eingeben.

Sowohl dund als auch das Forwarding müssen nach jedem PC start neu gestartet werden, wenn das automatisch passieren soll, kann man es auch in einen startscript schreiben.

z.B. in /etc/conf.d/local.start und das erreicht man mit

 # echo "/usr/bin/dund --listen --activesync --msdun call dun" >> /etc/conf.d/local.start
 # echo "/usr/bin/echo 1 > /proc/sys/net/ipv4/ip_forward" >> /etc/conf.d/local.start
 # echo "/sbin/iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE" >> /etc/conf.d/local.start


[Bearbeiten] Datenübertragen mit Bluetooth

Um nun eine Verbindung zum Gerät zu erhalten genügt ein (kein Doppelklick) Linksklick auf dieses Icon. Damit öffnet sich der Konqueror und sucht auch gleich nach verfügbare Geräte (vorher Bluetooth Schnittstelle einschalten beim PocketPC) im Empfangsbereich.

Bei einem weiteren Klick auf das erschiene Gerät im Konqueror werden die verfügbaren Dienste abgerufen.

Bild:Bluetooth_konqueror_dienste.png

Wirklich nutzen kann man hier nur die Dienste OBEX Dateiübertragung. Beim KBSerialChat kamen nur die abgegebenen Nachrichten vom PC auf den PocketPC an, in die andere Richtung hat dies jedoch nicht funktioniert. Das lag aber mehr an der ChatSoftware (zusätzliche Software, bei Windows Mobile 2003 nicht mit enthalten) vom PocketPC.

Natürlich stehen die Netzwerkdienste "DUND" (Bluetooth LAP (LAN Access over PPP) daemon) und "PAN" (Personal Area Network) zur Verfügung. Jedoch fehlte es noch an mehr Bluetoothgeräten dies ausgiebig zu testen.

Über die Kommandozeile ist das Tool hcitool recht nützlich um zum Beispiel MAC Adresse des PocketPC abzufragen. Oder auch das Tool hciconfig -a.

[Bearbeiten] Synchronisation PocketPC und PC

Scheinbar besitzt der MDA III mit Windows Mobile 2003 kein irmc-Protokoll und kann dadurch auf keine Verbindung über das Plugin "IrMC Mobile Device" bei Multisync aufbauen. Und das Plugin "Synce" besitzt nur die Übertragung über eine serielle Schnittstelle der Daten und nicht noch Bluetooth.

Da KDE eine engere Zusammenarbeit mit den Entwicklern von Opensync angekündigt haben wird es vielleicht mit diesem Programm möglich werden eine Bluetoothsynchronisation durchzuführen. Schade das Multisync den Erfahrungsaustausch nach Anfrage von Opensync ablehnt (Stand: 11/2006).


Bild:bluetooth_multisync_edit_conn.png

Bild:bluetooth_multisync_edit_units.png

im 2. Bild wird dann wirklich sichtbar das anscheinend kein IrMC Protokoll vom PocketPC unterstütz wird.


Auch mit dem Versuch über rfcomm eine serielle Verbindung herzustellen und diese dann mit SynCE bzw. Raki zu verwenden schlug fehl. Zwar wurde problemlos eine Verbindung erstellt, aber konnte Raki diese irgendwie nicht verwenden?!?

 #hcitool cc 00:09:2D:20:CE:B9
 #rfcomm bind /dev/rfcomm0 00:09:2D:20:CE:B9
 #synce-serial-config /dev/rfcomm0 192.168.0.101:192.168.0.102
 #synce-serial-start


danach gibt rfcomm folgendes aus:

 rfcomm0: 00:09:2D:20:CE:B9 channel 1 connected [tty-attached]

dies sollte ja soweit richtig sein und auch funktionieren, tut es aber nich.

[Bearbeiten] Anmerkungen

Was noch nicht funktioniert hat, bzw. was hier in dem HowTo noch fehlt:

  • DUND und PAN Netzwerkfunktionalitäten testen
  • Synchronisation mit einem PIM (Kontact)
  • Internet Verbindung vom PC über MDA aufbauen


[Bearbeiten] Links

'Persönliche Werkzeuge