我被要求弄清楚如何使用FTDI Vinculum 2(VNC2)USB控制器通过现成的加密狗(在这种情况下使用Broadcom BCM2045芯片的加密狗)实现蓝牙通信。我为VNC2编写了自定义固件,以便与作为主机的VNC2通用USB设备进行通信,我可以从加密狗以及USB设备类,子类和协议中成功读取VID和PID。我也可以使用批量数据端点将数据发送到加密狗,我相信设备正在接收,但我现在无法告知。
所以我相信我可以与加密狗通信,问题是我不知道如何与它进行通信以便将其设置为可发现模式或将其与另一个可发现设备配对,也不知道如何实际传输数据无线链接配对后。我甚至不知道是否存在针对此类事物的标准通信协议,或者每个设备是否会有所不同。我对蓝牙协议栈有一个模糊的理解,我的理解是我不需要完全理解它应该在一端的加密狗和我们希望连接到的android智能手机中实现另一端。就像我说的,我现在可以将数据发送到批量端点,这个端点是否仅用于通过无线链路进行数据传输,我需要连接到不同的端点才能将设置/配置消息发送到加密狗?
简而言之,我需要知道通过USB总线发送什么数据来控制任何通用蓝牙适配器(如果可能)或至少一个特定的蓝牙适配器。我有一个USB端口嗅探器,但使用加密狗进行通信时输出的复杂性是惊人的,我怀疑我会想出来。
提前谢谢。
答案 0 :(得分:2)
蓝牙适配器使用HCI(主机控制接口)与主机软件堆栈进行通信,该接口在蓝牙规范中定义。作为参考,您可以查看开源BlueZ堆栈(标准Linux堆栈)的源代码。您可以在Linux上运行BlueZ与USB加密狗通信,并使用hcidump捕获跨越HCI的实际数据包。您还可以查看hcitool和hciconfig以执行特定操作。