Il est possible qu'un périphérique de stockage USB se déconnecte logiquement: le périphérique est toujours branché, mais il est invisible du système d'exploitation (par exemple, il n'est pas répertorié sous /proc/bus/usb
). Peut-être que cela peut arriver à d'autres types d'USB ou à d'autres périphériques amovibles. Cela peut arriver par exemple:
Que se passe-t-il dans le pilote ou dans le matériel, et surtout, (comment) le périphérique peut-il être reconnecté logiquement (sans le débrancher et le rebrancher physiquement)?
Notez que cette question ne concerne pas le montage. Dans l'état "déconnecté logiquement", le noyau pense qu'il n'y a rien sur le bus USB (et donc bien sûr il n'y a pas d'entrée sous /dev
).
Il est parfois possible de faire un cycle d'alimentation sur une branche du bus USB où l'appareil est branché:
# echo suspend > /sys/bus/usb/devices/1-1/power/level
# echo auto > /sys/bus/usb/devices/1-1/power/level
Le 1-1
doit être adapté à votre configuration. Vous pouvez voir à quelle partie de l'arborescence USB votre appareil est branché en exécutant lsusb -t
avant de l'éjecter.
Vous pouvez trouver des informations détaillées sur la liste de diffusion linux-usb, ce fil par exemple.
udevadm info -a -n /dev/sdb
Maintenant, vérifiez le noyau. Par exemple. s'il est connecté au port 2 de l'UIP avant, ce serait 1-1.2 et s'il est connecté au port 1 de l'UIP avant, alors ce serait 1-1.1.
Pour le port 2: Pour déconnecter l'USB:
echo '1-1.2' | tee /sys/bus/usb/drivers/usb/unbind
Pour connecter USB:
echo '1-1.2' | tee /sys/bus/usb/drivers/usb/bind
Réinitialisez l'appareil ou le concentrateur auquel il est connecté et l'appareil devrait réapparaître. Voici un petit programme pour le faire:
http://marc.info/?l=linux-usb-users&m=116827193506484
Cela fonctionne pour la plupart des clés USB que j'ai essayées, mais il y a des exceptions, comme mon Kingston DT 101 II 4GB, qui échoue aux commandes INQUIRY et READ CAPACITY après la réinitialisation, et reste inutilisable jusqu'à la mise sous tension.
Vous pouvez redémarrer l'appareil sans le débrancher s'il est alimenté par le port, et votre concentrateur USB prend en charge le contrôle de l'alimentation par port. Voici un petit programme pour contrôler la puissance:
http://marc.info/?l=linux-usb-devel&m=113724451205634
Malheureusement, presque aucun concentrateur USB ne prend en charge cette fonctionnalité, et il est très difficile d'en trouver un qui la prend en charge. Les fabricants n'en font pas la publicité. De nombreux concentrateurs mentent également à ce sujet, par exemple si vous utilisez "lsusb -v", vous pouvez voir "Commutation d'alimentation par port" annoncé dans "wHubCharacteristic", mais en réalité cela ne fonctionne pas. Le chipset peut le prendre en charge, mais il était plus facile/moins cher pour le fabricant de connecter les broches d'alimentation du port directement à l'alimentation au lieu de passer par le chipset.
J'ai trouvé cette réponse fonctionnant très bien sur mon système Gentoo. N'oubliez pas également de réactiver votre appareil s'il s'agit d'un élément important de votre système (par exemple, une souris ou un clavier).
Sudo sh -c 'AUTHFILE="/sys/bus/usb/devices/5-2/authorized" ; echo 0 > "$AUTHFILE" ; sleep 1 ; echo 1 > "$AUTHFILE"'
Pour voir ce que vous désactivez/réactivez:
cat /sys/bus/usb/devices/5-2/product
J'ai essayé la plupart des suggestions ci-dessus, mais elles n'ont pas fonctionné pour moi. J'ai trouvé comment réinitialiser un périphérique USB à partir de la ligne de commande: https://askubuntu.com/a/290519
echo $i >/sys/bus/pci/drivers/ehci_hcd/bind
où $i
vous pouvez utiliser l'ID d'appareil approprié de /sys/bus/pci/drivers/ehci_hcd
.
Les éléments suivants déconnecteront le périphérique USB.
Sudo eject /dev/sde
Les éléments suivants reconnecteront le périphérique USB.
Sudo eject -t /dev/sde
Ce qui précède fonctionne sur mon Linux Mint.
Référence: http://www.upubuntu.com/2011/09/how-to-remount-usb-stick-without.html