Como faço para redefinir um dispositivo USB sem desconectá-lo no Linux?

5

De vez em quando pode ser necessário redefinir um dispositivo USB. Existe uma maneira de realizar a reinicialização no software sem desconectar o dispositivo e, em seguida, conectá-lo novamente?

Mais especificamente, eu tenho uma webcam que fica confusa ao jogar muito com as configurações em guvcapture e, em seguida, precisa de um reset para voltar à pista.

    
por Grumbel 17.05.2010 / 03:31

3 respostas

9

Você pode tentar programa resetusb de Benjamin Close para redefinir todos os dispositivos - não há binários disponíveis, mas a compilação é bastante fácil. Salve o código-fonte como resetusb.c e execute:

gcc -lusb resetusb.c -o resetusb

Agora você pode executar a ferramenta como resetusb . Alternativamente, @unhammer aponta para a versão de dispositivo único de Alan Stern (mais alguns dicas sobre como usá-lo ).

Algumas pessoas também tiveram sorte apenas removendo e modprobe -ing dos módulos relevantes :

modprobe -vr ehci_hcd
modprobe -v ehci_hcd

(você pode, claro, criar scripts)

Algumas distribuições também podem ter suas próprias ferramentas para reiniciar o subsistema USB; O Mandrake aparentemente tem /etc/init.d/usb .

    
por 23.08.2012 / 19:00
3

Digamos que eu queira redefinir o /dev/sdc .

# udevadm info -q all /dev/sdc | grep DEVPATH
E: DEVPATH=/devices/pci0000:00/0000:00:14.0/usb2/2-1/2-1.4/2-1.4:1.0/host2/target2:0:0/2:0:0:0/block/sdc

Eu pego o 2-1.4 acima (o seu pode ser apenas 2-1 - meu dispositivo está conectado a um hub) e faça:

# echo 2-1.4 > /sys/bus/usb/drivers/usb/unbind
# echo 2-1.4 > /sys/bus/usb/drivers/usb/bind
    
por 04.05.2017 / 10:09
1

Você pode reiniciar a camada de abstração de hardware: sudo /etc/init.d/hal restart

    
por 17.05.2010 / 04:06