Bluetooth ist eine Funktechnik mit kurzer Reichweite (typischerweise bis zu 10 Metern). Sie dient zur Kommunikation zwischen verschiedenen Geräten, wie z.B. zwischen Computer und Handy.
Damit diese Geräte über Bluetooth miteinander kommunizieren können, müssen sie eine geeignete Schnittstelle bereitstellen. Diese wird bei einem Computer meist durch einen USB-Stick (Bluetooth-Dongle) realisiert. Es existieren nun also faktisch zwei Bluetooth-Geräte, die miteinander kommunizieren können. Das eine ist der Computer (mit Bluetooth-USB-Stick), das andere ein mobiles Gerät, beispielsweise ein Mobiltelefon.
Natürlich können auch zwei oder mehr Computer per Bluetooth Daten austauschen. Das Netzwerk lässt sich im Prinzip beliebig erweitern mit allen möglichen bluetoothfähigen Geräten. Auch die Benutzung von externer Peripherie wie zum Beispiel Computer-Mäuse oder Headsets sollte kein Problem sein. In dieser Anleitung soll es jedoch nur um die grundsätzliche Verbindung gehen. Einzelne Anwendungen werden in separaten Artikeln besprochen.
Da nicht jede Hardware gleich ist, müssen mitunter manche Schritte etwas angepasst werden und die Ausgaben werden sich unterscheiden.
Folgende Pakete müssen für ein korrektes Funktionieren von Bluetooth installiert sein [1]:
bluez-utils
libopenobex1
bluez-gnome (optional, wenn man die GUI von Gnome/Xfce nutzen möchte) )
Nach der Installation muss der Bluetooth-Dienst evtl. neu gestartet werden. Dies geschieht im Terminal [3] mittels des Befehls
sudo /etc/init.d/bluetooth restart
Sind die Pakete installiert, wird beim Einstecken des Bluetooth-USB-Sticks normalerweise automatisch das "hcid" (Host Controller Interface Device) gestartet. Dieses dient als Schnittstelle zum Bluetooth-Gerät.
Falls ein Bluetooth-USB-Stick zum Einsatz kommt, kann mit dem Befehl
lsusb | grep Bluetooth
im Terminal [3] festgestellt werden, ob der Stick erkannt wurde. Dabei werden auch nähere Informationen zum Stick angezeigt. Zum Beispiel sieht die Ausgabe der betreffenden Zeile so aus:
Bus 003 Device 004: ID 1310:0001 Roper Class 1 Bluetooth Dongle
Noch mehr nützliche Informationen über den Bluetooth-Stick erhält man mit dem Befehl
hciconfig --all
Die Option --all sorgt dabei für eine erweiterte Informationsausgabe. Zum Beispiel sieht die Ausgabe so aus:
hci0: Type: USB
BD Address: 00:0B:0D:33:8E:12 ACL MTU: 120:20 SCO MTU: 64:0
UP RUNNING PSCAN ISCAN
RX bytes:834 acl:21 sco:0 events:51 errors:0
TX bytes:2926 acl:39 sco:0 commands:18 errors:0
Features: 0xff 0xff 0x05 0x38 0x18 0x18 0x00 0x00
Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3
Link policy: RSWITCH HOLD SNIFF PARK
Link mode: SLAVE ACCEPT
Name: 'konidesktop-0'
Class: 0x100100
Service Classes:
Device Class: Computer, Uncategorized
HCI Ver: 1.2 (0x2) HCI Rev: 0x0 LMP Ver: 1.2 (0x2) LMP Subver: 0x757
Manufacturer: Silicon Wave (11)Von besonderem Interesse sind hier die BD-Hardware-Adresse in der zweiten Zeile sowie der Name und die Klasse (Class). Der Name wird automatisch vergeben und ist mit dem Namen des Computers identisch (bis auf das angehängte -0). Die Klasse gibt an, um welche Art von Bluetooth-Gerät es sich handelt.
Beim Mobiltelefon muss man nun die Bluetooth-Menüpunkte durchgehen - diese sind bei jedem Gerät woanders untergebracht. Besonders wichtig ist, dass es auf "Sichtbar" eingestellt wird. Außerdem kann ein Name vergeben werden, der nachher bei der Verbindung angezeigt wird. Bei einigen Telefonen kann man sich auch die verfügbaren Dienste anzeigen lassen.
Wenn man diese Einstellungen vorgenommen hat und Bluetooth am Mobilgerät eingeschaltet ist, kann man mit dem folgenden Befehl im Terminal nach verfügbaren Mobilgeräten suchen:
hcitool scan
Nun werden alle gefundenen Geräte (außer dem PC, der die Anfrage gestartet hat) mit ihrer Hardware-Adresse und dem Namen angezeigt. Das sieht beispielsweise so aus:
Scanning ...
00:0E:07:73:3C:B1 K700iDie Hardware-Adresse des Mobilgerätes ist dementsprechend eine andere als die des USB-Dongles.
Der Begriff Pairing (Paarung) bezeichnet die (permanente) Bindung zweier Geräte aneinander. Bei Verbindungen über Bluetooth oder andere Funktechniken ist es sehr sinnvoll, wenn sich die Geräte bei jeder Verbindung automatisch identifizieren. Damit zwei Geräte aneinander gebunden werden können, müssen sie zunächst einander bekannt gemacht werden. Dies geschieht bei Bluetooth-Verbindungen durch eine gemeinsame sog. PIN. Diese Nummer muss bei der ersten Kontaktaufnahme bei allen beteiligten Geräten kurz nacheinander eingegeben werden. Die Nummer ist in der Konfigurationsdatei pin angegeben.
Nach dieser Eingabe wartet die Bluetooth-Schnittstelle des Rechners auf eine Anfrage zum Pairing. Diese Anfrage kann man nun z.B. vom Mobiltelefon aus einleiten, indem man es nach neuen Bluetooth-Partnern suchen lässt und nach erfolgreicher Suche einen beliebigen PIN eingibt (sobald man von dem Gerät dazu aufgefordert wurde). Bekommt der Rechner nun eine Anfrage, so erscheint ein entsprechender Hinweis und ein (blinkendes) Bluetooth-Symbol in der Panel-Leiste (siehe Bild). Das Bluetooth-Symbol muss man nun anklicken. Daraufhin wird man zur Eingabe der PIN aufgefordert. Nach Eingabe der gleichen, vierstelligen PIN auf dem Mobiltelefon und am Rechner sind die Geräte aneinander gebunden. Die Datenübertragung ist nun möglich.
Sollte das Pairing fehlschlagen (Fehlermeldung des Mobiltelefons und es erscheint kein Fenster für den Schlüssel auf dem Desktop), so muss man unter GNOME bzw. Xfce ggf. das Bluetooth-Applet von Hand starten:
bluetooth-applet
Mit der Installation von bluez-utils werden unter /etc/bluetooth mit drei Konfigurationsdateien angelegt. Hier müssen einige kleine Einstellungen vorgenommen werden. Dazu benötigt man Root-Rechte.
In der Datei pin steht nichts weiter als eine Zahl, die zur Identifikation dient. Beim ersten Kontakt zwischen PC und Mobilgerät wird diese Zahl abgefragt und die beiden Geräte dadurch aneinander gebunden (pairing). Die Voreinstellung lautet hier 1234, dies kann jedoch beliebig geändert werden. Ab Ubuntu 7.10 gibt es keine eigene Datei für die Pin mehr. Die Pin findet sich ebenfalls in der Datei hcid.conf:
# Default PIN code for incoming connections passkey "1234";
Die Datei hcid.conf (in neuen Versionen auch main.conf) ist die zentrale Konfigurationsdatei für Bluetooth. Besonders wichtig ist im unteren Bereich der Eintrag "class". Dieser sollte bei einem Mobiltelefon auf
class 0x100100;
eingestellt sein. Ansonsten muss man hier eigentlich keine Änderungen vornehmen.
Sollte es Probleme beim sog. "Pairing" mit dem Mobiltelefon oder anderen Geräten geben, empfiehlt es sich hier den Eintrag
pin_helper = /usr/bin/bluez-pin
auf
pin_helper = /usr/bin/bluepin
abzuändern.
Einige Programme benötigen zur Kommunikation eine serielle Schnittstelle. Diese wird bei Bluetooth mit "rfcomm" zur Verfügung gestellt. Damit lassen sich dem Mobiltelefon Modembefehle senden. Dies wird z.B. benötigt, wenn man den Akkustand abfragen oder über GPRS ins Internet gehen will. Bei der Einrichtung wird das Mobilgerät mittels seiner Hardwareadresse an ein rfcomm-device gebunden. Evtl. muss dabei auch ein Kanal angegeben werden. Wie dies genau funktioniert, wird in der jeweiligen Anleitung für die entsprechende Software erklärt.
Die Datei rfcomm.conf enthält diejenigen rfcomm-devices, die beim Systemstart schon eingerichtet werden sollen. Ein recht gutes Beispiel ist bereits in der Datei gegeben.
Nähere Informationen zum Umgang mit rfcomm sind hier
erhältlich.
In Ubuntu 9.04 Jaunty Jackalope werden die rfcomm-Devices unter dem Standard-Kernel nicht mit den richtigen Rechten erzeugt. Abhilfe schafft ein Patch, der bereits in den Backports vorhanden ist: 374782
SDP (Service Discovery Protocol) dient zur Abfrage der auf dem entfernten Gerät verfügbaren Dienste (Bluetooth Profile). Welche Dienste das Gerät anbietet, lässt sich ganz einfach mit dem Befehl
sdptool browse
auslesen. Verwendet man mehrere Bluetooth-Geräte, gibt man nach dem Befehl und einem Leerzeichen noch die Hardware-Adresse des gewünschten Gerätes an. Ansonsten werden alle Geräte ausgelesen. Die Liste kann unter Umständen recht lang sein und einige Dienste enthalten. Hier wird exemplarisch einer herausgegriffen:
Service Name: OBEX File Transfer
Service RecHandle: 0x1000d
Service Class ID List:
"OBEX File Transfer" (0x1106)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 7
"OBEX" (0x0008)
Profile Descriptor List:
"OBEX File Transfer" (0x1106)
Version: 0x0100Wichtig sind hier der Name des Dienstes und der Kanal, über den er läuft. Jeder Dienst läuft über einen anderen Kanal und bietet eine andere Funktion an. Der hier aufgeführte "OBEX File Transfer" ist für das "Herunterladen" von Dateien vom Mobiltelefon zuständig. Dies kann entweder per Kommandozeile oder mit einem Programm wie KDEBluetooth geschehen. Dabei wird oft der Kanal 7 verwendet, möglich ist aber z.B. auch Kanal 11 bei Geräten der eSerie von Nokia.
Es gibt zahlreiche Programme die eine Kommunikation, Datenaustausch, Synchronisation und mehr zwischen mobilen Geräten und dem Rechner über die Bluetooth-Schnittstelle ermöglichen. Diese sind im Artikel Anwendungen für Mobilgeräte zusammengefasst.
Datenaustausch mit ObexFTP und der Bash
- Artikel LinuxUser 08/2006
Telefonauskunft
- Artikel LinuxUser 07/2005
Telefonflirt
- Artikel LinuxUser 01/2005
Diese Revision wurde am 26. Juni 2010 um 16:58 Uhr
von penshuu erstellt.
Dieser Seite wurden folgende Begriffe zugeordnet:
Multimedia, Hardware, Netzwerk, Kommunikation
2004 – 2010 ubuntuusers.de • Einige Rechte vorbehalten