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 - 插座组装