Nonaktifkan LAN9512

35

LAN9512 adalah perangkat perangkat keras yang mengontrol port Ethernet dan USB. Chip ini mengkonsumsi hampir 200mA, dan akan sangat berguna untuk menonaktifkannya untuk menghemat energi ketika saya tidak membutuhkan USB atau Ethernet. Lembar data LAN9512 menjelaskan beberapa kondisi perangkat untuk menghemat energi - mode ini adalah SUSPEND2, SUSPEND1 dan SUSPEND0. Karena itu, hal itu tampaknya mungkin.

Saya sudah menemukan solusi parsial:

  • echo 0x0 > /sys/devices/platform/bcm2708_usb/buspowerakan secara efektif menonaktifkan perangkat dan membangunkannya lagi dengan echo 0x1file yang sama. Namun, setelah perangkat dihentikan dan mulai beberapa kali, perangkat tidak akan terbangun lagi hingga reboot sistem operasi berikutnya.

Apakah ada metode untuk menonaktifkan LAN9512 dan mulai lagi dengan andal? (Mungkin saya bisa memuat ulang beberapa driver yang mengontrol LAN9512?)

Motivasi

Ketika model raspberry pi B menganggur, ia mengkonsumsi 400 mA. Saat stres, 470mA. Ketika LAN9512 dinonaktifkan, ia mengkonsumsi 200mA saat idle dan 260mA ditekankan.

Lainnya

  • Saya telah menguji kemampuan menonaktifkan chip melalui "buspower" dengan menggunakan skrip yang menonaktifkan LAN9512, mencoba memasang perangkat usb untuk memeriksa aktivitas dan mem-boot ulang. Sampai sekarang, pi raspberry telah melakukan reboot 9222 kali tanpa kesalahan.
  • echo 1 > /sys/devices/platform/bcm2708_usb/bussuspendMenonaktifkan LAN9512 Tapi tidak akan membangunkannya lagi ketika melakukan echo 0ke file yang sama. Setelah menonaktifkannya, pi raspberry berjalan sangat lambat melaporkan rata-rata beban hingga 4.
aleixrocks
sumber
1
Hanya karena penasaran; Apakah konsumsi daya turun ketika Anda menonaktifkannya, menggunakan salah satu dari perintah di atas?
Gerben
2
Iya nih! File buspower dan bussuspend mengurangi konsumsi 200mA. Ketika pi raspberry menganggur, ia mengkonsumsi 400 mA. Saat stres, 470mA. Dengan chip dinonaktifkan, ia mengkonsumsi 200mA saat idle dan 260mA ditekankan.
aleixrocks
Benar-benar bagus. Terimakasih. Maaf saya tidak bisa membantu
Gerben
Hanya ingin tahu: jika Anda menonaktifkan USB dan Ethernet, bagaimana Anda mengirim perintah bangun? Dengan cron-job atau setelah tidur?
Moshe Katz
Saya lebih suka tidur untuk kesederhanaan. Saat debugging, saya menggunakan "echo 0x0> / sys / devices / platform / bcm2708_usb / buspower; sleep 2; echo 0x1> / sys / devices / platform / bcm2708_usb / buspower; sleep 30; reboot". Jadi, jika USB tidak bangun, itu akan restart secara otomatis. "sleep 2" hanya untuk memberi waktu pada perangkat keras untuk bereaksi.
aleixrocks

Jawaban:

7

Setelah melakukan beberapa eksperimen sendiri, saya melakukan yang berikut untuk bereksperimen:

Kabel USB to TTL / Debug dengan 5V via multimeter.

Boot normal pada layar login hanya dengan daya dan jaringan yang terhubung sekitar 420-380Ma

Saya pertama kali mematikan jaringan melalui /etc/init.d/networking stopdan kemudian chip oleh echo 0 > /sys/devices/platform/bcm2708_usb/buspowerdan memang turun ke ~ 240Ma

Saya juga gagal ping ke Google! (Yang mana yang bagus)

Saya kemudian menyalakannya kembali dengan menggema 1 ke kekuatan bus dan menjalankan perintah mulai jaringan. Dan sekali lagi saya kembali ke sekitar 370-420ma. Ping google kemudian bekerja.

Saya kemudian memasukkan ini ke file SH yang di-loop dan itu berlangsung lebih dari 10 kali tanpa perlu di-reboot. Dalam perintah Anda, saya bisa melihatnya mem-boot ulang setiap kali, apa pun yang terjadi karena Anda memasukkan perintah reboot.

Kode untuk tes ini dapat ditemukan @ Ubuntu Paste dari kode reboot otomatis.

Ini kemudian dapat digunakan untuk berhenti dan memulai. Anda bisa melakukan bagian pertama sebagai perintah berhenti dan bagian kedua sebagai perintah mulai.

