Por algum motivo bizarro meu mouse passou a não funcionar quando ligo meu PC.  A propósito, para fazer minha parte quanto à crise energética na europa, eu passei a deixar meu PC desligado.  Só o ligo quando vou usar, e depois desligo novamente.  Algo que não fazia há algumas décadas.

Mas voltando ao assunto mouse, por algum motivo bizarro o mouse parou de funcionar.  Ao desconectar e reconectar na USB, ele passava a funcionar.

Então resolvi fazer isso por software, num script que botei no /etc/rc.local, uma vez que rodo o rc-local no systemd.

MOUSE_PRODUCT="G203 Prodigy Gaming Mouse"

cd /sys/bus/usb/devices || \
  die "It seems /sys interface isn't available."

echo "Detecting mouse:"
mouse_id=""
for d in *
do
  if [ ! -f "$d/product" ]; then
    continue
  fi
  echo -n " * $d: "
  product=$(cat $d/product)

  if [ "$product" = "$MOUSE_PRODUCT" ]; then
    echo "$product (DEVICE FOUND)"
    mouse_id="$d"
  else
    echo $product
  fi
done

if [ -z "$mouse_id" ]; then
  die "device not foud"
fi

echo "Restarting $mouse_id ($MOUSE_PRODUCT)"
echo " * unbinding"
echo "$mouse_id" > /sys/bus/usb/drivers/usb/unbind
sleep 3
echo " * binding"
echo "$mouse_id" > /sys/bus/usb/drivers/usb/bind

Esse foi o código inicial que usei, mas descobri logo que dar um reset no mouse não era o suficiente.  O mais efetivo era dar um reset no hub USB em que está conectado.  Assim alterei pra usar "USB2.0 Hub".

O resultado:

helio@goosfraba ~> sudo homemadescripts/restart_mouse.sh
Detecting mouse:
 * 1-4: CSR8510 A10
 * 2-5: Lexmark MC3224dwe
 * 5-1: PLAYSTATION(R)3Conteroller
 * 8-1: USB2.0 Hub
 * 8-1.1: HyperX Quadcast
 * 8-1.2: HD Pro Webcam C920
 * 8-1.3: G432 Gaming Headset
 * 8-1.4: USB2.0 Hub
 * 8-1.4.1: Keychron C1
 * 8-1.4.4: G203 Prodigy Gaming Mouse (DEVICE FOUND)
 * 9-1: USB3.0 Hub
 * 9-1.4: USB3.0 Hub
 * usb1: OHCI PCI host controller
 * usb2: EHCI Host Controller
 * usb3: EHCI Host Controller
 * usb4: EHCI Host Controller
 * usb5: OHCI PCI host controller
 * usb6: OHCI PCI host controller
 * usb7: OHCI PCI host controller
 * usb8: xHCI Host Controller
 * usb9: xHCI Host Controller
Restarting 8-1.4 (USB2.0 Hub)
 * unbinding
 * binding

e temos um mouse funcionando :)

O código está no github: https://github.com/helioloureiro/homemadescripts/blob/master/restart_mouse.sh