【发布时间】:2015-05-18 06:41:42
【问题描述】:
我们在 WEC2013 中使用通用供应商提供的基于 USB 的加密狗在 iMx6 平台上测试蓝牙。我们使用的是 WEC2013 BSP 提供的默认 HCI 传输层。
BT 已开启并能够扫描附近的所有设备。
我们启用了以下一组 sysgen 变量和注册表项。
Sysgen 变量:
SYSGEN_BTH (Bluetooth stack with universal loadable driver)
SYSGEN_BTH_BTHUTIL (Bluetooth Profile Management APIs)
SYSGEN_BTH_HID_KEYBOARD (Bluetooth HID - Keyboard)
SYSGEN_BTH_HID_MOUSE (Bluetooth HID - Mouse)
SYSGEN_BTH_AG (Bluetooth HS/HF and Audio gateway service)
SYSGEN_BTH_SETTINGS (Bluetooth settings UI)
SYSGEN_OBEX_CLIENT (Obex client)
SYSGEN_OBEX_SERVER (Obex server)
SYSGEN_OBEX_FILEBROWSER (OBEX file browser)
SYSGEN_OBEX_INBOX (OBEX Inbox)
SYSGEN_FTPD (FTP server)
SYSGEN_BTH_BTHSSVC(Support Secure Simple Pairing)
注册表项:
[HKEY_LOCAL_MACHINE\Drivers\USB\LoadClients\Default\224_1_1\Default\Bluetooth_USB_Driver]
"DLL"="bthusb.dll"
[HKEY_LOCAL_MACHINE\Drivers\USB\LoadClients\Default\Default\224_1_1\Bluetooth_USB_Driver]
"DLL"="bthusb.dll"
[HKEY_LOCAL_MACHINE\Software\Microsoft\Bluetooth\Transports\PnP\{B3DD867A-1E6E-4215-8AA7-EAC1DFC46548}]
"flags"=dword:80000000
"driver"="bthusb.dll"
"resetdelay"=dword:0
"PacketSize"=dword:200
"BlockSize"=dword:5
[HKEY_LOCAL_MACHINE\ControlPanel\Bluetooth]
"PinAttemptInterval"=dword:200000
"PinEntries"=multi_sz:"0000","8888"
我们观察到与设备配对的不同场景。
从板子连接到手机(imx6+usb dongle 与 WEC2013 一起运行) 当通过 bthsettings UI 启动配对时,配对成功。它会触发两侧的 6 位自动密钥。
在不打开 bthsettings UI 的情况下从移动设备连接到板。 这里配对成功一次。当 UI 未打开时(BT 在后台打开),从移动设备启动配对,两者都将使用自动配对 6 位密钥方法。但这会在内部调用bthsettings UI,所以下次我们在手机端进行配对时,手机端会要求手动 密钥插入。只要在手机上输入键并按下配对,手机端就会出现配对拒绝通知。 所以在这种情况下配对失败。
打开 bthsettings 时从手机连接到板。 这里配对失败。当从手机启动配对时,将调用手动插入密钥 UI,当插入密钥并按下配对时, 手机端会显示配对失败提示,配对失败。
在这些失败的场景中,上层正在响应来自芯片的“Pin code request event”的“Pin code requestnegative reply command”。
我们需要有关此配对过程的输入。为什么会根据 UI 是否打开来调用自动密钥和手动密钥生成方法?以及为什么手动钥匙盒失败了?
我们是否缺少任何注册表项或堆栈功能?
【问题讨论】:
标签: bluetooth embedded windows-ce windows-embedded-compact hci