Install tool for nuking USB controllers

This commit is contained in:
Manuel Thalmann 2024-01-12 12:19:51 +01:00
parent d5f087f720
commit bcf71c47f2
3 changed files with 34 additions and 0 deletions

View file

@ -121,6 +121,8 @@ yay --noconfirm -Syu \
discord \
openasar-git;
. "../../Common/Software/nuke-usb/install.sh";
# Python
yay --noconfirm -Syu \
python \

View file

@ -0,0 +1,4 @@
#!/bin/bash
pushd "${BASH_SOURCE%/*}" > /dev/null;
sudo install -m 755 ./nuke-usb.sh /usr/local/bin/nuke-usb;
popd > /dev/null;

View file

@ -0,0 +1,28 @@
#!/usr/bin/env bash
# Resets all USB host controllers of the system.
# This is useful in case one stopped working
# due to a faulty device having been connected to it.
base="/sys/bus/pci/drivers"
sleep_secs="1"
# This might find a sub-set of these:
# * 'ohci_hcd' - USB 3.0
# * 'ehci-pci' - USB 2.0
# * 'xhci_hcd' - USB 3.0
echo "Looking for USB standards ..."
for usb_std in "$base/"?hci[-_]?c*
do
echo "* USB standard '$usb_std' ..."
for dev_path in "$usb_std/"*:*
do
dev="$(basename "$dev_path")"
echo " - Resetting device '$dev' ..."
printf '%s' "$dev" | sudo tee "$usb_std/unbind" > /dev/null
sleep "$sleep_secs"
printf '%s' "$dev" | sudo tee "$usb_std/bind" > /dev/null
echo " done."
done
echo " done."
done
echo "done."