Gentoo Linux Bluetooth Leitfaden
1.
Einführung
Was ist Bluetooth?
Bluetooth ist eine gewerbliche Spezifikation die Benutzern einen Weg bietet,
Informationen zwischen Geräten wie PCs, PDAs oder Mobiltelefonen auszutauschen.
Benutzer können kostengünstig drahtlose Ton- und Datenübertragungen tätigen,
wenn sie die Bluetooth-Technologie benutzen. Bluetooth bietet außerdem die
Möglichkeit, kleine Drahtlosnetzwerke, so genannte WLANs, zu erstellen und
Geräte zu synchronisieren.
Über den Inhalt dieses Leitfadens
Der erste Teil dieses Leitfadens erklärt, wie man qualifizierte und
nicht-qualifizierte Geräte, die Bluetooth unterstützen, identifiziert.
Auf diese Art können Benutzer Bluetooth-Geräte kaufen, bei denen es sicher ist,
dass sie funktionieren. Weiterhin erklärt der erste Teil wie man den
Systemkernel konfiguriert, installierte Bluetooth-Geräte identifiziert und die
erforderlichen Basis-Werkzeuge für Bluetooth installiert.
Der zweite Teil behandelt die Anleitung, wie man entfernte Geräte im System
sichtbar macht und wie man eine Verbindung von oder zu ihnen herstellt, indem
man eine Radiofrequenzkommunikation (RFCOMM) oder ein persönliches Netzwerk
(PAN) nutzt.
Der letzte Teil des Leitfadens listet im Detail Programme auf, die Vorteile von
den vielen Möglichkeiten der Bluetooth-Technologie ziehen können.
2.
Unterstützte Geräte
Qualifizierte und nicht-qualifizierte Geräte, die Bluetooth unterstützen
Wichtig:
Diese Produkte können eventuell funktionieren, auch wenn sie keine
qualifizierten Bluetooth-Geräte sind. Gentoo untersützt sie in keiner Art, aber
es ist möglich, dass sie einfach funktionieren.
|
Eine Liste der aktuell unterstützen Geräte finden Sie unter Bluetooth Features
und Änderungsinformationen von Marcel Holtmann.
3.
Das System konfigurieren
Kernel-Konfiguration
Da die letzte stabile Version des Linux-Kernels 2.6 ist, wird die Konfiguration
für diese Kernelserie durchgeführt. Die meisten Bluetooth-Geräte werden über
einen USB-Port verbunden, deshalb wird USB ebenfalls aktiviert. Dazu greifen
Sie bitte auf den Gentoo Linux USB
Leitfaden zurück.
Befehlsauflistung 3.1: Konfiguration für die 2.6er Kernelserie |
Networking --->
<*> 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
<M> HCI BlueFRITZ! USB driver
<M> HCI DTL1 (PC Card) driver
<M> HCI BT3C (PC Card) driver
<M> HCI BlueCard (PC Card) driver
<M> HCI UART (PC Card) device driver
<M> HCI VHCI (Virtual HCI device) driver
USB support --->
<*> Support for Host-side USB
--- USB Host Controller Drivers
<M> 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
< > SL811HS HCD support
|
Nun werden wir mit unserem neuen Kernel neustarten. Wenn alles richtig
gemacht wurde, haben wir jetzt ein System, das bereit für Bluetooth ist.
Wichtig:
Ihr USB-Gerät hat eventuell zwei Modi, dessen Standard nicht HCI sondern
HID sein kann. Wenn dies der Fall ist, benutzen Sie hid2hci, um zum
HCI-Modus zu wechseln. Ihr System wird sich diese Änderung nach einem Neustart
nicht merken.
|
Befehlsauflistung 3.2: Die Bluetooth-Geräte erkennen |
# cat /proc/bus/usb/devices | grep -e^[TPD] | grep -e Cls=e0 -B1 -A1
T: Bus=02 Lev=02 Prnt=03 Port=00 Cnt=01 Dev#= 4 Spd=12 MxCh= 0
D: Ver= 1.10 Cls=e0(unk. ) Sub=01 Prot=01 MxPS=64 #Cfgs= 1
P: Vendor=0a12 ProdID=0001 Rev= 5.25
# lsusb
Bus 003 Device 002: ID 046d:c00e Logitech, Inc. Optical Mouse
Bus 003 Device 001: ID 0000:0000
Bus 002 Device 002: ID 0db0:1967 Micro Star International Bluetooth Dongle
|
4.
BlueZ - Der Bluetooth-Stack
BlueZ installieren
Nun, da das Gerät vom Kernel erkannt wurde, brauchen wir einen Layer, welcher
Applikationen mit dem Bluetooth-Gerät kommunizieren lässt. BlueZ stellt den
offiziellen Linux Bluetooth-Stack bereit. Die Ebuilds, welche das anbieten, was
wir brauchen, sind bluez-libs und bluez-utils. Geräte, welche
Broadcom-Firmware-Dateien oder Vergleichbares benötigen, brauchen eventuell
bluez-firmware.
Befehlsauflistung 4.1: bluez-libs und bluez-utils installieren |
# emerge net-wireless/bluez-libs net-wireless/bluez-utils
|
BlueZ-Konfiguration und PIN-Paarung
Nun ist es Zeit um zu prüfen, ob das Bluetooth-Gerät korrekt vom System
aufgenommen wird. Zuerst starten wir den benötigten Bluetooth-Dienst.
Befehlsauflistung 4.2: hciconfig starten |
# /etc/init.d/bluetooth start
* Starting Bluetooth ...
* Starting hcid ... [ ok ]
* Starting sdpd ... [ ok ]
* Starting rfcomm ... [ ok ]
# hciconfig
hci0: Type: USB
BD Address: 00:01:02:03:04:05 ACL MTU: 192:8 SCO MTU: 64:8
DOWN
RX bytes:131 acl:0 sco:0 events:18 errors:0
TX bytes:565 acl:0 sco:0 commands:17 errors:0
|
Dies zeigt, dass das Bluetooth-Gerät erkannt wurde. Wie Sie vielleicht bemerkt
haben, ist das Gerät mit DOWN gekennzeichnet. Lassen Sie es uns also
"uppen". Die Konfigurationsdatei finden Sie unter
/etc/bluetooth/hcid.conf. Die benötigten Änderungen in dieser
Datei sind unten aufgelistet. Für weitere Informationen greifen Sie bitte auf
man hcid.conf zurück.
Befehlsauflistung 4.3: /etc/bluetooth/hcid.conf editieren |
# HCId options
options {
# Automatically initialize new devices
autoinit yes;
# Security Manager mode
# none - Security manager disabled
# auto - Use local PIN for incoming connections
# user - Always ask user for a PIN
#
security auto;
# Pairing mode
pairing multi;
# PIN helper
pin_helper /etc/bluetooth/pin-helper;
}
# Default settings for HCI devices
device {
# Local device name
# %d - device id
# %h - host name
name "BlueZ at %h (%d)";
# Local device class
class 0x3e0100;
# Inquiry and Page scan
iscan enable; pscan enable;
# Default link mode
lm accept;
# Default link policy
lp rswitch,hold,sniff,park;
# Authentication and Encryption (Security Mode 3)
#auth enable;
#encrypt enable;
}
|
Danach müssen wir die Bluetooth-Gerät-PIN konfigurieren. Das wird Ihnen helfen,
Ihr Gerät mit anderen zu paaren.
Befehlsauflistung 4.4: /etc/bluetooth/pin bearbeiten |
123456
|
Wichtig:
Diese Nummer Ihrer Wahl muss dieselbe sein, wie in all ihren Hosts mit
Bluetooth-Geräten, damit ihre Geräte gepaart werden können. Diese Nummer muss
ebenfalls geheimgehalten werden, da jeder, der diese Nummer kennt, Verbindungen
zu ihren Geräten herstellen kann.
|
Notiz:
Wenn Sie <=bluez-libs-2.x und <=bluez-utils-2.x benutzen,
können Sie zwischen verschiedenen PIN-Helfern auswählen, abhängig davon, was
Sie benutzen wollen. Vorhandene PIN-Helfer sind u.a.
/usr/lib/kdebluetooth/kbluepin (net-wireless/kdebluetooth),
/usr/bin/bluepin oder /etc/bluetooth/pin-helper.
|
Notiz:
Seit >=bluez-libs-3.x und >=bluez-utils-3.x wurden die PIN-Helfer
durch Passkey-Agenten ersetzt. Es gibt einige grafisch unterschiedliche
Passkey-Agenten, welche Ihre PIN verwalten können, z.B. bluez-gnome und
kdebluetooth. Sie können auf der Kommandozeile ebenfalls
passkey-agent (aus bluez-utils) benutzen.
|
Konfiguration der Dienste
Da wir die Konfiguration von BlueZ abgeschlossen haben, ist es nun an der Zeit
die erforderlichen Dienste neuzustarten.
Befehlsauflistung 4.5: Die Bluetooth-Daemons starten |
# /etc/init.d/bluetooth restart
# rc-update add bluetooth default
* bluetooth added to runlevel default
* rc-update complete.
|
Stellen Sie sicher, dass die Bluetooth-Daemons korrekt gestartet sind. Wenn wir
sehen können, dass hcid und sdpd laufen, dann haben wir Bluetooth
richtig konfiguriert. Danach können wir prüfen, ob die Geräte nun UP sind und
mit den richtigen Einstellungen laufen.
Befehlsauflistung 4.6: Kontrollieren, ob die Bluetooth-Deamons korrekt gestartet sind |
# ps -ae | grep hcid
26050 ? 00:00:00 hcid
# ps -ae | grep sdpd
26054 ? 00:00:00 sdpd
# hciconfig -a
hci0: Type: USB
BD Address: 00:0A:0B:0C:0D:0E ACL MTU: 192:8 SCO MTU: 64:8
UP RUNNING PSCAN ISCAN
RX bytes:125 acl:0 sco:0 events:17 errors:0
TX bytes:565 acl:0 sco:0 commands:17 errors:0
Features: 0xff 0xff 0x0f 0x00 0x00 0x00 0x00 0x00
Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3
Link policy: RSWITCH HOLD SNIFF PARK
Link mode: SLAVE ACCEPT
Name: 'BlueZ at bluehat (0)'
Class: 0x3e0100
Service Classes: Networking, Rendering, Capturing, Object Transfer,
Audio
Device Class: Computer, Uncategorized
HCI Ver: 1.1 (0x1) HCI Rev: 0x1e7 LMP Ver: 1.1 (0x1) LMP Subver: 0x1e7
Manufacturer: Cambridge Silicon Radio (10)
|
5.
Entfernte Geräte erkennen und zu ihnen verbinden
Bluetooth-Geräte in anderen Hosts
An diesem Punkt sind wir bereit um Bluetooth-Geräte, die in anderen Maschinen
installiert sind, zu erkennen. Dies ist unabhängig vom Betriebssystem des Hosts.
Wir werden Gebrauch des Befehls hcitool machen.
Befehlsauflistung 5.1: Auf lokale Geräte kontrollieren |
# hcitool dev
Devices:
hci0 00:01:02:03:04:05
|
Befehlsauflistung 5.2: Entferne Geräte suchen |
# hcitool scan
Scanning ...
00:0A:0B:0C:0D:0E Grayhat
|
Befehlsauflistung 5.3: Anfragen an entfernte Geräte stellen |
# hcitool inq
Inquiring ...
00:0A:0B:0C:0D:0E clock offset: 0x5579 class: 0x72010c
|
Da wir nun die MAC-Adresse des entfernten Bluetooth-Geräts kennen, können
wir kontrollieren, ob wir sie korrekt gepaart haben.
Befehlsauflistung 5.4: l2ping starten |
# l2ping 00:0A:0B:0C:0D:0E
Ping: 00:0A:0B:0C:0D:0E from 00:01:02:03:04:05 (data size 20) ...
20 bytes from 00:0A:0B:0C:0D:0E id 200 time 69.85ms
20 bytes from 00:0A:0B:0C:0D:0E id 201 time 9.97ms
20 bytes from 00:0A:0B:0C:0D:0E id 202 time 56.86ms
20 bytes from 00:0A:0B:0C:0D:0E id 203 time 39.92ms
4 sent, 4 received, 0% loss
|
Radiofrequenzkommunikation (RFCOMM) einstellen
Notiz:
Bitte beachten Sie, dass Radiofrequenzkommunikation optional ist.
|
Wir können eine Radiofrequenzkommunikation zu einem anderen Bluetooth-Gerät
herstellen, indem wir den rfcomm Befehl benutzen. Um die Sache für
Benutzer mit mehreren Geräten ein wenig zu erleichtern, ist es ratsam ein paar
Änderungen an der standardmäßigen rfcomm Konfigurationsdatei
/etc/bluetooth/rfcomm.conf vorzunehmen.
Das gesamte Segment der Konfiguration, welches bei rfcomm0 { startet und
bei } endet, ist die Konfiguration für das Gerät, welches eine Verbindung
an /dev/rfcomm0 herstellen wird. In diesem Fall zeigen wir nur ein
Beispiel, nämlich rfcomm0. Sie können einfach weitere Einstellungen vornehmen.
Befehlsauflistung 5.5: /etc/bluetooth/rfcomm.conf bearbeiten |
rfcomm0 {
# Automatically bind the device at startup
bind yes;
# Bluetooth address of the device
device 00:0A:0B:0C:0D:0E;
}
|
Nachdem Sie RFCOMM konfiguriert haben, können Sie zu jedem Gerät verbinden.
Da wir die erforderlichen Einstellungen in
/etc/bluetooth/rfcomm.conf gemacht haben, benötigen wir nur den
Befehl, welcher unten gezeigt ist. Im Fall, dass Sie keine Änderungen an der
Konfiguration vorgenommen haben, ist die alternative Methode ebenfalls
aufgelistet.
Befehlsauflistung 5.6: Eine RFCOMM-Verbindung herstellen |
# rfcomm connect 0
Connected /dev/rfcomm0 to 00:0A:0B:0C:0D:0E on channel 1
Press CTRL-C for hangup
# rfcomm connect 0 00:0A:0B:0C:0D:0E 1
Connected /dev/rfcomm0 to 00:0F:DE:69:50:24 on channel 1
Press CTRL-C for hangup
|
Der erste Parameter nach dem Connect-Befehl ist das RFCOMM TTY Gerät, welches
genutzt wird (im Normallfall 0). Der zweite Parameter ist die MAC-Adresse des
entfernten Geräts. Der dritte Parameter ist optional und gibt den Channel, der
genutzt werden soll, an. Bitte beachten Sie, dass das entfernte Gerät auf
eingehende Verbindungen warten muss, damit Sie eine Verbindung zu diesem
herstellen können. Sie können die Kommunikation zu jedem Moment beenden, indem
Sie STRG+C drücken.
Befehlsauflistung 5.7: Auf eingehende RFCOMM-Verbindungen hören |
# rfcomm listen 0 1
Waiting for connection on channel 1
|
Ähnlich wie der Verbindungsbefehl kann der "Listen"-Befehl zwei Parameter
empfangen. Der erste gibt das RFCOMM TTY Gerät an, in der Regel 0, welches zum
Annehmen einer Verbindung genutzt werden soll, während der zweite den Kanal,
der genutzt werden soll, spezifiziert.
Jedes Mal wenn Sie den rfcomm Befehl ausführen, können Sie ebenfalls
das physikalische Gerät, das Sie benutzen möchten, auswählen. Folgend ein
kleines Beispiel zu diesen beiden Befehlen.
Befehlsauflistung 5.8: RFCOMM-Verbindungen mit einem bestimmten physikalischem Gerät |
# rfcomm -i hci0 listen 0 1
Waiting for connection on channel 1
# rfcomm -i hci0 connect 0 00:0A:0B:0C:0D:0E 1
|
Ein PAN-Netzwerk aufbauen
Notiz:
Bitte beachten Sie, dass es optional ist, ein PAN-Netzwerk aufzubauen. Dieser
Teil beschreibt wie Sie einen Netzwerkzugangspunkt erstellen und zu diesem
verbinden, auch wenn das Aufsetzen eines Gruppen-Ad-Hoc-Netzwerks ähnlich
funktioniert.
|
Zu allererst brauchen wir das Modul bnep und müssen es laden.
Wahrscheinlich wollen wir, dass es bei jedem Start des Computers geladen wird.
Befehlsauflistung 5.9: Das Modul bnep laden |
# modprobe bnep
# echo "bnep" >> /etc/modules.autoload.d/kernel-2.6
|
Wir müssen den pand Deamon im Hostsystem starten, welcher das NAP bereit
stellen wird. Wir müssen spezifizieren, dass wir einen NAP-Dienst bereit stellen
und dass dieser Host der Master sein wird, so dass die anderen Hosts, die
Slaves, zu ihm verbinden können. Ein anderer möglicher Dienst ist GN, ein
Gruppen-Ad-Hoc-Netzwerk.
Befehlsauflistung 5.10: Den pand Daemon starten |
# pand --listen --role NAP --master --autozap
|
Nachdem wir das erledigt haben, haben wir einen hörenden Host, so dass die
anderen Hosts nur noch zu diesem verbinden müssen.
Befehlsauflistung 5.11: Zum Netzwerkzugangspunkt verbinden |
# pand --connect 00:0A:0B:0C:0D:0E --service NAP --autozap
|
Wenn alles glatt lief, können wir nun die IP-Adressen unserer Hosts einstellen.
Befehlsauflistung 5.12: bnep IP-Adressen-Konfiguration |
host0 # ifconfig bnep0 192.168.2.1
host1 # ifconfig bnep0 192.168.2.2
host0 # ifconfig bnep0
bnep0 Link encap:Ethernet HWaddr 00:0A:0B:0C:0D:0E
inet addr:192.168.2.1 Bcast:192.168.2.255 Mask:255.255.255.0
inet6 addr: fe80::210:60ff:fea3:cb41/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:5 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:208 (208.0 b) TX bytes:188 (188.0 b)
host1 # ifconfig bnep0
bnep0 Link encap:Ethernet HWaddr 00:01:02:03:04:05
inet addr:192.168.2.2 Bcast:192.168.2.255 Mask:255.255.255.0
inet6 addr: fe80::210:60ff:fea2:dd2a/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:5 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:208 (208.0 b) TX bytes:188 (188.0 b)
|
Zum Schluss können wir einen simplen Test durchführen, um zu sehen, dass unser
Netzwerk korrekt läuft.
Befehlsauflistung 5.13: IP-Ping zwischen bnep-Schnittstellen |
host1 # ping 192.168.2.1
PING 192.168.2.1 (192.168.2.1) 56(84) bytes of data.
64 bytes from 192.168.2.1: icmp_seq=1 ttl=64 time=34.0 ms
64 bytes from 192.168.2.1: icmp_seq=2 ttl=64 time=37.3 ms
--- 192.168.2.1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1000ms
rtt min/avg/max/mdev = 34.045/35.690/37.336/1.656 ms
|
6.
Desktopapplikationen für Bluetooth
Einführung
Wir haben einige wenige Bluetooth-Applikationen, die auf dem Desktop laufen.
Dieses Kapitel ist in 3 Teile geteilt, einen Teil für Gnome, einen für KDE und
einen für andere Applikationen.
Für Gnome
Wenn Sie ein Gnome-User sind, werden Sie höchst wahrscheinlich
gnome-bluetooth benutzen. Dies stellt die meisten
Standardfunktionalitäten zur Verfügung, wie Sie folgend erkennen können.
-
gnome-bluetooth-manager: Entfernte Bluetooth-Geräte verwalten.
-
gnome-obex-send: Dateien zu anderen Geräten senden.
-
gnome-obex-server: Dateien empfangen.
Befehlsauflistung 6.1: gnome-bluetooth installieren |
# emerge gnome-bluetooth
|
Dies fügt Menüeinträge unter Applikationen > Systemwerkzeuge hinzu, von wo
aus Sie einfach den Manager, Dateiübertragungen zwischen den Geräten usw.
starten können.
Um Dateien zu übertragen (der einfache Weg):
-
Vom Telefon zum Computer - Senden Sie die Datei vom Telefon via Bluetooth
zum Computer und es wird automatisch in ihrem /home
Verzeichnis gespeichert.
gnome-phone-manager ist eine elegante Applikation, welche Sie benutzen
können, um Nachrichten von und zu Ihrem Telefon zu empfangen oder zu versenden.
Sie müssen Ihr Telefon nicht anfassen, da dies automatisch durch die
Applikation gehandhabt wird. Sie werden ebenfalls auf ihrem Bildschirm über
neue Nachrichten informiert, wenn dies in den Einstellungen aktiviert ist.
Befehlsauflistung 6.2: gnome-phone-manager installieren |
# emerge gnome-phone-manager
|
Für KDE
KDE benutzt kdebluetooth und stellt mehr Dienstprogramme als sein
Gnome-Gegenstück zur Verfügung, wie sie folgend sehen können.
-
kbluetoothd: Bluetooth Meta Server.
-
kbtsearch: Bluetooth Gerät/Dienste Suche.
-
khciconfig: KDE Bluetooth Monitor.
-
kioclient: KIO Kommandozeilenclient.
-
qobexclient: Schweizer Taschenmesser für obex Tests/Entwicklung.
-
kbtobexclient: Eine KDE Bluetooth Framework Applikation.
- kioobex_start
- kbtserialchat
-
kbemusedsrv: KDE Bemused Server.
-
kbtobexsrv: KDE OBEX Push Server für Bluetooth.
-
kbluepin: Eine KDE KPart Applikation.
-
auth-helper: Eine Hilfssoftware für kbtobexsrv, welche eine
Authentifikationsanfrage für einen angegebenen ACL-Link sendet.
Befehlsauflistung 6.3: kdebluetooth installieren |
# emerge kdebluetooth
|
Andere interessante Applikationen
-
app-mobilephone/obexftp: Dateitransfer über OBEX-Mobiltelefone
-
app-mobilephone/bemused: Bemused ist ein System, welches Ihnen
erlaubt, Ihre Musiksammlung auf Ihrem Mobiltelefon via Bluetooth
zu kontrollieren.
-
app-pda/multisync:
Multisync erlaubt Ihnen, Ihre Kontakte, Ihren Kaldnereinträge und Notizen
von Ihrem Mobiltelefon mit Ihrem Computer über eine Bluetooth-Verbindung
zu synchroniniseren. Es beinhaltet Features, wie z.B. die Erstellung von
Backups dieser Informationen und die Wiederherstellung solcher und die
Synchronisierung mit dem Email-Client Evolution. Sie benötigen das
USE-Flag irmc, um sicherzustellen, dass multisync Bluetooth
unterstützt.
-
net-wireless/opd und net-wireless/ussp-push sind
Kommandozeilentools (Server und Client), die zum Versenden von Dateien zu
Ihrem Mobiltelefon genutzt werden können.
7.
Danksagungen
Besonderen Dank an Marcel Holtmann
für seine Zeit und seinen Einsatz für die Bluetooth-Entwicklung und für
die Durchsicht dieses Leitfadens. Außerdem großen Dank an
Douglas Russell für die Durchführung
spezieller Hardwaretests und für die Verbesserung dieses Leitfadens.
Die Inhalte dieses Dokuments sind unter der Creative Commons -
Namensnennung / Weitergabe Lizenz lizenziert.
|