33.2. Bluetooth

Bluetooth ist eine drahtlose Technologie für den Anschluss verschiedener Geräte, wie beispielsweise Mobiltelefone, PDAs, Notebooks oder Systemkomponenten wie Tastatur oder Maus. Der Name leitet sich vom dänischen König Harald Blauzahn (engl. Name Harold Bluetooth) ab, der mehrere sich bekriegende Fraktionen in Skandinavien einte. Das Bluetooth-Logo basiert auf den Runen für „H“ (sternähnlich) und „B“.

Bluetooth unterscheidet sich durch eine Reihe wichtiger Aspekte von IrDA. Zum einen müssen sich die einzelnen Geräte nicht in optischer Reichweite voneinander befinden und zum anderen können mehrere Geräte zu einem Netzwerk zusammengeschlossen werden. „“ Die maximale Datenübertragungsrate beträgt allerdings nur 2.1 Mbps (in der aktuellen Version 2.0). Theoretisch ist mit Bluetooth sogar eine Kommunikation durch Wände möglich. In der Praxis hängt dies jedoch von den Eigenschaften der Wand und der Geräteklasse ab. Es gibt drei Geräteklassen mit Übertragungsreichweiten zwischen zehn und hundert Metern.

33.2.1. Grundlagen

In den folgenden Abschnitten werden die Grundprinzipien umrissen, nach denen Bluetooth funktioniert. Sie erfahren, welche Software-Anforderungen erfüllt sein müssen, wie Bluetooth mit dem System interagiert und wie Bluetooth-Profile funktionieren.

33.2.1.1. Software

Zur Verwendung von Bluetooth benötigen Sie einen Bluetooth-Adapter (eingebauter Adapter oder externes Gerät), Treiber sowie einen Bluetooth-Protokollstapel. Der Linux-Kernel weist bereits die wichtigsten Treiber für die Verwendung von Bluetooth auf. Das Bluez-System wird als Protokollstapel verwendet. Um sicherzustellen, dass die Anwendungen mit Bluetooth zusammenarbeiten, müssen die Basispakete bluez-libs und bluez-utils installiert sein. Diese Pakete enthalten mehrere benötigte Dienste und Dienstprogramme. Außerdem muss für einige Adapter, wie Broadcom bzw. AVM BlueFritz!, das Paket bluez-firmware installiert sein. Das Paket bluez-cups ermöglicht das Drucken über Bluetooth-Verbindungen. Für die Fehlersuche bei Problemen mit Bluetooth-Verbindungen installieren Sie die Pakete bluez-hcidump und bluez-test.

33.2.1.2. Allgemeines Zusammenspiel

Bluetooth-Systeme bestehen aus vier miteinander verzahnten Schichten, die die gewünschte Funktionalität bereitstellen:

Hardware

Adapter und geeigneter Treiber zur Unterstützung durch den Linux-Kernel.

Konfigurationsdateien

Dienen zur Steuerung des Bluetooth-Systems.

Daemons

Dienste, die von den Konfigurationsdateien gesteuert werden und die Funktionalität bereitstellen.

Anwendungen

Durch die Anwendungen kann der Benutzer die von den Daemons bereitgestellte Funktionalität nutzen und steuern.

Beim Einstecken eines Bluetooth-Adapters wird der zugehörige Treiber in das Hotplug-System geladen. Nachdem der Treiber geladen wurde, überprüft das System die Konfigurationsdateien, um zu ermitteln, ob Bluetooth gestartet werden sollte. Wenn dies der Fall ist, wird ermittelt, welche Dienste gestartet werden sollen. Auf der Grundlage dieser Informationen werden die entsprechenden Daemons gestartet.

33.2.1.3. Profile

In Bluetooth werden die Dienste über Profile definiert, beispielsweise das Dateiübertragungsprofil, das Profil für grundlegende Druckvorgänge und das Profil für das persönliche Netzwerk (Personal Area Network). Damit ein Gerät die Dienste eines anderen Gerätes nutzen kann, müssen beide dasselbe Profil verstehen. Diese Information fehlt häufig auf der Verpackung und im Handbuch des Geräts. Leider halten sich einige Hersteller nicht streng an die Definitionen der einzelnen Profile. Dennoch funktioniert die Kommunikation zwischen den Geräten normalerweise reibungslos.

Im folgenden Text sind die lokalen Geräte diejenigen, die physisch mit dem Computer verbunden sind. Alle anderen Geräte, auf die nur über drahtlose Verbindungen zugegriffen werden kann, werden als entfernte Geräte bezeichnet.

33.2.2. Konfiguration

