Я расширил скрипт вверх, а затем добавил правило udev для запуска при каждом подключении мыши. Я использую Logitech Performance MX, но это правило должно быть схожим.
#!/bin/bash
# loop up to 10 times trying to fix the mouse insertion
for i in {1..10}
do
# exit the script if there was no mouse error
if [ `dmesg | grep "logitech-djreceiver" | tail -1 | grep -c "failed with error -32"` -eq 0 ]; then
echo "No logitech receiver error...exiting" ;
exit 0 ;
else
# try to reload the mouse driver
echo `date`" Error detected, trying reload of logitech hid driver" ;
rmmod hid_logitech_dj ;
modprobe hid_logitech_dj ;
sleep 1 ;
fi
done
пытается выполнить перезагрузку драйвера до выхода.
Я назвал скрипт /usr/bin/mousefix и сделал chmod +x.
Вот правило udev, строка, которая может добавляется к /etc/udev/rules.d/10-local.rules
SUBSYSTEMS=="usb", DRIVERS=="usb", ATTRS{manufacturer}=="Logitech", ATTRS{product}=="USB Receiver", ACTION=="add", RUN+="/usr/bin/mousefix"
Надеюсь, это поможет кому-то другому. Казалось, что проще всего запускать скрипт всякий раз, когда подключается USB.