2008-12-31 74 views
25

Me gustaría encender y apagar un dispositivo USB a través del software en Windows.Apagar un dispositivo USB en el software de Windows

Estoy haciendo desarrollo en un pequeño microcontrolador de potencia USB. Este chip volverá al comportamiento nativo en un ciclo de encendido y permitirá la descarga de un código. Como mi código bloqueará el dispositivo cuando las cosas van mal, haciendo que ignore todos los comandos de USB, tengo que desconectar físicamente el dispositivo del sistema.

Quiero hacer el desarrollo de forma remota y no tener que estar físicamente presente.

Hasta ahora he intentado usar "devcon" para deshabilitar partes de la pila USB. Si bien esto lleva los concentradores a D3 (¡debe estar apagado!), Aún se está suministrando alimentación al dispositivo.

¿Existen soluciones preexistentes o trucos de SetupAPI que puedan ayudar?

Respuesta

0

Desafortunadamente, no es posible en PC de stock.

Los conjuntos de chips host USB no tienen la capacidad de apagar completamente. Hay algunas señales de que puede hacer en USB 2.0 o 3.0 para solicitar que el dispositivo entre en modo reposo, pero el puerto proporcionará energía incluso cuando la PC esté apagada. (Eso es para dispositivos como iPods y cosas que aún pueden cargarse si es necesario.)

+1

Esto no es correcto y depende de hardware específico. Existe la opción de apagar/encender el concentrador raíz en algún momento, no puede hacerlo por puerto y solo para todos los puertos del concentrador raíz. Pero definitivamente puede apagar el puerto – Ilya

3

Dado que es para desarrollo/prueba en lugar de producción, recomendaría tener un solid-state_relay como parte de un segundo dispositivo y usarlo para encenderlo la conexión USB.

+0

Utilizamos este método, solo relé de potencia en lugar de electricidad, tomamos el cable Vbus e insertamos en el relé de potencia. Sé que hay relés USB dedicados para este propósito, pero supongo que son caros. – Ilya

+1

¿Existirían hubs USB que apagarán los dispositivos cuando el host lleve el concentrador al modo de bajo consumo? Como se trata de un entorno de laboratorio, usar hardware personalizado requerirá una batalla cuesta arriba. –

+0

publiqué el enlace como respuesta separada. – Ilya

1

Puede hacer con un relé de hardware y controlarlo a través del software: http://pintant.cat/2012/05/12/power-off-usb-device/ (por supuesto, utilizará 2 puertos USB :-) uno para el dispositivo, uno para el relé).

+3

¿Por qué está publicando una respuesta que duplica una que se publicó hace más de 3 años? –

3

Algunos concentradores USB tienen la capacidad de desconectar la alimentación de sus dispositivos posteriores.

"¿Es posible encender puertos en un concentrador USB desde Ubuntu?" https://askubuntu.com/questions/149242/is-it-possible-to-power-up-ports-on-a-usb-hub-from-ubuntu que apunta a alguna fuente de c-hub ctrl.c

Ver: http://www.gniibe.org/development/ac-power-control-by-USB-hub/index

He probado esto en Ubuntu con una unidad de sueño-Cheeky LED USB, y se parecía a desconectar la alimentación - aunque cuando se encendió de nuevo, el dispositivo había recordado (!) su LED encendido/apagado ??? - Esto no sucedió cuando desenchufé y vuelva a conectar el cable USB al LED ...

Parece que alguien ha buscado compilar esto para Windows, pero no pude encontrar el resultado, lo siento.

0

Existe una solución simple para esto en Windows si compra this external USB hub. Tiene una función no documentada que interrumpe el ciclo de alimentación de todos los dispositivos USB conectados siempre que el concentrador esté "habilitado" en el Administrador de dispositivos de Windows. Esto se puede hacer de forma manual:

  1. Ejecutar "Administrador de dispositivos"
  2. Expandir "controladores de bus serie universal"
  3. abrir Propiedades para el "Hub USB genérico" apropiada
  4. seleccionar el "conductor" de la ficha
  5. Haga clic en el botón "Desactivar"
  6. Haga clic en el botón "Habilitar".El concentrador deshabilitará brevemente la salida de potencia a los 4 puertos USB y luego lo habilitará nuevamente.

También puede hacerlo mediante programación desde cualquier aplicación de Windows que se ejecute con privilegios de administrador. Aquí está an example in C#.

He utilizado esta técnica con éxito para apagar y encender dispositivos USB que estaban "bloqueados". Seguro que supera a los dispositivos de desenchufar físicamente, especialmente en PC remotas o no tripuladas.

Cuestiones relacionadas