From 251a730a0766851306bcff98560ef23568401822 Mon Sep 17 00:00:00 2001 From: Robert Günzler Date: Fri, 18 Nov 2022 17:53:33 +0100 Subject: add bin/usbreset --- bin/usbreset | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100755 bin/usbreset (limited to 'bin') diff --git a/bin/usbreset b/bin/usbreset new file mode 100755 index 0000000..093a502 --- /dev/null +++ b/bin/usbreset @@ -0,0 +1,35 @@ +#!/bin/sh + +set -e +[ -n "$DEBUG" ] && set -x + +# check requirements +for tool in awk fd; do + if ! command -v "$tool" >/dev/null; then + printf "%s: %s not installed but required\n" "$(basename "$0")" "$tool" >&2 + exit 1 + fi +done + +if [ "$1" = "-h" ]; then + printf "usage: %s DEV_NODE\n\n" "$0" + exit 2 +fi + +dev_node=$1 +dev_node=$(basename "${dev_node}") + +serial=$(fd "${dev_node}" /sys/devices | + awk 'BEGIN{RS="/"} /usb/{print}' | + xargs -I{} cat /sys/bus/usb/devices/{}/serial) +[ -z "${serial}" ] && exit 1 + +bus=$(fd "${serial}" /sys/bus/pci/drivers/) +[ -z "${bus}" ] && exit 1 + +driver=$(dirname "${bus}") +[ -z "${driver}" ] && exit 1 + +printf "%s" "${serial}" | doas tee "${driver}/unbind" >/dev/null +sleep 2 +printf "%s" "${serial}" | doas tee "${driver}/bind" >/dev/null -- cgit 1.4.1