(This is a German article from my old homepage.)
Einführung
BlueTooth ist ein Standard zur Datenübertragung per Funk, speziell ausgelegt für geringe Reichweiten. Diese Technologie ermöglicht direkte drahtlose Kommunikation zwischen Handys und Headsets, aber auch zwischen PDAs bzw. Notebooks und Handys. Letztere können dann als Modem zur Internet-Anbindung im Mobilfunknetz verwendet werden.
Für den LinuxKernel gibt es für BlueTooth ein Treiberpaket namens
Bluez. Bluez ist inzwischen Bestandteil gängiger Linux-Distributionen.
Um einen PC oder Notebook BT-fähig zu machen, eignen sich USB-Dongles am besten. Dies sind kleine Stecker für den USB-Port, die die ganze nötige Hardware enthalten. Es sind aber auch PCMCIA-Karten erhältlich und viele Laptops wie der Lenovo R52 haben BT auch bereits eingebaut.
Welche BT-Geräte unter Linux unterstützt werden, können Sie bei Marcel Holtmann nachlesen.
Installation
Bei allen Distributionen ist BlueTooth-Unterstützung inzwischen bereits im mitgelieferten Standard-Kernel integriert.
Neben den Kernelmodulen sind ggf. noch die folgenden Pakete zu installieren:
- bluez-libs
- bluez-utils
- bluez-sdp
- bluez-pan
Sind in der jeweiligen Linux-Distribution die aktuellen Pakete nicht enthalten, ist der Download von der Bluez-Website sinnvoll.
Inbetriebnahme
Konfiguration und Starten des HCI-Daemons
Der "Bluetooth Host Controller Interface"-Daemon (hcid) ist der zentrale BT-Dienst.
Seine Konfiguration ist in der Datei /etc/bluetooth/hcid.conf abgelegt.
Der hcid wird von root mit einem der Kommandos
$ /etc/init.d/hcid start $ /etc/init.d/bluez-utils start
aktiviert. Nach Änderungen an der Konfiguration muss er mit dem Argument "restart" statt "start" neu initialisiert werden.
Erster Test
Mit dem Kommando hcitool scan
sucht der Rechner nach erreichbaren BT-Geräten. Ein BT-fähiges Handy (zB Nokia 6310, Ericson T68i) sollte hierzu mit aktiviertem BT-Empfang bereitliegen. Andere BT-Geräte wie zB ein Headset sollten vom Handy abgekoppelt sein, um Störungen zu vermeiden. Als Ausgabe liefert hcitool scan
eine Liste der gefundenen Geräte mit einer Geräteadresse und ihrem Namen:
Scanning ... 00:60:48:6D:5A:D3 Nokia 6310i
BT-Handy als Modem verwenden
Konfiguration des hcid
Für die Nutzung eines BT-Geräts als Modem (z.B. ein UMTS-Handy) ist es wichtig, im device-Block die richtige Geräteklasse zu setzen:
class 0x100100;
Kopplung
Das Kommando
$ rfcomm bind 0 00:60:48:6D:5A:D3
öffnet eine Verbindung vom Rechner zum Handy ("Pairing", s.u.) anhand dessen Geräteadresse.
Eine feste Zuordnung der Geräte erfolgt in /etc/bluetooth/rfcomm.conf
. Damit wird direkt beim Zugriff auf die Gerätedatei (i.d.R. /dev/rfcomm0
) die Kopplung ausgelöst.
rfcomm0 { bind yes; # Bluetooth address of the phone device 00:12:D1:7D:33:A9; # RFCOMM channel for the connection channel 2; # Description of the connection comment "UMTS dial-up"; }
Pairing
Beim "Pairing" nehmen den beiden Geräte Kontakt miteinander auf. Beim Erstkontakt muss sich der Rechner mit einer mindestens vierstelligen PIN-Nummer authentifizieren.
Die PIN-Nummer muss in der Datei /etc/bluetooth/pin
abgelegt werden.
In KDE eignet sich zur Abfrage der PIN am besten das Programm kbluepin, das in /etc/bluetooth/hcid.conf
wie folgt eingetragen werden muss:
pin_helper /usr/lib/kdebluetooth/kbluepin
Den Erstkontakt löst man einfach durch ein kurzes Modemkommando aus:
$ echo "ATZ" > /dev/rfcomm0
Nun ist auf dem Handy die PIN einzugeben. Für die Zukunft erspart man sich die Eingabe, indem man die erfolgreiche Paarung im Handy speichern lässt. Dies geschieht bei manchen Handies (Nokia 6310) automatisch, bei anderen (Ericsson T68i) muss es manuell im Menü ausgewählt werden.
Internet-Anbindung
Ist das Pairing erst einmal vollzogen, kann /dev/rfcomm0
wie eine gewöhnliche Modem-Schnittstelle genutzt werden. Mit den üblichen Mitteln kann also darüber eine PPP-Verbindung ins Internet aufgebaut werden.
In Ubuntu Linux habe ich für den UMTS-Zugang in /etc/ppp/peers/umts
folgende Daten abgelegt:
hide-password noauth connect "/usr/sbin/chat -v -f /etc/chatscripts/umts" debug /dev/rfcomm0 460800 defaultroute noipdefault user "vodafone" remotename nokia-e61 ipparam nokia-e61 usepeerdns
Das passende Chatscript liegt in /etc/chatscripts/umts
:
# ispauth PAP # abortstring ABORT BUSY ABORT 'NO CARRIER' ABORT VOICE ABORT 'NO DIALTONE' ABORT 'NO DIAL TONE' ABORT 'NO ANSWER' ABORT DELAYED # modeminit '' "ATZ" OK "AT+CGDCONT=1,42IP42,42web.vodafone.de42" # ispnumber OK-AT-OK "ATDT*99***1#" # ispconnect CONNECT dc # prelogin # ispname # isppassword # postlogin
"web.vodafone.de" ist dabei der "Access Point Name", der von Provider zu Provider unterschiedlich ist.
Da ein Login nicht notwendig ist, habe ich in /etc/ppp/pap-secrets
für Benutzername und Passwort Dummywerte eingetragen:
"vodafone" nokia-e61 "password"
Eine UMTS-Verbindung kann nun ganz einfach mit dem Kommando pon umts
auf- und mit poff
wieder abgebaut werden.
Vernetzung
Mittels der "Private Area Network"-Funktion (PAN) können Rechner per Funk vernetzt werden. Dazu wird mit dem Kommando
$ pand -s -r NAP -M
ein Rechner zum "Network Access Point" und "Master" ernannt, der zunächst auf den Verbindungsaufbau durch die Gegenstation wartet. Diese baut die Verbindung zum Master anhand dessen Geräteadresse wie folgt auf:
$ pand --service NAP -b aa:bb:cc:dd:ee:ff
Man kann auch statt zu einer definierten Geräteadresse die Verbindung einfach zum erstbesten BT-Gerät aufbauen:
$ pand --service NAP -Q
Nach erfolgreichem Verbindungsaufbau existiert auf beiden Stationen ein neues Netzwerk-Interface namens bnep0
, das wie üblich mit ifconfig
konfiguriert werden kann:
$ ifconfig bnep0 192.168.0.1 netmask 255.255.255.0 broadcast 192.168.0.255 up
Spezielle BlueTooth-Geräte
AVM Blue Fritz! USB
Zur Anbindung ihrer BlueTooth-Produkte unter Linux hat AVM eine eigene FAQ-Sammlung online, bei SuSE findet sich eine zusätzliche Anleitung.