השהיית USB אוטומטית היא הסיבה שהעכבר שלכם נרדם שוב ושוב
הנה תסמין שיגרום לכם לפקפק בחומרה שלכם. אתם מפסיקים להזיז את העכבר לכמה שניות, מזיזים אותו שוב, ולרגע לא קורה כלום. אחר כך הסמן קופץ כדי להדביק את הפער. לפעמים מקלדת עושה את אותו הדבר: ההקשה הראשונה אחרי הפסקה נבלעת. תחשדו בעכבר, בכבל, ביציאת ה-USB, בקרנל. זה לא אף אחד מהם.
זהו מאפיין חיסכון בחשמל שעושה בדיוק מה שנאמר לו לעשות, להתקן שהיה צריך להניח לו.
הפוסט הזה נכתב עבור אובונטו 12.04, שבה האשמה היא חבילה בשם laptop-mode-tools. להפצות אחרות ולשנים
אחרות יש את אותו מנגנון תחת שמות אחרים, והאבחנה עוברת איתן.
מה קורה
קרנל לינוקס יכול להעביר התקן USB לא פעיל למצב צריכה נמוכה, ולהעיר אותו כשנזקקים לו שוב. לזה קוראים USB autosuspend. עבור מצלמת רשת או מדפסת זה לא מזיק וחוסך מעט סוללה. עבור התקן קלט זה אסון, מפני שהדבר שמעיר את ההתקן הוא בדיוק הקלט שניסיתם לתת לו, וההתעוררות נמשכת די זמן כדי שתשימו לב.
לקרנל יש ברירת מחדל סבירה כאן. זו laptop-mode-tools שדורסת את ברירת המחדל בשם חיי הסוללה, והיא
עושה זאת לכל התקן USB שהיא מוצאת, אלא אם אמרתם לה אחרת. אם התקנתם את החבילה בכוונה, אתם כבר
יודעים שהיא שם. אם לא, בדקו בכל מקרה, מפני שהיא מגיעה עם כמה התקנות של מחשבים ניידים ואפשר שיש לכם
אותה מבלי שביקשתם אותה מעולם:
dpkg -l laptop-mode-tools
אם היא מותקנת, היא כמעט בוודאות הבעיה שלכם.
התיקון
החבילה שומרת את מדיניות ה-USB שלה בקובץ אחד:
/etc/laptop-mode/conf.d/usb-autosuspend.conf
פתחו אותו כ-root ומצאו את השורה שמחליטה אם הכלי מנהל את השהיית ה-USB בכלל. היא מגיעה כך:
CONTROL_USB_AUTOSUSPEND="auto"
שנו אותה ל:
CONTROL_USB_AUTOSUSPEND="0"
זה אומר לחבילה להוריד את הידיים לחלוטין מניהול החשמל של USB ולהשאיר את ברירות המחדל של הקרנל במקומן. אחר כך הפעילו מחדש את השירות כדי שהשינוי ייכנס לתוקף:
sudo /etc/init.d/laptop-mode restart
הזיזו את העכבר. הפיגור נעלם, והוא נשאר נעלם גם אחרי אתחולים, מפני שקובץ התצורה הוא מה שהשירות קורא בכל הפעלה.
החלופה העדינה יותר
אם אתם רוצים לשמור על ההשהיה האוטומטית לכל דבר חוץ מהתקני הקלט שלכם, לאותו קובץ יש רשימה שחורה. מצאו את מזהי היצרן והמוצר של ההתקנים הסוררים:
lsusb
כל שורה מסתיימת ב-ID בצורה 046d:c52b. הוסיפו את אלה שאתם רוצים להגן עליהם למשתנה הרשימה
השחורה באותו קובץ תצורה, מופרדים ברווחים:
AUTOSUSPEND_USBID_BLACKLIST="046d:c52b 04f2:0402"
והפעילו מחדש את השירות כמו קודם. אני לא טורח. החיסכון בסוללה מהשהיית עכבר הוא זניח, והמחיר של מאפיין שמתקלקל על התקן שעוד לא הכנסתי לרשימה השחורה הוא עוד אחר צהריים כמו זה שהוליד את הפוסט הזה.
למה אני כותב את זה
לא מפני שהתיקון קשה. מפני שהתסמין כל כך מטעה. שום דבר בעכבר איטי אינו אומר ניהול חשמל. הוא אומר חומרה שבורה, ואנשים מחליפים חומרה בגללו.
מאפיין שהוא בלתי נראה כשהוא עובד ונראה כמו תקלת חומרה כשהוא לא עובד הוא מאפיין מתוכנן רע, ולא חשוב כמה טובות כוונותיו. ברירת המחדל הנכונה לכל דבר שהאדם נוגע בו ישירות היא לעולם לא לישון. החבילה טעתה בזה, ועד שזה יתוקן במעלה הזרם, שתי השורות למעלה הן הפתרון העוקף.