Выключите USB-устройство в программном обеспечении Windows - программирование

Выключите USB-устройство в программном обеспечении Windows

Я хотел бы задействовать USB-устройство с помощью программного обеспечения в Windows.

Я делаю разработку на маленьком микроконтроллере питания USB. Этот чип вернется к собственному поведению в силовом цикле и позволит загружать код. Поскольку мой код приведет к сбою устройства, когда что-то пойдет не так - игнорируя все команды USB, я должен физически отключить устройство от системы.

Я хочу сделать развитие удаленно и не обязательно физически присутствовать.

До сих пор я пытался использовать "devcon" для отключения частей USB-стека. В то время как это берет концентраторы в D3 (должно быть выключено!), Все еще подается питание на устройство.

Есть ли какие-либо существующие решения или приемы SetupAPI, которые могут помочь?

4b9b3361

Ответ 1

Поскольку это для разработки/теста вместо производства, я бы рекомендовал solid-state_relay как часть второго устройства и используя что для включения питания USB-соединения.

Ответ 2

Некоторые USB-концентраторы имеют возможность отключать питание от своих устройств ниже.

"Возможно ли подключать порты USB-концентратора от Ubuntu?" https://askubuntu.com/questions/149242/is-it-possible-to-power-up-ports-on-a-usb-hub-from-ubuntu Что указывает на некоторый источник c для hub-ctrl.c

Смотрите: http://www.gniibe.org/development/ac-power-control-by-USB-hub/index

Я тестировал это на Ubuntu со светодиодным модулем Dream-Cheeky USB, и, похоже, он отключил питание - хотя, когда он снова включен, устройство запомнило (!) состояние включения/выключения светодиода??? - Этого не произошло, когда я отсоединил и поменял USB-кабель на светодиод...

Похоже, кто-то посмотрел на компиляцию для Windows, но я не смог найти результат, извините.

Ответ 3

Вы можете использовать аппаратное реле и управлять им с помощью программного обеспечения: http://pintant.cat/2012/05/12/power-off-usb-device/ (конечно, будет использовать 2 порта USB:-) один для устройства, один для реле).

Ответ 4

К сожалению, это невозможно на биржевых ПК.

У наборов микросхем USB-хоста нет возможности полностью отключить питание. Существует некоторая сигнализация, что вы можете делать в USB 2.0 или 3.0, чтобы попросить устройство перейти в состояние ожидания, но порт будет обеспечивать питание даже при выключенном ПК. (Это значит, что такие устройства, как iPod и еще не заряжаются, если необходимо.)

Ответ 5

В Windows это простое решение, если вы покупаете этот внешний USB-концентратор. Он имеет недокументированную функцию, которая переключает питание на все подключенные USB-устройства, когда концентратор "включен" в диспетчере устройств Windows. Вы можете сделать это вручную:

  • Запустите "Диспетчер устройств"
  • Разверните "Универсальные контроллеры последовательной шины"
  • Откройте "Свойства" для соответствующего "универсального USB-концентратора"
  • Выберите вкладку "Драйвер"
  • Нажмите кнопку "Отключить"
  • Нажмите кнопку "Включить". Концентратор ненадолго отключит выход питания для всех 4 его USB-портов, а затем снова включит его.

Вы также можете сделать это программно из любого приложения Windows, которое работает с правами администратора. Вот пример в С#.

Я успешно использовал этот метод для питания питания USB-устройств, которые были "заблокированы". Он уверен, что физически отключает устройства, особенно на удаленных или беспилотных ПК.