Питание USB-портов: различия между версиями
Fizikdaos (обсуждение | вклад) |
|||
(не показано 5 промежуточных версий 2 участников) | |||
Строка 2: | Строка 2: | ||
<translate> | <translate> | ||
<!--T:1--> | <!--T:1--> | ||
== Wiren Board 7 == | |||
[[Image: wb7.2-7.3 usb power disable.png |300px|thumb|right| Отключение USB-порта в контроллерах Wiren Board 7]] | |||
Прежде, чем использовать этот метод в своих проектах, важно понять две вещи: | |||
# При обычной эксплуатации потребности отключать питание USB-порта нет. | |||
# Метод не переносим между ревизиями контроллеров и может в любом момент сломаться. Если вам очень надо на это завязаться и использовать в своих скриптах — напишите нам и мы подумаем, как это сделать нормально. | |||
Linux сам управляет питанием USB-портов, поэтому ручки «Отключить питание USB» нет, но есть обходное решение. | |||
< | В процессоре A40i, к одному физическому порту подключено два контроллера: OHCI (1Mbit, 12Mbit) и EHCI (480MBit), которые друг с другом договариваются и передают устройство на правильный. В системе это выглядит как два порта, что видно в lsusb. | ||
< | Чтобы выключить питание на порту, нужно отключить этот порт от обоих контроллеров. А так как питание больше никто не будет запрашивать, Linux его отключит. | ||
Отключить: | |||
<syntaxhighlight lang="bash"> | |||
echo 1c14400.usb > /sys/bus/platform/drivers/ohci-platform/unbind | |||
</ | |||
echo 1c14000.usb > /sys/bus/platform/drivers/ehci-platform/unbind | |||
</syntaxhighlight> | |||
Включить: | |||
<syntaxhighlight lang="bash"> | |||
echo 1c14400.usb > /sys/bus/platform/drivers/ohci-platform/bind | |||
echo 1c14000.usb > /sys/bus/platform/drivers/ehci-platform/bind | |||
</syntaxhighlight> | |||
== Wiren Board 6 == <!--T:4--> | == Wiren Board 6 == <!--T:4--> | ||
Строка 30: | Строка 34: | ||
<!--T:6--> | <!--T:6--> | ||
< | <syntaxhighlight lang="bash"> | ||
# выключить | # выключить | ||
$ hubpower | $ hubpower `lsusb | grep "0424:2514" | sed 's/^Bus 0*\([[:digit:]]*\) Device 0*\([[:digit:]]*\).*$/\1:\2/g'` power 4 off | ||
# включить | # включить | ||
$ hubpower | $ hubpower `lsusb | grep "0424:2514" | sed 's/^Bus 0*\([[:digit:]]*\) Device 0*\([[:digit:]]*\).*$/\1:\2/g'` power 4 on | ||
</ | </syntaxhighlight> | ||
<!--T:7--> | <!--T:7--> | ||
Строка 41: | Строка 45: | ||
<!--T:8--> | <!--T:8--> | ||
< | <syntaxhighlight lang="bash"> | ||
# выключить | # выключить | ||
$ hubpower | $ hubpower `lsusb | grep "0424:2514" | sed 's/^Bus 0*\([[:digit:]]*\) Device 0*\([[:digit:]]*\).*$/\1:\2/g'` power 1 off | ||
# включить | # включить | ||
$ hubpower | $ hubpower `lsusb | grep "0424:2514" | sed 's/^Bus 0*\([[:digit:]]*\) Device 0*\([[:digit:]]*\).*$/\1:\2/g'` power 1 on | ||
</ | </syntaxhighlight> | ||
Вместо | |||
<syntaxhighlight lang="bash"> | |||
$ hubpower `lsusb | grep "0424:2514" | sed 's/^Bus 0*\([[:digit:]]*\) Device 0*\([[:digit:]]*\).*$/\1:\2/g'` ... | |||
</syntaxhighlight> | |||
в большинстве случаев можно писать | |||
<syntaxhighlight lang="bash"> | |||
$ hubpower 2:2 ... | |||
</syntaxhighlight> | |||
== Wiren Board 5 == <!--T:9--> | == Wiren Board 5 == <!--T:9--> |
Текущая версия на 12:50, 3 августа 2023
Wiren Board 7
Прежде, чем использовать этот метод в своих проектах, важно понять две вещи:
- При обычной эксплуатации потребности отключать питание USB-порта нет.
- Метод не переносим между ревизиями контроллеров и может в любом момент сломаться. Если вам очень надо на это завязаться и использовать в своих скриптах — напишите нам и мы подумаем, как это сделать нормально.
Linux сам управляет питанием USB-портов, поэтому ручки «Отключить питание USB» нет, но есть обходное решение.
В процессоре A40i, к одному физическому порту подключено два контроллера: OHCI (1Mbit, 12Mbit) и EHCI (480MBit), которые друг с другом договариваются и передают устройство на правильный. В системе это выглядит как два порта, что видно в lsusb.
Чтобы выключить питание на порту, нужно отключить этот порт от обоих контроллеров. А так как питание больше никто не будет запрашивать, Linux его отключит.
Отключить:
echo 1c14400.usb > /sys/bus/platform/drivers/ohci-platform/unbind
echo 1c14000.usb > /sys/bus/platform/drivers/ehci-platform/unbind
Включить:
echo 1c14400.usb > /sys/bus/platform/drivers/ohci-platform/bind
echo 1c14000.usb > /sys/bus/platform/drivers/ehci-platform/bind
Wiren Board 6
Второй внешний USB-порт:
# выключить
$ hubpower `lsusb | grep "0424:2514" | sed 's/^Bus 0*\([[:digit:]]*\) Device 0*\([[:digit:]]*\).*$/\1:\2/g'` power 4 off
# включить
$ hubpower `lsusb | grep "0424:2514" | sed 's/^Bus 0*\([[:digit:]]*\) Device 0*\([[:digit:]]*\).*$/\1:\2/g'` power 4 on
Модуль Wi-Fi:
# выключить
$ hubpower `lsusb | grep "0424:2514" | sed 's/^Bus 0*\([[:digit:]]*\) Device 0*\([[:digit:]]*\).*$/\1:\2/g'` power 1 off
# включить
$ hubpower `lsusb | grep "0424:2514" | sed 's/^Bus 0*\([[:digit:]]*\) Device 0*\([[:digit:]]*\).*$/\1:\2/g'` power 1 on
Вместо
$ hubpower `lsusb | grep "0424:2514" | sed 's/^Bus 0*\([[:digit:]]*\) Device 0*\([[:digit:]]*\).*$/\1:\2/g'` ...
в большинстве случаев можно писать
$ hubpower 2:2 ...
Wiren Board 5
Внешний USB-порт:
# выключить $ hubpower 1:1 power 1 off # включить $ hubpower 1:1 power 1 on
Модуль Wi-Fi:
# выключить $ hubpower 2:1 power 1 off # включить $ hubpower 2:1 power 1 on
Wiren Board 4
Номера портов (для управления питанием):
4 - встроенный WiFi 3 - порты USB-Hub, выход 5V 1 - EThernet-часть LAN9514
Пример (отключение Wi-Fi):
hubpower 1:2 power 4 off
Wiren Board Smart Home rev. 3.5
Номера портов (для управления питанием):
4 - встроенный WiFi 3 - порты USB-Hub 1 - EThernet-часть LAN9514