¿Es posible simular/forzar/falsificar la desconexión y reconexión de un dispositivo USB en Linux?

¿Es posible simular/forzar/falsificar la desconexión y reconexión de un dispositivo USB en Linux?

Entonces tengo un problema extraño con el que me he estado encontrando. Tengo un minero USB de bitcoin, Bitfury, y estoy usando CGMiner para minar.

Cuando inicio la aplicación, como root, el dispositivo USB no se detecta automáticamente. CGMiner solo detecta el dispositivo cuando se vuelve a conectar (detecta un evento de conexión en caliente y luego funciona según lo previsto)

Me gustaría configurar un miniservidor sin cabeza y, por lo tanto, prefiero no levantarme y desconectar y volver a conectar el dispositivo cada vez que se reinician los servidores, ya que soy demasiado vago para eso y es algo difícil de hacer. cuando no estoy físicamente en mi casa.

Entonces, ¿es posible apagar el sistema USB y reiniciarlo? ¿O hay una mejor manera de hacerlo?

Actualmente, estoy ejecutando Fedora 20 en la terminal HP t5730, pero encontré el problema en Raspbian en Raspberry PI, por lo que no creo que sea algo del lado del sistema operativo. Tal vez sea el dispositivo en sí o culpa de CGMiner, pero todavía no pude encontrar nada sobre ese tema.

Respuesta1

Descargue sus módulos del kernel USB HCI (cualquier cosa *hci_hcd y *usb*) y vuelva a cargarlos. Esta es la única forma confiable de cortar la alimentación a los puertos USB.

Existen otros métodos menos severos para lograr lo mismo, pero no se garantiza que funcionen dependiendo de cómo falle su dispositivo.

Respuesta2

esta respuestadetalla el uso de la usbresetutilidad. Vota a favor si esto es útil.

Así es como "desconecto y vuelvo a conectar" mi dispositivo inalámbrico USB, que a menudo se cuelga. Antes de encontrar este script, tendría que desconectarlo físicamente y luego volverlo a conectar para que se reinicie.

$ usbreset
Usage:
  usbreset PPPP:VVVV - reset by product and vendor id
  usbreset BBB/DDD   - reset by bus and device number
  usbreset "Product" - reset by product name

Devices:
  Number 001/003  ID 046d:080a  
  Number 003/002  ID 045e:07a5  Microsoft® 2.4GHz Transceiver v9.0
  Number 001/002  ID 0cf3:9271  USB2.0 WLAN

$ sudo usbreset 0cf3:9271
Resetting USB2.0 WLAN ... ok

Como puede ver, ejecuto el script una vez sin ningún argumento para ver qué dispositivos están conectados. Luego lo ejecuto nuevamente con sudo y la identificación del producto/proveedor (que es consistente en todos los reinicios) para desconectar y volver a conectar virtualmente el dispositivo.

información relacionada