Saya juga melakukan penulisan penuh pada @ Blog Saya ini

Ryanteck
sumber
Itu masalahnya. Cepat atau lambat, Anda harus melakukan reboot karena LAN9512 berhenti bekerja. Saya mencari solusi yang tidak perlu di-boot ulang. (Pada skrip saya, saya reboot setiap kali hanya jika keyboard berhenti bekerja, karena sebelum me-reboot saya mencoba untuk membunuh skrip secara manual. Jika keyboard berfungsi saya dapat membunuhnya dengan ctrl + c. Jika tidak, itu hanya reboot)
aleixrocks
Yah seperti saya katakan saya mengujinya dengan baik lebih dari 50 kali pada akhirnya pada loop konstan dengan masing-masing bekerja untuk ping jaringan. Mungkin keyboard hanya perlu dicolokkan lagi atau USB perlu diatur ulang? Seperti orang lain katakan itu tidak dirancang untuk itu. Jika itu bisa bonus. Karenanya salah satu alasan untuk Model A
Ryan Walmsley
Dalam kasus saya, ini berlangsung tidak lebih dari 10 loop setiap kali saya menjalankan skrip Anda. Saya mencoba mencolokkan lagi USB dan masih tidak berfungsi. Tidak tahu mengapa perbedaan ini mungkin adalah pi raspberry saya. Akan lebih baik jika orang lain bisa mencoba.
aleixrocks
3

Fitur menonaktifkan dan mengaktifkan LAN9512 melalui:

  • echo 0x0> / sys / devices / platform / bcm2708_usb / buspower (nonaktifkan)
  • echo 0x1> / sys / devices / platform / bcm2708_usb / buspower (aktifkan)

Telah di-debug pada kernel yang lebih baru dan sekarang berfungsi dengan sempurna tanpa modifikasi. Saya telah membuat beberapa skrip untuk mengujinya.

Tujuan yang pertama adalah untuk menguji penonaktifan melalui fitur perangkat lunak. Skrip menonaktifkan LAN9512 dan mencoba memasang perangkat USB. Jika bisa, maka tes gagal. Jika tidak, maka tes berhasil. Akhirnya reboot dan mulai lagi. Script telah berjalan selama empat hari dan telah melaporkan 8.039 reboot tanpa kegagalan pada raspbian 2013-9-25.

Skrip kedua dimaksudkan untuk menguji fitur yang diaktifkan. Pertama-tama, skrip menonaktifkan LAN9512. Kemudian tunggu beberapa detik untuk membiarkan pi beristirahat. Selanjutnya ini memungkinkan LAN9512 dan akhirnya mencoba untuk mengeksekusi perintah "lsusb". Ini mencantumkan semua perangkat USB. Jika kernel dapat mengenali semua perangkat USB, maka LAN9512 berfungsi kembali. Jika tidak, tes gagal. Tes telah berjalan selama seminggu dan melaporkan 7209 loop tanpa kesalahan pada raspbian 2013-9-25 dan 5374 loop pada raspbian 2014-1-7.

Kernel dan firmware

Tentang raspbian 2014-1-7:

kernel: Linux raspberrypi 3.10.25+ # 622 PREEMPT Jumat 3 Jan 18:41:00 GMT 2014 armv6l GNU / LINUX firmware: b00bb3ae73bd2799df0e938b7a5f17f45303fb53 (bersih) (rilis)

Pada raspbian 2013-9-25

kernel: Linux raspberrypi 3.6.11+ # 538 PREEMPT Jumat 30 Agustus 20:42:08 BST 2013 armv61 firmware GNU / LINUX: 4f9d19896166f46a3255801bc1834561bf092732 (bersih) (rilis)

aleixrocks
sumber
"Fitur menonaktifkan dan mengaktifkan LAN9512 telah di-debug pada kernel yang lebih baru." Bisakah Anda melaporkan kernel dan firmware yang Anda lihat yang memungkinkan ribuan siklus tidur / bangun yang sukses? Terima kasih! Saya tertarik pada kemajuan menuju Pi yang lebih mudah tidur!
Tai Viinikka
1

Jawaban di atas benar ketika ditawarkan, tetapi pada suatu waktu di tahun 2015, Raspbian membuat perubahan dan pengguna yang tertarik harus mencari kontrol yang relevan.

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

Terima kasih saya kepada pengguna Adrian! https://raspberrypi.stackexchange.com/users/37611/adrian

Tai Viinikka
sumber
Hai Tai! Bisakah Anda memberikan beberapa referensi untuk pengguna yang tertarik? Pi raspberry apa yang Anda gunakan?
aleixrocks