Dieser Abschnitt bietet eine Einführung in die Bluetooth-Konfiguration. Sie erfahren, welche Konfigurationsdateien beteiligt sind, welche Werkzeuge benötigt werden und wie Bluetooth konfiguriert wird.

Die Konfigurationsdateien für die einzelnen Komponenten des Bluez-Systems befinden sich im Verzeichnis /etc/bluetooth. Die einzige Ausnahme hiervon ist die Datei /etc/sysconfig/bluetooth, die die Komponenten startet.

Die im Folgenden beschriebenen Konfigurationsdateien können nur vom Benutzer root bearbeitet werden. Zurzeit gibt es keine grafische Bedienoberfläche zum Ändern aller Einstellungen. Die meisten dieser Einstellungen sind allerdings nur für erfahrene Benutzer mit speziellen Anwendungsfällen interessant. Normalerweise sollten die Standardeinstellungen angemessen sein.

Verschiedene Einstellungen, beispielsweise Gerätenamen und Sicherheitsmodus, können in der Konfigurationsdatei /etc/bluetooth/hcid.conf geändert werden. Normalerweise sollten die Standardeinstellungen angemessen sein. Die Datei enthält Kommentare, in denen die Optionen für die verschiedenen Einstellungen beschrieben werden. Die meisten Einstellungen dieser Datei können jedoch auch mit kbluetooth oder bluez-gnome festgelegt werden.

Zwei Abschnitte in der eingeschlossenen Datei heißen options und device. Der erste enthält allgemeine Informationen, die hcid zum Starten verwendet. Der zweite enthält Einstellungen für einzelne lokale Bluetooth-Geräte.

Eine der wichtigsten Einstellungen im Abschnitt options ist security auto;. Wenn dieser Wert auf auto gesetzt ist, versucht hcid, die lokale PIN für eingehende Verbindungen zu verwenden. Wenn dies nicht erfolgreich ist, wird auf none umgeschaltet und die Verbindung ohne PIN hergestellt. Um eine höhere Sicherheit zu erreichen, sollte diese Standardeinstellung auf user gesetzt werden, um sicherzustellen, dass der Benutzer jedes Mal, wenn eine Verbindung hergestellt wird, eine PIN eingeben muss.

Legen Sie den Namen, unter dem der Computer auf der anderen Seite angezeigt wird, im Abschnitt device fest. Die Geräteklasse, beispielsweise Desktop, Laptop oder Server wird in diesem Abschnitt definiert. Authentifizierung und Verschlüsselung werden ebenfalls hier aktiviert bzw. deaktiviert.

33.2.3. Systemkomponenten und Dienstprogramme

Die Funktionsfähigkeit von Bluetooth hängt vom Zusammenspiel verschiedener Dienste ab. hcid (Host Controller Interface Daemon) fungiert als Schnittstelle für das Bluetooth-Gerät, über die das Gerät gesteuert wird. hcid stellt auch den sdpd-Daemon (Service Discovery Protocol Daemon) bereit, mit dessen Hilfe ein Gerät die auf dem Host bereitgestellten Dienste erkennt. hcid wird automatisch beim Systemstart oder beim Einstecken des Bluetooth-Adapters am System aktiviert. Falls hcid nicht automatisch gestartet wird, können Sie das Bluetooth-Subsystem manuell mit rcbluetooth start starten. Dieser Befehl muss als root ausgeführt werden.

In den folgenden Absätzen werden kurz die wichtigsten Shell-Werkzeuge beschrieben, die für die Arbeit mit Bluetooth verwendet werden können. Mittlerweile stehen zwar verschiedene grafische Komponenten für die Steuerung von Bluetooth zur Verfügung, aber dennoch kann es sich lohnen, einen Blick auf diese Programme zu werfen.

Einige der Kommandos können nur als root ausgeführt werden. Dazu gehört das Kommando l2ping device_address zum Testen der Verbindung mit einem entfernten Gerät.

33.2.3.1. hcitool

Mit hcitool kann bestimmt werden, ob lokale und entfernte Geräte erkannt wurden. Mit dem Kommando hcitool dev werden die lokalen Geräte aufgeführt. Für jedes erkannte lokale Gerät wird in der Ausgabe eine Zeile in der Form Schnittstellenname Geräteadresse erstellt.

Nach entfernten Geräten wird mit dem Kommando hcitool inq gesucht. Dieses Kommando gibt für jedes erkannte Gerät drei Werte zurück: die Geräteadresse, die Uhrzeitverschiebung und die Geräteklasse. Die Geräteklasse ist wichtig, da andere Befehle sie zur Ermittlung des Zielgeräts verwenden. Das Uhren-Offset dient hauptsächlich technischen Zwecken. Die Klasse gibt Geräte- und Diensttyp als Hexadezimalwert an.

