این اسکریپت رو امتحان کنید
#!/bin/sh
set -e
readonly SYS_USB_DEVICES_DIR='/sys/bus/usb/devices'
readonly ID_VENDOR=''
readonly ID_PRODUCT=''
readonly WAITE=2
unset TARGET
[ ! -d "${SYS_USB_DEVICES_DIR}" ] && echo "${SYS_USB_DEVICES_DIR} directory does not exist" && exit 1
for usb_dev in "${SYS_USB_DEVICES_DIR}"/*; do
[ ! -L "${usb_dev}" ] && continue
if [ -r "${usb_dev}/idVendor" ] && [ -r "${usb_dev}/idProduct" ]; then
if [ "$(cat "${usb_dev}/idVendor")" = "${ID_VENDOR}" ] && [ "$(cat "${usb_dev}/idProduct")" = "${ID_PRODUCT}" ]; then
readonly TARGET="${usb_dev}"
break
fi
fi
done
unset usb_dev
[ -z "${TARGET}" ] && exit 0
echo '0' > "${TARGET}/authorized"
sleep "${WAITE}"
echo '1' > "${TARGET}/authorized"
مقادیر متغیرهای ID_VENDOR و ID_PRODUCT رو بر اساس id مربوط که از lsusb میگیرید، تغییر بدید.
برای مثال اگه idProduct برابر 008b و idVendor برابر a7fc باشه، خطهای ۶ و ۷ به این شکل در میان:
readonly ID_VENDOR='008b'
readonly ID_PRODUCT='a7fc'
بزرگ و کوچک بودن حروف مهم هست.
مقدار متغیر WAITE رو هم میتونید تغییر بدید. عدد مورد نظر حتما بیشتر از صفر و بر مبنای ده باشه.
بهتره خروجی lsusb رو قرار بدید تا بیشتر بشه راهنمایی کرد.
بسیار عالی بود درست شد
من یه توضیحی برای دوستانی که همچین مشکلی رو دارن بدم که چیکار کردم :
اول اسکریپت Dragon- عزیز رو در یک فایل متنی مثلا با اسم usb-reset.sh ذخیره می کنیم.
بعد با دستور lsusb پورت مربوطه رو پیدا می کنیم :
Bus 002 Device 003: ID aaaa:bbbb Trendchip Technologies Corp.
Bus 002 Device 001: ID xxxx:xxxx Linux Foundation 2.0 root hub
Bus 007 Device 001: ID xxxx:xxxx Linux Foundation 1.1 root hub
Bus 006 Device 001: ID xxxx:xxxx Linux Foundation 1.1 root hub
Bus 005 Device 001: ID xxxx:xxxx Linux Foundation 1.1 root hub
Bus 001 Device 001: ID xxxx:xxxx Linux Foundation 2.0 root hub
Bus 004 Device 001: ID xxxx:xxxx Linux Foundation 1.1 root hub
Bus 003 Device 001: ID xxxx:xxxx Linux Foundation 1.1 root hub
بعد مقادیر ID_VENDOR و ID_PRODUCT رو به ترتیب در ابتدای اسکریپت قرار می دیم (من WAITE رو دست نزدم)
بعد اسکریپت رو executable اش می کنیم :
chmod +x usb-reset.sh
و در مسیر /lib/systemd/system-sleep/ کپی اش می کنیم :
sudo cp usb-reset.sh /lib/systemd/system-sleep/
و تمام !