É possível simular/forçar/falsificar a desconexão e reconexão de um dispositivo USB no Linux?

É possível simular/forçar/falsificar a desconexão e reconexão de um dispositivo USB no Linux?

Então, eu tenho um problema estranho que estou enfrentando. Eu tenho um minerador de bitcoin usb, Bitfury, e estou usando o CGMiner para minerar.

Quando inicio o aplicativo, como root, o dispositivo USB não é detectado automaticamente. O CGMiner só detecta o stick quando ele é reconectado (ele detecta um evento hotplug e funciona conforme o esperado)

Eu gostaria de configurar um miniservidor headless e, portanto, prefiro não me levantar e desconectar e reconectar o dispositivo toda vez que os servidores reiniciarem, pois tenho preguiça de fazer isso e é um pouco difícil de fazer. quando não estou fisicamente em minha casa.

Então, é possível desligar o sistema USB e reiniciá-lo? Ou existe uma maneira melhor de fazer isso?

Atualmente, estou executando o Fedora 20 no terminal HP t5730, mas encontrei o problema no Raspbian no Raspberry PI, então não acho que seja algo do lado do sistema operacional. Talvez seja o próprio dispositivo ou culpa do CGMiner, mas ainda não consegui encontrar nada sobre esse assunto.

Responder1

Descarregue seus módulos USB HCI do kernel (qualquer coisa *hci_hcd e *usb*) e recarregue-os. Esta é a única maneira confiável de realmente cortar a energia das portas USB.

Existem outros métodos menos severos para conseguir o mesmo, mas não é garantido que funcionem dependendo de como o seu dispositivo falha.

Responder2

Esta respostadetalha o uso do usbresetutilitário. Vote positivamente se isso for útil.

É assim que eu “desconecto e reconecto” meu dongle sem fio USB, que geralmente trava. Antes de encontrar esse script, eu teria que desconectá-lo fisicamente e reconectá-lo para que ele fosse reiniciado.

$ 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 você pode ver, executo o script uma vez sem argumentos para ver quais dispositivos estão conectados. Em seguida, executo-o novamente com sudo e o ID do produto/fornecedor (que é consistente nas reinicializações) para desconectar e reconectar virtualmente o dispositivo.

informação relacionada