comment éjecter / démonter logiquement dongle USB?

Nous avons acheté une application commerciale qui ne fonctionne que si leur dongle usb est connectée au server. Cependant, parfois, l'application ne peut pas reconnaître le dongle, donc cela ne fonctionne pas, mais si quelqu'un éjecte le dongle physiquement du port USB et l'attache à nouveau, il reconnaît et fonctionne bien.

Il y a 43 modules chargés sur le server et attacher / éjecter le dongle n'augmente pas / diminue le nombre de modules.

Aussi, j'ai les files usbmon0 , usbmon1 et usbmon2 dans / dev avant / après éjecter / attacher le dongle et le nombre de files dans / dev ne changera pas avant / après éjecter / attacher le dongle.

Commande journalctl -f après l'éjection du dongle:

Jan 19 18:10:28 iwr kernel: usb 2-2.1: USB disconnect, device number 5 

Commande journalctl -f après avoir attaché le dongle:

 Jan 19 18:11:11 iwr kernel: usb 2-2.1: new full-speed USB device number 6 using uhci_hcd Jan 19 18:11:11 iwr kernel: usb 2-2.1: New USB device found, idVendor=0403, idProduct=c580 Jan 19 18:11:11 iwr kernel: usb 2-2.1: New USB device ssortingngs: Mfr=1, Product=2, SerialNumber=0 Jan 19 18:11:11 iwr kernel: usb 2-2.1: Product: HID UNIKEY Jan 19 18:11:11 iwr kernel: usb 2-2.1: Manufacturer: OEM Jan 19 18:11:11 iwr kernel: usbhid 2-2.1:1.0: couldn't find an input interrupt endpoint 

Puis-je éjecter puis l'attacher logiquement? (émettre une command, supprimer un module, etc.)

De nombreuses réponses trouvées sur Internet (y compris dans le commentaire de TNW) reposent sur /sys/bus/usb/devices/2-2/power/level ou /sys/bus/usb/devices/2-2/power/control qui sont tous les deux dépréciés depuis le kernel 2.6.quelquelque chose. Pour les nouveaux kernelx, la procédure suggérée est de dissocier et de réassocier son pilote, ce qui se traduit généralement par un cycle d'alimentation:

 # Find out which driver to unbind tree /sys/bus/usb/devices/2-2.1 | grep driver |-- driver -> ../../../../../../bus/usb/drivers/whatever # Unbind the driver echo 2-2.1 > /sys/bus/usb/drivers/whatever/unbind # Rebind the driver echo 2-2.1 > /sys/bus/usb/drivers/whatever/bind