uhubctl
— это утилита для управления питанием USB на каждом порту интеллектуальных USB-концентраторов. Интеллектуальный концентратор определяется как концентратор, реализующий переключение питания для каждого порта.
Первоначальная идея этого кода была вдохновлена Hub-ctrl.c Ниибе Ютакой: https://www.gniibe.org/development/ac-power-control-by-USB-hub
Обратите внимание, что очень немногие концентраторы на самом деле поддерживают переключение мощности для каждого порта. Некоторые из них больше не производятся, и их трудно найти.
Это список известных совместимых USB-концентраторов:
Производитель | Продукт | Порты | USB | ВИД:ПИД | Выпускать | окончание срока действия |
---|---|---|---|---|---|---|
Асер | Монитор БЭ270У (см.) | 4 | 3.0 | 2109:2811 | 2016 год | |
AmazonОсновы | HU3641V1 (проблема с RPi) | 4 | 3.0 | 2109:2811 | 2013 год | |
AmazonОсновы | HU3770V1 (проблема с RPi) | 7 | 3.0 | 2109:2811 | 2013 год | |
AmazonОсновы | ХУ9003В1ЭБЛ, ХУК9003В1ЭБЛ | 7 | 3.1 | 2109:2817 | 2018 год | |
AmazonОсновы | HU9002V1SBL, HU9002V1EBL, HU9002V1ESL (примечание) | 10 | 3.1 | 2109:2817 | 2018 год | |
AmazonОсновы | HUC9002V1SBL, HUC9002V1EBL, HUC9002V1ESL | 10 | 3.1 | 2109:2817 | 2018 год | |
AmazonОсновы | U3-7HUB (работает только для 1 порта зарядки) | 7 | 3.0 | 2109:2813 | 2020 год | |
Анкер | АК-68ANHUB-BV7A-0004 (примечание) | 7 | 3.0 | 2109:0812 | 2014 год | |
Яблоко | Pro Display XDR MWPE2LL/A (внутренний USB-концентратор) | 4 | 2.0 | 05AC:9139 | 2019 год | |
Яблоко | Дисплей Thunderbolt 27 дюймов (внутренний USB-концентратор) | 6 | 2.0 | 2011 г. | 2016 год | |
Яблоко | USB-клавиатура с цифровой панелью (внутренний USB-концентратор) | 3 | 2.0 | 2011 г. | ||
Асус | Материнская плата Z77 Sabertooth (встроенный USB-концентратор) | 6 | 2.0 | 2012 год | ||
Асус | Материнская плата Z87-PLUS (встроенный USB-концентратор) | 4 | 3.0 | 2013 год | 2016 год | |
Оки | CB-C59 | 4 | 3.0 | 2109:2813 | 2017 год | |
Б+Б СмартВоркс | УХР204 | 4 | 2.0 | 0856:DB00 | 2013 год | |
Б+Б СмартВоркс | УШ304 | 4 | 3.0 | 04B4:6506 | 2017 год | 2019 год |
Баслер | 2000036234 | 4 | 3.0 | 0451:8046 | 2016 год | |
Белкин | F5U101 | 4 | 2.0 | 0451:2046 | 2005 г. | 2010 год |
Белкин | F5U238UKCRL-MOB | 4 | 2.0 | 0409:0059 | 2004 г. | 2010 год |
БенКью | Монитор PD2700U 4K (работает только в режиме USB2) | 4 | 3.0 | 05E3:0610 | 2018 год | |
БенКью | PD3220U | 4 | 3.1 | 05E3:0610 | 2019 год | |
Байтекк | BT-UH340 (предупреждение) | 4 | 3.0 | 2109:8110 | 2010 год | |
Центек | CT-USB4HUB ПОВТОРНЫЙ ХАБ | 4 | 3.0 | 0424:2744 | 2017 год | |
Концертко | Beagleboard-xM (внутренний USB-концентратор) | 4 | 2.0 | 0424:9514 | 2010 год | |
Клуб3D | Док-станция с двумя дисплеями CSV-3242HD | 4 | 3.0 | 2109:2811 | 2015 год | |
Холодное снаряжение | УСБГ-12У2МЛ | 12 | 2.0 | 05e3:0607 | 2015 год | |
Кипарис | Комплект для разработки CY4608 HX2VL (примечание) | 4 | 2.0 | 04B4:6570 | 2012 год | |
Д-Линк | DUB-H4 rev D,E (черный). Примечание: версии A, C, F не поддерживаются. | 4 | 2.0 | 05E3:0608 | 2012 год | |
Д-Линк | DUB-H7 ред. А (серебристый) | 7 | 2.0 | 2001:F103 | 2005 г. | 2010 год |
Д-Линк | DUB-H7 ред. D,E (черный). Версия B,C,F,G не поддерживается. | 7 | 2.0 | 05E3:0608 | 2012 год | |
Делл | P2416D 24-дюймовый QHD-монитор (примечание) | 4 | 2.0 | 2017 год | ||
Делл | S2719DGF 27-дюймовый игровой монитор WQHD | 5 | 3.0 | 0424:5734 | 2018 год | |
Делл | UltraSharp 1704FPT 17-дюймовый ЖК-монитор | 4 | 2.0 | 0424:A700 | 2005 г. | 2015 год |
Делл | UltraSharp U2415 24-дюймовый ЖК-монитор | 5 | 3.0 | 2014 год | ||
Делл | Изогнутый монитор UltraSharp U3419W 34 дюйма | 6 | 3.0 | 2020 год | ||
Делл | Wyse 3040 (требуется -f) | 6 | 3.0 | 2017 год | ||
Делок | 62537 | 4 | 3.0 | 2017 год | 2021 год | |
Делок | 87445 (примечание) | 4 | 2.0 | 05E3:0608 | 2009 год | 2013 год |
Электроком | U2H-G4S | 4 | 2.0 | 2006 г. | 2011 г. | |
Гигабайт | Монитор G27Q (см. | 4 | 3.0 | 2109:0817 | 2020 год | |
Глобальная шкала | ЭСПРЕССОбин SBUD102 V5 | 1 | 3.0 | 1D6B:0003 | 2017 год | |
Хардкернел | ОДРОИД-C4 (примечание) | 4 | 3.0 | 2020 год | ||
Технология Хокинга | UH214 | 4 | 2.0 | 2003 г. | 2008 год | |
Хьюлетт Паккард | Док-станция USB-C G5 5TW10AA | 5 | 3.0 | 03F0:076B | 2019 год | |
Хьюлетт Паккард | P5Q58UT | 3 | 3.0 | 2019 год | ||
Инатек | HB2025A (только USB2) | 4 | 3.1 | 2109:2822 | 2021 год | |
ИОИ | U3H415E1 | 4 | 3.0 | 2012 год | ||
j5создать | JUH377 (примечание) | 7 | 3.0 | 2016 год | ||
j5создать | JUH470 (примечание) | 3 | 3.0 | 05E3:0610 | 2014 год | |
Сочные системы | 6ХАБ-01 | 7 | 3.0 | 0BDA:0411 | 2014 год | 2018 год |
КУНБУС ГмбХ | RevPi Connect (+) / S / SE | 2 | 2.0 | 0424:9514 | 2018 год | |
КУНБУС ГмбХ | РевПи Коннект 4 | 2 | 3.0 | 2022 год | ||
КУНБУС ГмбХ | РевПи Core 3/S/SE | 2 | 2.0 | 0424:9514 | 2017 год | |
LG Электроникс | Монитор 27МД5КЛ-Б | 4 | 3.0 | 043E:9A60 | 2019 год | |
LG Электроникс | Монитор 27GL850-B | 4 | 3.0 | 0451:8142 | 2019 год | |
LG Электроникс | Монитор 27UK850-W | 2 | 3.0 | 2018 год | ||
LG Электроникс | Монитор 27УН83А-В | 2 | 3.0 | 0451:8142 | 2020 год | |
LG Электроникс | Монитор 38WK95C-W | 4 | 3.0 | 0451:8142 | 2018 год | |
Леново | Док-станция ThinkPad Ultra (40A20090EU) | 6 | 2.0 | 17EF:100F | 2015 год | |
Леново | Док-станция ThinkPad Ultra (40AJ0135EU) | 7 | 3.1 | 17EF:3070 | 2018 год | |
Леново | ThinkPad X200 Ультрабаза 42X4963 | 3 | 2.0 | 17EF:1005 | 2008 год | 2011 г. |
Леново | ThinkPad X6 Ультрабаза 42W3107 | 4 | 2.0 | 17EF:1000 | 2006 г. | 2009 год |
Леново | Концентратор ThinkPlus 4-в-1 USB-C 4X90W86497 | 3 | 3.0 | 2021 год | ||
Леново | Монитор ThinkVision T24i-10 | 4 | 2.0 | 17EF:0610 | 2018 год | |
Леново | USB-C — 4-портовый концентратор USB-A | 4 | 2.0 | 17EF:103A | 2020 год | |
Линди | Последовательный USB-конвертер, 4 порта | 4 | 1.1 | 058F:9254 | 2008 год | |
Линксис | USB2HUB4 (примечание) | 4 | 2.0 | 2004 г. | 2010 год | |
Маплин | A08CQ | 7 | 2.0 | 0409:0059 | 2008 год | 2011 г. |
Метадот | Клавиатура Das 4 | 2 | 3.0 | 2014 год | ||
Микрочип | EVB9512 | 2 | 2.0 | 2009 год | ||
Микрочип | ЕВБ-USB2517 | 7 | 2.0 | 2008 год | ||
Микрочип | EVB-USB2534BC | 4 | 2.0 | 2013 год | ||
Микрочип | EVB-USB5807 | 7 | 3.0 | 2016 год | ||
Мокса | Упорт-407 | 7 | 2.0 | 110A:0407 | 2009 год | |
Нвидиа | Джетсон Нано B01 (подробнее) | 4 | 3.0 | 2019 год | ||
Нвидиа | Джетсон Ксавье NX (подробнее) | 4 | 3.0 | 2020 год | ||
Фиджеты | HUB0003_0 | 7 | 2.0 | 1A40:0201 | 2017 год | |
Филипс | 346B1C Сверхширокий изогнутый монитор с диагональю 34 дюйма | 4 | 3.0 | 05E3:0610 | 2019 год | |
Подключаемый | USB3-HUB7BC | 7 | 3.0 | 2109:0813 | 2015 год | |
Подключаемый | USB3-HUB7C (работает только с 2 портами зарядки) | 7 | 3.0 | 2109:0813 | 2015 год | |
Подключаемый | USBC-HUB7BC (работает на 6/7 портов, не самый правый) | 7 | 3.0 | 2109:0817 | 2021 год | |
Подключаемый | USB3-HUB10-C2 (работает только с 2 портами зарядки) | 10 | 3.0 | 2014 год | ||
Порт Инк | NWUSB01 | 4 | 1.1 | 0451:1446 | 1999 год | 2003 г. |
Малиновый Пи | B+, 2B, 3B (см. ниже) | 4 | 2.0 | 2011 г. | ||
Малиновый Пи | 3В+ (см. ниже) | 4 | 2.0 | 0424:2514 | 2018 год | |
Малиновый Пи | 4Б (см. ниже) | 4 | 3.0 | 2109:3431 | 2019 год | |
Малиновый Пи | 5 (см. ниже) | 4 | 3.0 | 1d6b:0002 | 2023 год | |
Ренесас | uPD720202 Хост-контроллер PCIe USB 3.0 | 2 | 3.0 | 2013 год | ||
Роузвилл | РЮБ-210 | 4 | 2.0 | 0409:005A | 2011 г. | 2014 год |
Розонвей | РШ-518С (примечание) | 7 | 3.0 | 2109:0817 | 2021 год | |
Розонвей | РШ-А10 (см.) | 10 | 3.0 | 0bda:0411 | 2020 год | |
Розонвей | РШ-А13 (предупреждение) | 13 | 3.1 | 2109:2822 | 2021 год | |
Розонвей | РШ-А16 (примечание, предупреждение) | 16 | 3.0 | 0bda:0411 | 2020 год | |
Розонвей | RSH-A104 (только USB2) | 4 | 3.1 | 2109:2822 | 2022 год | |
Розонвей | РШ-А107 (он же икуай А107-5) | 7 | 3.1 | 0bda:5411 | 2022 год | |
Розонвей | RSH-ST07C (всего 4) | 7 | 3.0 | 2109:2822 | 2023 год | |
Санва Поставка | USB-концентратор14GPH | 4 | 1.1 | 2001 г. | 2003 г. | |
Сигейт | Концентратор Backup Plus STEL8000100 | 2 | 3.0 | 0BC2:AB44 | 2016 год | |
Сид Студия | ретерминал CM4104032 | 2 | 2.0 | 0424:2514 | 2021 год | |
СтарТех | DKT30CSDHPD3 Дорожная док-станция USB-C | 3 | 3.0 | 2109:2817 | 2018 год | |
СтарТех | HB30A4AIB (предупреждение) | 4 | 3.0 | 2109:2817 | 2018 год | |
Суникс | ШБ4200МА | 4 | 2.0 | 0409:0058 | 2006 г. | 2009 год |
Системные переговоры | Сугой USB2-HUB4X | 4 | 2.0 | 2007 год | ||
Таргус | ПА095УЗ | 2 | 2.0 | 2004 г. | ||
Таргус | ПАУХ212/ПАУХ212У | 7 | 2.0 | 2004 г. | 2009 год | |
Техасские инструменты | ТУСБ4041ПАПЕВМ | 4 | 2.1 | 0451:8142 | 2015 год | |
UUGear | МЕГА4 (для Raspberry Pi 4B) | 4 | 3.0 | 2109:0817 | 2021 год | |
ВиртуальныйЗдесь | USB3 4-портовый концентратор (примечание) | 4 | 3.0 | 2024 год |
Эта таблица ни в коем случае не является полной. Если ваш хаб работает с uhubctl
, но не указан выше, сообщите об этом, открыв новую проблему на https://github.com/mvp/uhubctl/issues, чтобы мы могли добавить ее в поддерживаемую таблицу. В своем отчете укажите точную модель продукта, добавьте выходные данные uhubctl
и протестируйте поддержку отключения VBUS, как описано ниже в разделе «Часто задаваемые вопросы».
Обратите внимание, что многие современные материнские платы имеют встроенные корневые концентраторы, которые поддерживают эту функцию — возможно, вам даже не понадобится покупать внешний концентратор.
Если у вас есть концентратор USB 3.0, подключенный к восходящему порту USB3, он будет обнаружен как два независимых виртуальных концентратора: USB2 и USB3, а ваши USB-устройства будут подключены к виртуальному концентратору USB2 или USB3 в зависимости от их возможностей и скорости соединения. Для управления питанием таких концентраторов необходимо выключить/включить питание на виртуальных концентраторах USB2 и USB3, чтобы изменения выключения и включения питания вступили в силу. uhubctl
попытается сделать это автоматически (если вы не отключите это поведение с помощью опции -e
).
К сожалению, хотя большинство хабов отключают USB-соединение для передачи данных, некоторые все же могут не отключать VBUS к порту, что означает, что подключенный телефон все равно может продолжать заряжаться от порта, отключенного с помощью uhubctl
.
Эта утилита была протестирована для компиляции и работы в Linux (Ubuntu/Debian, Redhat/Fedora/CentOS, Arch Linux, Gentoo, openSUSE, Buildroot), FreeBSD, NetBSD, SunOS и MacOS.
Хотя uhubctl
компилируется в Windows, переключение питания USB не работает в Windows, поскольку libusb
использует драйвер winusb.sys
, который, по словам Microsoft, не поддерживает необходимые запросы управления USB. Это можно исправить, если libusb
начнет поддерживать другой драйвер в Windows.
Обратите внимание, что настоятельно рекомендуется установить pkg-config
(многие платформы предоставляют его по умолчанию).
Сначала вам необходимо установить библиотеку libusb-1.0 (рекомендуется версия 1.0.12 или новее, рекомендуется 1.0.16 или новее):
sudo apt-get install libusb-1.0-0-dev
sudo yum install libusb1-devel
sudo zypper install libusb-1_0-devel
brew install libusb
или sudo port install libusb-devel
sudo pkgin install libusb1 gmake pkg-config
Чтобы получить исходный код uhubctl и скомпилировать его:
git clone https://github.com/mvp/uhubctl
cd uhubctl
make
Это должно сгенерировать двоичный файл uhubctl
. Вы можете установить его в свою систему как /usr/sbin/uhubctl
используя:
sudo make install
Обратите внимание, что в некоторых ОС (например, FreeBSD/NetBSD) для сборки необходимо использовать gmake
.
Кроме того, на MacOS вы можете установить uhubctl
со всеми необходимыми зависимостями за один раз, используя Homebrew:
brew tap mvp/uhubctl https://github.com/mvp/uhubctl
brew install uhubctl
Для сборки/установки из основной ветки используйте --HEAD
:
brew install uhubctl --HEAD
️ В Linux используйтеsudo
или настройте разрешения USB, как описано ниже!
Чтобы перечислить все поддерживаемые концентраторы:
uhubctl
Вы можете управлять питанием USB-портов следующим образом:
uhubctl -a off -p 2
Это означает, что нужно использовать интеллектуальный концентратор по умолчанию и отключить питание ( -a off
или -a 0
) на порту 2 ( -p 2
). Поддерживаемые действия 1
off
/ on
/ cycle
/ toggle
( 2
0
3
cycle
означает выключение питания, подождите некоторую задержку (настраивается с помощью -d
) и снова включите его. Порты могут быть разделены запятыми списком и могут использоваться -
для диапазонов, например 2
, или 2,4
, или 2-5
, или 1-2,5-8
.
️ Отключение встроенных портов USB может привести к отключению клавиатуры или мыши, поэтому будьте осторожны, какие порты вы отключаете!
Если у вас подключено более одного интеллектуального USB-концентратора, вам следует выбрать конкретный концентратор для управления с помощью параметра -l
(местоположение). Чтобы найти расположение хабов, просто запустите uhubctl
без каких-либо параметров. Расположение концентраторов выглядит как bx.yz
, где b
— номер шины USB, а x
, y
, z
… — номера портов для всех концентраторов в цепочке, начиная с корневого концентратора для данной шины USB. Этот адрес полустабилен — он не изменится, если вы отключите/переподключите (или выключите/включите) USB-устройство в тот же физический USB-порт (этот метод также используется в ядре Linux).
В Linux вам следует настроить разрешения udev
USB (в противном случае вам придется запускать его от имени пользователя root с помощью sudo uhubctl
).
Начиная с Linux Kernel 6.0 существует стандартный интерфейс для включения или отключения портов USB-концентратора, и uhubctl
попытается использовать его (вместо libusb
) для установки статуса порта. Вот почему для ядер версии 6.0+ существуют дополнительные правила. Нет никакого вреда в использовании этих правил в системах со старыми версиями ядра.
Чтобы исправить разрешения USB, сначала запустите sudo uhubctl
и запишите все vid:pid
для концентраторов, которыми вы хотите управлять. Затем добавьте правила udev, как показано ниже, в файл /etc/udev/rules.d/52-usb.rules
(замените 2001
идентификатором поставщика вашего концентратора или полностью удалите фильтр ATTR{idVendor}
, чтобы разрешить доступ к любому USB-концентратору):
SUBSYSTEM=="usb", DRIVER=="usb", MODE="0666", ATTR{idVendor}=="2001"
# Linux 6.0 or later (its ok to have this block present for older Linux kernels):
SUBSYSTEM=="usb", DRIVER=="usb",
RUN="/bin/sh -c "chmod -f 666 $sys$devpath/*-port*/disable || true""
Обратите внимание, что для концентраторов USB3 некоторые концентраторы используют разные идентификаторы поставщиков для компонентов USB2 и USB3 одного и того же чипа, и обоим необходимы разрешения для правильной работы uhubctl. Например, для Raspberry Pi 4B вам нужно добавить эти 2 строки (или удалить фильтр idVendor):
SUBSYSTEM=="usb", DRIVER=="usb", MODE="0666", ATTR{idVendor}=="2109"
SUBSYSTEM=="usb", DRIVER=="usb", MODE="0666", ATTR{idVendor}=="1d6b"
Если вам не нравится широко открытый режим 0666
, вы можете ограничить доступ по группам следующим образом:
SUBSYSTEM=="usb", DRIVER=="usb", MODE="0664", GROUP="dialout"
# Linux 6.0 or later (its ok to have this block present for older Linux kernels):
SUBSYSTEM=="usb", DRIVER=="usb",
RUN+="/bin/sh -c "chown -f root:dialout $sys$devpath/*-port*/disable || true""
RUN+="/bin/sh -c "chmod -f 660 $sys$devpath/*-port*/disable || true""
а затем добавьте разрешенных пользователей в группу dialout
:
sudo usermod -a -G dialout $USER
Чтобы изменения в правилах udev
вступили в силу, перезагрузите компьютер или запустите:
sudo udevadm trigger --attr-match=subsystem=usb
Для вашего удобства здесь представлено готовое к использованию правило udev.
Согласно спецификации USB 2.0, USB-концентраторы могут объявлять об отсутствии переключения питания, групповом (все порты одновременно) переключении питания или переключении питания для каждого порта (индивидуальном). Обратите внимание, что по умолчанию uhubctl
обнаруживает только USB-концентраторы, которые поддерживают переключение питания для каждого порта (но вы можете заставить его попробовать работать на неподдерживаемых концентраторах с помощью опции -f
). Вы можете узнать, какой тип переключения питания поддерживает ваше оборудование, используя sudo lsusb -v
:
Без переключения питания:
wHubCharacteristic 0x000a
No power switching (usb 1.0)
Per-port overcurrent protection
Групповое переключение мощности:
wHubCharacteristic 0x0008
Ganged power switching
Per-port overcurrent protection
Переключение мощности для каждого порта:
wHubCharacteristic 0x0009
Per-port power switching
Per-port overcurrent protection
uhubctl
?sudo uhubctl
. Если вашего концентратора нет в списке, он не поддерживается. Альтернативно вы можете запустить sudo lsusb -v
и проверить Per-port power switching
— если вы не видите такую строку в выводе lsusb, концентратор не поддерживается.uhubctl
, чтобы отключить питание этого порта, и убедитесь, что телефон перестает заряжаться, индикатор USB перестает светиться или вентилятор USB перестает вращаться. Если VBUS не выключается, значит, производитель вашего концентратора не включил в комплект схемы фактического отключения питания. Такой концентратор по-прежнему будет отключать USB-соединение для передачи данных, но он не может отключить питание, и мы не рассматриваем это поддерживаемое устройство.После отключения USB-порта udev не получает никаких событий, поэтому файлы устройства сохраняются. Однако попытка доступа к файлам устройства приведет к ошибке ввода-вывода.
Это проблема ядра Linux, которая исправлена начиная с версии uhubctl 2.5.0 для систем с ядром Linux 6.0 или более поздней версии.
Если вы все еще используете Linux 5.x или более раннюю версию, вы можете использовать этот обходной путь для решения этой проблемы:
sudo uhubctl -a off -l ${location} -p ${port}
sudo udevadm trigger --action=remove /sys/bus/usb/devices/${location}.${port}/
Файл устройства будет удален udev, но USB-устройство по-прежнему будет видно в lsusb
. Обратите внимание, что путь /sys/bus/usb/devices/${location}.${port}
будет существовать только в том случае, если устройство было обнаружено на этом порту. Когда вы снова включите питание, устройство должно правильно выполнить повторную нумерацию (нет необходимости снова вызывать udevadm
).
Некоторые драйверы устройств в ядре удивляются выключению USB-устройства и автоматически пытаются включить его снова.
Это проблема ядра Linux, которая исправлена начиная с версии uhubctl 2.5.0 для систем с ядром Linux 6.0 или более поздней версии.
Если вы все еще используете Linux 5.x или старше:
Чтобы исправить это, вы можете использовать опцию -r N
, где N — некоторое число от 10 до 1000 — uhubctl
будет пытаться отключить питание много раз подряд, и он должен это подавить.
Отключение авторизации USB для рассматриваемого устройства перед выключением питания с помощью uhubctl
должно помочь:
echo 0 > sudo tee /sys/bus/usb/devices/${location}.${port}/authorized
Если ваше устройство является USB-накопителем, вызов udisksctl
перед вызовом uhubctl
также должен помочь:
sudo udisksctl power-off --block-device /dev/disk/...`
sudo uhubctl -a off ...
Многие производители концентраторов создают свои USB-концентраторы, используя базовые 4-портовые USB-чипы. Например, чтобы создать 7-портовый концентратор, они последовательно подключают два 4-портовых концентратора - 1 порт теряется при последовательном подключении, поэтому получается 4 + 4-1 = 7-портовый концентратор. Аналогично, 10-портовый концентратор можно построить как 3 4-портовых концентратора, соединенных последовательно вместе, что дает 4+4+4-2=10 используемых портов.
Обратите внимание: никогда не пытайтесь изменить состояние питания портов, используемых для последовательного подключения внутренних концентраторов. Это приведет к путанице во внутренней схеме концентратора и приведет к непредсказуемому поведению.
Это ограничение аппаратного дизайна Raspberry Pi. В качестве обходного пути вы можете купить любой внешний USB-концентратор из списка поддерживаемых выше, подключить его к любому USB-порту Raspberry Pi и самостоятельно управлять питанием на его портах. Также поддерживаются хабы, разработанные специально для Raspberry Pi, например UUGear MEGA4.
Для справки: поддерживаемые модели Raspberry Pi имеют следующую внутреннюю топологию USB:
Один концентратор 1-1
, порты 2-5 объединены, все управляются портом 2
:
uhubctl -l 1-1 -p 2 -a 0
Попытка контролировать порты 3
, 4
, 5
ни к чему не приведет. Порт 1
управляет питанием Ethernet+WiFi.
Главный концентратор 1-1
, все 4 порта объединены, все управляются портом 2
(также отключает порты вторичного концентратора). Порт 1
соединяет концентратор 1-1.1
ниже, порты 2
и 3
подключены снаружи, порт 4
не подключен.
uhubctl -l 1-1 -p 2 -a 0
Вторичный концентратор 1-1.1
(последовательное подключение к основному): 3 порта, порт 1
используется для Ethernet+WiFi, а порты 2
и 3
выведены наружу.
️ Если ваша прошивка VL805 старше00137ad
(проверьте с помощьюsudo rpi-eeprom-update
), вам необходимо обновить прошивку, чтобы переключение питания работало на RPi 4B.
Концентратор USB2 1
, 1 порт, подключает только концентратор 1-1
ниже.
Концентратор USB2 1-1
, 4 порта в группе, двойной к концентратору USB3 2
ниже:
uhubctl -l 1-1 -a 0
Концентратор USB3 2
, 4 порта в группе, двойной к концентратору USB2 1-1
выше:
uhubctl -l 2 -a 0
Концентратор USB2 3
, 1 порт, контроллер OTG. Переключение питания не поддерживается.
Raspberry Pi 5 имеет два порта USB2 и два порта USB3 (всего 4). Эти порты подключены к 4 отдельным USB-концентраторам 1
, 2
, 3
, 4
в действительно странной конфигурации (но в зависимости от версии ОС и оборудования интересующими концентраторами могут быть 2
, 3
, 4
, 5
). Если устройство USB3 подключено к синему разъему, оно будет обнаружено на концентраторе USB3 2
или 4
. Если устройство USB2 подключено к любому разъему или устройство USB3 подключено к черному разъему, оно будет обнаружено на концентраторе USB2 1
или 3
. Независимо от типа подключения USB2/USB3 синие разъемы всегда являются портом 1
, а черные разъемы всегда являются портом 2
.
Каждый из 4 встроенных USB-концентраторов рекламируется как поддерживающий переключение питания для каждого порта, но это не так. На самом деле у Raspberry Pi 5 все 4 порта объединены в одну группу, несмотря на принадлежность к 4 разным логическим USB-концентраторам.
Чтобы отключить питание VBUS, его необходимо отключить на всех встроенных концентраторах и портах с помощью:
uhubctl -l 2 -a 0
uhubctl -l 4 -a 0
Чтобы снова включить его:
uhubctl -l 2 -a 1
uhubctl -l 4 -a 1
Обратите внимание, что питание VBUS отключается только в том случае, если все порты выключены — включение любого отдельного порта включает обратное питание VBUS для всех 4 портов.
Проект | Описание |
---|---|
USB-подсветка с кодом Морзе | Отправьте сообщение азбукой Морзе с помощью USB-подсветки |
USB-подсветка для веб-камеры | Включение/выключение светодиода при включении/выключении веб-камеры |
Кинотеатр Лайтбокс | Включите/выключите Cinema Lightbox в приложении iOS Home. |
Индикатор состояния сборки | Создайте индикатор состояния сборки менее чем за 10 минут |
Buildenlights | Статус сборки проекта GitLab/GitHub — зеленый/красный свет |
Метеостанция | Сброс метеостанции, когда она замерзает |
sysmoQMOD | При необходимости сбросьте настройки сотовых модемов. |
Датчик смога | Сброс питания датчика смога на базе Raspberry Pi |
Ужасное скопление | Включение и выключение узлов кластера Raspberry Pi по мере необходимости. |
Идеальный музыкальный сервер | Отключите неиспользуемые порты USB, чтобы улучшить качество звука. |
USB-накопители без фантомной загрузки | Включайте USB-накопители только тогда, когда это необходимо для экономии энергии. |
восстановление данных с USB-накопителя | Восстановить данные с неисправного жесткого диска USB |
Управление питанием 3D-принтера | Веб-плагин OctoPrint для управления питанием USB |
USB-вентилятор для Raspberry Pi | Управляйте USB-вентилятором, чтобы избежать перегрева Raspberry Pi |
Перезагрузите маршрутизатор Raspberry Pi | Автоматически перезагружать маршрутизатор, если Интернет не работает |
Управление USB-лампой с помощью голоса | Голосовое управление USB-лампой с помощью Siri и Raspberry Pi |
Светодиодная лента USB управления | Управление светодиодной лентой с питанием от USB |
Варим пиво с Raspberry Pi | Автоматизированная система пивоварения с использованием Raspberry Pi |
Веб-камера в эфире | Автоматически освещать вывеску при использовании веб-камеры |
Сделай сам ПППС | Припаяйте провода к USB-концентратору для поддержки uhubctl. |
Центр PPPS с открытым исходным кодом | Аппаратный проект с открытым исходным кодом для концентратора, совместимого с uhubctl |
Python-обертка для uhubctl | Модуль для использования uhubctl с Python |
лабораторная сетка | Платформа для тестирования встроенного Linux на оборудовании |
Copyright (C) 2009-2024 Вадим Михайлов
Этот файл может распространяться на условиях Стандартной общественной лицензии GNU версии 2.