Вызов hcd->driver->hub_control()

Нашел ошибку, я команды не на хаб отправлял, а на сами устройства, заменил в вызове usb_control_msg dev на hub_dev и заработало, но напряжение ожидаемо так и не пропало, похоже это будет работать только если в хабе есть поддержка USB port-power switching
vikaig
похоже это будет работать только если в хабе есть поддержка USB port-power switching
Не все так просто с этой хреновиной - да, в спецификации забита фича per port power switching (PPPS), с помощью которой можно управлять питанием и даже для этого предусмотрены запросы SetPortFeature (PORT_POWER) и даже в выводе lsusb -v можно увидеть поддержку хабом этой фичи, но это не означает, что это будет работать.
wHubCharacteristic 0x0009
      Per-port power switching
      Per-port overcurrent protection
Во первых, как пишут- это обязательный, но не достаточный признак того, что такой хаб будет работать по описаной схеме, т.к. производитель мог пустить цепь питания в обход чипсета.
Во вторых, для реализации PPPS-функционала необходимы дополнительные компоненты (полевые транзисторы и обвязка), которые в целях экономии в хабы не устанавливаются. А поэтому в большинстве случаев это реализовано не с отключением питания, а с понижением питания.
В третьих, для этого должны использоваться специальные утилиты.
... вообщем не буду писать, почитай сам на эту тему.

EDIT 1 - забыл отметить, что описывал это для общего случая USB-устройств ... а вот в части использования технолгии PPPS в ноутбуках, хоть в выводе lsusb -v и будут нужная строка, но, как правило, технически это все не реализовано. А реализовано простое снижение питания.
Ошибки не исчезают с опытом - они просто умнеют
 
Зарегистрироваться или войдите чтобы оставить сообщение.