【发布时间】:2016-06-22 16:15:03
【问题描述】:
我正在尝试在我的 Linux 计算机上创建一个低功耗蓝牙外围设备(目标是通过蓝牙从 iPhone 发送数据)。我目前正在使用工具hciconfig、hcitool 和hcidump。
我目前的实验是宣传具有特定 UUID 的服务,iOS CoreBluetooth 库将获取该服务。 (注意:我不是要创建 iBeacon)。
现在,它实际上就像困扰我的一个单一命令一样简单。
hcitool -i hci0 cmd 0x08 0x0008 15 02 01 1a 11 07 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f 50
我认为它应该做的如下:
- 0x08:将组设置为 BLE
- 0x0008:将命令设置为 HCI_LE_Set_Advertising_Data
- 0x15:将Header中的有效字节长度设置为21。(3字节用于标志包,18字节用于服务结构)
- 0x02:将标志结构的长度设置为 2 个字节
- 0x01:将结构类型设置为 AD 标志
-
0x1a:标志值:
bit 0 (OFF) LE Limited Discoverable Mode bit 1 (ON) LE General Discoverable Mode bit 2 (OFF) BR/EDR Not Supported bit 3 (ON) Simultaneous LE and BR/EDR to Same Device Capable (controller) bit 4 (ON) Simultaneous LE and BR/EDR to Same Device Capable (Host)
(标志结束)
- 0x11 设置服务结构长度为17字节
- 0x07 将结构类型设置为 128 位完整服务 UUID 列表
- 0x41 ... 0x50 将测试服务的 UUID 设置为 ABCDEFGHIJKLMNOP
据我所见,hcidump 已正确执行并且看起来像我想要的那样。但它被错误拒绝:
LE Set Advertising Data (0x08|0x0008) ncmd 1
status 0x12
Error: Invalid HCI Command Parameters
我已经花了一整天的时间试图让它正确。有技术人员看到我做错了吗?这是宣传服务的正确方式吗?
(感兴趣的读者的上下文:我已经成功地使用 NodeJs 中的 Bleno 库完成了我想做的事情。但是,这不适合我们系统的大局。直接使用 HCITool 进行广告只是为了实验和后面会用Python写)
【问题讨论】:
标签: bluetooth-lowenergy gatt bluetooth-peripheral