Wifi 不会在 BeagleBone 上熬夜

Posted

技术标签:

【中文标题】Wifi 不会在 BeagleBone 上熬夜【英文标题】:Wifi won't stay up on BeagleBone 【发布时间】:2012-07-07 00:58:25 【问题描述】:

我在 BeagleBone 上运行 Ubuntu 11.10,并将 Edimax EW-7711UAn wifi 适配器插入 USB 端口。我已经配置了 /etc/network/interfaces 并且 wifi 工作正常,但是:

    在启动设备时,wlan0 接口并不总是出现。大约三分之一的尝试成功。

    界面有时会再次出现故障,尤其是在一段时间不使用时。

/etc/network/interfaces 文件包括:

auto wlan0
    iface wlan0 inet dhcp
    wpa-driver wext
    wpa-ssid "Bodoni"
    wpa-psk "<mypassword>"

为了尝试解决第 1 点),我在 /etc/rc.local 中放入以下内容:

nohup sh -c "ifdown wlan0 && ifup wlan0"

但这似乎没有多大帮助。我猜第二个问题可能与电源管理有关,所以我可能会尝试在 /etc/rc.local 中将其关闭。

但是有人对我如何让 wifi 在启动时可靠地启动有任何想法吗?我在没有以太网的情况下运行无头 BeagleBone(它在机器人上),所以解决这个问题很重要!

仅供参考,我使用的是默认驱动程序 - lsmod 提供:

Module                  Size  Used by
aes_generic            27837  2 
arc4                    1111  2 
rt2800usb              12386  0 
rt2800lib              45146  1 rt2800usb
crc_ccitt               1457  1 rt2800lib
rt2x00usb              10595  1 rt2800usb
rt2x00lib              39077  3 rt2800usb,rt2800lib,rt2x00usb
mac80211              228509  3 rt2800lib,rt2x00usb,rt2x00lib
cfg80211              167722  2 rt2x00lib,mac80211
rfkill                 16703  1 cfg80211
binfmt_misc             6224  1 
spidev                  4620  0 

我希望不必编译新的驱动程序,因为我在这方面没有取得太大的成功!

【问题讨论】:

【参考方案1】:

我的 BeagleBones 使用另一个使用 rt2800usb 驱动程序的 wifi 适配器时遇到了类似的问题。具体来说,我使用的是基于 rt3070 芯片的 DLINK DWA-125 (HW Rev A2)。

如果我将 DWA-125 直接插入 BeagleBone 上的 USB 端口,与您报告的症状完全相同。

但是,如果我将适配器插入 USB 延长线,然后将延长线插入 BeagleBone USB 端口,一切正常。我已经使用此设置完成了 100 小时的 Cloud9 开发,并且 Wifi 没有任何问题。

我正在运行 Angstrom 发行版 - 我在所有三个最新的 BB 版本(4/22. 5/? 和 6/18)上都发现了相同的问题。

USB 延长线的长度似乎无关紧要(至少在 1 英尺到 12 英尺之间 - 没有尝试过低于 1 英尺的任何东西。)

我有 6 个 BeagleBone(4 个 A5 版和 2 个 A6 版)- 所有这些 Beaglebone 的行为都是相同的。

还有 4 个 DWA-125 Rev A2 USB 适配器 - 所有这些适配器的行为都是相同的。

我没有尝试过使用相同或其他芯片/驱动程序的其他 USB Wifi 适配器。而且我还没有花时间去追查这种行为的根本原因——我有代码要写!

但是,如果您的经验与我的相符,不妨试一试 - 它是一种快速简便的“修复”方法。

---- 附录:

我刚刚尝试使用 Belkin N150 微型 USB Wifi 适配器进行实验 - 基于 rtl8192cu 芯片和 6/18 BeagleBone Angstrom 发行版随附的标准驱动程序。

有非常相似的行为:直接插入 USB 端口时,Wifi 根本不工作。但是当通过 1 英尺 USB 延长线插入时,一切正常。

【讨论】:

多么奇怪。目前我已经让它工作得更好了。我在 /etc/rc.local 中放了一堆命令。如果 eth0 没有 IP,我使用 ifdown eth0,假设我们运行的是无线而不是有线。然后我检查 wlan0 是否有 IP。如果没有,我执行 ifdown wlan0 然后 ifup --force wlan0。为了更好地衡量,我释放了任何 DHCP 租约并运行 dhclient 以获得新的租约。到目前为止,这已经导致无线网络相当可靠,甚至可以长时间使用。我可能会编写一个 cron 作业来进行定期检查并在未连接时强制无线启动。 我的情况更糟 - 尝试使用 wifi 加密狗后 USB 端口会死机。只有重新启动才能将其恢复。一个 USB 集线器修复了它。【参考方案2】:

我遇到了同样的问题。到目前为止我找到的最好的解释是this one from Adafruit

主要想法是 Wifi 加密狗被位于 USB 插槽下方的 HDMI 适配器破坏。在这种情况下,您有两种解决方法:

    通过电缆将 Wifi-dongle 尽可能远离 USB 插槽 如果您真的不需要 HDMI 接口,请禁用它!

只有第二个选项对我有帮助。

步骤如下:

> mkdir /mnt/boot
> mount /dev/mmcblk0p1 /mnt/boot
> nano /mnt/boot/uEnv.txt

Remove the # in front of the cape_disable command

##Disable HDMI
cape_disable=capemgr.disable_partno=BB-BONELT-HDMI,BB-BONELT-HDMIN

希望对大家有帮助!

【讨论】:

【参考方案3】:

我已通过移除 USB ESD 尖峰保护 IC(U10、TPD4S012)解决了这个问题。它应该连接在 USB 连接器和 CPU 之间,但它放置在我的板上的 USB 连接器之后(版本 A4)。我不知道这是否会在以后的版本中修复。

更新:在某些情况下这不会有太大帮助。检查this线程。

【讨论】:

【参考方案4】:

我在一年的大部分时间里都遇到了类似的问题,直到我用谷歌搜索了足够长的时间才能找到

wicd

在使用 wicd 进行设置后,我的 5 个 beaglebone 在我的家庭网络上的 wifi 加密狗上从后卧室到车库一直坚如磐石。 /etc/network/interfaces 不是要走的路。我一定尝试了数百种配置,有些配置似乎可以持续一两天。我记得文档为接口提供了一个很好的默认值,非常准系统。如果需要,wicd 会运行您的请求者。

【讨论】:

【参考方案5】:

我花了很长时间才在 BeagleBone 上获得可靠的 WiFi。最后,答案是使用 Atheros 加密狗,因为我在 RealTek 和 RALink 芯片组上运气不佳。 NetGear WNA1100 在 Angstrom 和 Ubuntu 中对我来说都非常可靠。请参阅我的帖子here。

【讨论】:

以上是关于Wifi 不会在 BeagleBone 上熬夜的主要内容,如果未能解决你的问题,请参考以下文章

Beaglebone Black – 智能家居控制系统 LAS - 插座组装

无法在Beaglebone Green上安装MongoDB

在 Beaglebone Black 上启用 UART

在 BeagleBone Black 上构建 gcc 失败

如何在 beaglebone black 上安装 lamp/xampp 服务器

使用设备树覆盖在 beaglebone black 上更改心跳