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:wl1271_SDIO mmc1:0001:2:SDIO 写入失败(-110)、hci0:命令0x0406 TX 超时

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/1134835/wl1831mod-wl1271_sdio-mmc1-0001-2-sdio-write-failed--110-and-hci0-command-0x0406-tx-timeout

器件型号:WL1831MOD
Thread 中讨论的其他器件:WL1271

环境

设备: SolidRun N6室内(欧盟)

板: Hummingboard 2.

操作系统: Debian 10

内核: 5.10.0-0.deb10.16-armmp #1 SMP Debian 5.10.127-2~bpo10+1 (2022-07-28) armv7l GNU/Linux

[37.367306] wlcore:PHY 固件版本:版本8.2.0.245
[37.432614] wlcore:固件已启动(版本8.9.0.0.88)


说明

这些设备很少、并且 WiFi/BT 模块在运行几天后会导致问题。

有三种安装类型:

设备 A) 通过   WiFi 连接到互联网、并与节点保持蓝牙连接

设备 B) 通过   Huawei 4G USB 软件狗连接到互联网、并通过蓝牙持续连接到节点、启用 WiFi (未连接)

器件 C) 通过  Huawei 4G USB 软件狗连接到互联网、并通过蓝牙持续连接到节点、WiFi 被禁用

器件  D) 通过 以太网连接到互联网、并通过蓝牙持续连接到节点、启用了 WIFI (未连接)

观察结果

A 设备正常工作。 连接稳定。

器件 B 和 D 正常运行几天 、但随后发生内核错误(DEVICE_BD_kernel_error.txt)

器件 C 正常工作几天、但蓝牙突然停止工作。

器件 C 上的操作

内核日志条目是

[66377.110327]蓝牙:hci0:命令0x0406 TX 超时
[66389.141653]蓝牙:hci0:命令0x0406 TX 超时

使用 hciconfig -a 检查 hci0状态时 ,状态为 :正在运行 down init

在尝试运行 hciconfig hci0 hciconfig hci0时、我会得到超时响应

当我尝试使用 rmmod 和  modprobe HCI_UART 内核模块时、内核日志显示了注册蓝牙和加载驱动程序的条目

然后从 rfkill 中解除阻止蓝牙并执行 hciconfig hci0蓝牙已开始运行、hciconfig -a 显示状态为正在运行

器件 B 和 D 上的操作

发生内核错误时、我尝试执行以下操作:

rmmod 和 modprobe (顺序相反)模块:wlcore_SDIO、HCI_UART、wl18xx、wlcore、mac80211、 cfg80211

内核显示以下错误:
内核[259780.864873] wl1271_SDIOmmc1:0001:1的探测器失败、错误-16
内核[259780.879516] wl1271_SDIOmmc1:0001:2的探测器失败、错误-16

尝试与器件 C 相同的蓝牙时 、我遇到以下错误

kernel: [278120.054462] Bluetooth: HCI UART driver ver 2.3
kernel: [278120.059123] Bluetooth: HCI UART protocol H4 registered
kernel: [278120.083246] Bluetooth: HCI UART protocol LL registered
kernel: [278120.088622] Bluetooth: HCI UART protocol ATH3K registered
kernel: [278120.137792] Bluetooth: HCI UART protocol Three-wire (H5) registered
kernel: [278120.167498] Bluetooth: HCI UART protocol Intel registered
kernel: [278120.206318] Bluetooth: HCI UART protocol Broadcom registered
kernel: [278120.240479] Bluetooth: HCI UART protocol QCA registered
kernel: [278120.246033] Bluetooth: HCI UART protocol AG6XX registered
kernel: [278120.259502] Bluetooth: HCI UART protocol Marvell registered
kernel: [278120.287146] Bluetooth: hci0: Failed to get CTS
kernel: [278137.679614] Bluetooth: hci0: Failed to get CTS
kernel: [278137.951733] Bluetooth: hci0: Failed to get CTS

这些是 MMC 时钟:

