Comment mettre en œuvre Bluetooth LE avec Bluez dans Linux
Je suis en train de travailler sur la mise en place de deux systèmes Linux pour un c? BLE de démonstration. Évidemment, un système sera le périphérique et l'on va être au centre des dispositifs. J'ai plusieurs questions autour de ces deux configurations.
Environnement
- 2x Ubuntu 14.04 systèmes
- 2x USB Enfichable-BT4LE dongles (http://plugable.com/products/usb-bt4le)
Périphérique D'Installation
La première commande de l'entreprise est d'obtenir le périphérique de configuration du système et de la publicité avec une GATT de serveur configuré. À ce moment, il ne semble pas possible de configurer une GATT de serveur à partir de la ligne de commande. Ainsi, s'il est une tâche simple apportant une clé USB et de publicité, ce que ne permet pas la création de services personnalisés et des caractéristiques. Le seul exemple d'une GATT de serveur que j'ai pu trouver a été le gatt-exemple.c fichier dans le Bluez paquet. J'ai donc téléchargé et construit les dernières bluez-5.23 source. (http://www.linuxfromscratch.org/blfs/view/svn/general/bluez.html). En outre configuré à l'aide de l'option --enable-mainteneur en mode indicateur de force de construire le gatt-exemple.c plugin dans bluetoothd. Et je l'ai validé après la construction de la ~/bluez-5.23/plugins
répertoire qu'il y avait un bluetoothd-gat-example.o
fichier. Qui me dit que le gatt-exemple a au moins réussi à construire.
J'ai ensuite modifié le fichier de configuration, afin de permettre au et l'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.
Puis redémarrez ou redémarrer le bluetooth démon...
Centrale D'Installation De L'Appareil
Que le dispositif central n'a pas besoin de tout spécial plugins construit comme le périphérique, je viens d'installer bluez à l'aide de apt-get
. Cela semble avoir installé la v4.101 selon bluetoothd -v
.
La Configuration De La Session
Le processus de connexion, puis devrait être assez simple. - Je configurer le périphérique pour la publicité, puis de se connecter avec l'appareil central:
Périphérique:
$ sudo hciconfig hci0 up //Make sure the interface is up
$ sudo hciconfig hci0 leadv //Set the interface to advertise
Centrale:
$ 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
Et nous ne voyons pas l'un des services ou des caractéristiques du gatt-exemple sont disponibles.
Questions
--Périphérique
- Comment pourrais-je aller sur la création de mon propre GATT de serveur? Peut-il être un stand-alone application C ou faut-il être intégré dans les bluetoothd comme un plugin comme le gatt-exemple? La réponse à cette question (La création d'une Gatt de Serveur?) implique que vous procédez de la manière suivante: "commence par l'initialisation du GATT de bibliothèque et des modules complémentaires" puis "enregistrer votre GATT de base de données". Mais il n'y a pas un seul exemple de la façon de mettre en œuvre ces affirmations génériques et le lien fourni est tout simplement une URL pour le Bluetooth site web.
- Le GATT de spécifications (https://developer.bluetooth.org/gatt/Pages/default.aspx) fournissent de nombreux "adopté" des services et des caractéristiques qui sont téléchargeables au format XML. Mais il n'y a pas d'instructions pour savoir comment les utiliser?!
- Comment faire valider mon GATT de serveur est en cours d'exécution?
--Dispositif Central
- Pourquoi mon appareil central de ne pas voir les services et les caractéristiques du GATT de serveur en cours d'exécution sur le périphérique?
Je peux fournir toute information supplémentaire nécessaire. Merci.
Il n'y a vraiment pas besoin, comme BlueZ met en œuvre deux API pour ses fonctionnalités, dont l'un est de très haut niveau (
DBus
)OriginalL'auteur linsek | 2014-09-11
Vous devez vous connecter pour publier un commentaire.
Pour créer une GATT de serveur dans un processus séparé vous avez (au moins) deux cas:
Si votre Appareil Central ne permet pas de voir la nouvelle exporté GATT de service est probablement un problème sur le periphal plutôt que d'être un problème sur l'Appareil Central.
Lorsque vous aurez besoin de mettre en œuvre le GATT de client sur l'Appareil Central, vous avez encore deux cas de figure:
gatttool
commandes, ou vous utilisez une GATT de bibliothèque comme gattlib pour interagir avec le BLE appareilOriginalL'auteur OlivierM