LAN9512'yi devre dışı bırak


35

LAN9512, Ethernet ve USB portlarını kontrol eden donanım cihazıdır. Bu çip neredeyse 200mA tüketiyor ve USB veya Ethernet'e ihtiyacım olmadığında enerjiden tasarruf etmek için devre dışı bırakmak çok faydalı olacak. LAN9512 veri sayfası, enerji tasarrufu için cihazın bazı durumlarını açıklar - bu modlar SUSPEND2, SUSPEND1 ve SUSPEND0. Bu nedenle, mümkün gibi görünüyor.

Çoktan kısmi bir çözüm buldum:

  • echo 0x0 > /sys/devices/platform/bcm2708_usb/buspowerAygıtı etkin bir şekilde devre dışı bırakacak echo 0x1ve aynı dosyayla tekrar uyandıracak . Ancak, cihaz belirli bir sayıda durdurulduktan ve başlatıldıktan sonra, işletim sisteminin bir sonraki yeniden başlatılmasına kadar bir daha uyanmayacaktır.

LAN9512'yi devre dışı bırakmak ve tekrar güvenilir bir şekilde başlatmak için bir yöntem var mı? (Belki LAN9512'yi kontrol eden bir sürücüyü yeniden yükleyebilir miyim?)

Motivasyon

Ahududu pi B modeli boşta iken 400 mA tüketir. Streslendiğinde, 470mA. LAN9512 devre dışı bırakıldığında, rölantide 200mA tüketmekte ve 260mA gerilmekte.

Diğerleri

  • LAN9512'yi devre dışı bırakan bir komut dosyası kullanarak çipi "buspower" aracılığıyla devre dışı bırakma olasılığını test ettim, etkinliği ve yeniden başlatmaları kontrol etmek için bir usb aygıtı takmaya çalışırım. Şimdiye kadar, ahududu pi hatasız 9222 kez yeniden başlatıldı.
  • echo 1 > /sys/devices/platform/bcm2708_usb/bussuspendLAN9512'yi devre dışı bırakır ancak echo 0aynı dosyaya yaparken tekrar uyandırmaz . Devre dışı bıraktıktan sonra ahududu pi, 4'e kadar bir yük ortalaması bildirerek aşırı derecede yavaş ilerliyor.

1
Sadece meraktan; Devre dışı bıraktığınızda, yukarıdaki komutlardan birini kullanarak güç tüketimi düşüyor mu?
Gerben

2
Evet! Hem buspower hem de bussuspend dosyaları 200mA tüketimini azaltır. Bir ahududu pi boştayken 400 mA tüketir. Streslendiğinde, 470mA. Çip devre dışı bırakıldığında, boşta 200mA tüketir ve 260mA gerginleşir.
aleixrocks

Gerçekten hoş. Teşekkürler. Üzgünüm ama yardım edemem
Gerben

Merak ediyorum: USB ve Ethernet'i devre dışı bırakırsanız, uyandırma komutunu nasıl gönderirsiniz? Bir cron işi mi yoksa bir uykudan sonra mı?
Moshe Katz

Sadeliği için uyumayı tercih ederim. Hata ayıklama yaparken, "echo 0x0> / sys / devices / platform / bcm2708_usb / buspower; sleep 2; echo 0x1> / sys / devices / platform / bcm2708_usb / buspower; sleep 30; reboot" kullanıyorum. Böylece, USB uyanmazsa, otomatik olarak yeniden başlatılır. "uyku 2" sadece donanıma tepki vermek için biraz zaman vermek içindir.
aleixrocks

Yanıtlar:


7

Kendi kendime bir deney yaptıktan sonra, deney yapmak için aşağıdakileri yaptım:

Multimetre üzerinden 5V ile USB'den TTL / Debug kablosu.

Giriş ekranında normal açılışta sadece güç ve ağ bağlantısı yaklaşık 420-380Ma idi.

İlk önce ağ bağlantısını /etc/init.d/networking stopve ardından yongayı kapattım echo 0 > /sys/devices/platform/bcm2708_usb/buspowerve gerçekten de ~ 240Ma'ya indi.

Ayrıca başarısız google ping başardı! (Hangisi iyi)

Daha sonra veri yoluna 1 ekleyerek ve ağ başlatma komutunu çalıştırarak tekrar açtım. Ve bir kez daha 370-420ma'ya döndüm. Google'a ping işlemi yapıldı.

Daha sonra bunu döngülenmiş bir SH dosyasına koydum ve yeniden başlatılmasına gerek kalmadan 10 defadan fazla sürdü. Komutunuzda, her ne zaman yeniden başlatma komutunu koyduğunuzdan bağımsız olarak yeniden başlatıldığını görebiliyordum.

Test kodunu @ Ubuntu Otomatik yeniden başlatma kodunun yapıştırmasından bulabilirsiniz.

