GNU/Linux >> Tutoriales Linux >  >> Linux

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

Obtuve el servidor GATT de ejemplo ejecutándose para BlueZ 5.31 (más reciente 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 a linux kernel 3.19
Paquetes instalados:
* libglib2.0-dev
* libdbus-1-dev
* libudev-dev
* libical-dev
* libreadline-dev

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

Es necesario reiniciar. Estoy usando Vagrant y perdí el acceso a la carpeta compartida. Si esto le sucede, espere a que Vagrant informe el error y acceda a la VM 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 de nuevo (probablemente no sea necesario) para comprobar que la carpeta compartida está activa de nuevo.
Una vez de vuelta en la máquina virtual, 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-maintainer-mode
hacer
sudo hacer instalar
sudo cp atributo/gatttool/usr/bin

Instalación completa. Compruébalo 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
RX bytes: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 anunciar, inicie el servidor GATT de ejemplo (servicio de frecuencia cardíaca) con detallado activado (mi adaptador es hci0):
cd directorio BlueZ 5.31
sudo herramientas/btmgmt -i hci0 apagado
sudo tools/btmgmt -i hci0 archivo activado
sudo tools/btmgmt -i hci0 conectable en
sudo tools/btmgmt -i hci0 nombre "algún nombre descriptivo "
sudo tools/btmgmt -i hci0 publicidad en
sudo herramientas/btmgmt -i hci0 encendido
herramientas/btgatt-server -i hci0 -s low -t public -r -v

Vaya a otro dispositivo (he usado un iPod, una tableta Android, Samsung Galaxy 5S y 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 -YO
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:tools/btgatt-server.c . Puede editar el archivo Makefile.tools para incluir su servidor personalizado en la compilación. Tendrás 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-maintainer- modo

3) sudo hacer todo

4) Anunciar paquetes conectables

activar bluetooth

sudo hciconfig hci0 hasta

establecer datos publicitarios:"hola mundo"

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

empezar a anunciarse 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 --interactivo

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

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

sudo src/bluetoothd --plugin=hora -n


Llegué a 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ó compatibilidad con 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 aún más código del que me sentiría cómodo llamando a una 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 publicado un código que me ha ayudado a mí, aún mejor.


Linux
  1. ¿Cómo enviar Ssh a un servidor usando otro servidor?

  2. Use sugerencias del programador para crear un servidor

  3. Uso de registros del servidor

  4. ¿Cómo instalo Pdftk en mi servidor?

  5. Bluetooth Low Energy:escuchar notificaciones/indicaciones en linux

Cómo crear un servidor de correo con todas las funciones usando Postal

Cree un depósito S3 en AWS con Terraform

Cómo crear su propio servidor de transmisión de video con OBS Studio en Linux

Cómo crear un proxy HTTP usando Squid en CentOS 8

Crear un servidor en la nube

Pitchfork:Crear servidor