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.

[参考译文] CC2642R:当地址模式是具有公共 ID 的 RPA 时、OAD 升级后绑定已擦除

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1506721/cc2642r-bonds-erased-after-oad-upgrade-when-address-mode-is-rpa-with-public-id

器件型号:CC2642R

工具/软件:

大家好
在我们的应用中将 RPA 与公共 ID 地址模式配合使用时、我们面临问题。
如果使用公共地址模式、则不 会出现此问题。


我们正在通过 BLE 设备开发 MIDI、多角色、直到现在我们使用公共地址、但我们发现如果使用公共地址、则在 Windows 中连接多个设备不起作用(即使以前的设备的 BLE 地址与新设备不同、也必须从列表中删除)。 使用具有公共 ID 的 RPA 时、此窗口问题已解决。

在应用程序中使用具有公共 ID 的 RPA 时、我们面临的问题是 OAD 升级后绑定会被擦除(或损坏)。
我们使用的是最新的库8.30、即片上 OAD。
对于持久性应用和应用、NVS 都定义在0x34000处。
OAD 持久性应用程序使用公共地址模式、没有安全性、因此在进入持久性应用程序时不会进行绑定。

我们不明白为什么债券在 OAD 升级后被删除或损坏?
我发现在文档增强 OAD 高级:

任务2–将片上 OAD 添加到多角色

  • 在 BLE→General Configuration 中、将 Address Mode 更改为 公共广播


但在我们的应用中、我们必须保留具有公共 ID 的 RPA 以解决上述 Windows 问题。
同样、我们在使用公共地址模式时不会遇到此问题、只有在使用具有公共 ID 的 RPA 时才会发生此问题。

感谢您提供的任何提示。
杰罗姆

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

    为了说明此问题、这里是 OAD 升级前后 NVS 0x34000的转储。
    我升级了相同的固件。

    在 OAD 之前,NVS 部分如下:我们可以看到我们的设置(存储在 NVS 中)以及一个配对后的绑定到一个中心。



    使用相同固件的 OAD 后,没有添加更多绑定,我们可以看到现有绑定已损坏:



    使用十六进制文件比较器:



    感谢您提供的任何提示。

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

    您好:

    感谢您联系我们! 我们将查看您的问题、尽快回复您!

    此致、
    Tarek

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

    您好 Jerome、

    我很抱歉耽误你的时间! 这是一个非常好的问题。 固件更新后、器件初始化会发生、这会导致生成新的 irk (身份解析密钥)、这将使 NV 内的数据无效、从而导致数据被覆盖。 因此、在这种情况下需要使用公共广播。

    此致、

    Tarek

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

    你好、Tarek
    这是否意味着任何使用具有公共 ID 的随机地址的 BLE 设备都将在 OAD 之后松散绑定?
    我很惊讶地读到这篇文章、因为 OAD 不应影响 NVS 的这一部分。
    是否有任何变通办法?

    我将使用公共 ID 随机寻址、以解决 使用公共地址时出现的另一个 Windows 问题。
    如果在 Windows 中使用公共地址、则如果 不移除之前连接的地址、则无法连接第二个 BLE 器件。
    我在这个论坛上读到、取消选中中央和外设的 IRK 密钥分配可以解决这个窗口问题、但它仍然不起作用、我可以将2个 BLE 器件连接到 Windows。

    因此、如果您有解决此窗口问题的解决方案、我可以返回到公共地址模式。
    谢谢

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

    您好 Jerome、

    OAD 不会影响 NV、但是当设备在固件更新后初始化自身时、调用 device_init ()、这会导致包含 LTK 的 NV 区域被擦除。 这只发生在 RPA 上、而不是使用公共地址。 可能绕过此问题的一种方法是尝试使用 gapBondMgrImportBond()函数提取 IRK、并将其保存在 NV 的另一节中。 如需了解有关此 API 及其功能的更多信息:

    https://dev.ti.com/tirex/content/simplelink_lowpower_f3_sdk_8_40_02_01/docs/ble5stack/ble_user_guide/html/ble-stack-5.x/gapbondmngr-cc23xx.html#gapbondmgr-examples-for-manipulating-bonding

    https://dev.ti.com/tirex/content/simplelink_lowpower_f3_sdk_8_40_00_61/docs/ble5stack/ble_user_guide/doxygen/ble/html/group___g_a_p_bond_mgr.html#gab36e5dd569942e6260517c73ea7042cf

    至于 Windows 问题、如果您想使用公共地址而不是 RPA、我建议在 E2E 上打开新主题进行讨论。

    我希望这对您有所帮助!

    此致、

    Tarek