Bu daha sonra durdurmak ve başlatmak için kullanılabilir. İlk kısmını stop komutu, ikinci kısmını start komutu olarak yapabilirsiniz.

Ayrıca bunu @ Blogumdan tam olarak yazdım.


Bu sadece sorun. LAN9512 çalışmayı durdurduğu için er ya da geç, yeniden başlatmanız gerekir. Yeniden başlatılması gerekmeyen bir çözüm arıyorum. (Senaryom ben her zaman yeniden başlatılması yalnızca klavye durdurma çalışma, sadece yeniden başlatmadan önce el senaryoyu öldürmeye Bu klavye I + c ctrl ile öldürebilir çalışır çalıştı çünkü değilse, sadece yeniden başlatma..)
aleixrocks

Dediğim gibi sonunda her biri networking ping için çalışan sabit bir döngüde 50 defadan fazla test ettim. Belki de klavyenin tekrar prize takılması ya da USB'nin sıfırlanması gerekebilir mi? Diğerlerinin dediği gibi, bunun için tasarlanmadığını. Eğer bu bir bonus olabilir. Bu nedenle Model A'nın sebeplerinden biri
Ryan Walmsley

Benim durumumda, senaryonuzu icra ettiğim her zaman en fazla 10 döngü sürüyor. USB'yi tekrar takmayı denedim ama hala işe yaramadı. Bu farkın neden ahududu pi'm olduğu hakkında hiçbir fikrim yok. Başka biri daha deneyebilirse çok sevinirim.
aleixrocks

3

LAN9512 teknesini devre dışı bırakma ve etkinleştirme özelliği:

  • yankı 0x0> / sys / cihazlar / platform / bcm2708_usb / buspower (devre dışı bırakma)
  • yankı 0x1> / sys / cihazlar / platform / bcm2708_usb / buspower (etkin)

Yeni çekirdeklerde hata ayıklandı ve şimdi değişiklik yapılmadan mükemmel çalışıyor. Test etmek için birkaç senaryo yazdım.

İlki, yazılım özelliğini kullanarak devre dışı bırakmayı test etmektir. Betik LAN9512'yi devre dışı bırakır ve bir USB cihazı takmaya çalışır. Mümkünse test başarısız olur. Değilse, test başarılı olur. Sonunda yeniden başlatılır ve tekrar başlar. Senaryo dört gündür yayınlanıyor ve rasbbian 2013-9-25'te başarısızlıkla sonuçlanan 8039 yeniden başlatıldığını bildirdi.

İkinci komut, etkinleştirme özelliğini test etmek içindir. Her şeyden önce, komut dosyası LAN9512'yi devre dışı bırakır. Pi'nin dinlenmesi için birkaç saniye bekleyin. Daha sonra LAN9512'yi etkinleştirir ve son olarak “lsusb” komutunu çalıştırmaya çalışır. Tüm USB cihazlarını listeler. Çekirdek tüm USB aygıtlarını tanıyabiliyorsa, LAN9512 tekrar çalışıyordur. Değilse, test başarısız oldu. Test bir hafta boyunca devam etti ve raspbian 2013-9-25'te hatasız 7209 döngü ve raspbian 2014-1-7'de 5374 döngü olduğunu bildirdi.

Çekirdekler ve donanımlar

Raspbian 2014-1-7'de:

çekirdeği: Linux raspberrypi 3.10.25+ # 622 HAZIRLIK Cum 3 Ocak 18:41:00 GMT 2014 armv6l GNU / LINUX ürün yazılımı: b00bb3a73b2799df0e938b7a5f17f45303fb53 (temiz) (sürüm)

Raspbian 2013-9-25 tarihinde

çekirdek: Linux raspberrypi 3.6.11+ # 538 HAZIRLIK Cum Ağu 30 20:42:08 BST 2013 armv61 GNU / LINUX ürün yazılımı: 4f9d19896166f46a3255801bc1834561bf092732 (temiz) (sürüm)


"LAN9512'nin devre dışı bırakılması ve etkinleştirilmesi özelliği yeni çekirdekte hata ayıklandı." Binlerce başarılı uyku / uyanıklık döngüsüne izin veren hangi çekirdek ve bellenimi gördüğünüzü bildirir misiniz? Teşekkürler! Daha uykulu bir Pi'ye doğru ilerleme ile ilgileniyorum!
Tai Viinikka,

1

Bu cevaplar teklif edildiğinde doğruydu, ancak 2015'te bir süre, Raspbian değişiklikler yaptı ve ilgilenen kullanıcılar ilgili kontrolleri aramaya gitmek zorunda kaldı.

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

Kullanıcıya teşekkür Adrian! https://raspberrypi.stackexchange.com/users/37611/adrian


Merhaba Tai! İlgilenen kullanıcılar için referans verebilir misiniz? Hangi ahududu pi kullanıyorsunuz?
aleixrocks
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.