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.