Питание USB-портов: различия между версиями

Материал из Wiren Board
 
(не показано 18 промежуточных версий 4 участников)
Строка 1: Строка 1:
пакет hubpower из нашего репозитория.
<languages/>
<translate>
<!--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» нет, но есть обходное решение.
<pre>
 
root@wirenboard:~# hubpower 1:2 status
В процессоре A40i, к одному физическому порту подключено два контроллера: OHCI (1Mbit, 12Mbit) и EHCI (480MBit), которые друг с другом договариваются и передают устройство на правильный. В системе это выглядит как два порта, что видно в lsusb.
Port  1 status: 0503  High-Speed Power-On Enabled Connected
 
Port  2 status: 0100  Power-On
Чтобы выключить питание на порту, нужно отключить этот порт от обоих контроллеров. А так как питание больше никто не будет запрашивать, Linux его отключит.
Port 3 status: 0100  Power-On
 
Port  4 status: 0100  Power-On
Отключить:
Port 5 status: 0503  High-Speed Power-On Enabled Connected
<syntaxhighlight lang="bash">
</pre>
echo 1c14400.usb > /sys/bus/platform/drivers/ohci-platform/unbind
 
echo 1c14000.usb > /sys/bus/platform/drivers/ehci-platform/unbind
</syntaxhighlight>


Включение/выключение порта:
Включить:
<pre>
<syntaxhighlight lang="bash">
root@wirenboard:~# hubpower 1:2 power 4 off
echo 1c14400.usb > /sys/bus/platform/drivers/ohci-platform/bind
Port 4 status: 0000  Power-Off
root@wirenboard:~# hubpower 1:2 power 4 on
Port  4 status: 0100  Power-On
</pre>


echo 1c14000.usb >  /sys/bus/platform/drivers/ehci-platform/bind
</syntaxhighlight>


== Wiren Board 6 ==
== Wiren Board 6 == <!--T:4-->


<!--T:5-->
Второй внешний USB-порт:
Второй внешний USB-порт:


<pre>
<!--T:6-->
<syntaxhighlight lang="bash">
# выключить
# выключить
$ hubpower 2:2 power 4 off
$ hubpower `lsusb  | grep "0424:2514" | sed 's/^Bus 0*\([[:digit:]]*\) Device 0*\([[:digit:]]*\).*$/\1:\2/g'` power 4 off
# включить
# включить
$ hubpower 2:2 power 4 on
$ hubpower `lsusb  | grep "0424:2514" | sed 's/^Bus 0*\([[:digit:]]*\) Device 0*\([[:digit:]]*\).*$/\1:\2/g'` power 4 on
</pre>
</syntaxhighlight>
 


<!--T:7-->
Модуль Wi-Fi:
Модуль Wi-Fi:


<pre>
<!--T:8-->
<syntaxhighlight lang="bash">
# выключить
# выключить
$ hubpower 2:2 power 1 off
$ hubpower `lsusb  | grep "0424:2514" | sed 's/^Bus 0*\([[:digit:]]*\) Device 0*\([[:digit:]]*\).*$/\1:\2/g'` power 1 off
# включить
# включить
$ hubpower 2:2 power 1 on
$ hubpower `lsusb  | grep "0424:2514" | sed 's/^Bus 0*\([[:digit:]]*\) Device 0*\([[:digit:]]*\).*$/\1:\2/g'` power 1 on
</pre>
</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 ==
== Wiren Board 5 == <!--T:9-->


<!--T:10-->
Внешний USB-порт:
Внешний USB-порт:


<!--T:11-->
<pre>
<pre>
# выключить
# выключить
Строка 52: Строка 76:
</pre>
</pre>


<!--T:12-->
Модуль Wi-Fi:
Модуль Wi-Fi:


<!--T:13-->
<pre>
<pre>
# выключить
# выключить
Строка 61: Строка 87:
</pre>
</pre>


== Wiren Board 4 ==
== Wiren Board 4 == <!--T:14-->
 
<!--T:15-->
Номера портов (для управления питанием):
Номера портов (для управления питанием):
<pre>
<pre>
Строка 69: Строка 97:
</pre>
</pre>


<!--T:16-->
Пример (отключение Wi-Fi):
Пример (отключение Wi-Fi):


<!--T:17-->
<pre>
<pre>
hubpower 1:2 power 4 off
hubpower 1:2 power 4 off
</pre>
</pre>


== Wiren Board Smart Home rev. 3.5 ==
== Wiren Board Smart Home rev. 3.5 == <!--T:18-->
 
<!--T:19-->
Номера портов (для управления питанием):
Номера портов (для управления питанием):
<pre>
<pre>
Строка 82: Строка 114:
1 - EThernet-часть LAN9514
1 - EThernet-часть LAN9514
</pre>
</pre>
</translate>

Текущая версия на 12:50, 3 августа 2023

Другие языки:

Wiren Board 7

Отключение USB-порта в контроллерах Wiren Board 7

Прежде, чем использовать этот метод в своих проектах, важно понять две вещи:

  1. При обычной эксплуатации потребности отключать питание USB-порта нет.
  2. Метод не переносим между ревизиями контроллеров и может в любом момент сломаться. Если вам очень надо на это завязаться и использовать в своих скриптах — напишите нам и мы подумаем, как это сделать нормально.

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