LINUX.ORG.RU

можно ли программными средствами (написав например какой-то код) выключить подачу электричества на USB

 


0

4

Subj. Причем вопрос не до конца праздный, так как таким образом я пытался тестировать отключение hotspot’а (за hotspot «играл» WiFi-адаптер + hostapd и хотелось именно не прибить hostapd, а убить электричество, подаваемое на адаптер для большего реализма).

★★

Последнее исправление: dissident (всего исправлений: 3)

Ответ на: комментарий от Eddy_Em

У меня на материнке два хаба, и лишь их питанием можно управлять.

От того, что снимешь питание с хаба питание с VBUS не пропадет, оно идет напрямую с блока питания.

Еще как вариант — сделать свой собственный USB-hub с интегрированным МК

Многие хабы имеют ноги для управления питанием, просто к ним обычно ничего не подключено, и управляются они командами по usb (см. uhubctl, статья на хабре).

Из перечисленного на uhubctl вижу в продаже: ‘D-Link DUB-H4 rev D’ и pcie-платы на uPD720202. На uPD720202 придется припаять какие-нибудь TPS20xxC (ну может еще обвязку R,C)

arson ★★★★★
()
Ответ на: комментарий от arson

Аппаратно я это использовал в цепях питания термодатчиков на зеркале БТА: чтобы ничего не спалить, если вдруг питание закоротят, я ставил на каждую гроздь датчиков контроллер питания USB-хаба TPS2051. Он автоматом определяет, превышение тока, а также имеет управляющую ногу. (схемка)

Я не понимаю, почему такое не ставят на каждый разъем USB на материнке! Ведь по питанию все равно надо ограничивать гнезда, а так еще и отключать их можно было бы.

Вот же сволочи «экономные»!!!

Eddy_Em ☆☆☆☆☆
()

можно ли программными средствами (написав например какой-то код) выключить подачу электричества на USB

Легко на JS (Node.js): USB.disablePower()

anonymous
()
Ответ на: комментарий от anonymous

Врёти

$ js
Welcome to Node.js v12.19.0.
Type ".help" for more information.
> USB
Uncaught ReferenceError: USB is not defined

Может, с Electron этим вашим путаете?

mertvoprog
()

Мы, кстати, недавно открыли для себя udisksctl power-off ;) В треде вроде не упоминался. Просто и удобно, не нужно пердолиться с поиском нужного устройства в sysfs, равно как и присутствует искаропке куда вероятнее, чем всякие там uhubctl, которые специально надо ставить ;) Что характерно, его и обёртки к UDisks2 во всяких графических ФМ зачастую почему-то не дёргают, а только unmount.

mertvoprog
()
Ответ на: комментарий от Eddy_Em

Вставил в компьютер NEC uD720101 (pci/usb2.0) и NEC uD720202 (pcie/usb3.0) , uhubctl говорит что обе поддерживает!

На обеих есть куда паять lm3526/tps20XX (соответственно), надо будет припаять.

arson ★★★★★
()
Ответ на: комментарий от arson

Ты мультиметром сначала ткни в ноги управления и попробуй соответствующий порт отключить, чтобы убедиться, что этот функционал точно есть.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

Фукционал-то есть. Просто заказал на ali lm3526-H, через два месяца получил lm3526-L, опять заказал, еще два месяца … так и валяюся.

arson ★★★★★
()
Ответ на: комментарий от Eddy_Em

Перепаял две платы такую (St-Lab U-710, uD720202, PCIE-2xUSB3.0) и такую(TRENDnet TU2-H5PI, uD720101, PCI-5xUSB2.0)

  1. Отпаял предохранители, припаял микросхемы TPS2065C (SOT-23, одноканальные) и LM3526M-H (soic8, двухканальные) соответственно.
  2. Переделал подтяжку FAULT#. Без микросхемы для выдачи fault-а используется делитель (2 резистора на VBUS, 5V->3.3V), а для микросхемы нужна подтяжка к VCC.
    На первой плате подтяжек (R13,R14) нет, т.к. такой мелочи у меня нет пришлось делители (R17/R21; R18/R22) отпаять и использовать для подтяжки. На второй все есть, ничего не стал делать (делитель не мешает).
  3. Нашел в схеме второй платы «ошибку», на нижнем порту (он один на 2-х канальную микросхему) управление приходит на один канал, а питание уходит с другого, кинул с выхода на выход перемычку.

Кратко: В принципе схемы рабочие. Но uhubctl это какой-то трындец. Я думал это просто рубильник, а он еще и как-то логически пытается отключить порт.
И получается, что команда(ы) на выключения зависит от того, что это за устройство, на каком интефейсе оно висит (USB1/2/3), версии ядра и еще хрен знает чего.

Веселее всего получилось со вторым хабом, оказалось все порты крест-накрест. Даеш команду на выключение 1 порта, он выключается логически, а питание снимается со второго. То ли микросхемы не той системы, то ли лажанулись с разводкой. Но аналогов LM3526M-H так чтобы вх/вых были крест-накрест я не нашел. Выключать придется парами.

arson ★★★★★
()

@dissident @Eddy_Em @guskov_roman

спасибо ребят за совет на счет uhubctl. Только что привезли D-Link 4-Port USB 2.0 Hub DUB-H4, Ver(Rev): D1E, беленький, 05E3:0608

uhubctl отлично срабатывает,

$ sudo ./uhubctl
Current status for hub 3-1 [05e3:0608 USB2.0 Hub, USB 2.10, 4 ports, ppps]
  Port 1: 0100 power
  Port 2: 0100 power
  Port 3: 0100 power
  Port 4: 0503 power highspeed enable connect [0403:6010 FTDI Dual RS232-HS]

$ sudo ./uhubctl -a cycle -p 4
Current status for hub 3-1 [05e3:0608 USB2.0 Hub, USB 2.10, 4 ports, ppps]
  Port 4: 0503 power highspeed enable connect [0403:6010 FTDI Dual RS232-HS]
Sent power off request
New status for hub 3-1 [05e3:0608 USB2.0 Hub, USB 2.10, 4 ports, ppps]
  Port 4: 0000 off
Current status for hub 3-1 [05e3:0608 USB2.0 Hub, USB 2.10, 4 ports, ppps]
  Port 4: 0000 off
Sent power on request
New status for hub 3-1 [05e3:0608 USB2.0 Hub, USB 2.10, 4 ports, ppps]
  Port 4: 0100 power

Тема - актуальней не бывает!

zendrz ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.