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
- 2x Ubuntu 14.04 Systeme
- 2x Steckbare USB-BT4LE dongles (http://plugable.com/products/usb-bt4le)
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
- 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.
- 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?!
- Wie kann einer bestätigen meine GATT-server läuft?
--Zentrale Gerät
- 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.
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
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erstellen eine GATT-server in einem separaten Prozess, die Sie haben (mindestens) zwei Fällen:
Wenn Ihr zentralen Gerät sieht nicht neu exportiert GATT-Dienst ist wahrscheinlich ein Problem auf der periphal eher als ein Problem, auf das zentrale Gerät.
Wenn Sie die Notwendigkeit zur Umsetzung der GATT-client auf die zentral-Gerät haben Sie immer noch zwei Fälle:
gatttool
Befehle, oder Sie verwenden eine GATT-Bibliothek wie gattlib, um die Interaktion mit der BLE-GerätInformationsquelleAutor OlivierM