Mit hcitool name Geräteadresse kann der Gerätename eines entfernten Geräts ermittelt werden. Bei einem entfernten Computer entsprechen Klasse und Gerätename den Informationen in der Datei /etc/bluetooth/hcid.conf. Lokale Geräteadressen führen zu einer Fehlerausgabe.

33.2.3.2. hciconfig

Der Befehl /usr/sbin/hciconfig liefert weitere Informationen zum lokalen Gerät. Wenn hciconfig ohne Argumente ausgeführt wird, werden in der Ausgabe Geräteinformationen, beispielsweise Gerätenamen (hciX), physikalische Geräteadresse (12-stellige Nummer in der Form 00:12:34:56:78) und Informationen zum Umfang der übertragenen Daten angezeigt.

hciconfig hci0 name zeigt den Namen an, der von Ihrem Computer zurückgegeben wird, wenn er Anforderungen von entfernten Geräten erhält. Mit hciconfig können die Einstellungen des lokalen Geräts nicht nur abgefragt, sondern auch bearbeitet werden. Mit hciconfig hci0 name TEST beispielsweise wird der Name aufTEST gesetzt.

33.2.3.3. sdptool

Mit sdptool kann überprüft werden, welche Dienste von einem bestimmten Gerät zur Verfügung gestellt werden. Das Kommando sdptool browse Geräteadresse gibt alle Dienste eines Geräts zurück. Mit sdptool search Dienstcode wird nach einem bestimmten Dienst gesucht. Dieser Befehl scannt alle erreichbaren Geräte nach dem angeforderten Dienst. Wenn eines der Geräte den Dienst anbietet, gibt das Programm den vollständigen Dienstnamen, der vom Gerät zurückgegeben wurde, sowie eine kurze Beschreibung aus. Eine Liste aller möglichen Dienstcodes lässt sich durch Eingabe von sdptool ohne Parameter anzeigen.

33.2.4. Grafische Anwendungen

Geben Sie in Konqueror die URL bluetooth:/ ein, um lokale und entfernte Bluetooth-Geräte aufzuführen. Durch Doppelklicken auf ein Gerät erhalten Sie einen Überblick über die von dem betreffenden Gerät bereitgestellten Dienste. Wenn Sie mit der Maus über einen der angegebenen Dienste fahren, wird in der Statusleiste des Browsers angezeigt, welches Profil für den Dienst verwendet wird. Wenn Sie auf einen Dienst klicken, wird ein Dialogfeld geöffnet, in dem Sie den gewünschten Vorgang auswählen können: Speichern, den Dienst verwenden (dazu muss eine Anwendung gestartet werden) oder den Vorgang abbrechen. Aktivieren Sie das betreffende Kontrollkästchen, wenn der Dialog nicht mehr angezeigt und immer die ausgewählte Aktion durchgeführt werden soll. Für einige Dienste ist noch keine Unterstützung verfügbar. Weitere grafische Front-Ends für Bluetooth sind in den Paketen kbluetooth, bluez-gnome und gnome-bluetooth enthalten.

33.2.5. Beispiel – Einrichten einer Netzwerkverbindung via Bluetooth

In diesem Beispiel wird eine Netzwerkverbindung zwischen den Hosts H1 und H2 eingerichtet. Diese beiden Hosts haben die Bluetooth-Geräteadressen baddr1 und baddr2 (auf beiden Hosts mit dem Kommando hcitool dev bestimmt, wie oben beschrieben). Die Hosts sollten mit den IP-Adressen 192.168.1.3 (H1) und 192.168.1.4 (H2) identifiziert sein.

Die Bluetooth-Verbindung wird mithilfe von pand (Personal Area Networking Daemon) hergestellt. Die folgenden Kommandos müssen vom Benutzer root ausgeführt werden. Die Beschreibung konzentriert sich auf die Bluetooth-spezifischen Aktionen und bietet keine detaillierte Beschreibung des Netzwerkbefehls ip.

Geben Sie pand -s ein, um pand auf Host H1 zu starten. Anschließend kann auf Host H2 mit pand -c baddr1 eine Verbindung hergestellt werden. Wenn Sie auf einem der Hosts ip link show eingeben, um die verfügbaren Netzwerkschnittstellen aufzulisten, sollte die Ausgabe etwa folgenden Eintrag enthalten:

 bnep0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop qlen 1000 
 link/ether 00:12:34:56:89:90 brd ff:ff:ff:ff:ff:ff

Statt 00:12:34:56:89:90 sollte die Ausgabe die lokale Geräteadresse baddr1 bzw. baddr2 enthalten. Nun muss diese Schnittstelle einer IP-Adresse zugewiesen und aktiviert werden. Auf H1 führen Sie dies mit den folgenden beiden Kommandos durch:

