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

时间:2014-04-17 21:41:22

标签: bluetooth bluetooth-lowenergy android-bluetooth texas-instruments ios-bluetooth

作为第三方有没有可行的方法来正确解释蓝牙低功耗设备的数据,而该设备没有公布的GATT配置文件规范?

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

使用以下工具:

  • 带有各种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是阅读
  • 特征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?我已经使用了蓝牙核心规范文档,这有助于理解标准功能的八位字节意味着/做什么,但这无助于理解实际的规模数据。

我对蓝牙开发非常陌生,这项练习基本上导致了该技术的速成课程。任何帮助表示赞赏。

感谢。

1 个答案:

答案 0 :(得分:1)

您必须与制造商联系,并要求澄清自定义服务和特征。

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

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

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

这就像你创造了自己的"我们脱离酸奶"通知配置文件......人们只能通过查看数据来猜测。