root@machina1:/# cat sys/kernel/debug/mmc0/ios
clock:          0 Hz
vdd:            0 (invalid)
bus mode:       2 (push-pull)
chip select:    0 (don't care)
power mode:     0 (off)
bus width:      0 (1 bits)
timing spec:    0 (legacy)
signal voltage: 0 (3.30 V)
driver type:    0 (driver type B)
root@machina1:/# cat sys/kernel/debug/mmc1/ios
clock:          400000 Hz
vdd:            21 (3.3 ~ 3.4 V)
bus mode:       2 (push-pull)
chip select:    0 (don't care)
power mode:     2 (on)
bus width:      0 (1 bits)
timing spec:    0 (legacy)
signal voltage: 0 (3.30 V)
driver type:    0 (driver type B)
root@machina1:/# cat sys/kernel/debug/mmc2/ios
clock:          52000000 Hz
vdd:            21 (3.3 ~ 3.4 V)
bus mode:       2 (push-pull)
chip select:    0 (don't care)
power mode:     2 (on)
bus width:      3 (8 bits)
timing spec:    8 (mmc DDR52)
signal voltage: 0 (3.30 V)
driver type:    0 (driver type B)

如何处理此问题?

内核错误并将 DTS 文件分解为附件。

e2e.ti.com/.../device_5F00_BD_5F00_kernel_5F00_error.txt

e2e.ti.com/.../imx6dl_2D00_hummingboard2_2D00_emmc_2D00_som_2D00_v15.dts.txt

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

    您好!

    这似乎是已关闭的重复 TT。

    如前所述、这通常是 SDIO 线路上的完整性问题。

    让我们从 Wi-Fi (B 和 D)开始。 减少时钟似乎没有帮助。 您能否确保模块在冒烟后全部启动并运行?

    就像测试一样、在正常运行期间、您能否触发恢复并报告系统是否继续运行? 触发恢复的命令为(假设 phy1):

    Echo 1 >/sys/kernel/debug/ieee80211/phy1/wl12xx/start_recovery

    此致、

    Shlomi

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

    您好!

    一旦再次发生碰撞、我将验证模块状态。  

    执行 以下命令时:
    Echo 1 >/sys/kernel/debug/ieee80211/phy0/wlcore/start_recovery

    系统继续运行、bt 仍处于连接状态、WiFi 扫描成功完成。

    dmesg 显示以下消息:

    [48502.485828] ------------[ cut here ]------------
    [48502.490650] WARNING: CPU: 1 PID: 14072 at drivers/net/wireless/ti/wlcore/main.c:802 wl12xx_queue_recovery_work+0x6c/0x70 [wlcore]
    [48502.502519] Modules linked in: algif_hash(E) algif_skcipher(E) af_alg(E) xt_nat(E) xt_tcpudp(E) veth(E) xt_conntrack(E) xt_MASQUERADE(E) nf_conntrack_netlink(E) xfrm_user(E) xfrm_algo(E) cmac(E) rfcomm(E) nft_counter(E) xt_addrtype(E) nft_compat(E) nft_chain_nat(E) nf_tables(E) nfnetlink(E) br_netfilter(E) bridge(E) wl18xx(E) wlcore(E) bnep(E) mac80211(E) cfg80211(E) libarc4(E) evdev(E) imx6_media_csi(CE) v4l2_fwnode(E) hci_uart(E) snd_soc_simple_card(E) imx_thermal(E) btqca(E) snd_soc_simple_card_utils(E) btrtl(E) btbcm(E) btintel(E) imx_vdoa(E) 8021q(E) garp(E) mrp(E) stp(E) llc(E) nvmem_imx_ocotp(E) snd_soc_imx_audmux(E) wlcore_sdio(E) mux_mmio(E) video_mux(E) mux_core(E) snd_soc_fsl_ssi(E) imx_pcm_dma(E) imx_pcm_fiq(E) snd_soc_core(E) snd_pcm_dmaengine(E) snd_pcm(E) snd_timer(E) snd(E) soundcore(E) imx2_wdt(E) imx6_media(CE) imx_media_common(CE) videobuf2_dma_contig(E) v4l2_mem2mem(E) videobuf2_memops(E) videobuf2_v4l2(E) videobuf2_common(E) imxdrm(E) imx_ipu_v3(E) drm_kms_helper(E)
    [48502.503249]  iptable_nat(E) nf_nat(E) nf_conntrack(E) nf_defrag_ipv6(E) nf_defrag_ipv4(E) libcrc32c(E) iptable_mangle(E) ir_rc6_decoder(E) drm(E) iptable_filter(E) rc_rc6_mce(E) gpio_ir_recv(E) rc_core(E) leds_gpio(E) imx6q_cpufreq(E) bluetooth(E) jitterentropy_rng(E) cbc(E) overlay(E) aes_arm_bs(E) crypto_simd(E) cryptd(E) drbg(E) aes_arm(E) aes_generic(E) ansi_cprng(E) ecdh_generic(E) rfkill(E) ecc(E) libaes(E) ip_tables(E) x_tables(E) autofs4(E) ext4(E) crc16(E) mbcache(E) jbd2(E) crc32c_generic(E) ci_hdrc_imx(E) ci_hdrc(E) phy_generic(E) ulpi(E) roles(E) ehci_hcd(E) udc_core(E) sdhci_esdhc_imx(E) sdhci_pltfm(E) cqhci(E) i2c_imx(E) sdhci(E) usbcore(E) usbmisc_imx(E) at803x(E) anatop_regulator(E) phy_mxs_usb(E) gpio_mxc(E)
    [48502.655562] CPU: 1 PID: 14072 Comm: bash Tainted: G        WC  E     5.10.0-0.deb10.16-armmp #1 Debian 5.10.127-2~bpo10+1
    [48502.666529] Hardware name: Freescale i.MX6 Quad/DualLite (Device Tree)
    [48502.673062] Backtrace:
    [48502.675552] [<c0cc7fb4>] (dump_backtrace) from [<c0cc837c>] (show_stack+0x20/0x24)
    [48502.683135]  r7:00000322 r6:60000013 r5:00000000 r4:c13cdd68
    [48502.688811] [<c0cc835c>] (show_stack) from [<c0ccd2b0>] (dump_stack+0xd0/0xe4)
    [48502.696051] [<c0ccd1e0>] (dump_stack) from [<c034d6b8>] (__warn+0xfc/0x114)
    [48502.703023]  r7:00000322 r6:00000009 r5:bf6fde20 r4:bf716e3c
    [48502.708694] [<c034d5bc>] (__warn) from [<c0cc91c0>] (warn_slowpath_fmt+0x70/0xd8)
    [48502.716184]  r7:00000322 r6:bf716e3c r5:c1305e4c r4:00000000
    [48502.721919] [<c0cc9154>] (warn_slowpath_fmt) from [<bf6fde20>] (wl12xx_queue_recovery_work+0x6c/0x70 [wlcore])
    [48502.731932]  r9:c2a69f58 r8:00000002 r7:00aac758 r6:00000002 r5:c2f197c0 r4:c2f197c0
    [48502.739761] [<bf6fddb4>] (wl12xx_queue_recovery_work [wlcore]) from [<bf70f368>] (start_recovery_write+0x30/0x40 [wlcore])
    [48502.750809]  r5:c2f197c0 r4:c2f19804
    [48502.754437] [<bf70f338>] (start_recovery_write [wlcore]) from [<c0655698>] (full_proxy_write+0x64/0x80)
    [48502.763838]  r7:00aac758 r6:cb818ee0 r5:bf70f338 r4:c342a780
    [48502.769513] [<c0655634>] (full_proxy_write) from [<c058b684>] (vfs_write+0xd4/0x434)
    [48502.777264]  r9:00000000 r8:c2a69f58 r7:00aac758 r6:c1305e4c r5:00000002 r4:c342a780
    [48502.785016] [<c058b5b0>] (vfs_write) from [<c058bb48>] (ksys_write+0x68/0xe0)
    [48502.792160]  r10:00000002 r9:00aac758 r8:c342a780 r7:00000000 r6:00000000 r5:c342a780
    [48502.799992]  r4:c1305e4c
    [48502.802535] [<c058bae0>] (ksys_write) from [<c058bbd8>] (sys_write+0x18/0x1c)
    [48502.809677]  r10:00000004 r9:c2a68000 r8:c0300324 r7:00000004 r6:b6f3adb0 r5:00aac758
    [48502.817510]  r4:00000074
    [48502.820053] [<c058bbc0>] (sys_write) from [<c03000c0>] (ret_fast_syscall+0x0/0x54)
    [48502.827626] Exception stack(0xc2a69fa8 to 0xc2a69ff0)
    [48502.832688] 9fa0:                   00000074 00aac758 00000001 00aac758 00000002 00000000
    [48502.840874] 9fc0: 00000074 00aac758 b6f3adb0 00000004 00000002 00000002 00000000 00000000
    [48502.849058] 9fe0: 00000004 bed01930 b6ed23b3 b6e5b746
    [48502.854225] ---[ end trace 9dbc4ce4140488bf ]---
    [48502.864099] wlcore: Hardware recovery in progress. FW ver: Rev 8.9.0.0.88
    [48502.886637] wlcore: pc: 0x0, hint_sts: 0x00000040 count: 2
    [48502.902885] wlcore: down
    [48502.905678] wlcore: down
    [48502.913651] ieee80211 phy0: Hardware restart was requested
    [48503.508817] wlcore: PHY firmware version: Rev 8.2.0.0.245
    [48503.562281] wlcore: firmware booted (Rev 8.9.0.0.88)

    此致、

    Taneli

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

    感谢您的回复。

    我只是想确保重新加载固件运行良好。

    只是为了确保、重新加载模块也不会恢复? 仅重新引导?

    Shlomi

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

    您好!

    当错误 wl1271_SDIO mmc1:0001:2:SDIO 写入失败(-110)时
    出现并尝试重新加载模块时、出现以下错误:

    内核[259780.864873]  wl1271_SDIO: mmc1:0001:1的探测器失败、错误-16

    只有重新引导才会恢复此状态。

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

    您好!

    -16错误意味着器件或资源正忙、导致 SDIO 无法读取/写入时出现-110错误。

    由于 BT 在发生时也会出现问题、因此我认为芯片可能无法切换。

    是否可以确保 BT_EN 和 WL_EN 正常工作?

    另一个我与其中一位客户获得-16的示例是、当他们使用校准器工具时、wlan0接口仍在运行(他们需要在运行校准器工具之前将其设置为低电平时)。

    此致、

    Shlomi

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

    大家好、感谢您的回答。
    如何确保 BT_EN 和 WL_EN 正常工作?

    我们尚未运行校准器工具。

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

    您好!

    校准器工具只是我过去所经历的类似行为的一个示例。 无需运行它。

    对于 BT_EN 和 WL_EN、您可以使用外部逻辑分析仪对其进行探测。

    此致、

    Shlomi