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

Материал из Wiren Board
(не показано 13 промежуточных версий 3 участников)
Строка 2: Строка 2:
<translate>
<translate>
<!--T:1-->
<!--T:1-->
== Wiren Board 7 ==
пакет hubpower из нашего репозитория.
[[Image: wb7.2-7.3 usb power disable.png |300px|thumb|right| Отключение USB-порта в контроллерах Wiren Board 7]]
Прежде, чем использовать этот метод в своих проектах, важно понять две вещи:
# При обычной эксплуатации потребности отключать питание USB-порта нет.
# Метод не переносим между ревизиями контроллеров и может в любом момент сломаться. Если вам очень надо на это завязаться и использовать в своих скриптах — напишите нам и мы подумаем, как это сделать нормально.


Linux сам управляет питанием USB-портов, поэтому ручки «Отключить питание USB» нет, но есть обходное решение.
<!--T:2-->
Работа:
<pre>
root@wirenboard:~# hubpower 1:2 status
Port  1 status: 0503  High-Speed Power-On Enabled Connected
Port  2 status: 0100  Power-On
Port  3 status: 0100  Power-On
Port  4 status: 0100  Power-On
Port  5 status: 0503  High-Speed Power-On Enabled Connected
</pre>


В процессоре A40i, к одному физическому порту подключено два контроллера: OHCI (1Mbit, 12Mbit) и EHCI (480MBit), которые друг с другом договариваются и передают устройство на правильный. В системе это выглядит как два порта, что видно в lsusb.
<!--T:3-->
Включение/выключение порта:
<pre>
root@wirenboard:~# hubpower 1:2 power 4 off
Port  4 status: 0000  Power-Off
root@wirenboard:~# hubpower 1:2 power 4 on
Port  4 status: 0100  Power-On
</pre>


Чтобы выключить питание на порту, нужно отключить этот порт от обоих контроллеров. А так как питание больше никто не будет запрашивать, Linux его отключит.
{| class="wikitable" style="text-align:center;"
!colspan="2" | WB6
|-
! №
! порт
|-
|1
|Модуль Wi-Fi
|-
|2
|
|-
|3
|
|-
|4
|Второй внешний USB-порт
|-
|}


Отключить:
{| class="wikitable"
<syntaxhighlight lang="bash">
!colspan="2" | WB5
echo 1c14400.usb >  /sys/bus/platform/drivers/ohci-platform/unbind
|-
! №
! порт
|-
|1
|
|-
|2
|
|-
|3
|
|-
|4
|
|-
|}


echo 1c14000.usb >  /sys/bus/platform/drivers/ehci-platform/unbind
{| class="wikitable"
</syntaxhighlight>
!colspan="2" | WB4
|-
! №
! порт
|-
|1
|EThernet-часть LAN9514
|-
|2
|
|-
|3
|порты USB-Hub, выход 5V
|-
|4
|встроенный WiFi
|-
|}


Включить:
{| class="wikitable"
<syntaxhighlight lang="bash">
!colspan="2" | WB3.5
echo 1c14400.usb >  /sys/bus/platform/drivers/ohci-platform/bind
|-
 
! №
echo 1c14000.usb >  /sys/bus/platform/drivers/ehci-platform/bind
! порт
</syntaxhighlight>
|-
|1
|EThernet-часть LAN9514
|-
|2
|
|-
|3
|порты USB-Hub
|-
|4
|встроенный WiFi
|-
|}


== Wiren Board 6 == <!--T:4-->
== Wiren Board 6 == <!--T:4-->
Строка 34: Строка 110:


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


<!--T:7-->
<!--T:7-->
Строка 45: Строка 122:


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


Вместо
<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-->
Строка 86: Строка 153:
$ hubpower 2:1 power 1 on
$ hubpower 2:1 power 1 on
</pre>
</pre>


== Wiren Board 4 == <!--T:14-->
== Wiren Board 4 == <!--T:14-->
Строка 104: Строка 172:
hubpower 1:2 power 4 off
hubpower 1:2 power 4 off
</pre>
</pre>


== Wiren Board Smart Home rev. 3.5 == <!--T:18-->
== Wiren Board Smart Home rev. 3.5 == <!--T:18-->

Версия 20:55, 9 мая 2020

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

пакет hubpower из нашего репозитория.

Работа:

root@wirenboard:~# hubpower 1:2 status
Port  1 status: 0503  High-Speed Power-On Enabled Connected
Port  2 status: 0100  Power-On
Port  3 status: 0100  Power-On
Port  4 status: 0100  Power-On
Port  5 status: 0503  High-Speed Power-On Enabled Connected

Включение/выключение порта:

root@wirenboard:~# hubpower 1:2 power 4 off
Port  4 status: 0000  Power-Off
root@wirenboard:~# hubpower 1:2 power 4 on 
Port  4 status: 0100  Power-On
WB6
порт
1 Модуль Wi-Fi
2
3
4 Второй внешний USB-порт
WB5
порт
1
2
3
4
WB4
порт
1 EThernet-часть LAN9514
2
3 порты USB-Hub, выход 5V
4 встроенный WiFi
WB3.5
порт
1 EThernet-часть LAN9514
2
3 порты USB-Hub
4 встроенный WiFi

Wiren Board 6

Второй внешний USB-порт:

# выключить
$ hubpower 2:2 power 4 off
# включить
$ hubpower 2:2 power 4 on


Модуль Wi-Fi:

# выключить
$ hubpower 2:2 power 1 off
# включить
$ hubpower 2:2 power 1 on


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