我正在尝试在我的Linux计算机上创建蓝牙低功耗外设(目标是通过蓝牙从iPhone发送数据)。我目前使用工具hciconfig
,hcitool
和hcidump
。使用HCITool广告蓝牙LE服务
我目前的实验是用一个特定的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
- ×0008:设定命令HCI_LE_Set_Advertising_Data
- 为0x15 :设置th中重要字节的长度e报头至21(3字节的标志分组,18字节用于服务结构)
- 0×02:的标志结构的长度设置为2字节
- 0×01:设置结构类别以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设置莱恩服务结构的GTH到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编写)
我向你的专业技能屈服。我曾尝试零填充,但我猜想当时还有其他错误。 – Joakim
对于hcidump --raw部分,我使用的是-X,它以ascii和hex打印......会不会有使用raw的优势? – Joakim
-X更好,我猜:) –