من یه ماوس USB دارم که هرموقع اون رو به لپ تاپم میزنم فعال نمیشه.
با دستور udevadm monitor -u متوجه شدم که دستگاه بعد از اتصال به پورت usb دوباره قطع میشه.
راه حل من برای این مشکل این بود که هرموقع دستگاه به سیستم وصل میشه یه اسکریپت اجرا بشه.
اول با نوشتن اسکریپت شروع می کنیم. دستورات زیر رو اجرا کنید:
cd /usr/local
sudo nano
حالا این دستورات رو توی nano تایپ کنید و فایل رو با نام enable-mouse.sh ذخیره کنید. بعد بهش اجازه اجرا شدن بدید.
#!/bin/bash
rmmod usbhid
modprobe usbhid
خب اسکریپت رو ساختیم الان باید یه قانون ایجاد کنیم که اسکریپت تحت اون شرایط اجرابشه.
cd /etc/udev/rules.d
sudo touch 81-enable-mouse.rules
sudo nano 81-enable-mouse.rules
حالا توی nano این دستور رو بنویسید و فایل رو ذخیره کنید.
ACTION=="add", SUBSYSTEM=="usb", DRIVER=="usb", ATTRS{idVendor}=="0e8f", ATTRS{idProduct}=="0022", RUN+="/usr/local/enable-mouse.sh"
نکته مهم درمورد این دستور ATTRS{idVendor} و ATTRS{idProduct} هست که بیانگر شناسه های دستگاه مورد نظر ماست. برای به دست اوردن شناسه دستگاه کافیه دستور lsusb رو اجرا کنید.
خروجی این دستور برای من به این صورته:
Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 1bcf:2c18 Sunplus Innovation Technology Inc.
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 026: ID 15d9:0a4c Trust International B.V. USB+PS/2 Optical Mouse
Bus 003 Device 027: ID 0e8f:0022 GreenAsia Inc. multimedia keyboard controller
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
البته همونطور که مشخصه من توی این مثال شناسه کیبورد (0e8f:0022) رو به جای ماوس وارد کردم. علتشم این بود که برای من ماوس مدام فعال و غیرفعال می شد بنابر این اگر شناسه ماوس رو وارد می کردم اسکریپت هم مدام اجرا می شد. پس به جای اون کیبورد رو دادم چون من همیشه کیبورد هم وصل می کنم و حالا فقط کافیه اول ماوس رو بزنم بعد کیبورد رو تا همه چیز به خوبی کار کنه
حالا سرویس udev رو دوباره راهندازی کنید
sudo service udev restart