将 HCI 命令写入 USB BT Dongle
Writing HCI command to USB BT Dongle
我的小项目是将 HCI 命令写入蓝牙 USB 加密狗并获得 HCI 命令的响应。
我可以打印我的 USB 蓝牙加密狗的所有端点地址,如下所示(使用 libusb)。根据蓝牙系统主机控制接口[传输层]的规范,(第2.1节)端点地址0x00
用于编写HCI命令。但是我在我的蓝牙加密狗中找不到端点地址 0x00
。
config[0]->interface[0]->altsetting[0]->endpoint[0]->bEndpointAddress=0x81 packetsize=16
config[0]->interface[0]->altsetting[0]->endpoint[1]->bEndpointAddress=0x02 packetsize=64
config[0]->interface[0]->altsetting[0]->endpoint[2]->bEndpointAddress=0x82 packetsize=64
config[0]->interface[1]->altsetting[0]->endpoint[0]->bEndpointAddress=0x03 packetsize=0
config[0]->interface[1]->altsetting[0]->endpoint[1]->bEndpointAddress=0x83 packetsize=0
config[0]->interface[1]->altsetting[1]->endpoint[0]->bEndpointAddress=0x03 packetsize=9
config[0]->interface[1]->altsetting[1]->endpoint[1]->bEndpointAddress=0x83 packetsize=9
config[0]->interface[1]->altsetting[2]->endpoint[0]->bEndpointAddress=0x03 packetsize=17
config[0]->interface[1]->altsetting[2]->endpoint[1]->bEndpointAddress=0x83 packetsize=17
config[0]->interface[1]->altsetting[3]->endpoint[0]->bEndpointAddress=0x03 packetsize=25
config[0]->interface[1]->altsetting[3]->endpoint[1]->bEndpointAddress=0x83 packetsize=25
config[0]->interface[1]->altsetting[4]->endpoint[0]->bEndpointAddress=0x03 packetsize=33
config[0]->interface[1]->altsetting[4]->endpoint[1]->bEndpointAddress=0x83 packetsize=33
config[0]->interface[1]->altsetting[5]->endpoint[0]->bEndpointAddress=0x03 packetsize=49
config[0]->interface[1]->altsetting[5]->endpoint[1]->bEndpointAddress=0x83 packetsize=49
- 这是否意味着,我的蓝牙适配器不支持发送 HCI 命令
- 如果是,是否有其他方法可以将 HCI 命令发送到我的蓝牙加密狗
端点 0x00 "reserved" 用于主机和设备之间的控制传输,事实上,每个设备都必须有这个端点,它没有端点描述符。尽管您的主机正在使用此端点来枚举和配置您的设备,但您仍然可以使用它进行通信。您所要做的就是在端点 0x00 上开始控制传输。您不必配置设备或声明接口来执行此操作,但我建议您无论如何都这样做(可能在速度等方面具有某些优势)。
我的小项目是将 HCI 命令写入蓝牙 USB 加密狗并获得 HCI 命令的响应。
我可以打印我的 USB 蓝牙加密狗的所有端点地址,如下所示(使用 libusb)。根据蓝牙系统主机控制接口[传输层]的规范,(第2.1节)端点地址0x00
用于编写HCI命令。但是我在我的蓝牙加密狗中找不到端点地址 0x00
。
config[0]->interface[0]->altsetting[0]->endpoint[0]->bEndpointAddress=0x81 packetsize=16
config[0]->interface[0]->altsetting[0]->endpoint[1]->bEndpointAddress=0x02 packetsize=64
config[0]->interface[0]->altsetting[0]->endpoint[2]->bEndpointAddress=0x82 packetsize=64
config[0]->interface[1]->altsetting[0]->endpoint[0]->bEndpointAddress=0x03 packetsize=0
config[0]->interface[1]->altsetting[0]->endpoint[1]->bEndpointAddress=0x83 packetsize=0
config[0]->interface[1]->altsetting[1]->endpoint[0]->bEndpointAddress=0x03 packetsize=9
config[0]->interface[1]->altsetting[1]->endpoint[1]->bEndpointAddress=0x83 packetsize=9
config[0]->interface[1]->altsetting[2]->endpoint[0]->bEndpointAddress=0x03 packetsize=17
config[0]->interface[1]->altsetting[2]->endpoint[1]->bEndpointAddress=0x83 packetsize=17
config[0]->interface[1]->altsetting[3]->endpoint[0]->bEndpointAddress=0x03 packetsize=25
config[0]->interface[1]->altsetting[3]->endpoint[1]->bEndpointAddress=0x83 packetsize=25
config[0]->interface[1]->altsetting[4]->endpoint[0]->bEndpointAddress=0x03 packetsize=33
config[0]->interface[1]->altsetting[4]->endpoint[1]->bEndpointAddress=0x83 packetsize=33
config[0]->interface[1]->altsetting[5]->endpoint[0]->bEndpointAddress=0x03 packetsize=49
config[0]->interface[1]->altsetting[5]->endpoint[1]->bEndpointAddress=0x83 packetsize=49
- 这是否意味着,我的蓝牙适配器不支持发送 HCI 命令
- 如果是,是否有其他方法可以将 HCI 命令发送到我的蓝牙加密狗
端点 0x00 "reserved" 用于主机和设备之间的控制传输,事实上,每个设备都必须有这个端点,它没有端点描述符。尽管您的主机正在使用此端点来枚举和配置您的设备,但您仍然可以使用它进行通信。您所要做的就是在端点 0x00 上开始控制传输。您不必配置设备或声明接口来执行此操作,但我建议您无论如何都这样做(可能在速度等方面具有某些优势)。