Wie das umzusetzen, Bluetooth LE mit Bluez unter Linux

Arbeite ich an der Einrichtung von zwei Linux-Systemen BLE-demo. Offensichtlich ein system der peripheren und der zentralen Geräte. Ich habe mehrere Fragen rund um diese beiden Konfigurationen.

Umgebung

Peripheral Device Setup

Der erste Auftrag des Geschäfts ist immer die periphere system-setup und die Werbung mit den GATT-server konfiguriert. In dieser Zeit scheint es nicht möglich zu konfigurieren, dass ein GATT-server von der Befehlszeile aus. So, während es ist eine einfache Aufgabe bringen Sie einen USB-dongle und Werbung, nicht erlaubt die Erstellung von benutzerdefinierten Diensten und Eigenschaften. Das einzige Beispiel einer GATT-server, den ich finden konnte, war die gatt-Beispiel.c-Datei in das Bluez Paket. Also habe ich heruntergeladen und installiert die neueste bluez-5.23 Quelle. (http://www.linuxfromscratch.org/blfs/view/svn/general/bluez.html). Zusätzlich konfiguriert werden mit dem --enable-maintainer-mode-flag auf die Kraft bauen, die gatt-Beispiel.c-plugin in bluetoothd. Und ich validiert post-build von der ~/bluez-5.23/plugins Verzeichnis, dass es eine bluetoothd-gat-example.o - Datei. Das sagt mir, dass die gatt-Beispiel war zumindest erfolgreich gebaut.

Ich dann die Konfiguration geändert Datei zu ermöglichen LE und die Attribut-server.

$ sudo vi /etc/bluetooth/main.conf
EnableLE = true           //Enable Low Energy support. Default is false.
AttributeServer = true    //Enable the GATT attribute server. Default is false.

Dann einfach neu starten oder starten Sie den bluetooth-daemon...

Zentrale Geräte-Setup

Als zentrales Gerät benötigt keine speziellen plugins gebaut wie die peripheren, ich habe gerade installiert bluez mit apt-get. Dies scheint die v4 installiert.101 nach bluetoothd -v.

Session Setup

Die Verbindung hergestellt wird, dann sollte ziemlich einfach sein. Ich setup die Peripherie zu werben und dann eine Verbindung mit dem zentralen Gerät:

Peripherie:

$ sudo hciconfig hci0 up        //Make sure the interface is up
$ sudo hciconfig hci0 leadv     //Set the interface to advertise

Zentrale:

$ sudo hcitool -i hci0 lescan   //Scan for nearby devices advertising
LE Scan ...
00:02:72:C9:5E:0F (unknown)     //Not sure why two of the same MAC are found?
00:02:72:C9:5E:0F (unknown)     //but I know this is my device...

$ sudo gatttool -i hci0 -b 00:02:72:C9:5E:0F -m 48 --interactive     //Connect interactively
[   ][00:02:72:C9:5E:0F][LE]> connect
[CON][00:02:72:C9:5E:0F][LE]> primary
attr handle: 0x0001, end grp handle: 0x0008 uuid: 00001800-0000-1000-8000-00805f9b34fb
attr handle: 0x0010, end grp handle: 0x0010 uuid: 00001801-0000-1000-8000-00805f9b34fb
[CON][00:02:72:C9:5E:0F][LE]> characteristics 
handle: 0x0004, char properties: 0x02, char value handle: 0x0006, uuid: 00002a00-0000-1000-8000-00805f9b34fb
handle: 0x0007, char properties: 0x02, char value handle: 0x0008, uuid: 00002a01-0000-1000-8000-00805f9b34fb

Und wir sehen nicht einen der Dienste oder Merkmale aus der gatt-Beispiel verfügbar sind.

Fragen

--Peripheriegerät

  1. Wie würde ich mich über meine eigene benutzerdefinierte GATT-server? Kann es ein stand-alone C-Anwendung oder muss es gebaut werden, in bluetoothd als plugin ähnlich wie die gatt-Beispiel? Die Antwort auf diese Frage (Erstellen eines Gatt-Server?) setzt Voraus, dass Sie Folgendes beachten: "starten Sie durch Initialisierung des GATT-Bibliothek und zusätzliche Module" und dann "registrieren Sie Ihre GATT-Datenbank". Aber es gibt kein einziges Beispiel dafür, wie um diese Allgemeine Aussagen und der link ist einfach nur eine URL zu der Bluetooth-website.
  2. Die GATT-Vorgaben (https://developer.bluetooth.org/gatt/Pages/default.aspx) bieten zahlreiche "verabschiedet" Dienste und Merkmale, die zum herunterladen im XML-format. Aber es gibt keine Anweisungen, wie Sie zu benutzen?!
  3. Wie kann einer bestätigen meine GATT-server läuft?

--Zentrale Gerät

  1. Warum ist mein zentrales Gerät nicht zu sehen, die Dienstleistungen und Merkmale aus der GATT-server läuft auf dem peripheren?

Kann ich keine zusätzlichen Informationen notwendig. Danke.

Eher als unter Verwendung der BlueZ direkt möchten Sie vielleicht zu prüfen, mit einer höheren Ebene Bibliothek, wie Edel und Bleno
Es gibt wirklich keine Notwendigkeit, dass, wie BlueZ implementiert zwei API ' s für seine Funktionalität, eine sehr hohe (DBus)

InformationsquelleAutor linsek | 2014-09-11

Schreibe einen Kommentar