Saltar al contenido

Bluetooth Low Energy en C: uso de Bluez para crear un servidor GATT

Bienvenido a nuestro sitio, en este lugar vas a encontrar la resolución a lo que andabas buscando.

Solución:

Obtuve el servidor GATT de ejemplo ejecutándose para BlueZ 5.31 (el último a partir de esta publicación):

Mi entorno:
Vagabundo
Caja virtual
Ubuntu Trusty Tahr como SO invitado (v. 14.04 SO de 32 bits)
Actualizado al kernel de Linux 3.19
Paquetes instalados:
* libglib2.0-dev
* libdbus-1-dev
* libudev-dev
* libical-dev
* libreadline-dev

Descargado BlueZ 5.31 desde aquí: https://www.kernel.org/pub/linux/bluetooth/bluez-5.31.tar.xz
Instalación del kernel actualizado (v. 3.19):
sudo apt-get update
sudo apt-get install –install-recomienda linux-generic-lts-vivid

Es necesario reiniciar. Estoy usando Vagrant y he perdido el acceso a la carpeta compartida. Si esto le sucede, espere a que vagrant informe el error y acceda a la máquina virtual de todos modos (vagrant ssh). En la máquina virtual, emita este comando para solucionar el problema de la carpeta compartida:
sudo /etc/init.d/vboxadd configuración

Reiniciaría nuevamente (probablemente no sea necesario), para verificar que la carpeta compartida esté activa nuevamente.
Una vez de vuelta en la VM, continúe con la instalación de BlueZ 5.31:
cd ~
sudo apt-get install libglib2.0-dev libdbus-1-dev libudev-dev libical-dev libreadline-dev
wget https://www.kernel.org/pub/linux/bluetooth/bluez-5.31.tar.xz
tar xvf bluez-5.31.tar.xz
cd bluez-5.31
./configure -prefix= / usr –mandir = / usr / share / man –sysconfdir = / etc –localstatedir = / var –disable-systemd –enable-experimental –enable-maintenance-mode
fabricar
sudo hacer instalar
sudo cp attrib / gatttool / usr / bin

Instalación completa. Compruébelo de la siguiente manera:
hciconfig

Debería obtener la siguiente respuesta (o algo similar):
hci0: Tipo: BR / EDR Bus: USB
Dirección BD: 00: 1A: 7D: DA: 71: 0C ACL MTU: 310: 10 SCO MTU: 64: 8
ABAJO
Bytes RX: 15528 acl: 126 sco: 0 eventos: 683 errores: 0
TX bytes: 6459 acl: 146 sco: 0 comandos: 234 errores: 0

Configure el adaptador Bluetooth, comience a publicar anuncios, inicie el servidor GATT de ejemplo (servicio de frecuencia cardíaca) con verbose activado (mi adaptador es hci0):
CD Directorio BlueZ 5.31

sudo tools / btmgmt -i hci0 apagado
sudo tools / btmgmt -i hci0 le on
herramientas sudo / btmgmt -i hci0 conectable en
sudo tools / btmgmt -i hci0 name “algún nombre amistoso
sudo tools / btmgmt -i hci0 publicidad en
sudo tools / btmgmt -i hci0 encendido
herramientas / btgatt-server -i hci0 -s low -t public -r -v

Vaya a otro dispositivo (he usado un iPod, un Android (Samsung Galaxy 5S y tableta Nexus) y otra PC con BlueZ) y conéctese al servicio. Así es como lo hice en otra PC con BlueZ:
gatttool -b Dirección MAC del servidor GATT -I
conectar
primario
caracteristicas

Puede emitir otros comandos para leer y escribir en el servidor GATT.

También creé un servidor GATT personalizado (su solicitud original) copiando y editando este archivo: herramientas / btgatt-server.c. Puede editar el archivo Makefile.tools para incluir su servidor personalizado en la compilación. Tendrá que ejecutar automake, make y sudo make install para que funcione.

1) Ir a la carpeta Bluez

2) sudo ./configure -prefix= / usr –mandir = / usr / share / man –sysconfdir = / etc –localstatedir = / var –disable-systemd –enable-experimental –enable-maintenance-mode

3) sudo hacer todo

4) Publicidad de paquetes conectables

activar bluetooth

sudo hciconfig hci0 arriba

establecer datos de publicidad: “hola mundo”

sudo hcitool -i hci0 cmd 0x08 0x0008 48 45 4c 4c 4f 57 4f 52 4c 44

empezar a anunciar como conectable

sudo hciconfig hci0 leadv 0

5) parada de bluetooth del servicio sudo

6) sudo src / bluetoothd -d -n

7) Desde otra PC, escriba (Change MAC id gatt server mac)

gatttool -b gatt_server_mac –interactive

paso 6 es por si quieres compilar plugins / gatt-example.c

si desea compilar server.c desde perfil / tiempo o perfil / alerta(reemplace con alerta en lugar de tiempo) o cualquier otro archivo en la carpeta de perfil reemplace el paso 6

sudo src / bluetoothd –plugin = tiempo -n

Aterricé en esta pregunta varias veces en mi búsqueda de un servidor GATT independiente para C. Las respuestas aquí requieren construir su servidor GATT con la pila BlueZ. BlueZ agregó soporte D-Bus para permitir servidores GATT independientes e incluso incluye un servidor GATT de muestra independiente para Python, pero no para C.

Aún necesitando un servidor, comencé a trabajar en uno con la intención de lanzar una muestra, pero incluso una implementación mínima es más código del que me sentiría cómodo llamando a muestra.

La implementación inicial está hecha ahora y se ha publicado bajo LGPL (editar: la licencia se cambió de GPL-3 a LGPL):

https://github.com/nettlep/gobbledegook

Si ayuda a alguien, genial. Si ayuda a alguien que ha lanzado un código que me ha ayudado a mí, aún mejor.

Tienes la opción de proteger nuestra ocupación dejando un comentario y puntuándolo te lo agradecemos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *