LAN9512 to urządzenie sprzętowe kontrolujące porty Ethernet i USB. Ten układ zużywa prawie 200 mA i bardzo przydatne będzie jego wyłączenie, aby oszczędzać energię, gdy nie potrzebuję USB ani Ethernet. Karta danych LAN9512 wyjaśnia niektóre stany urządzenia w celu oszczędzania energii - te tryby to SUSPEND2, SUSPEND1 i SUSPEND0. Dlatego wydaje się to możliwe.
Znalazłem już częściowe rozwiązanie:
echo 0x0 > /sys/devices/platform/bcm2708_usb/buspower
skutecznie wyłączy urządzenie i wznowi je zecho 0x1
tym samym plikiem. Jednak gdy urządzenie zostanie zatrzymane i uruchomione określoną liczbę razy, nie obudzi się ponownie, aż do następnego ponownego uruchomienia systemu operacyjnego.
Czy istnieje metoda wyłączenia LAN9512 i niezawodnego ponownego uruchomienia? (Może mogę ponownie załadować sterownik, który kontroluje LAN9512?)
Motywacja
Gdy raspberry pi model B jest bezczynny, zużywa 400 mA. Kiedy jest obciążony, 470mA. Kiedy LAN9512 jest wyłączony, zużywa 200 mA w stanie bezczynności i 260 mA obciążony.
Inne
- Przetestowałem wiarygodność wyłączenia układu za pomocą „buspower” za pomocą skryptu, który wyłącza LAN9512, próbuje zamontować urządzenie USB w celu sprawdzenia aktywności i restartuje się. Do tej pory Raspberry Pi restartował się 9222 razy bez błędów.
echo 1 > /sys/devices/platform/bcm2708_usb/bussuspend
Wyłącza LAN9512, ale nie uruchamia się ponownie podczas wykonywaniaecho 0
tego samego pliku. Po wyłączeniu Raspberry Pi działa wyjątkowo wolno, zgłaszając średnią ładunek do 4.
usb
power-management
ethernet
aleixrocks
źródło
źródło
Odpowiedzi:
Po przeprowadzeniu własnych eksperymentów wykonałem następujące czynności w celu eksperymentowania:
Kabel USB do TTL / debugowania z 5 V przez multimetr.
Normalny rozruch przy ekranie logowania z podłączonym zasilaniem i siecią wynosił około 420-380Ma
Najpierw wyłączyłem sieć przez,
/etc/init.d/networking stop
a następnie układ scalonyecho 0 > /sys/devices/platform/bcm2708_usb/buspower
i rzeczywiście spadł do ~ 240MaByłem także w stanie bezskutecznie pingować google! (Który jest dobry)
Następnie włączyłem go ponownie, wysyłając echo 1 do zasilania magistrali i uruchamiając polecenie uruchomienia sieci. I znowu wróciłem do około 370-420ma. Pinging google następnie działało.
Następnie umieściłem to w zapętlonym pliku SH, który trwał ponad 10 razy bez konieczności ponownego uruchamiania. W twoim poleceniu widziałem, jak restartuje się za każdym razem, bez względu na to, co spowodowało, że włączyłeś polecenie restartu.
Kod do testu można znaleźć @ Ubuntu Wklej kod automatycznego restartu.
Można to następnie wykorzystać do zatrzymania i uruchomienia. Pierwszą część można wykonać jako polecenie zatrzymania, a drugą część jako polecenie uruchomienia.
Zrobiłem też pełny opis tego @ My Blog
źródło
Funkcja wyłączania i włączania koryta LAN9512:
Został debugowany na nowszych jądrach i teraz działa idealnie bez modyfikacji. Zrobiłem kilka skryptów, aby to przetestować.
Celem pierwszego z nich jest przetestowanie wyłączania za pomocą funkcji oprogramowania. Skrypt wyłącza LAN9512 i próbuje zamontować urządzenie USB. Jeśli to możliwe, test się nie powiedzie. Jeśli nie, test się powiedzie. Wreszcie uruchom ponownie i zacznij od nowa. Skrypt działa od czterech dni i zgłosił 8039 restartów bezawaryjnie na raspbian 2013-9-25.
Drugi skrypt służy do testowania funkcji włączającej. Przede wszystkim skrypt wyłącza LAN9512. Następnie odczekuje kilka sekund, aż pi będzie odpoczywać. Następnie włącza LAN9512, a na koniec próbuje wykonać polecenie „lsusb”. Zawiera listę wszystkich urządzeń USB. Jeśli jądro rozpoznaje wszystkie urządzenia USB, LAN9512 znów działa. Jeśli nie, test się nie powiódł. Test trwał przez tydzień i wykrył 7209 pętli bez błędów w raspbian 2013-9-25 i 5374 pętli w raspbian 2014-1-7.
Jądra i oprogramowanie układowe
W języku raspbian 2014-1-7:
jądro: Linux raspberrypi 3.10.25+ # 622 PREEMPT Pt 3 stycznia 18:41:00 GMT 2014 armv6l Oprogramowanie układowe GNU / LINUX: b00bb3ae73bd2799df0e938b7a5f17f45303fb53 (czyste) (wydanie)
Na raspbian 2013-9-25
jądro: Linux raspberrypi 3.6.11+ # 538 PREEMPT Pt 30 sierpnia 20:42:08 BST 2013 armv61 GNU / LINUX firmware: 4f9d19896166f46a3255801bc1834561bf092732 (czyste) (wydanie)
źródło
Powyższe odpowiedzi były poprawne, gdy były oferowane, ale w 2015 r. Raspbian wprowadził zmiany i zainteresowani użytkownicy musieli szukać odpowiednich elementów sterujących.
Moje podziękowania dla użytkownika Adrian! https://raspberrypi.stackexchange.com/users/37611/adrian
źródło