在没有已发布的GATT配置文件的情况下解释来自BLE设备的数据

Chr*_*sgh 7 bluetooth texas-instruments bluetooth-lowenergy android-bluetooth ios-bluetooth

作为第三方,是否有一种可行的方法可以正确解释蓝牙低功耗设备中没有已发布的GATT配置文件规范的数据?

BLE装置是一种体重秤,可支持体重,体重指数,体脂和水合程度.我的理解是,没有采用GATT身体尺度的配置文件,例如血压设备或心率监测器(https://developer.bluetooth.org/gatt/profiles/Pages/ProfilesHome.aspx).

使用以下工具:

  • 带有各种BLE实用程序应用程序的iPod(iOS 6.1.3)(Ti BLE Multitool,LightBlue和BLE Utility)
  • 带有nRF主控制面板的Android(4.3)平板电脑(戴尔Venue 8 3830),以及定制的Xamarin开发解决方案

我可以扫描,定位,连接和阅读规模上可用的GATT服务.以上所有工具都为我提供了相同的服务信息.在规模上发现了5项服务:

  • 通用访问(0x1800)
  • 通用属性(0x1801)
  • 设备信息(0x180A)
  • 电池服务(0x180F)
  • 具有自定义128位UUID的未知服务

所有上述工具都能够从已知服务中读取,例如检索电池信息或设备名称.我的假设是具有自定义UUID的未知服务是提供比例数据的服务.

此服务具有5个未知特征,具有自定义UUID:

  • 特征1是读/写
  • 特征2是Read
  • 特征3是读/写
  • 特征4是通知
  • 特征5是Read

使用上面指定的工具从特征1,2和3中读取,每个工具都返回它自己的值,但该值永远不会改变.例如,读取特征1总是返回20个八位字节0x01-0x05-0x06-0x07-0x08和15个0x00个八位字节的值.特征1的后续读取始终返回该值.特征2读取总是返回20个八位字节0x02和19 0x00个八位字节的值.等等.

阅读特征5似乎不返回值,或者更常见于Android,发出配对请求.没有共同的配对代码(如0000或1234等)有效.

特征4似乎是实际传输比例数据的内容.使用上面的工具,我可以启用通知,应用程序检索13个八位字节.例如:

  • FF-16-09-00-03-04-01-00-83-6F-F4-18-0F
  • FF-16-09-00-03-04-01-00-3E-88-F4-18-E3
  • FF-16-09-00-03-04-01-00-C8-89-F4-18-6E

显然,所有这些值都以相同的八位组开头.然而,主要的问题是这些八位字节代表什么,它们如何转化为体重/体重/水合/体脂值,如果事实上它们根本就是这样.

该秤采用Ti CC2541芯片(http://www.ti.com/product/cc2541)构建.

使用Ti的SmartRF协议数据包嗅探器和CC2540 USB评估模块套件,我可以捕获iPhone 5S(iOS 7.1)和规模之间的数据包.这提供了一些额外的见解,但大多只是显示我已经使用其他工具观察到的内容,尽管它处于较低级别.数据包嗅探器提供的任何其他信息仍然会回到同一个问题:规模发送的这些八位字节集代表什么,它们如何转换为weight/bmi/etc?我已经使用了蓝牙核心规范文档,这有助于理解标准功能的八位字节意味着/做什么,但这无助于理解实际的规模数据.

我对蓝牙开发很新,这项练习基本上导致了技术的速成课程.任何帮助表示赞赏.

谢谢.

Bog*_*dru 1

您必须联系制造商并要求澄清有关定制服务和特性的信息。

特征 5 似乎具有更高的安全设置,因此当您尝试读取它时它会触发配对。很可能包含一些敏感数据。

特征 1、2、3 可能用于配置,而 4 则通知有用的数据。

由于这些都是定制的,如果没有制造商的信息,根本无法找出它们的含义。

这就像您创建自己的“酸奶用完了”通知配置文件一样……人们只能通过查看数据来猜测。