This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CC2564:蓝牙经典 HID 无法在移动设备上重新连接

Guru**** 2589265 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/811409/cc2564-bluetooth-classic-hid-cannot-reconnect-on-mobile

器件型号:CC2564

我们无法重新连接到所有 HID 设备。

如果堆栈被复位、则器件启动且所有器件均正常工作、但如果我们断开器件并尝试重新连接、则会触发"打开"指示 、但不会再触发。

HID 设备>HID 打开确认、HIDID:0x0005、状态:0x0003

Jason Gossiaux 提供了一个相关的论坛条目、 标题为"蓝牙经典 HID 无法在移动设备上重新连接"、他提到他解决了该问题、但他没有向我们展示他所做的事情。

有人能在这方面提供帮助吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您是否可以根据建议获取 FW 和 BT 空气日志?

    您的主机平台是什么?

    谢谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我的主机平台是 STM32。

    我想进一步解释一下:

    我保存已连接的 HID 器件的 LinkKey、 在主机器件复位并启动并运行后、HID 器件将再次出现。我将回叫中保存的 LinkKey 设置为"atLinkKeyRequest"、并使用 GAP_Authentication_Response 进行响应。 我不知道这是否正确、但我认为器件现在必须正在运行。

    似乎必须做更多的事情、但我在任何示例中都找不到更多的代码或信息。

    如果我启用 HCIFR 调试、控制台上会打印以下内容。 这不是 HID 设备、而是 SPP 客户端:

    32岁以上
    < 33
    > 04 04 0A FF 16 66 31 DD 4C 0C 02 5A 01
    < 01 09 04 07 FF 16 66 31 DD 4C 01
    >04
    0F 04 00 01 09 04
    > 04 03 0B 00 01 00
    > FF 16 66 31 DD 4C 01 00 04 20 07 FF 16 66 31 DD 4C 01
    > 04 1B 03 01 00 05 04 38 04 01 00 40 1F
    > 02 01 20 0A 00 06 00 01 00 0A 02 00 02 00 02 00
    < 01 1C 04 03 01 00 01
    >04
    >0F 04 00 01 1C 04
    < 02 01 20 10 00 0C 00 01 00 0B 02 08 00 02 00 00 00 80 00 00 00
    > 04 23 0D 00 01 00 01 01 0F 00 00 00 00 00 00 00 00
    > 04 13 05 01 01 00 01 00 02 01 20 0A 00 06 00 01 00 0A 03 02 00 03 00 03 00
    < 02 01 20 14 00 10 00 01 00 0B 03 0C 00 03 00 00 00 02 00 00 00 00 00 00 00 00 00
    > 04 13 05 01 01 00 01 00
    > 02 01 20 0C 00 08 00 01 00 02 04 04 00 01 00 41 00
    < 02 01 20 10 00 0C 00 01 00 03 04 08 00 86 00 41 00 00 00 00 00 00
    < 02 01 20 10 00 0C 00 01 00 04 07 08 00 41 00 00 01 02 F9 03
    < 01 37 0C 04 01 00 00 7D
    04 13 05 01 00 01 00 02 01 20 00 0C 00 01 00 04 05 08 00 86 00 00 01 02 A0 02 04 13 05 01 01 00 01 00 01 00 01 02 01 20 0E 00 01 00 01 00 01 00 05 00 05 07 06 00 86 00 00 00 00 00 00
    > 04 0E 06 01 37 0C 0C 01 00
    < 02 01 20 12 00 0E 00 01 00 05 0A 00 41 00 00 00 01 02 A0 02
    > 30
    < 31
    32岁以上
    < 33
    04 13 05 01 00 01 00 01 00 02 01 20 26 00 22 00 86 00 06 00 00 00 00 1D 35 11 1C 00 11 01 00 00 10 00 00 80 00 80 5F 9B 34 FB 02 90 35 05 0A 00 FF FF 00
    < 02 01 20 50 00 4C 00 41 00 07 00 00 47 00 44 35 42 35 40 09 00 0A 00 01 00 09 00 01 01 35 03 19 11 01 09 00 04 35 0C 35 03 19 01 00 35 05 19 00 03 08 16 09 01 00 25 1A 53 65 72 69 61 6C 20 50 6F 72 74 20 53 65 72 76 65 72 20 50 6F 72 74 20 32 00
    > 30
    < 31
    32岁以上
    < 33
    > 04 13 05 01 01 00 01 00 02 01 20 0C 00 08 00 01 06 04 00 86 00 41 00
    < 02 01 20 0C 00 08 00 01 00 07 06 04 00 86 00 41 00
    > 04 13 05 01 01 00 01 00
    >04 17 06 FF 16 66 31 DD 4C
    atLinkKeyRequest:0x4CDD316616FF
    < 01 0B 04 16 FF 16 66 31 DD 4C C0 F0 3C AD 2B 94 9E 4C 4B 07 B0 B7 40 D9 BB 91
    >04
    > 0E 0A 01 0B 04 00 FF 16 66 31 DD 4C
    GAP_Authentication_Response ()成功。

    HID 设备>> 30
    < 31
    32岁以上
    < 33
    > 04 05 04 00 01 00 13
    > 30
    < 31
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我发现问题、就是必须 将 LinkKey 0xA062F4889D4BCCD7CE73F06B51D56E55反向添加到 assign_link_key 中。 这与宏 assign_BD_ADDR 不同、有点讽刺。