Ответ 1
Поскольку это для разработки/теста вместо производства, я бы рекомендовал solid-state_relay как часть второго устройства и используя что для включения питания USB-соединения.
Я хотел бы задействовать USB-устройство с помощью программного обеспечения в Windows.
Я делаю разработку на маленьком микроконтроллере питания USB. Этот чип вернется к собственному поведению в силовом цикле и позволит загружать код. Поскольку мой код приведет к сбою устройства, когда что-то пойдет не так - игнорируя все команды USB, я должен физически отключить устройство от системы.
Я хочу сделать развитие удаленно и не обязательно физически присутствовать.
До сих пор я пытался использовать "devcon" для отключения частей USB-стека. В то время как это берет концентраторы в D3 (должно быть выключено!), Все еще подается питание на устройство.
Есть ли какие-либо существующие решения или приемы SetupAPI, которые могут помочь?
Поскольку это для разработки/теста вместо производства, я бы рекомендовал solid-state_relay как часть второго устройства и используя что для включения питания USB-соединения.
Некоторые 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, но я не смог найти результат, извините.
Вы можете использовать аппаратное реле и управлять им с помощью программного обеспечения: http://pintant.cat/2012/05/12/power-off-usb-device/ (конечно, будет использовать 2 порта USB:-) один для устройства, один для реле).
К сожалению, это невозможно на биржевых ПК.
У наборов микросхем USB-хоста нет возможности полностью отключить питание. Существует некоторая сигнализация, что вы можете делать в USB 2.0 или 3.0, чтобы попросить устройство перейти в состояние ожидания, но порт будет обеспечивать питание даже при выключенном ПК. (Это значит, что такие устройства, как iPod и еще не заряжаются, если необходимо.)
В Windows это простое решение, если вы покупаете этот внешний USB-концентратор. Он имеет недокументированную функцию, которая переключает питание на все подключенные USB-устройства, когда концентратор "включен" в диспетчере устройств Windows. Вы можете сделать это вручную:
Вы также можете сделать это программно из любого приложения Windows, которое работает с правами администратора. Вот пример в С#.
Я успешно использовал этот метод для питания питания USB-устройств, которые были "заблокированы". Он уверен, что физически отключает устройства, особенно на удаленных или беспилотных ПК.