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.

[参考译文] CC3351:无法通过 SDIO 为 BLE 获取 hci0

Guru**** 2553450 points
Other Parts Discussed in Thread: CC3351

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/1558733/cc3351-unable-to-get-hci0-for-ble-over-sdio

器件型号:CC3351


工具/软件:

您好:  

我正在开一个 TT 报告问题、这似乎也会使另一个用户遇到问题、如下所述:

CC3351:无法通过 BLE 通过 SDIO - Wi-Fi 论坛 — Wi-Fi - TI E2E 支持论坛获取 hci0 接口

在我们这边、我们使用基于 NXP 的器件、并通过 SDIO 运行具有 WiFi 和 BLE 器件连接的 PAN W602 (cc3351) 模块。

我们已成功编译了内核 6.6 的驱动程序、WiFi 接口已启动并正在运行。 但是、蓝牙接口丢失。  

以下是有关蓝牙的日志:

root@ws-hub:~# dmesg | grep 'Bluetooth'

[   1.198041]蓝牙:HCI UART 驱动程序 2.3 版

[   1.202559]蓝牙:已注册 HCI UART 协议 H4

[   1.207704]蓝牙:已注册 HCI UART 协议 BCSP

[   1.213049]蓝牙:已注册 HCI UART 协议 LL

[1.21818188]   蓝牙:已注册 HCI UART 协议 ATH3K

[1.223599]   蓝牙:已注册 HCI UART 协议三线 (H5)

[   1.230041]蓝牙:已注册 HCI UART 协议 Broadcom

[   1.235730]蓝牙:已注册 HCI UART 协议 QCA

[   1.442450]蓝牙:RFCOMM TTY 层已初始化

[   1.447376]蓝牙:RFCOMM 套接字层已初始化

[   1.452531]蓝牙:RFCOMM 版本 1.11

[   1.456284]蓝牙:BNEP(以太网仿真)1.3 版

[   1.461588]蓝牙:BNEP 过滤器:协议多播

[1.466825]   蓝牙:BNEP 套接字层已初始化

[   1.471798]蓝牙:HIDP(人机界面仿真)版本 1.2

[1.477732]   蓝牙:已初始化 HIDP 套接字层

[  11.342454]蓝牙:[BT SDIO] BLE SDIO INIT 模块

[  11.473295]蓝牙:[BT SDIO]探头供应商= 0x97、器件= 0x4077、类= 255、fn=1 0xff000004d90800

[  11.573937]蓝牙:[BT SDIO HCI] btti_HCI_add_sdi_dev

[  11.594552]蓝牙:[BT SDIO HCI]正在启动工作线程...

[  11.610226]蓝牙:[BT SDIO HCI]工作线程已启动

[  11.616040]蓝牙:[BT SDIO] TI cc33xx BLE-over-SDIO 驱动程序已启动并运行!

[  11.624586]蓝牙:[BT SDIO HCI]工作线程正在睡眠...

根据日志、我们的初始评估是:
    • 正确探测 BLE SDIO 功能

    • BTI_HCI_ADD_SDIO_DEV 进入  

    •  该驱动程序声称“BLE-over-SDIO 驱动程序已启动并正在运行!“

      但未注册 HCI 设计。  

由于 btti_HCI_ass_SDIO 是自定义 TI 实现、因此我不确定这是否正确调用了 HCI_register_dev ()。

为了便于您参考,我们尝试编译 1.2.0.9 和 1.2.0.10 版本的此版本,具有相同的行为。 通过 SDIO 使用 WiFi 功能、通过 SDIO 驱动程序的 BLE 已启动并正在运行、但 HCI 上没有器件。  

你能回答一些建议吗?

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

    请记住、该器件需要通过 wifi debugfs 接口发送命令、指示固件开始蓝牙运行。 加载驱动程序后、您是否调用了 ble_enable 脚本?

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

    我不确定。 在哪里可以了解有关如何执行此操作的更多信息?

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

    在这里找到一些提示

    如果成功、将返回报告。 看不到原因。  

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

    您是否成功通过 SDIO?获得了 BLE 的 hci0

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

    是的、这只是启用脚本。 向 TI 提供的可能反馈是在文档中突出显示这一点。  

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

    尊敬的 Chetan:

    您是否无法在我们的文档中找到通过运行 ENABLE_BLE 脚本来启用 BLE 的说明?

    在您看来、我们可以做些什么来改善体验。

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

    我可以说,从我的经验,这是非常不明显。

    主要原因是这是一个完全意想不到的要求。 人们期望 BT 和 Wi-Fi 完全相互独立、只有在涉及到共存时才会进行交互。

    这种芯片不是这样工作的、因为它只有一个内核和一个无线电。 但这并不明显、即使已知 BT 接口在初始化完成后立即可用、

    这是没有意义的,这应该是必要的。 您如何编写文档可能无关紧要。  如果可能、最好通过在默认情况下使 BT 处于活动状态来消除该要求。

    如果有原因需要默认禁用 BT、那么最好了解这一点。

    此外、debugfs 接口并不总是包含在生产器件中。 如果仍需要在外部启用 ble、则应将逻辑移动(或复制)到 sysfs 中。

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

    尊敬的 Dean:

    完全同意。 我 并不总是希望客户集成 SDK 中的 cc33xx 脚本。 它只会占用文件系统中的空间。 我们将更新文档、专门指向 debugfs ble_enable 参数。

    至于 debugfs 与 sysfs、也达成了一致。 客户可能不希望被迫使用 debugfs、因此我会亲自考虑在未来的 SDK 版本中将该命令复制到 sysfs 中、或自行将补丁发布到我们的 GitHub cc33xx-linux-mpu-ports 中、或将该补丁发布到这两者中。  

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

    实际上、我们已经发布了一些代码、将 ble_enable 添加到 sysfs 中、但特定于内核 6.12 补丁:

    https://github.com/TexasInstruments-Sandbox/cc33xx-linux-mpu-ports/blob/51d5790d8f7a0d77896466ba49765ced77484651/6.12.y/0001-drivers-cc33xx-forward-port-cc33xx-1.0.2.10-SDK-to-6.patch#L611 

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

    我只能赞同前面的两个意见。  

    在您进行这些更改之前、我建议在主登录页面(例如,cc33XX 产品登录页面、CC33XX Linux 用户指南等)上突出添加内容。

    这只是为了对产品进行无缝评估。  

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

    尊敬的 Sabeeh:

    您知道是否有需要用户启用的技术要求? 是否可以更改固件实施、使其在下载固件后便已激活? 如果能够做到这一点、问题就会完全消失。

    谢谢!

    Dean

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

    尊敬的 Dean:

    是的、这是一项技术要求。 我们的实现确实需要单独启用 BLE。  

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

    尊敬的 Sabeeh:

       在 我们的示例中、我们的产品不允许在量产版本中使用 debugfs。 这就是它变得棘手的原因。

       但我有一个建议、或许我们可以将 ble_enable 作为内核模块参数化器。 例如、如果我们要启用 BLE、我们可以执行命令“insmod cc33xx ble_enable=1“

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

    尊敬的 Xianglong:

    我们可以将 ble_enable 命令移至 sysfs、而不是 debugfs。 让我为您编写一个自定义补丁、在内核 5.10 上试用和测试。