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.

[参考译文] WL1831MOD:在 Linux 4.9下未找到蓝牙接口

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/885125/wl1831mod-bluetooth-interface-not-found-under-linux-4-9

器件型号:WL1831MOD

e2e.ti.com/.../kern.log

我们正在为其中一个开发板(
基于 AM335x 的系统、在架构上非常接近 AM335x EVM)更新内核(请参阅
[0]以了解更多详细信息)。 遗憾的是、升级
完全中断了蓝牙。 运行"hcitool dev"会报告零个设备、
而 dmesg 中似乎没有任何错误。 与我们以前在
[0]处出现的 WiFi 问题不同,此问题在所有系统上都出现。 

旧内核为3.14、新内核为4.9。 在3.16下、器件和接口正常工作
没有任何问题。 [0] https://e2e.ti.com/support/wireless-connectivity/other-wireless/f/667/t/849611 、是否有任何问题、或者我们下一步需要检查什么? 我已从受影响的系统中连接/var/log/kern.log。 为 避免疑义、应用了[0]中标识的 wifi 修复。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您是否共享了用于蓝牙的传输驱动程序? 您能否提供要检查的内核配置和设备树文件?

    谢谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我们不确定您所说的"共享传输驱动程序"是什么意思。 我们正在使用
    Debian 稳定的内核进行扩展、并添加了一个补丁来添加我们的 DTS 文件。
    
    随附的是当前内核配置和 DTS 文件(文件扩展名已更改以适应过滤器) 
    下面是运行 lsmod: module 的结果 XT_NAT 使用的大小 1887 0 XT_tcpudp 3056 0 IPT_masquerade 1550 0 NF_NAT_masquerade_IPv4 2073 1 IPT_masquerade 蓝牙 466204 0 CCM 8394 2 CDC_Ether 7269 0 usbnet 25990 1 CDC_Ether iptable_NAT 1901 0 NF_conntrack_IPv4 9474 1 NF_dfrag_IPv4 1364 1 NF_conntrack_IPv4 NF_NAT_IPv4 4992 1 iptable_NAT NF_NAT 13461 3 XT_NAT、NL_NAT_伪装 IPV4_NL_NAT_IPv4 NF_conntrack 86540 4 NP_conntrack_IPv4、NP_NAT_伪装_IPv4、NP_NAT_IPv4、NP_NAT iptable_filter 1673 1 CDC_ACM 20244 2 ARC4 1958年2 月18日 85155 0 wlcore 193769 1 wl18xx Realtek 2775 2 mac80211 587709 2 wl18xx、wlcore musb_dsp 9827 0 musb_hdrc 114700 1 musb_dsp Davinci_MDIO 4937 2 UDC_CORE 26968 1 musb_hdrc cfg80211 480767 3 wl18xx、wlcore、mac80211 rfkill 16717 4蓝牙、cfg80211 cppi41 9859 0 usbcore 200597 4 usbnet、CDC_ACM、CDC_ether、musb_hdrc phy_AM335x 2369 2 phy_generic 4724 1 phy_AM335x USB_common 3659 5 phy_AM335x、UDC_CORE、musb_hdrc、musb_dsp、usbcore phy_AM335x_control 2510 1 phy_AM335x NLS_ASCII 3386 1 NLS_cp437 4922 1 脂肪 10313 1脂肪 57781 1 vfat ti_cpsw 33148 0 cpsw_ale 7575 1 ti_cpsw cpsw_common 1689 1 ti_cpsw OMAP-AES 13989 0 DaVinci_cpdma 9069 1 ti_cpsw crypto_engine 4416 1 OMA_AES OMAP-SHIM 23093 0 OMAP_Rng 4695 0 snd_soc_Davinci_McASP 18391 0 rng_core 6756 1 OMAP-rng Snd_soc_OMAP 3884 1 snd_soc_Davinci_McASP snd_soc_core 147039 2 snd_SoC_Davinci_McASP、snd_SoC_OMAP snd_pcm_dmaengine 3583 2 snd_soc_OMAP、snd_soc_core SPI_OMAP2_mcspi 11325 0 OMA_hwspinlock 2320 0 SND_PCM 83611 4 snd_SoC_Davinci_McASP、snd_PCM_dmaengine、snd_SoC_OMAP、snd_SoC_core spinhwlock_core 5967 1 OMA_hwspinlock snd_timer 20842 1 snd_PCM snd 56175 3 snd_timer、snd_soc_core、snd_PCM wlcore_sdio 7458 0 声核 5507 1标准 USB MUSB _AM335x 1287 0 at24 7905 0 OMA_WDT 4367 0 nvmem_core 9640 1 at24 cpufreq_dt 4321 0 IP_Tables 12489 2 iptable_filter、iptable_nat x_tables 15618 5 XT_NAT、IP_Tables、iptable_filter、XT_tcputp、IPT_masquerade 自动配置4 33605 2.

    e2e.ti.com/.../am335x.dts.txte2e.ti.com/.../config_2D00_4.9.0_2D00_12_2D00_armmp.txt

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

    很抱歉耽误你的时间。

    是的、您在内核中启用了共享传输。

    #德州仪器共用运输线路
    编号
    CONFIG_TI_ST=m

    请通过删除共享传输并添加以下内核配置选项来重建内核和内核模块:

       CONFIG_BT_RFCOMM

      CONFIG_BT_HCEUART

       CONFIG_BT_HAIART_H4

       CONFIG_BT_HCEUART_LL

    将重建的内核模块安装到目标文件系统、确保器件树中的 BT_EN GPIO 和 UART 引脚多路复用器配置正确。 {请注意、您不再使用共享传输的 Kim 模块}  

     之后、内核已使用上述构建的二进制文件进行引导。

     i)切换 BT EN GPIO 线路以复位器件。

        例如:

        回波 /sys/class/gpio/export

         回显>/sys/class/gpio/gpio /方向

        echo 0 >/sys/class/gpio/gpio /value

        Echo 1 >/sys/class/gpio/gpio /value

     ii)如果您正在使用 Bluez、请使用 hciattach 加载固件、如下所示:

     hciattach 德克萨斯州

    例如:

     hciattach /dev/ttyS1 Texas 3000000

    谢谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    遗憾
    
    
    
    
    
    
    
    
    
    
    /sys/class/gpio/gpio117
    
    
    
    的是、没有这样的幸运:root@device ~# grep -we CONFIG_TI_ST -e CONFIG_BT_RFCOMM -e CONFIG_BT_HCIUART -e CONFIG_BT_HCIUART_LL -e CONFIG_BT_HCIUART_H4 /boot/config-4.9.0-12-armmp CONFIG_BT_RFCOMM=m CONFIG_BT_HCIUART=m CONFIG_BT_HCIUART_LL -e CONFIG_BT_HCIUART_HCIUART_HCL_LL -e CONFIG_CL_ROT_HIPT@
    /dev/ttyS1 n ROOT_INT_HIPART_HIPART_2
    T 设置# 2 T 2 T = 0 ~@~ ROOT_HIP_IN_INT_HIPART_HIPT_ 输入/输出错误
    无法初始化器件:输入/输出错误
    
    root@device ~
    ×# echo $?
    1
    
    root 用户@设备~
    # hcitool dev
    设备: 


    此外,在执行 hcitool dev 之前,dmesg 中不会报告任何消息。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    哎呀、我们只是复制/粘贴而不进行修改。

    当我们更改 TTY 以匹配我们的硬件时、我们确实取得了一些进展。  HCI 器件现已启动。  但是、我们无法获取 lescan 或 scan 以查找任何设备。  我们将对此进行研究。

    感谢您的帮助!

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

    我们仍然无法使用以下任一方式实际检测到任何蓝牙设备:

    hool citlescan
    hcitool 扫描

    我们在多个系统上都尝试过、没有任何区别。  

    对后续步骤有什么建议?

    谢谢!

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

    当您执行 hciconfig 时、它会显示什么?

    此外、您还可以在初始化控制器时提供带 BT_EN 切换和"hciattach"的控制台输出。

    谢谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    此外、
    您还可以在初始化控制器时提供带 BT_EN 切换和"hciattach"的控制台输出。
    
    当我切换 BT_EN 时、不会输出任何内容。 当我`k Ω hciattach /dev/ttyO1
    Texas 115200'时、我得到这个 stdout/stderr 输出:
    
    找到了一个德州仪器的芯片!
    固件文件:/lib/firmware/ti-connectivity/TIInit_11.8.32.bts
    无法打开固件文件:没有此类文件或目录
    警告:找不到 BTS 文件:/lib/firmware/ti-connectivity/TIInit_11.8.32.bts
    设备设置完成
    
    ... 和以下 dmesg 输出:
    
    [283.724162]蓝牙:核心版本2.22
    [283.736057] NET:注册协议系列31
    [283.740842]蓝牙:HCI 设备和连接管理器已初始
    化[283.766393]蓝牙:HCI 套接字层已初始化
    [283.772233]蓝牙:已
    初始化的 CAP L2CAP 套接字层[ 283.782672]蓝牙:已初始化[283.8418
    HCI UART 驱动程序版本2.3
    [283.847503]蓝牙:HCI UART 协议 H4已注册
    [283.853019]蓝牙:HCI UART 协议 LL 已注册
    [283.858455]蓝牙:HCI UART 协议 ATH3K 已注册
    [283.864151]蓝牙:HCI UART 协议三线(H5)已注册
    [283.887912]蓝牙:HCI UART 协议283.5931]
    蓝牙:HCI UART 协议已注册[283.5931] HCI UART 协议 Broadcom 已注册
    [283.911984]蓝牙:HCI UART 协议 QCA 已注册
    [283.917545]蓝牙:HCI UART 协议 AG6XX 已注册
    [283.923276]蓝牙:HCI UART 协议 Marvell 已注册
    [284.303901]蓝牙:BNEP (以太网仿真) 1.3版
    [284.309726]蓝牙:BNEP 过滤器:协议组播
    [284.303966]蓝牙:蓝牙:284.8066] BNEP 套接字层已初始化
    
    
    当您执行 hciconfig 时、它会显示什么?
    
    hci0:类型:主总线:UART
    BD 地址:F4:B8:5E:E2:BF:72 ACL MTU:1021:6 MTU:180:4
    运行
    RX 字节:703 ACL:0 SCO:0事件:43错误:0
    TX 字节:2678 ACL:0 SCO:0命令:43错误:0
    
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    从上述日志中、似乎未下载 BTS 文件。 请确保将服务包(BTS 文件)安装到目标文件系统中的"/lib/firmware/ti-connectivity "文件夹中。 您可以从此处获取最新的服务包:

    谢谢

    哈里

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

    将 TIInit*复制到/lib/firmware/ti-connectivity 并启用 BT_EN 后 ,我将获得以下结果: # hciattach /dev/ttyO1 Texas 115200 初始化超时。 #回显$? 1 结果在 dmesg 中没有出现任何内容。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您是否验证了器件树中是否存在 HCI/UART 引脚多路复用?

    我建议、请尝试连接的 e2e 线程中的 HCI/UART 测试程序、以确保主机和 BT 控制器之间的连接正常。

    https://e2e.ti.com/support/wireless-connectivity/wifi/f/968/p/886090/3278668?tisearch=e2e-sitesearch&keymatch=%252520user%25253A60021#3278668

    谢谢

    哈里

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    >>您是否验证了器件树中的 HCI/UART 引脚多路复用?
    
    我们确实做到了。 完全地。 由于只要
    我们使用旧版本的固件(TIInit*),驱动程序就能够与器件通信,
    因此我们也可以考虑经过测试。
    
    
    我建议、请尝试连接的 e2e
    线程中的 HCI/UART 测试程序、以确保主机和 BT 控制器之间的连接
    正常。
    
    https://e2e.ti.com/support/wireless-connectivity/wifi/f/968/p/886090/3278668?tisearch=e2e-sitesearch&keymatch=%252520user%25253A60021#3278668
    
    链接的 HCI-test-arm 二进制文件不能在我们的平台上运行(exec:
    Exec format error)。 您能否提供源代码的链接、以便我们
    可以自行编译该代码以用于我们的平台。 

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

    感谢您提供 C 代码!  我们在执行时得到以下输出。 您建议我们如何继续?

    --8<--8<--8<--8<--8<--8<--8<--8<--8<--8<--8<--8<--8<--8<--8<--8<--8<--8<--8<--8<--8<--8<--8<--8<--
    --/dev/ttyO1
    
    /sys/class/gpio/export 为初/dev/ttyO1
    
    
    
    始
    化的/sys/class/gpio/gpio117/direction 回波控制/sys/class/gpio/gpio117/value 打开/sys/class/gpio/gpio117/value,为115200个设备!
    发送 HCI 命令:HCI_READ_LOCAL 版本信息
    接收 HCI 事件/响应
    找到了德州仪器的芯片!
    所需的固件文件:TIInit_11.8.32.bts
    将 HCI 波特率更改为115200
    发送 HCI 命令: HCI_VS_Update_UART_HCI_Budrate
    向控制器
    发送波特率更改命令接收 HCI 事件/响应
    响应字节[0]= 0x04
    响应字节[1]= 0x0E
    响应字节[2]= 0x04
    响应字节[3]= 0x01
    响应字节[4]= 0x36
    响应字节[5]= 0xff
    响应字节[6]= 0x00[0X00]
    
    
    响应字节响应字节[4]
    响应字节[10]= 0x00
    响应字节[11]= 0x00
    响应字节[12]= 0x00
    响应字节[13]= 0xa0
    响应字节[14]= 0x4a
    
    更改主机 UART 波特率
    发送 HCI 命令:HCI_READ_LOCAL_Version_Information
    接收 HCI 事件/响应
    找到了德州仪器的芯片!
    所需的固件文件:TIInit_11.8.32.bts
    发送 HCI 命令: HCI_READ_BD_ADDR
    接收 HCI 事件/响应
    响应字节[0]= 0x04
    响应字节[1]= 0x0E
    响应字节[2]= 0x0a
    响应字节[3]= 0x01
    响应字节[4]= 0x09
    响应字节[5]= 0x10
    响应
    
    字节[6]= 0x00响应字节[7]= 0x72响应字节[4]=
    
    0x09
    响应字节[5]= 0x10[byte 响应字节响应]= 0x10[byte 响应字节响应 = 0xb8
    响应字节[12]= 0xf4
    响应字节[13]= 0x20
    响应字节[14]= 0xac ---8<--8<--8<--8<--8<--8<--8<--8<--8<--8<--8<--8<--8<--8<--8<--
    
    
x 出现错误。请重试或与管理员联系。