BLE GATT Tool

Creative Commons
本作品采用知识共享署名

本文分别介绍Ubuntu和Android下操作BLE GATT的两个工具。

nrf-connect和gatttool都可以读写BLE device。nrf-connect有列出不同UUID对应的人可识别字符串,对于调试更直观。

Android

Android上使用nrf-connect可以读写BLE GATT,下载apk安装即可使用https://github.com/NordicSemiconductor/Android-nRF-Connect/releases
nrf-connect很直观,不做介绍,看演示图即可:
nrfconnect

Ubuntu

前提:Ubuntu PC上由蓝牙4.0一样的适配器
Ubuntu 18.04默认安装了blueZ和hcitool&gatttool
Ubuntu上使用hcitool进行scan和gatttool进行connet和读写GATT

hcitool

  1. 检查dev

    1
    hcitool dev
  2. 扫描BLE device

    1
    sudo hcitool lescan

gatttool

命令

  1. 启动

    1
    sudo gatttool -t random -b E9:45:EC:29:65:DB -I
  2. 进入gatttool console后连接

    1
    connect
  3. 连接成功后查看service

    1
    2
    primary
    included
  4. 查看characteristics

    1
    characteristics
  5. 查看Descriptor

    1
    char-desc

  6. 读的参数是handle,查看characteristics和Descriptor的时候会列出来

    1
    char-read-hnd 0x12
  7. 1
    char-write-cmd 0x12 02

进行写的时候第一个参数是Handle,第二个参数是值,使用16进制,补齐2位,省略0x,例如0x3写作03,0x5a写做5a

问题处理

gatttool连接时可能会遇到:

1
gatttoll Error: connect error: Connection refused (111)

原因有两个:

  1. GATT进入时一定要加地址类型

    1
    -t random
  2. /etc/bluetooth/main.conf中添加BLE的支援

    1
    2
    EnableLE = true           // Enable Low Energy support. Default is false.
    AttributeServer = true // Enable the GATT attribute server. Default is false.

演示图

pc

参考

https://www.jaredwolff.com/blog/get-started-with-bluetooth-low-energy/