Vous êtes ici : Accueil / Debian GNU/Linux / Système / Configuration / Réinitialiser un périphérique USB sur Debian

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