Отключить LAN9512

LAN9512 - это аппаратное устройство, которое управляет портами Ethernet и USB. Этот чип потребляет почти 200 мА, и будет очень полезно отключить его, чтобы экономить энергию, когда мне не нужен USB или Ethernet. В техническом описании LAN9512 описаны некоторые состояния устройства для экономии энергии - эти режимы SUSPEND2, SUSPEND1 и SUSPEND0. Следовательно, это возможно.

Я уже нашел частичное решение:

  • echo 0x0 > /sys/devices/platform/bcm2708_usb/buspower будет эффективно отключать устройство и снова пробуждать его с помощью echo 0x1 в тот же файл. Однако, как только устройство было остановлено и запущено определенное количество раз, он не будет просыпаться снова до следующей перезагрузки операционной системы.

Есть ли способ отключить LAN9512 и запустить его снова надежно? (Может быть, я могу перезагрузить некоторый драйвер, который управляет LAN9512?)

Мотивация

Когда малая модель pi B бездействует, она потребляет 400 мА. Когда он подчеркнул, 470 мА. Когда LAN9512 отключен, он потребляет 200 мА на холостом ходу и напряженностью 260 мА.

Другие

  • Я тестировал гибкость отключения чипа через «buspower» с помощью сценария, который отключает LAN9512, пытается подключить устройство USB для проверки активности и перезагрузки. До сих пор малина pi перезагрузилась 9222 раза без ошибок.
  • echo 1 > /sys/devices/platform/bcm2708_usb/bussuspend Отключает LAN9512. Но он не разбудит его при выполнении echo 0 в тот же файл. После его отключения малина pi идет крайне медленно, сообщая о средней нагрузке до 4.
33 голоса | спросил aleixrocks 18 J000000Thursday13 2013, 20:31:26

3 ответа


3

Функция отключения и включения LAN9512:

  • echo 0x0> /sys /devices /platform /bcm2708_usb /buspower (отключить)
  • echo 0x1> /sys /devices /platform /bcm2708_usb /buspower (включить)

Отлажен в новых ядрах и теперь отлично работает без изменений. Я проверил несколько сценариев, чтобы проверить его.

Целью первого является тестирование отключения с помощью программного обеспечения. Сценарий отключает LAN9512 и пытается установить USB-устройство. Если это возможно, значит, тест завершился неудачно. Если нет, то тест будет успешным. Наконец перезагрузится и начнется снова. Скрипт работает в течение четырех дней и сообщил о перезагрузке 8039 без сбоев на raspbian 2013-9-25.

Второй скрипт предназначен для проверки возможности включения. Прежде всего, сценарий отключает LAN9512. Затем ждет несколько секунд, чтобы дать пи отдохнуть. Затем он включает LAN9512 и, наконец, пытается выполнить команду «lsusb». В нем перечислены все USB-устройства. Если ядро ​​может распознать все USB-устройства, LAN9512 снова работает. Если нет, тест не удался. Тест прошел неделю и сообщил о 7209 циклах без ошибок на raspbian 2013-9-25 и 5374 циклах на raspbian 2014-1-7.

Ядра и прошивки

На raspbian 2014-1-7:

Ядро: Linux raspberrypi 3.10.25+ # 622 PREEMPT Пт Янв 3 18:41:00 GMT 2014 armv6l GNU /LINUX прошивка: b00bb3ae73bd2799df0e938b7a5f17f45303fb53 (чистый) (выпуск)

На raspbian 2013-9-25

Ядро: Linux raspberrypi 3.6.11+ # 538 PREEMPT Пт Авг 30 20:42:08 BST 2013 armv61 GNU /LINUX прошивка: 4f9d19896166f46a3255801bc1834561bf092732 (чистый) (выпуск)

ответил aleixrocks 21 Jpm1000000pmTue, 21 Jan 2014 19:54:41 +040014 2014, 19:54:41
7

После нескольких экспериментов я сделал следующее для эксперимента:

USB для TTL /отладочного кабеля с 5 В через мультиметр.

Нормальная загрузка на экране входа в систему с подключением питания и сети была около 420-380Ma

Сначала я отключил сеть через /etc/init.d/networking stop, а затем чип с помощью echo 0 > /sys/devices/platform/bcm2708_usb/buspower, и действительно, он опустился до ~ 240Ma

Я также смог безуспешно ping google! (Что хорошо)

Затем я снова включил его, нажав 1 на мощность шины и выполнив команду сетевого запуска. И снова я вернулся примерно в 370-420 м. Затем работал pinging google.

Затем я помещал это в SH-файл, который зацикливался и продолжался более 10 раз, без необходимости перезагрузки. В вашей команде я мог видеть, что он перезагружается каждый раз, независимо от того, из-за чего вы ввели команду перезагрузки.

Код для теста можно найти @ Папка Ubuntu для автоматической перезагрузки.

Это можно просто использовать для остановки и запуска. Вы можете сделать первую часть команды в качестве команды останова, а вторую часть - командой запуска.

Я также написал полную запись этого @ моего блога

ответил Felix Furak 19 J000000Thursday12 2012, 16:28:02
0

Эти ответы выше были правильными, когда они предлагались, но некоторое время в 2015 году Raspbian внесло изменения, и заинтересованные пользователи должны были искать соответствующие элементы управления.

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

Спасибо, Адриан! https://raspberrypi.stackexchange.com/users/37611/adrian

ответил Tai Viinikka 19 PMpThu, 19 Apr 2018 18:55:29 +030055Thursday 2018, 18:55:29

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132