[ L T Net ] OPEN EVENTS :: OPEN MUSIC :: MINICONTENT :: KNOPPIX LINUXTAG.ORG EUROPAS GRÖSSTE GNU/LINUX MESSE UND KONFERENZ KONFERENZ DVD 2004 HAUPTSEITE VORTRÄGE BÜCHER HISTORY SOFTWARE KNOPPIX SPONSOREN ABSPAN Einblicke in Bluetooth unter Linux Marcel Holtmann BlueZ Project < m a r c e l @ h o l t m a n n. o r g > HAUPTSEITE // VORTRÄGE // EINBLICKE IN BLUETOOT Copyright 2004 by the Author(s) Dieser Beitrag ist lizensiert unter der UVM Lizenz für die freie Nutzung unveränderter Inhalte. Dieser Beitrag ist lizensiert unter der GNU General Public License. June 2004 Abstract // LinuxTag 2005 Besuchen Sie uns auch nächstes Jahr wieder auf dem LinuxTag 2005 im Karlsruher Messe und Kongresszentrum. Für nähere Details und den genauen Termin besuchen Sie bitte die LinuxTag Homepage. Das Jahr 2004 wird als das Jahr für den endgültigen Durchbruch der Bluetooth Technologie propagier Bluetooth aber schon mit dem Release des Kernel 2.4.6 am 3. Juli 2001 seinen Platz gefunden und w letzten zwei Jahren aktiv weiter entwickelt. Das aktuelle Linux Bluetooth Subsystem hat sich in der Pra schlägt mittlerweile die Brücke zu vielen anderen Subsystemem. In den meisten Fällen ist die Bluetoot hier nativ und transparent für den Endbenutzer integriert. Gute Beispiele hierfür sind das Linux CAPI, CUPS oder die OpenOBEX Library. Aber auch Applikationen wie Gnokii oder MultiSync zeigen wie ein Bluetooth unter Linux zu benutzen. Dieser Vortrag soll einen Überblick über den Bluetooth Protokoll S zeigen wie die Bluetooth Architekture unter Linux umgesetzt wurde. Neben den derzeit unterstützten P Profilen werden aber auch auf die Schnittstellen für Programmierer und Anwender vorgestellt, die das Subsystem so flexibel und einfach machen. Und natürlich darf auch kein Ausblick in die Zukunft fehlen BlueZ Projekt ruht sich nicht auf den derzeitigen Lorbeeren aus. Die Unterstützung von Bluetooth Eing Mäuse und Tastaturen, hat in den letzten zwei Monaten große Fortschritte gemacht und alle derzeit a erhältlichen HID Geräte werden unterstützt. Aber auch im Bereich der Audio und Videoübertragung ü gibt es viel "Bewegung" und mit dem Bluetooth 1.2 Standard kommen auch noch enige Neuerungen d jetzt schon von Linux unterstützt werden. Table of Contents Zusammenfassung Einleitung Die Bluetooth Architektur Der Aufbau des BlueZ Voraussetzungen für Bluetooth unter Linux Bluetooth Konfiguration Netzwerkverbindungen mit Bluetooth Drucken über Bluetooth Weitere Bluetooth Anwendungen Fazit Literatur Zusammenfassung Das Jahr 2004 wird als das Jahr für den endgültigen Durchbruch der Bluetooth Technologie propagier Bluetooth aber schon mit dem Release des Kernel 2.4.6 am 3. Juli 2001 Einzug gefunden und wurde drei Jahren kontinuierlich weiter entwickelt. Das aktuelle Linux Bluetooth Subsystem hat sich in der Pr 1/10
schlägt mittlerweile Brücken zu vielen anderen Teilbereichen von Linux. In den meisten Fällen ist Blue und transparent für den Endbenutzer integriert. Gute Beispiele sind das Linux CAPI, das Drucksystem OpenOBEX Library. Aber auch Applikationen wie Gnokii oder MultiSync zeigen wie einfach es ist Blue zu benutzen. Einleitung Die Bluetooth Technologie wurde im Mai 1998 angekündigt mit dem Ziel eine benutzerfreundliche Alte bestehenden Kabelverbindungen zu schaffen. Hierzu bedient sich Bluetooth einer universellen Funksc GHz ISM Band um portable Geräte wie Mobiltelefone, PDAs, Notebooks, Drucker etc. von unterschie Herstellern ohne Kabel miteinander zu verbinden. Doch Bluetooth ist mehr als ein reiner Kabelersatz. zunehmender Verbreitung kommen immer weitere Applikationen hinzu, deren Anwendung erst jetzt w erscheinen. Dies ist zum Beispiel die Kommunikation zwischen Handy und PDA zum Surfen oder zum Kontakten und Terminen (PIM Personal Information Management). Auch das direkte Übertragen von einen Drucker, ohne den Umweg über den PC, sowie die Möglichkeit Bluetooth für drahtlose LANs zu stellen weitere Anwendungen dar. Viele Einsatzgebiete von Bluetooth sind auch schon mit anderen Technologien, wie z.b. Infrarot, mögl die IrDA Schnittstelle eine geringere Reichweite und es ist immer eine direkte Sichtverbindung zwische notwendig. Hierdurch ergeben sich reine Punk zu Punkt Verbindungen und meisten ist die Kommunika Partner zur selben Zeit beschränkt. Bluetooth hingegen kann bis zu acht aktive Geräte in einem Picon und erfordert keinen Sichtkontakt zwischen den einzelnen Kommunikationspartnern. Moderne Bluetoo erlauben es sogar das ein Gerät Teilnehmer in zwei Piconetzen ist und somit als Bridge zwischen dies Diese Verbindung von zwei oder mehreren Piconetzen nennt man ein Scatternetz. Die ersten Schritte in Richtung Bluetooth Support für Linux wurden schon sehr früh unternommen. De Bluetooth Stack von der Firma Axis Communications wurde im April 1999 als Open Source veröffentlic folgte der BlueDrekar von IBM, wobei dieser nur in Form von Binary Only Modulen zur Verfügung steh der beiden Stacks war, daß sie zu sehr Character Devices fixiert sind. Da Bluetooth eine Technologie von Geräten bereit stellt, bietet sich aber eine Integration in den Network Layer von Linux an. Am 3. M der BlueZ Bluetooth Stack ( www.bluez.org ) von der Firma Qualcomm unter der GPL veröffentlicht. die Entwicklung war Maxim Krasnyansky und mit dem BlueZ gab es den ersten Linux Bluetooth Stack in den Linux Network Layer einfügte. Das Design war so überzeugend, das Linus Torvalds nur einen M und zwar am 8. Juni 2001, den BlueZ als offiziellen Linux Bluetooth Stack in den Linux Kernel 2.4.6 pr jedes andere Subsystem unter Linux wurde im Laufe der Zeit auch BlueZ immer weiterentwickelt, verb andere Subsysteme integriert. Die vierte frei verfügbare Bluetooth Implementierung für Linux ist der A Nokia Research Center in Helsinki. Dieser Stack erschien gut 6 Monate nach der Veröffentlichung von keine Chance mehr den etablierten Bluetooth Stack aus dem Linux Kernel zu ersetzen. Durch die groß der Community ist der BlueZ mittlerweile zu einem der stabilsten und besten Implementierung der Blu Spezifikation geworden. Die Bluetooth Architektur Beim Aufbau von Bluetooth kann man zwischen der Hardware, dem Host Stack und der Applikation un Hardware umfasst hierbei das Bluetooth Radio, Baseband und die Link Manager Implementierung. Zu das Host Controller Interface (HCI) benutzt, welches auch die Schnittstelle zwischen Hardware und definiert. Dazwischen liegt der Host Transport Driver. Dieser Treiber bestimmt, wie die HCI Komma 2/10
Datenpakete vom Host Stack zur Hardware und umgekehrt transportiert werden. Die zwei am häufigs Transport Spezifikationen sind HCI USB (aka H:2) für USB Adapter und HCI UART (aka H:4) für serie Module. Darüber hinaus gibt es aber auch herstellerspezifische Formate für z.b. PCMCIA und Compa Der bekannteste Vertreter ist hier das BCSP von Cambridge Silicon Radio. Der Bluetooth Host Stack abstrahiert von dem doch sehr hardwarenahen HCI und benutzt dazu das L Control and Adaptation Protocol (L2CAP). Der HCI Layer ist eng an die Paketgrößen des Baseband mit dem Segmentation and Reassembly (SAR) Mechanismus wird diese Beschränkung aufgehoben L2CAP auch einen verbindungsorientierten und einen verbindungslosen Datenkanal mit Protocol and Multiplexing (PSM) zur Verfügung. Hierdurch ist es höherwertigen Protokollen und Applikationen mög Datenpakete mit einer Größe von 64 KB zu senden und zu empfangen. Die Bluetooth 1.2 Spezifikatio L2CAP Schicht um Flow und Errorcontrol. Alle Protokolle über L2CAP stellen eine Verbindung zu Applikationen oder zu Subsysteme des Betrieb Zwar ist auch ein direkter Datenaustausch über den L2CAP Layer möglich, aber generell wird immer n Protokoll benutzt, das die Daten aus den höherwertigen Schichten optimal für den Transport über L2C Der bekannteste Vertreter ist hier das Bluetooth Network Encapsulation Protocol, welches IP Pak ähnliche Frames verpackt um diese dann mit möglichst geringen Overhead über L2CAP zu senden. Der eigentliche Bluetooth Host Stack besteht nur aus zwei Protokollebenen. Zum einen ist das die L2C zum anderen die Verbindungsschicht zu den Applikationen bzw. zu anderen Subsystemen. Die andere sind etablierte Protokollsuiten, welche für die Benutzung über Bluetooth adaptiert wurden. Als promine wären hier TCP/IP und OBEX zu nennen. Moderne Bluetooth Chips bieten genügend Rechenleistung um Applikationen direkt auf dem Bluetooth ablaufen zu lassen. Hierdurch wird dann kein zusätzlicher Microcontroller benötigt. In solchen Embedd befinden sich alle Ebenen des Bluetooth Stacks in einem Modul. Da der Speicher bei diesen Systemen ist, verzichtet man im allgemeinen auf den HCI Layer und benutzt einen L2CAP Layer, der direkt mit d Manager die Daten austauscht. Der Aufbau des BlueZ Die Hauptkomponenten des Bluetooth Stack von Linux sind direkt im Kernel implementiert. Dazu integ in das Network Subsystem und stellt eine eigene Adress und Protokollfamilie zur Verfügung. Als Schn Applikationen wird das Standard BSD Socket Interface benutzt. Dieses grundlegende Designkonzept m Stack sehr flexibel und es ist einfach die Bluetooth Technologie in eigene Applikationen einzubinden. F Benutzung von unterschiedlichen Bluetooth Adaptern wird eine vollständige Hardwareabstraktion zur V gestellt. Hiermit ist das Entwickeln von speziellen Hardwaretreibern sehr einfach. Der Bluetooth Core Layer unterstützt bis zu 16 Adapter gleichzeitig und derzeit sind über 200 verschie Adapter bekannt, die durch einen der Host Treiber unterstützt werden. Auf den BlueZ Webseiten wird 3/10
wachsende Liste der unterstützten Hardware zur Verfügung gestellt. Neben der Hardwareabstraktion (dem HCI Layer) sind noch weitere Bluetooth Protokolle als Kernel Co dem Logical Link Control and Adaptation Protocol wird unter Linux ein BSD Socket Interface mit S Eigenschaften zur Verfügung gestellt. Durch die Bluetooth 1.2 Spezifikation wird hier auch ein Stream Zugriff zwischen zwei Bluetooth Geräten möglich sein. Der RFCOMM Layer stellt die Emulation der seriellen Schnittstelle über Bluetooth dar. Dieses so gena Replacement for Legacy Applications bietet unter Linux zwei Schnittstellen an. Zum einen ist das a BSD Socket Interface, aber diesmal mit Stream Eigenschaften. Zum anderen gibt es eine Verbindung Layer, so das man für den seriellen Port geschriebene Applikationen ohne den Quellcode zu veränder Bluetooth benutzen kann. Über diese Terminal Emulation kann man dann mit Hilfe des Point to Point auch Netzwerkverbindungen aufbauen. Das Bluetooth Network Encapsulation Protocol (BNEP), das CAPI Message Transport Protocol Human Interface Device Protocol (HIDP) sind reine Transport Protokolle, die die Verbindungen zum zum CAPI Layer und zum HID Treiber von Linux herstellen. Die Hauptaufgabe dieser drei Protokolle is Datenpakete der jeweils höherwertigen Schicht, möglichst ohne viel Overhead und mit einer geringen L2CAP zu transportieren. Neben den vorgestellten Protokollschichten, die als Kernel Module realisiert wurden, sind alle anderen Protokolle in Form von Libraries oder direkt in den Applikationen implementiert. Das Service Discove (SDP) ist eine eigenständige Library, die auf dem L2CAP Layer als Transportmedium aufsetzt und der OBEX Support ist Teil der OpenOBEX Library ( openobex.sf.net ). Voraussetzungen für Bluetooth unter Linux Alle Linux Distribution bringen mittlerweile einen für Bluetooth vorbereiteten Kernel und auch die notwe vorkompilierten Pakete mit. Setzt man einen selbstkompilierten Linux Kernel ein, dann sollte man folge unter Bluetooth subsystem aktivieren: < M > B l u e t o o t h s u b s y s t e m s u p p o r t < M > L 2 C A P p r o t o c o l s u p p o r t < M > S C O l i n k s s u p p o r t < M > R F C O M M p r o t o c o l s u p p o r t [ * ] R F C O M M T T Y s u p p o r t < M > B N E P p r o t o c o l s u p p o r t [ * ] M u l t i c a s t f i l t e r s u p p o r t [ * ] P r o t o c o l f i l t e r s u p p o r t < M > C M T P p r o t o c o l s u p p o r t < M > H I D P p r o t o c o l s u p p o r t B l u e t o o t h d e v i c e d r i v e r s - - - > < M > H C I U S B d r i v e r [ ] S C O ( v o i c e ) s u p p o r t < M > H C I U A R T d r i v e r [ * ] U A R T ( H 4 ) p r o t o c o l s u p p o r t [ * ] B C S P p r o t o c o l s u p p o r t [ ] T r a n s m i t C R C w i t h e v e r y B C S P p a c k e t < M > H C I B C M 2 0 3 x U S B d r i v e r < M > H C I B l u e F R I T Z! U S B d r i v e r 4/10
< M > H C I D T L 1 ( P C C a r d ) d r i v e r < M > H C I B T 3 C ( P C C a r d ) d r i v e r < M > H C I B l u e C a r d ( P C C a r d ) d r i v e r < M > H C I U A R T ( P C C a r d ) d e v i c e d r i v e r < M > H C I V H C I ( V i r t u a l H C I d e v i c e ) d r i v e r Natürlich sind die Kernel Module nicht alles, was zum Betrieb von Bluetooth unter Linux notwendig ist. von BlueZ ist im Userspace implementiert. Um die Bluetooth Technologie zu benutzen, werden die Blu die Utilities benötigt. Entweder kompiliert man diese aus den Sourcen oder man installiert einfach die P Distribution. Ab der Version 2.7 sind keine weiteren BlueZ Pakete notwendig. Alle Libraries und Applika diesen beiden Paketen untergebracht sind. Da BlueZ sich in den Network Layer integriert, ist es eigentlich nicht notwendig irgendwelche zusätzlich Nodes anzulegen. Erst beim Einsatz der RFCOMM Terminal Emulation werden diese benötigt. Wer un Kernel mit udev arbeitet braucht sie hier keine Sorgen zu machen. Alle notwendigen Integrationen in d von Linux sind vorhanden und die Device Nodes werden bei Bedarf automatisch angelegt. Unter Linux der Fall. Hier muss man das von Hand erledigen, wenn die eingesetzte Linux Distribution dies noch nic den BlueZ Utilities gibt es das Script create_dev, das genau diese Aufgabe erledigt. In der Regel wer Grundvoraussetzungen von jeder Linux Distribution heutzutage erfüllt und man kann eigentlich gleich Bluetooth benutzen. Bluetooth Konfiguration Nach dem Einstecken eines USB Adapters oder einer PCMCIA Karte sollte ein Aufruf von hciconfig d Gerät anzeigen: # h c i c o n f i g h c i 0 : T y p e : U S B B D A d d r e s s : 0 0 : 0 0 : 0 0 : 0 0 : 0 0 : 0 0 A C L M T U : 0 : 0 S C O M T U : 0 : 0 D O W N R X b y t e s : 0 a c l : 0 s c o : 0 e v e n t s : 0 e r r o r s : 0 T X b y t e s : 0 a c l : 0 s c o : 0 c o m m a n d s : 0 e r r o r s : 0 Dieses hci0 Gerät ist, wie eine Netzwerkkarte, noch unkonfiguriert und inaktiv. Um es zu aktivieren, m Kommando hciconfig hci0 up ausgeführt werden. Danach sollte ein weiterer Aufruf von hciconfig a aktiv anzeigen. # h c i c o n f i g - a h c i 0 : T y p e : U S B B D A d d r e s s : 0 0 : 0 4 : 3 E : 2 8 : 0 9 : 2 D A C L M T U : 6 7 8 : 7 S C O M T U : 1 2 0 : 1 2 U P R U N N I N G P S C A N I S C A N R X b y t e s : 1 0 1 a c l : 0 s c o : 0 e v e n t s : 1 3 e r r o r s : 0 T X b y t e s : 3 0 0 a c l : 0 s c o : 0 c o m m a n d s : 1 3 e r r o r s : 0 F e a t u r e s : 0 x f f 0 x f f 0 x 0 5 0 x f 8 0 x 1 b 0 x 1 8 0 x 0 0 0 x 8 0 P a c k e t t y p e : D M 1 D M 3 D M 5 D H 1 D H 3 D H 5 H V 1 H V 2 H V 3 L i n k p o l i c y : R S W I T C H H O L D S N I F F P A R K L i n k m o d e : S L A V E A C C E P T N a m e : ' M a t s u s h i t a B l u e t o o t h M o d u l e ' C l a s s : 0 x 1 c 0 1 0 c S e r v i c e C l a s s e s : R e n d e r i n g, C a p t u r i n g, O b j e c t T r a n s f e r D e v i c e C l a s s : C o m p u t e r, L a p t o p H C I V e r : 1. 2 ( 0 x 2 ) H C I R e v : 0 x b 6 L M P V e r : 1. 2 ( 0 x 2 ) L M P S u b v e r : 0 x 3 5/10
M a n u f a c t u r e r : Z e e v o, I n c. ( 1 8 ) Nun sind die Bluetooth Adresse und auch der Chip Hersteller zu erkennen. Dieses Device kann jetzt b um nach anderen Bluetooth Geräten in der Umgebung zu suchen. Außerdem ist es auch für andere G Mit dem Programm hciconfig können alle grundlegenden Einstellungen vorgenommen werden. Es ist Namen und auch die Geräteklasse, wie z.b. Desktoprechner oder Laptop, zu verändern. Diese Konfig aber nicht jedes Mal von Hand ausgeführt werden, sondern kann mit Hilfe des hcid automatisch gesc Datei /etc/bluetooth/hcid.conf werden die grundlegenden Einstellungen für die Bluetooth Geräte fest jedes neue Gerät wird dann mit diesen Eigenschaften konfiguriert und automatisch aktiviert. Der hcid wird normalerweise direkt beim Systemstart aus dem Script /etc/init.d/bluetooth gestartet u Zeit aktiv. Neben der Gerätekonfiguration ist im hcid auch der Security Manager integriert, der die Pin vornimmt und den Austausch der Linkschlüssel verwaltet. Ab der Version 2.6 der BlueZ Utilities beste Möglichkeit ein D Bus fähigen Pin Helper zu benutzen. Weitere Informationen hierzu sind in der Manp finden. Um nun den ersten Kontakt zur Außenwelt aufzunehmen, benutzt man das Programm hcitool. Ein e von hcitool scan sucht nach allen verfügbaren Bluetooth Geräten in der näheren Umgebung und zeig Bluetooth Adresse und dem Namen an: # h c i t o o l s c a n S c a n n i n g... 0 0 : 8 0 : 3 7 : 2 5 : 5 5 : 9 6 P i c o P l u g 0 0 : E 0 : 0 3 : 0 4 : 6 D : 3 6 N o k i a 6 2 1 0 0 0 : 9 0 : 0 2 : 6 3 : E 0 : 8 3 B l u e t o o t h P r i n t e r 0 0 : 0 6 : C 6 : C 4 : 0 8 : 2 7 A n y c o m L A P 0 0 : 0 6 : C 6 : C 4 : 0 8 : 2 7 0 0 : 0 4 : 0 E : 2 1 : 0 6 : F D B l u e t o o t h I S D N A c c e s s P o i n t 0 0 : A 0 : 5 7 : A D : 2 2 : 0 F E L S A V i a n e c t B l u e I S D N 0 0 : 8 0 : 3 7 : 0 6 : 7 8 : 9 2 E r i c s s o n T 3 9 m 0 0 : 0 1 : E C : 3 A : 4 5 : 8 6 H B H - 1 0 Ausgestattet mit diesen Informationen ist es nun möglich, die Services der einzelnen Geräte zu ermitt Verbindungen zu definieren und aufzubauen. Bei neuen und unbekannten Geräten hilft das Programm unterstützten Services abzufragen: # s d p t o o l b r o w s e 0 0 : E 0 : 0 3 : 0 4 : 6 D : 3 6 B r o w s i n g 0 0 : E 0 : 0 3 : 0 4 : 6 D : 3 6... S e r v i c e N a m e : D i a l - u p n e t w o r k i n g S e r v i c e R e c H a n d l e : 0 x 1 0 0 0 0 S e r v i c e C l a s s I D L i s t : " D i a l u p N e t w o r k i n g " ( 0 x 1 1 0 3 ) " G e n e r i c N e t w o r k i n g " ( 0 x 1 2 0 1 ) P r o t o c o l D e s c r i p t o r L i s t : " L 2 C A P " ( 0 x 0 1 0 0 ) " R F C O M M " ( 0 x 0 0 0 3 ) C h a n n e l : 1 P r o f i l e D e s c r i p t o r L i s t : " D i a l u p N e t w o r k i n g " ( 0 x 1 1 0 3 ) V e r s i o n : 0 x 0 1 0 0 S e r v i c e N a m e : F a x S e r v i c e R e c H a n d l e : 0 x 1 0 0 0 1 6/10
S e r v i c e C l a s s I D L i s t : " F a x " ( 0 x 1 1 1 1 ) " G e n e r i c T e l e p h o n y " ( 0 x 1 2 0 4 ) P r o t o c o l D e s c r i p t o r L i s t : " L 2 C A P " ( 0 x 0 1 0 0 ) " R F C O M M " ( 0 x 0 0 0 3 ) C h a n n e l : 1 P r o f i l e D e s c r i p t o r L i s t : " F a x " ( 0 x 1 1 1 1 ) V e r s i o n : 0 x 0 1 0 0 Die oben aufgelistete Ausgabe zeigt einen Dial up networking und einen Fax Service an, welche jew RFCOMM Verbindung auf dem Kanal 1 benötigen. Diese notwendige Verbindung kann mit dem Progr aufgebaut werden. # r f c o m m c o n n e c t 0 0 0 : E 0 : 0 3 : 0 4 : 6 D : 3 6 1 C o n n e c t e d / d e v / r f c o m m 0 t o 0 0 : E 0 : 0 3 : 0 4 : 6 D : 3 6 o n c h a n n e l 1 P r e s s C T R L - C f o r h a n g u p Hierbei wird nun das Terminal Device /dev/rfcomm0 mit dem RFCOMM Kanal 1 auf dem Gerät 00:E0 verbunden und kann danach von jedem anderen Programm wie ein normales Modem benutzt werden notwendig, /dev/ttys0 oder /dev/modem durch /dev/rfcomm0 in der Konfiguration des Einwahlprogra ersetzen. Nach dem Drücken der Tastenkombination CTRL C wird die RFCOMM Verbindung zum Blu wieder beendet. Bei einer regelmäßigen Benutzung ist es sinnvoll, ein Terminal Device fest an ein Ger Beim Öffnen des Devices wird dann automatisch die Verbindung hergestellt und beim Schließen wiede Dieses Binden von Devices geschieht mit folgendem Befehl: # r f c o m m b i n d 0 0 0 : E 0 : 0 3 : 0 4 : 6 D : 3 6 1 Die Syntax dieses Kommandos ist identisch mit dem RFCOMM connect Befehl. Eine Liste aller gebu kann mit rfcomm a angezeigt werden. # r f c o m m - a r f c o m m 0 : 0 0 : E 0 : 0 3 : 0 4 : 6 D : 3 6 c h a n n e l 1 c l o s e d r f c o m m 1 : 0 0 : 8 0 : 3 7 : 0 6 : 7 8 : 9 2 c h a n n e l 1 c l e a n Mit dem Kommando rfcomm release 0 wird die Bindung von /dev/rfcomm0 wieder entfernt. Um die Benutzung schon bekannter Bluetooth Geräte noch einfacher zu gestalten, können diese Bind der Konfigurationsdatei /etc/bluetooth/rfcomm.conf eingetragen werden: r f c o m m 0 { # B l u e t o o t h a d d r e s s o f t h e d e v i c e d e v i c e 0 0 : E 0 : 0 3 : 0 4 : 6 D : 3 6 ; } # C h a n n e l f o r t h e c o n n e c t i o n c h a n n e l 1 ; 7/10
Für alle eingetragenen Terminal Devices kann man nun Verbindungen ohne Angabe der Bluetooth Ad Ein rfcomm bind all bindet alle Geräte aus der Konfigurationsdatei an die entsprechenden Devices u somit für den Aufruf aus dem /etc/init.d/bluetooth Skript. Netzwerkverbindungen mit Bluetooth Um Netzwerkverbindungen zwischen zwei oder mehreren Bluetooth Geräten aufzubauen, gibt es gen Möglichkeiten. Die LAN Access using PPP Methode benutzt das Point to Point Protocol über die R Terminal Devices, während PAN auf das Bluetooth Network Encapsulation Protocol aufsetzt. Unte beide Möglichkeiten eingesetzt werden. Für das ältere LAN Access using PPP kommt das Programm Einsatz. Eine einfache Verbindung zu einem Access Point kann folgendermaßen etabliert werden: # d u n d - - c o n n e c t 0 0 : 0 6 : C 6 : C 4 : 0 8 : 2 7 Durch den großen Overhead an Protokollinformationen sind die Netzwerkverbindungen mit PPP über besonders schnell. Man verschwendet einen großen Anteil des Datendurchsatzes mit unnötigen Inform dem Bluetooth Network Encapsulation Protocol wird die Performance deutlich verbessert. Hier wir pand benutzt, welches die gleiche Syntax wie dund besitzt. Für eine PAN Verbindung zu einem ander Rechner oder Access Point reicht folgendes Kommando aus: # p a n d - - c o n n e c t 0 0 : 0 6 : C 6 : C 4 : 0 8 : 2 7 Bei einer erfolgreichen Verbindung zeigt dann der Befehl ifconfig a ein bnepo Interface an, welches Netzwerkkarte benutzt und konfiguriert werden kann: # i f c o n f i g - a b n e p 0 L i n k e n c a p : E t h e r n e t H W a d d r 0 0 : 0 6 : C 6 : C 4 : 0 8 : 2 7 B R O A D C A S T M U L T I C A S T M T U : 1 5 0 0 M e t r i c : 1 R X p a c k e t s : 0 e r r o r s : 0 d r o p p e d : 0 o v e r r u n s : 0 f r a m e : 0 T X p a c k e t s : 0 e r r o r s : 0 d r o p p e d : 0 o v e r r u n s : 0 c a r r i e r : 0 c o l l i s i o n s : 0 t x q u e u e l e n : 1 0 0 R X b y t e s : 4 ( 4. 0 b ) T X b y t e s : 0 ( 0. 0 b ) Nach dem manuellen Setzen einer IP Adresse oder der Benutzung von DHCP kann man über dieses mit Hilfe von TCP/IP austauschen. Da sich BNEP unter Linux wie eine Netzwerkkarte verhält, kann ma Methoden, wie das Bridging oder Network Address Translation (NAT), benutzen, um die TCP/IP P Netze weiterzuleiten. In dem BlueZ PAN HOWTO und auf den Webseiten des Projektes findet man we Tipps zur Konfiguration und Installation von Bluetooth und Netzwerken unter Linux. Eine weitere Art von Netzwerken bzw. Dialup Verbindungen über Bluetooth ist mit dem Common ISD möglich. Hierbei werden ISDN fähige Bluetooth Geräte direkt als CAPI Devices eingebunden. Die Ger BlueFRITZ! Serie von AVM unterstützen dieses neue Profil bereits. Über die Bluetooth Luftschnittstelle CAPI Message Transport Protocol zum Einsatz, welches den Transport von CAPI Nachrichten über Für Linux gibt es ein Kernel Modul, das es erlaubt, diese Geräte wie jede andere fest eingebaute ISDN anzusprechen. Ein Verbindung zu einem CIP Gerät erfolgt mit dem Programm ciptool. # c i p t o o l c o n n e c t 0 0 : 0 4 : 0 E : 2 1 : 0 6 : F D Wenn alles erfolgreich verlaufen ist, wird das Programm capiinfo einen neuen ISDN Controller und de Leistungsmerkmale anzeigen. Das so über Bluetooth eingebundene ISDN Gerät kann nun mit dem CA 8/10
pppd für die Einwahl ins Internet oder für den Aufbau eines Netzwerkes benutzt werden. Drucken über Bluetooth Die Version 2.7 der BlueZ Utilities enthält ein CUPS Backend, das es ermöglicht Bluetooth Drucker od Druckeradapter anzusprechen. Die ersten auf dem Markt erhältlichen Drucker unterstützen nur das D Serial Port Profile. Da man auch hier RFCOMM als Protokoll eingesetzt hat, wurde unnötig Bandbre verschwendet. Die Bluetooth SIG hat hier, genau wie mit BNEP, nachgebessert und das Hardcopy C Replacement Profile (HCRP) entwickelt. Die Definition von HCRP ist relativ allgemein gehalten, aber Haupteinsatzgebiet sind Bluetooth Drucker und Scanner. Die Einbindung eines Bluetooth Druckers ist sehr einfach und muß nur einmal durchgeführt werden. H wichtig, das man die Adresse des Druckers kennt. Diese muss dann in eine URI umgeformt und CUPS mitgeteilt werden. Eine gültige URI sieht z.b. so aus: b l u e t o o t h : / / 0 0 9 0 0 2 6 3 E 0 8 3 / Hier wird der Drucker 00:90:02:63:E0:83 angesprochen und beim Angeben der URI lässt man einfach Doppelpunkte der Bluetooth Adresse weg. BlueZ unterstützt sowohl das Drucken über RFCOMM als a Es wird automatisch erkannt welches der beiden Profile unterstützt wird. Bietet ein Gerät beide Dienst HCRP ausgewählt. Weitere Bluetooth Anwendungen Die Einbindung von Bluetooth Eingabegeräten, wie z.b. Maus und Tastatur, ist derzeit noch in der Ent Es existiert das Programm bthid mit dem man diese Geräte schon jetzt sehr gut unter Linux benutzen Zukunft sollen diese Geräte mit Hilfe eines generischen HID Treibers im Linux Kernel direkt unterstütz BlueZ Utilities 2.7 enthalten hierzu schon den Code eines ersten Prototypen, für dessen Einsatz ist ab Kernel und ein zusätzlicher Patch notwendig. Eine andere sehr erfolgreiche Applikation ist MultiSync ( www.multisync.org ). Hiermit ist es möglich Kalenderdaten zwischen verschiedenen Systemen drahtlos über Bluetooth zu synchronisieren. Es wer Mobiltelefone, PDAs mit Windows Betriebssystem oder Open Palmtop Integrated Environment (OP Durch den modularen Aufbau ist es sehr einfach MultiSync mit eigenen Plugins zu erweitern. Das Gnokii Project ( www.gnokii.org ) demonstriert sehr deutlich, wie einfach es ist, vorhande Applik Bluetooth Support auszustatten. Der Anteil an Bluetooth spezifischen Code ist sehr gering, aber das R Mobilität dafür um so größer. Fazit Mit Hilfe von Bluetooth werden die lästigen Kabel bald der Vergangenheit angehören. Durch die native den Linux Kernel und die auf BSD Sockets basierenden API entstehen ungeahnte Möglichkeiten zur N Bluetooth Technologie. Mit den RFCOMM Sockets hat man z.b. eine TCP ähnliche Infrastruktur und k Client/Server Systeme aus dem Netzwerkbereich für eine Kommunikation über Bluetooth portieren. D können auf einfache Art und Weise vorhandene Programme oder Libraries mit Bluetooth Funktionalitä werden. Mit dem GNOME Bluetooth Subsystem und dem KDE Bluetooth Framework gibt es zwei Projekte, BlueZ, den einfachen und grafischen Zugang zur Bluetooth Welt eröffnen wollen. Für die Zukunft sehe Literatur 1. Special Interested Group Bluetooth: Bluetooth Core Specification v1.2, 5. November 2003, http://www.bluetooth.org/spec/ 9/10
2. Special Interested Group Bluetooth: Bluetooth Network Encapsulation Protocol Specification 2003, http://www.bluetooth.org/spec/ 3. Special Interested Group Bluetooth: Common ISDN Access Profile, 16. November 2002, http://www.bluetooth.org/spec/ 4. Infrared Data Association (IrDA): Object Exchange Protocol OBEX, Version 1.3, 2. Januar 200 http://www.irda.org/standards/pubs/obex13.zip 5. Heiko Holtkamp: Einführung in Bluetooth, 5. November 2003, http://www.rvs.unibielefeld.de/~heiko/bluetooth/bluetooth.pdf 6. Marcel Holtmann: Zur Zeit als die Pinguine blaue Zähne bekamen, 19. August 2003, http://www.holtmann.org/papers/bluetooth/uptimes2003.html Impressum // 2 10/10