Réinitialiser un périphérique USB sur Debian
Par Pierre-Yves Landuré
—
Dernière modification
02/11/2015 15:53
Ce guide facilite la réinitialisation d'un périphérique USB sur Debian. Il ne fonctionne pas pour les périphériques qui ne sont pas listés par la commande lsusb.
Ce guide est testé sur:
- Ubuntu 15.10 Wily Werewolf
Paramètres
Renseignez la chaîne de recherche permettant d'identifier le périphérique USB dans le résultat de la commande lsusb (ici pour les périphériques Bluetooth):
usbSearchString="Bluetooth"
Réinitialisation des périphériques
Détection des informations
Récupérez les identifiants USB complets des périphériques:
usbIds="$(command lsusb \
| command egrep -i "${usbSearchString}" \
| command cut -c 24-32)"
Identifiez les ports des périphériques:
declare -a usbInfos=()
for usbId in ${usbIds}; do
idVendor="${usbId%:*}"
idProduct="${usbId#*:}"
while read idVendorPath; do
devicePath="$(command dirname "${idVendorPath}")"
if [[ -n "$(command grep "${idProduct}" "${devicePath}/idProduct")" ]]; then
usbInfos+=("${usbId}|$(command basename "${devicePath}")")
fi
done <<<"$(command grep -l "${idVendor}" '/sys/bus/usb/devices/'*'/idVendor')"
done
Réinitialisation
Réinitialisez les périphériques en les déliant puis reliant à leur pilote (bind / unbind):
for usbInfo in "${usbInfos[@]}"; do usbId="${usbInfo%|*}"
usbHwId="${usbInfo#*|}" if [[ -e "/sys/bus/usb/drivers/usb/${usbHwId}" ]]; then
echo "Unbinding ${usbId}"
echo " echo '${usbHwId}' > '/sys/bus/usb/drivers/usb/unbind'"
echo "${usbHwId}" | sudo tee "/sys/bus/usb/drivers/usb/unbind" > '/dev/null'
fi if [[ -n "${usbId}" && -e "/sys/bus/usb/drivers/usb/bind" ]]; then
echo "Binding ${usbId} to ${driver}"
echo " echo '${usbHwId}' > '/sys/bus/usb/drivers/usb/bind'"
echo "${usbHwId}" | sudo tee "/sys/bus/usb/drivers/usb/bind" > '/dev/null'
fi
if [[ -e "/sys/bus/usb/devices/${usbHwId}
" ]]; then
echo "Get infos on ${usbId} with:"
echo "udevadm info -p '/sys/bus/usb/devices/${usbHwId}
"'
fi
done
Vérifiez la réinitialisation à l'aide de dmesg:
command dmesg
Remerciements
- Merci à login: root (en) pour Power OFF and ON USB device in linux (ubuntu) (en).
- Merci aux auteurs de How to identify a Device: USB (en).
- Merci à Alan Stern pour usbreset.c (en).
- Merci à Yutaka Niibe pour hub-ctrl.c (en).