qemu, kvm, xen & libvirtHauptseite | Über | Hilfe | FAQ | Spezialseiten | Anmelden

Druckversion | Impressum | Datenschutz

Bluetooth USB driver adapter software, Host Controller Interface HCI, BlueZ hciconfig hcitool L2CAP SDP FHSS

(Link zu dieser Seite als [[QEMU-KVM-Buch/ Netzwerkoptionen/ Bluetooth]])

<<<|###| >>> | English


Vereinfachte Darstellung des Der Bluetooth-Protokollstapels.
Vereinfachte Darstellung des Der Bluetooth-Protokollstapels.

[bearbeiten] Bluetooth

Der Industriestandard Bluetooth dient der Funkvernetzung von Geräten (Mobiltelefone, PDAs, Computer und Peripheriegeräte) über kurze Distanz, wobei sowohl Daten als auch Sprache übertragen werden. Das Hauptziel ist das Ersetzen von Kabelverbindungen zwischen den Geräten. Bluetooth erfordert spezielle Hardware, die bei manchen Computern bereits integriert ist. Bluetooth-Hardware wird auch in Form von USB-Sticks oder PCMCIA-Karten angeschlossen. Jedes Bluetooth-Gerät verfügt über eine eindeutige Adresse (Bluetooth Device Address), vergleichbar mit der MAC-Adresse einer Netzwerkkomponente. Bluetooth verwendet als Übertragungsverfahren die FHSS-Technologie (Fast Frequency Hopping. Dabei wird 1600-mal pro Sekunde die Frequenz gewechselt. Dadurch ist Bluetooth unempfindlicher gegenüber Störungen und unbefugtem Zugriff.

Netzwerke, die nur über eine kurze Distanz verbinden, nennt man Personal Area Network (PAN). Bei Bluetooth ist das Piconet die einfachste Form der Kommunikationsverbindung. Ein Bluetooth-Gerät übernimmt die Rolle des Masters und das andere die Rolle als Slave. Die Rollenzuteilung erfolgt zufällig und kann während einer Verbindung gewechselt werden. In einem Piconet können bis zu sieben aktive Bluetooth-Geräte als Slave aufgenommen werden. Weiterhin können noch bis zu 247 passive Slaves in einem Piconet vorhanden sein. Diese Slaves lauschen lediglich den Daten des Masters. Die Kommunikation erfolgt über den Master. Slaves können untereinander nicht direkt kommunizieren. Aus mehreren Piconets kann ein Scatternet gebildet werden. Dabei kommunizieren die Bluetooth-Geräte der verschiedenen Piconets über deren jeweilige Master. Während ein Piconet nur einen Master haben darf, kann ein Slave an mehreren Piconets teilnehmen. Möglich ist, das ein Bluetooth-Gerät in einem Piconet als Slave arbeitet und im anderem Piconet als Master.

Bluetooth stellt für verschiedene Anwendungsfälle unterschiedliche Übertragungswege bereit. Dies ermöglicht ein Protokollstapel, der auf verschiedenen Schichten eine Vielzahl von Protokollen anbietet. Die unteren Schichten stellen einen Zugriff von höheren Schichten auf das Funkmedium bereit. Das Host Controller Interface (HCI) ist die Kommandoschnittstelle für die höheren Schichten zum Zugriff auf die unteren Schichten. Das Logical Link Control and Adaption Protocol (L2CAP) stellt mehrere logische Kanäle zur Verfügung und segmentiert große Nachrichten für den Transport. Das Service Discovery Protocol (SDP) ermöglicht das Erkennen von Diensten anderer Bluetooth-Geräte. Die Übertragung von Audio-Signalen wird direkt von den unteren Schichten zur Verfügung gestellt.

Softwarepakete mit Treibern für die Verbindung mit Bluetooth heißen Bluetooth-Stacks. Ab Microsoft Windows XP SP2 ist es nicht mehr erforderlich einen speziellen Bluetooth-Treiber zu installieren. Weitere Möglichkeiten ergeben sich mit den Bluetooth-Stacks anderer Hersteller. Andere Betriebssysteme (Linux, Mac OS X) verfügen über eigene Bluetooth-Stacks.

[bearbeiten] BlueZ

Website: http://www.bluez.org

Bei aktuellen Linux-Distributionen ist BlueZ der Standard-Bluetooth-Stack. Bei vielen Linux-Distributionen ist BlueZ bereits installiert. Es empfiehlt sich folgende Pakete zu installieren (Beispiel Ubuntu).

Host ~$ sudo apt-get install bluetooth bluez bluez-utils \
bluez-hcidump btscanner grml-btnet libbluetooth3 libbluetooth-dev

Zuerst kontrolliert man, ob der Bluetooth-Daemon aktiv ist.

Host ~$ ps aux | grep bluetooth[d]
root 8010 0.0  0.0 3488 1680 ? Ss 20:02 0:00 /usr/sbin/bluetoothd

Schließt man ein Bluetooth-Gerät an, überprüft man mit dem Befehl hciconfig das neu erstellte hci0-Interface.

Host ~$ hciconfig -a
hci0:   Type: USB ...

Wird das Bluetooth-Gerät nicht erkannt, helfen die Einträge in der Log-Datei /var/log/messages bei der Fehlersuche. Zum Beispiel erscheinen folgende Einträge beim Stecken eines Bluetooth-USB-Sticks.

Host ~$ tail -f /var/log/messages
... usb 4-1: new full speed USB device using uhci_hcd and address 3
... usb 4-1: configuration #1 chosen from 1 choice

Die Namen der physikalischen HCI werden mit dem Befehl hcitool dev ermittelt.

Host ~$ hcitool dev
Devices: hci0 XX:XX:XX:XX:XX:XX

Es erscheint das Bluetooth-Device mit seiner Bluetooth Device Address. Die Verbindung testet man mit l2ping.

Host ~$ l2ping XX:XX:XX:XX:XX:XX

Mit hcidump oder btscanner überwacht man die HCI-Pakete eines angeschlossenen Blutooth-Devices.

Host ~$ sudo hcidump -X

Mit dem Befehl hcitool scan ermittelt man, ob verfügbare Bluetooth-Geräte in Reichweite sind.

Host ~$ hcitool scan
Scanning ...
XX:XX:XX:XX:XX:XX Bluetooth-Gerät

[bearbeiten] Die Option -bt

Mit QEMU 0.10.0 begann die Unterstützung der Bluetooth-Emulation. Die Option -bt hci definiert die Funktionen des korrespondierenden Bluetooth Host Controller Interface (HCI). Die Parameter von -bt werden dem HCI im Host-System zugeordnet. Wenn zum Beispiel in einer virtuellen Maschine nur ein HCI emuliert wird, ist nur die zuerst angegebene Definition von -bt hci[...] gültig. Der Transport-Layer wird durch den Maschinen-Typ festgelegt. Zur Zeit verfügen nur die emulierten Nokia N800- und N810-Internet-Tablets (qemu-system-arm -M n800, qemu-system-arm -M n810) einen HCI. Bei der Default-Einstellung -bt hci,null hat der korrespondierende Bluetooth Host HCI keine interne Logic und reagiert daher weder auf Befehle noch Ereignisse.

Host ~$ qemu-system-x86_64 Platte.img -bt hci,null

Bei der Option -bt hci,host[:id] leitet der korrespondierende Bluetooth Host HCI die Befehle und Ereignisse von und zu dem physikalischen HCI mit dem Namen id (Default = hci0) auf dem Host-System weiter. Die Option steht nur bei Systemen mit BlueZ (Linux Bluetooth Protocol Stack) zur Verfügung. Von der Instanz soll in diesem Fall das Device hci0 angesprochen werden.

Host ~$ qemu-system-arm -M n800 Platte.img -bt hci,host:hci0

Da hci0 das Default-Device ist, kann diese Angabe weggelassen werden.

Host ~$ qemu-system-arm -M n800 Platte.img -bt hci,host

Mit der Option -bt hci[,vlan=n] wird ein virtueller, Standard-HCI angelegt, der am Bluetooth Scatternet n (Default = 0) teilnimmt.

Host ~$ qemu-system-x86_64 Platte.img -bt hci,vlan=0

Die Option -bt vhci[,vlan=n] steht nur unter Linux zur Verfügung und legt einen HCI in Bluetooth Scatternet n (Default = 0) an. Dieses HCI wird mit dem Bluetooth Stack des Host-Systems verbunden. Dies ermöglicht die Kommunikation zwischen Host- und Gast-Systemen über ein gemeinsames Scatternet. Dazu muss der Linux VHCI-Treiber (Virtual Host Controller Interconnect) installiert sein. Beispiel:

Host ~$ qemu-system-x86_64 Platte.img -bt hci,vlan=5 -bt vhci,vlan=5

Mit der Option -bt device:dev[,vlan=n] wird ein Bluetooth-Device dev emuliert und im Netzwerk n (Default = 0) platziert. QEMU unterstützt zur Zeit nur das Device keyboard. Es emuliert eine virtuelle Wireless-Tastatur mit dem Human Interface Device Protocol (HIDP).

Host ~$ qemu-system-x86_64 Platte.img -bt device:keyboard

Mit der Option -usbdevice bt[:hci-type] wird ein USB-Bluetooth-Dongle emuliert. Die Parameter entsprechen denen von -bt hci. Wird hci-type nicht angegeben, gilt die Default-Einstellung -bt hci,vlan=0. Dieses USB-Device implementiert den USB Transport Layer von HCI. Beispiel:

Host ~$ qemu-system-x86_64 Platte.img -usbdevice bt:hci,vlan=3 \
        -bt device:keyboard,vlan=3

<<<|###| >>>

Von „http://qemu-buch.de/de/index.php?title=QEMU-KVM-Buch/_Netzwerkoptionen/_Bluetooth

Diese Seite wurde bisher 28.744 mal abgerufen. Diese Seite wurde zuletzt am 23. November 2011 um 18:33 Uhr geändert. Inhalt ist verfügbar unter der GNU Free Documentation License 1.2.


Finden

Blättern

News

Deutsch
Weitersagen
Tipps für Autoren
Autoren
Impressum


English
Recommendation
The Authors
Contact



Letzte Änderungen


Ändern
Seite bearbeiten
Bearbeitungshilfe
Seitenoptionen
Diskussion
Kommentar hinzufügen
Druckversion
Seitendaten
Versionen
Links auf diese Seite
Änderungen an verlinkten Seiten
Meine Seiten
Anmelden
Spezialseiten
Neue Seiten
Dateiliste
Statistik
Kontakt
Mehr …