禁用LAN9512


35

LAN9512是控制以太网和USB端口的硬件设备。该芯片消耗几乎200mA的电流,当我不需要USB或以太网时,将其禁用以节省能源非常有用。LAN9512数据手册解释了器件的某些节能状态-这些模式为SUSPEND2,SUSPEND1和SUSPEND0。因此,这似乎是可能的。

我已经找到了部分解决方案:

  • echo 0x0 > /sys/devices/platform/bcm2708_usb/buspower将有效地禁用设备,并使用echo 0x1相同的文件再次唤醒它。但是,一旦设备停止并启动了一定次数,它就不会再次唤醒,直到下一次重新启动操作系统为止。

是否有禁用LAN9512并重新可靠启动的方法?(也许我可以重新加载一些控制LAN9512的驱动程序吗?)

动机

当树莓派B型空闲时,它消耗400 mA电流。承受压力时为470mA。禁用LAN9512时,空闲时消耗200mA电流,承受260mA压力。

其他

  • 我已经通过使用禁用LAN9512的脚本测试了通过“ buspower”禁用芯片的可行性,该脚本尝试安装USB设备以检查活动并重新启动。到目前为止,树莓派已重新启动了9222次,没有出现错误。
  • echo 1 > /sys/devices/platform/bcm2708_usb/bussuspend禁用LAN9512,但是echo 0对同一文件执行操作时不会再次唤醒它。禁用它后,树莓派变得极慢,报告平均负载最高为4。

1
只是出于好奇;使用上述命令之一禁用电源时,功耗会降低吗?
Gerben

2
是! 总线功率和总线暂挂文件都将功耗降低200mA。当树莓派pi空闲时,它消耗400 mA。承受压力时为470mA。禁用芯片后,空闲时消耗200mA电流,承受260mA压力。
aleixrocks

非常好。谢谢。抱歉,我帮不上忙
Gerben

只是好奇:如果禁用USB和以太网,如何发送唤醒命令?进行定期工作或睡觉后?
Moshe Katz

为了简单起见,我更喜欢睡觉。调试时,我使用“回声0x0> / sys / devices / platform / bcm2708_usb / buspower;睡眠2;回声0x1> / sys / devices / platform / bcm2708_usb / buspower;睡眠30;重新启动”。因此,如果USB不唤醒,它将自动重启。“睡眠2”只是给硬件一些时间做出反应。
aleixrocks

Answers:


7

在做完自己的一些实验之后,我做了以下实验:

USB至TTL /通过万用表提供5V调试电缆。

仅在连接电源和网络的情况下,登录屏幕的正常启动时间约为420-380Ma

我先关闭了网络连接/etc/init.d/networking stop,然后关闭了芯片echo 0 > /sys/devices/platform/bcm2708_usb/buspower,的确确实下降到了约240Ma。

我也无法ping谷歌!(哪个好)

然后,通过在总线电源上回显1并运行network start命令来重新打开它。然后我又回到了370-420ma。然后对Google进行Ping操作。

然后,我将其放入循环播放的SH文件中,该文件持续了10次以上而无需重新启动。在您的命令中,无论您由于输入了reboot命令而导致什么情况,我都能看到它每次都在重新引导。

该测试的代码可以在自动重启代码的@Ubuntu粘贴中找到

这样就可以简单地用于停止和启动。您可以将其第一部分作为停止命令,将第二部分作为启动命令。

我也对这个@ My Blog进行了完整的撰写


这就是问题所在。由于LAN9512停止工作,因此迟早需要重启。我正在寻找不需要重新启动的解决方案。(在我的剧本我重新启动,每次只在键盘停止工作,因为刚刚重新启动之前,我试图手动终止该脚本它的键盘工作正常,我可以用CTRL + C杀死它。如果不是,它只是重新启动。)
aleixrocks

就像我说的那样,最后我在一个恒定的循环中对它进行了50次以上的测试,每个循环都对网络ping起作用。也许只是需要再次插入键盘,或者需要重置USB?就像其他人所说的那样,它并非为此而设计。如果可以的话。因此,采用A型的原因之一
Ryan Walmsley

就我而言,在我执行脚本的所有时间里,它最多可持续10个循环。我尝试再次插入USB,但仍然无法正常工作。不知道为什么这种差异可能是我的树莓派。如果其他人可以尝试,那就太好了。
aleixrocks

3

禁用和启用LAN9512槽的功能:

  • 回声0x0> / sys / devices / platform / bcm2708_usb / buspower(禁用)
  • 回声0x1> / sys / devices / platform / bcm2708_usb / buspower(启用)

已经在较新的内核上进行了调试,现在无需修改即可完美运行。我编写了一些脚本对其进行测试。

第一个目的是通过软件功能测试禁用。该脚本将禁用LAN9512,并尝试安装USB设备。如果可以,则测试失败。如果不是,则测试成功。最后重新启动,然后重新开始。该脚本已经运行了四天,并且在raspbian 2013-9-25上报告了8039次重新启动,没有失败。

第二个脚本旨在测试启用功能。首先,该脚本禁用LAN9512。然后等待几秒钟让pi休息。接下来,它启用LAN9512,最后尝试执行“ lsusb”命令。它列出了所有USB设备。如果内核可以识别所有USB设备,则LAN9512可以再次工作。如果不是,则测试失败。该测试已经运行了一周,并且在raspbian 2013-9-25上报告了7209个循环而没有错误,在raspbian 2014-1-7上报告了5374循环。

内核和固件

在树莓派2014-1-7上:

内核:Linux raspberrypi 3.10.25+#622 PREEMPT Fri Jan 3 3 Jan 3:41:00 GMT 2014 armv6l GNU / LINUX firmware:b00bb3ae73bd2799df0e938b7a5f17f45303fb53(clean)(release)

在树莓上2013-9-25

内核:Linux raspberrypi 3.6.11+#538 PREEMPT Fri Aug 30 20:42:08 BST 2013 armv61 GNU / LINUX固件:4f9d19896166f46a3255801bc1834561bf092732(clean)(发布)


“禁用和启用LAN9512的功能已​​经在较新的内核上进行了调试。” 您能否报告您所见过的允许数千次成功睡眠/唤醒循环的内核和固件?谢谢!我对迈向更具睡眠感的Pi感兴趣!
Tai Viinikka 2014年

1

以上提供的这些答案是正确的,但是在2015年的某个时候,Raspbian进行了更改,有兴趣的用户不得不去寻找相关的控件。

Off:  echo 0x0 > /sys/devices/platform/soc/20980000.usb/buspower   
 On:  echo 0x1 > /sys/devices/platform/soc/20980000.usb/buspower

感谢用户Adrian! https://raspberrypi.stackexchange.com/users/37611/adrian


嗨,泰!您能为感兴趣的用户提供一些参考吗?您正在使用哪个树莓派?
aleixrocks
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.