Die Entwicklung von Bluetooth ist ein guter Indikator für die Alterung der lesenden Wetware. Der Autor dieser Zeilen kann sich noch gut daran erinnern, als er einst bei seinem damals schweineteuren Palm Tungsten|T erstmals das Bluetooth-Radio aktivierte. Traurigerweise fand er damals in seinem gesamten Umkreis keine Gegenstelle vor. Eine Wegbegleiterin kaufte dann für ihren Palm m515 eine Bluetooth-Karte, um .pcr-Dateien auszutauschen. Dass all der Affentanz über die Infrarotschnittstelle und/oder den SD-Slot genauso bequem von der Stange gegangen wäre, wollen wir an dieser Stelle verschweigen.
In den gut zwanzig Jahren seit dem Erscheinen von Tungsten|T und Co. hat sich die Bluetooth-Technologie radikal weiterentwickelt, und trotz der für kleine Hardwarehersteller lästigen Lizenzbedingungen auch Marktdurchdringung erreicht. In den folgenden Heften wollen wir uns Bluetooth näher ansehen – und zwar nach Maßgabe der Möglichkeiten sowohl unter Android als auch unter anderen Java-Plattformen.
In der Anfangszeit realisierte Bluetooth (denken Sie an Palm m515 und Tungsten|T) eine Punkt-zu-Punkt-Verbindung, wo an jeder Gegenstelle nur ein Gerät zu finden war. Diese Technologie wird von der Bluetooth Special Interest Group (SIG) auch heute noch unterstützt: Man spricht in diesem Zusammenhang vom Namen Bluetooth BR/EDR (Basic Rate/Enhanced Data Rate).
Hintergedanke dieses Standards war der Ersatz von Kabeln – ein Kabel hat normalerweise nur zwei Gegenstellen. Bluetooth LE (LE: Low Energy) wurde einst als niedrige Energieverbrauchsvariante von Bluetooth konzipiert, die sich für Embedded-Systeme eignen sollte.
Im Rahmen von Spezifikation und Standardisierung beseitigte die Bluetooth SIG nicht nur einige Probleme der Basisversion, sondern führte auch neue Betriebsmodi ein. Neben dem nach wie vor möglichen Point-to-Point-Betrieb erlaubt Bluetooth LE sowohl Broadcast- als auch Mesh-Szenarien. Im Fall eines Broadcast-Szenarios sendet ein meist als Beacon bezeichnetes Gerät „Statusmeldungen“ in den Äther, die dann von beliebig vielen Gegenstellen entgegengenommen werden können. Im Mesh-Betrieb „vernetzen“ sich die einzelnen Geräte dynamisch, was unter anderem für höhere Reichweiten des resultierenden Netzes sorgt.
Gemein ist all diesen Systemen vor allem das zugrunde liegende Radio-System. Bluetooth funkt im 2,4 GHz-Band und nutzt eine als Frequency Hopping bezeichnete und in Abbildung 1 illustrierte Technologie. Dahinter steht der Gedanke, dass Störungen im geteilten Übertragungsband dadurch überwunden werden, dass die nächste Übertragung in einem anderen Bandteil stattfindet.
Ganz analog zur historischen Entwicklung des Bluetooth-Standards wollen wir auch in diesem Tutorial mit einem gewöhnlichen, auf Bluetooth EDR basierenden Programm beginnen. Der eigentliche Bluetooth-Stack ist dabei – ganz analog zum OSI-Modell – in einer Schichtenstruktur aufgebaut.
LMP und L2CAP kümmern sich dabei um die „logische“ Aufrechterhaltung des Datenverkehrs – also darum, dass Pakete von A nach B wandern. Sofern Sie nicht einen Bluetooth-Stack von Hand realisieren (eine Sisyphus-Aufgabe), spielen sie in der täglichen Arbeit allerdings keine große Rolle. Wichtiger bei der Arbeit mit Bluetooth BER/EDR ist das Service Discovery Protocol (SDP).
Die erste Generation der Bluetooth-Spezifikation war (siehe oben) vor allem als Ersatz für verkabelte Verbindungen vorgesehen und war eine Affäre für finanzstarke Unternehmen. Daraus folgte, dass die Bluetooth SIG die vom Bluetooth-Standard zu erfüllenden Anforderungen im Allgemeinen gut zentralisiert verwalten konnte – die verschiedenen Kommunikationsarten bzw. an Bluetooth gestellten Anforderungen wurden deshalb in Form von Profilen zusammengefasst.
Die im Allgemeinen aufnahmefreundliche Wikipedia listet unter dem URL [2] die in Abbildung 2 gezeigten insgesamt 37 bekannten Profile – einige davon sind mittlerweile übrigens deprecated.
In der Praxis spielte die Mehrzahl dieser Protokolle nur eine untergeordnete Rolle, die meisten Unternehmen griffen auf das Serial-Port-Profil zurück, das (analog zu RS232) das Austauschen von mehr oder weniger beliebigen Payloads erlaubte. Das Obex-Protokoll war in der Praxis ebenfalls nicht unwichtig, ermöglichte es doch das Übertragen diverser kleiner Dateien wie die in der Einleitung genannten .pcr-Dateien. Manchmal kam auch das FTP-Protokoll zum Einsatz, das Bluetooth-Geräten das Exponieren von an FTP-Servern erinnernden Speichern erlaubte. Analog zu dem in der Frühphase manchmal verwendeten LAN-Protokoll (der Belkin Bluetooth Access Point ist unvergessen) galt allerdings auch hier, dass die vergleichsweise geringe Datenrate diese Protokolle in der praktischen Nutzung bald durch WLAN und Co. ersetzte. Bluetooth LE umging die Probleme mit den rigide definierten Profilen übrigens durch Einführung eines KV-Speichers – ein Thema, dem wir uns allerdings erst in einem der nächsten Artikel zuwenden wollen.
Komplexe Systeme lassen sich oft am leichtesten durch Betrachtung ihrer Bausteine verstehen. Google (das Unternehmen ist logischerweise Mitglied der Bluetooth SIG) bietet unter [3] ein schlüsselfertiges Chat-Sample an, das die Chatkommunikation zwischen zwei per ...