Como reconectar um dispositivo USB logicamente desconectado?

50

É possível que um dispositivo de armazenamento USB seja logicamente desconectado: o dispositivo ainda está conectado, mas é invisível do sistema operacional (por exemplo, não está listado em /proc/bus/usb ). Talvez isso também possa acontecer com outros tipos de dispositivos USB ou outros dispositivos removíveis. Isso pode acontecer por exemplo:

O que está acontecendo no driver ou no hardware e, mais importante, (como) o dispositivo pode ser reconectado logicamente (sem fisicamente conectá-lo e voltar)?

Note que esta questão não é sobre montagem. No estado “logicamente desconectado”, o kernel acredita que não há nada no barramento USB (e, portanto, é claro que não há entrada em /dev ).

    
por Gilles 14.02.2011 / 22:36

6 respostas

20

Às vezes, é possível fazer um ciclo de energia na ramificação do barramento USB onde o dispositivo está conectado:

# echo suspend > /sys/bus/usb/devices/1-1/power/level
# echo auto > /sys/bus/usb/devices/1-1/power/level

O 1-1 deve ser ajustado para sua configuração. Você pode ver em qual parte da árvore USB seu dispositivo está conectado executando lsusb -t antes de ejetá-lo.

Você pode encontrar informações detalhadas na lista de discussão linux-usb, este tópico por exemplo.

    
por 15.02.2011 / 17:45
6

Redefina o dispositivo ou o hub ao qual ele está conectado e o dispositivo deve reaparecer. Aqui está um pequeno programa para fazer isso:

link

Funciona para a maioria das unidades USB que eu tentei, mas existem exceções, como o meu Kingston DT 101 II 4GB, que falha com os comandos INQUIRY e READ CAPACITY após a reinicialização e permanece inutilizável até ser desligado.

Você pode ligar e desligar o dispositivo sem desconectá-lo se ele for alimentado pela porta e o hub USB suportar o controle de energia por porta. Aqui está um pequeno programa para controlar o poder:

link

Infelizmente, quase nenhum hub USB suporta esse recurso, e é muito difícil encontrar um que suporte isso. Os fabricantes não anunciam. Muitos hubs também mentem sobre isso, por exemplo, se você fizer "lsusb -v" você pode ver "Per-port power switching" anunciado em "wHubCharacteristic", mas na realidade ele não funciona. O chipset pode suportá-lo, mas era mais fácil / mais barato para o fabricante conectar os pinos de alimentação da porta diretamente à fonte de alimentação, em vez de passar pelo chipset.

    
por 01.04.2011 / 19:46
5

Eu encontrei esta resposta para funcionar bem no meu sistema Gentoo. Lembre-se também de reativar seu dispositivo se ele for uma parte importante do seu sistema (por exemplo, mouse ou teclado).

sudo sh -c 'AUTHFILE="/sys/bus/usb/devices/5-2/authorized" ; echo 0 > "$AUTHFILE" ; sleep 1 ; echo 1 > "$AUTHFILE"'

Para ver o que você está desativando / reativando:

cat /sys/bus/usb/devices/5-2/product
    
por 28.04.2013 / 10:54
5
udevadm info -a -n /dev/sdb

Agora verifique o Kernel. Por exemplo. se estiver conectado à porta 2 do Front UIP, então seria 1-1.2 e, se estiver conectado à porta 1 do Front UIP, ele seria 1-1.1.

Para a porta 2: Para desconectar o USB:

echo '1-1.2' | tee /sys/bus/usb/drivers/usb/unbind

Para conectar o USB:

echo '1-1.2' | tee /sys/bus/usb/drivers/usb/bind
    
por 29.08.2016 / 06:07
3

Eu tentei a maioria das sugestões acima, mas elas não funcionaram para mim. Eu encontrei como redefinir um dispositivo USB a partir da linha de comando: link

echo $i >/sys/bus/pci/drivers/ehci_hcd/bind

onde $i você pode usar o ID de dispositivo apropriado de /sys/bus/pci/drivers/ehci_hcd .

    
por 21.02.2014 / 23:15
-4

Não sei se estou entendendo corretamente sua pergunta, mas no meu sistema, se um dispositivo USB estiver conectado, mas não montado, posso "ver" por

$> fdisk -l

Isso me diz a qual dispositivo ele está associado (ou seja, / dev / sdd1 ou algo assim) e, em seguida, o monto manualmente.

    
por 16.02.2011 / 06:42