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.

[参考译文] Linux/WL1805MOD:WiFi 处于活动状态时、hciattach 经常失败(通常意味着2个中的1个)!

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/777623/linux-wl1805mod-hciattach-fails-often-often-means-1-out-of-2-when-wifi-is-active

器件型号:WL18xxMOD

工具/软件:Linux

您好!

我们在启用 WiFi+蓝牙(同时)时遇到了一个奇怪的问题

仅 WiFi 操作,工作正常,仅蓝牙工作正常。  

但是,当我们使用 Wifi 并启用蓝牙时(通过启用硬件使能引脚并通过 hciattach 连接 Bluez,在该 WiFi 已经运行并主动连接后!)  当时,hciattach bails out (实际是1合2 hciattach 操作)  

/usr/sbin/hciattach /dev/ttymxc3 Texas -s 115200

hc 初始化超时。

 

当查看串行线路(使用 logger)时,如果 Haci 连接失败,我就不会获得'0x04'字节,READ_HCI_EVENT 正在等待!

COM30 [0004]: 01 10 00

超时!!!!

WL18xx 模块没有 RxD!

 

在第二个 hciattach ... 一切都很好!

/usr/sbin/hciattach /dev/ttymxc3 Texas -s 115200

找到了德州仪器的芯片!
固件文件:/lib/firmware/TIInit_11.8.32.bts
已加载 BTS 脚本版本1
TExaS:将波特率更改为3000000、将流控制更改为1

COM30 [0001]:01
COM30 [0003]:01 10 00
COM31 [0001]:04
COM30 [0018]:A5 AA 5A 01 10 00 01 36 FF 04 C0 C6 2D 00 FC EC 24
COM31 [0021]:0E 0C 01 10 00 06 00 06 00 06 0D 00 20 AC 04 0E 04 01 36 FF 00
COM30 [0001]:84

一切都很好!

在第三次 hciattach 时,它将失败增益,第四次将工作,第五次将失败 。 等等

在添加调试代码并查看串行线路中的记录器输出时(我必须得出 与 READ_HCI_EVENT 上的0x04结论相同的结论、WL18xx 模块应该提供的内容)

备注:只有当 WiFi 处于活动状态时才会看到这种情况!!!

任何想法,为什么这在50%的情况下会出错!

我想说(再说一次),在只支持蓝牙的操作中,它总是能工作,因此永远不会失败!   

此致

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如何为每个 hciattach 重置和重新初始化?
    可以、在尝试新的 hciattach 之前、您尝试重置 BT_EN、即切换 BT_EN GPIO 两次、其间的延迟约为10秒左右。

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

    你好

    我通过驱动 BT_EN (禁用)(终止/中止 hciattach、等待3秒钟)和驱动 BT_EN (启用)启动新的 hciattach 来重置和重新初始化。

    { PS:我已将 hciattach 超时设置为3秒 ISO 默认值10秒}

    如果 WiFi 被禁用、所有功能都将从第一次开始工作、如果 WiFi 被启用、我必须执行两次。

    我已经尝试了10秒的方案,出于某种原因,它有时从第一次开始就能工作,有时甚至不能工作!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您是否意味着两次重置之间的延迟很长,它不起作用?

    我们尝试了以下脚本、它在 AM437x EVM 上运行良好、WiFi 正在运行并对远程设备执行 Ping 操作。

    !/bin/bash
    echo 3 >/sys/class/gpio/export
    回显>/sys/class/gpio/gpio3/direction
    echo 0 >/sys/class/gpio/gpio3/value
    睡眠1
    Echo 1 >/sys/class/gpio/gpio3/value
    我在{1..10}中的状态
    操作
    将-x #echo 设置为 on
    hciconfig hci0向下
    kill -9 `pgrep hciattach`
    Kill -9 `pgrep bluetoothd`
    rmmod HCI_UART
    RMD 蓝牙
    rmmod serdev
    echo 0 >/sys/class/gpio/gpio3/value
    usleep 1000
    Echo 1 >/sys/class/gpio/gpio3/value
    usleep 5000
    echo 0 >/sys/class/gpio/gpio3/value
    usleep 1000
    Echo 1 >/sys/class/gpio/gpio3/value
    usleep 5000
    hciattach /dev/ttyS1 Texas 3000000
    hcitool 扫描
    回声"--> "
    回波"--iteration:$i done --"
    回声"--> "
    将+x #echo 设置为 off
    完成
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的、建议将 BT EN 复位两次、如上述脚本所示... 我希望这能解决你的问题。

    谢谢