Отключить LAN9512

35

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

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

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

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

мотивация

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

другие

  • Я проверил надежность отключения чипа через «buspower» с помощью скрипта, который отключает LAN9512, пытается подключить USB-устройство для проверки активности и перезагрузки. До сих пор Raspberry Pi перезагрузился 9222 раза без ошибок.
  • echo 1 > /sys/devices/platform/bcm2708_usb/bussuspendОтключает LAN9512, но больше не разбудит его при работе echo 0с тем же файлом. После его отключения raspberry pi работает очень медленно, сообщая о средней загрузке до 4.
aleixrocks
источник
1
Просто из любопытства; Снижается ли энергопотребление при его отключении с помощью одной из приведенных выше команд?
Гербен
2
Да! Файлы buspower и bussuspend снижают потребление до 200 мА. Когда малиновый пи бездействует, он потребляет 400 мА. Когда это подчеркнуто, 470 мА. Когда чип отключен, он потребляет 200 мА в режиме ожидания и 260 мА в состоянии стресса.
Aleixrocks
Действительно мило. Спасибо вам. Извините, я не могу помочь, хотя
Гербен
Просто любопытно: если вы отключите USB и Ethernet, как вы отправите команду пробуждения? С cron-работой или после сна?
Моше Кац
Я предпочитаю спать для простоты. Во время отладки я использую «echo 0x0> / sys / devices / platform / bcm2708_usb / buspower; сон 2; echo 0x1> / sys / devices / platform / bcm2708_usb / buspower; сон 30; перезагрузка». Таким образом, если USB не проснется, он перезагрузится автоматически. «Сон 2» - просто дать аппаратам время для реакции.
aleixrocks

Ответы:

7

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

Кабель USB к TTL / Debug с 5 В через мультиметр.

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

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

Я также был в состоянии безуспешно пинговать Google! (И это хорошо)

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

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

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

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

Я также сделал полное описание этого @ My Blog

Ryanteck
источник
Это просто проблема. Рано или поздно вам нужно перезагрузиться, потому что LAN9512 перестает работать. Я ищу решение, которое не нужно перезагружать. (В моем скрипте я каждый раз перезагружался, только если клавиатура перестала работать, потому что перед перезагрузкой я пытался вручную убить скрипт. Если клавиатура работает, я могу убить его с помощью ctrl + c. Если нет, он просто перезагружается)
aleixrocks
Как я уже говорил, в конце я проверил это более 50 раз в постоянном цикле, каждый из которых работал на пинг сети. Может быть, клавиатуру просто нужно снова подключить или перезагрузить USB? Как и другие говорили, что он не предназначен для этого. Если это может его бонус. Отсюда одна из причин для модели А
Райан Уолмсли
В моем случае это длится не более 10 циклов все время, пока я выполняю ваш скрипт. Я попытался снова подключить USB и все еще не работал. Понятия не имею, почему это различие может быть моим малиновым пи. Было бы здорово, если бы кто-то еще мог попробовать.
aleixrocks
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.

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

На распбиан 2014-1-7:

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

На распбиан 2013-9-25

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

aleixrocks
источник
«Функция отключения и включения LAN9512 была отлажена на более новых ядрах». Можете ли вы сообщить, какое ядро ​​и прошивку вы видели, что позволяет тысячи успешных циклов сна / бодрствования? Благодарность! Я заинтересован в прогрессе к более спящему Пи!
Тай Вииникка
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,