ip addr add 192.168.1.3/24 dev bnep0
ip link set bnep0 up

Verwenden Sie auf H2 die folgenden Kommandos:

ip addr add 192.168.1.4/24 dev bnep0
ip link set bnep0 up

Nun ist ein Zugriff auf H1 von H2 aus unter der IP-Adresse 192.168.1.3 möglich. Mit dem Kommando ssh 192.168.1.4 können Sie von H1 aus auf H2 zugreifen, vorausgesetzt H2 führt einen sshd aus, der standardmäßig in openSUSE® aktiviert ist. Die Ausführung des Kommandos ssh 192.168.1.4 ist auch als normaler Benutzer möglich.

33.2.6. Fehlersuche

Wenn Sie Schwierigkeiten bei der Herstellung einer Verbindung haben, sollten Sie die folgende Liste abarbeiten. Bedenken Sie, dass der Fehler auf jeder der beiden Seiten einer Verbindung liegen kann, zuweilen liegt sogar auf beiden Seiten ein Fehler vor. Rekonstruieren Sie das Problem nach Möglichkeit mit einem anderen Bluetooth-Gerät, um sicherzustellen, dass das Gerät nicht defekt ist.

Wird das lokale Gerät in der Ausgabe von hcitool dev aufgeführt?

Wenn das lokale Gerät nicht in dieser Ausgabe aufgeführt ist, wurde entweder hcid nicht gestartet oder das Gerät wird nicht als Bluetooth-Gerät erkannt. Dies kann verschiedene Ursachen haben. Das Gerät könnte beschädigt sein oder der richtige Treiber könnte fehlen. Notebooks mit integriertem Bluetooth haben häufig einen Ein-/Aus-Schalter für drahtlose Geräte, wie WLAN- oder Bluetooth-Geräte. Überprüfen Sie im Handbuch Ihres Notebooks, ob Ihr Gerät einen solchen Schalter aufweist. Starten Sie das Bluetooth-System mit dem Befehl rcbluetooth restart neu und überprüfen Sie, ob unter /var/log/messages Fehler gemeldet werden.

Benötigt Ihr Bluetooth-Adapter eine Firmware-Datei?

Falls ja, installieren Sie bluez-bluefw und starten Sie das Bluetooth-System mit rcbluetooth restart neu.

Gibt die Ausgabe von hcitool inq andere Geräte zurück?

Testen Sie diesen Befehl mehrmals. Die Verbindung weist möglicherweise Interferenzen auf, da das Bluetooth-Frequenzband auch von anderen Geräten verwendet wird.

Kann das entfernte Gerät den Computer „sehen“?

Versuchen Sie, die Verbindung vom Remote-Gerät aus herzustellen. Überprüfen Sie, ob das Gerät den Computer sieht.

Kann eine Netzwerkverbindung hergestellt werden (siehe Abschnitt 33.2.5, „Beispiel – Einrichten einer Netzwerkverbindung via Bluetooth“)?

Die in Abschnitt 33.2.5, „Beispiel – Einrichten einer Netzwerkverbindung via Bluetooth“ beschriebene Einrichtung funktioniert möglicherweise nicht. Dafür kann es mehrere Gründe geben. Beispielsweise unterstützt einer der beiden Computer möglicherweise nicht SSH. Versuchen Sie es mit ping 192.168.1.3 oder ping 192.168.1.4. Wenn dies funktioniert, überprüfen Sie, ob sshd aktiv ist. Ein weiteres Problem könnte darin bestehen, dass eines der beiden Geräte bereits Netzwerkeinstellungen aufweist, die mit der im Beispiel genannten Adresse 192.168.1.X in Konflikt stehen. Versuchen Sie es in diesem Fall mit anderen Adressen, beispielsweise 10.123.1.2 und 10.123.1.3.

Wenn Sie das bluez-hcidump-Paket installiert haben, können Sie mithilfe von hcidump -X überprüfen, was zwischen den Geräten versendet wird. Manchmal gibt die Ausgabe einen Hinweis auf das Problem. Beachten Sie aber, dass nur teilweise „Klartext“ ausgegeben wird.

33.2.7. Weiterführende Informationen

Zusätzliche (kurz vor Veröffentlichung eingegangene) Dokumentationen erhalten Sie unter /usr/share/doc/packages/bluez-utils/ (deutschsprachige und englischsprachige Version verfügbar).

Einen umfassenden Überblick über die verschiedenen Anweisungen für Verwendung und Konfiguration von Bluetooth finden Sie unter http://www.bluez.org/. Weitere nützliche Informationen und Anweisungen: