Як відключити автоматичну автозалежність USB на ядрі 3.7.10 або вище?


38

Я оновив свій HTPC з ядра 3.7.10 до 3.10.7, і здається, CONFIG_USB_SUSPEND тепер відійшов від параметрів ядра та включений у ПМ.

Основна проблема, з якою я стикаюся, полягає в тому, що у мене зовнішній жорсткий диск, і при зупиненні та пробудженні HTPC він недоступний для системи. Жорсткий диск прокидається (ви чуєте, як він знову закручується), але при спробі отримати доступ до точки монтажу ви отримуєте таку помилку:

ZOTAC ~ # ls /media
ls: reading directory /media: Input/output error

І на dmesg:

[  253.278260] EXT4-fs warning (device sdb1): __ext4_read_dirblock:908: error reading   directory block (ino 2, block 0)

У попередніх ядрах встановлення CONFIG_USB_SUSPEND = N вирішило б проблему, оскільки жорсткий диск сам би впорався зі сплячкою, а точка монтажу завжди була доступною. Коли жорсткий диск був увімкнено, а HTPC потребував чогось із точки монтажу жорсткого диска, сам HDD прокинеться та працюватиме без проблем.

Зараз я без успіху спробував наступне:

  1. Вручну змінити / sys / bus / usb / devices / usb * / power / control на "on" замість "auto" .
  2. Вручну змінити / sys / bus / usb / devices / usb * / power / autoususpend на "-1" замість "0" .

Але коли знову прокидається HTPC, точка монтажу знову недоступна. Як обхідний шлях, я можу відключити та повторно встановити точку монтажу, і вона знову працює без проблем, але я впевнений, що повинен бути спосіб уникнути автоматичної роботи ОС з USB.

Будь-яка ідея, як відключити usb-автозалежність на ядрі 3.7.10 або вище?


Хвіст /sys/bus/usb/devices/<BUS>-<DEVPATH>/power/persistвам дає 1? Чи grep CONFIG_PM_RUNTIME /boot/config-$(uname -r)дає вам y? power-management.txt
Runium

1
power/persistдає, 1і у мене немає жодного конфігураційного файлу /boot. CONFIG_PM_RUNTIME=yконфігурується у .configфайлі ядра .
Пітер

Відповіді:


33

Для Ubuntu і Debian , usbcoreскомпільовано в ядрі, тому створювати записи на /etc/modprobe.dволі НЕ роботи: ми повинні змінити параметри завантаження ядра.

Відредагуйте /etc/default/grubфайл та змініть GRUB_CMDLINE_LINUX_DEFAULTрядок, щоб додати usbcore.autosuspend=-1опцію:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash usbcore.autosuspend=-1"

Зауважте, що quit splashвже існували варіанти. Тож зберігайте й інші варіанти.

Після збереження файлу оновіть grub:

sudo update-grub

І перезавантажити .

Тепер перевірити autosuspendзначення:

cat /sys/module/usbcore/parameters/autosuspend

І це повинно відображатися -1.

У документації на ядро ​​зазначено, що колись у майбутньому цей парам зміниться на autosuspend_delay_ms(замість autosuspend).


1
Це, мабуть, справедливо і для Debian.
Бенджамін Трент

2
Раель, дуже дякую за це. Те саме стосується останньої версії Kali. Я додав вище, і мій USB IRToy (v2) зараз працює належним чином.
Joat

1
Я маю USB-карту в одному з mPCIE слотів і просто не хотів правди. Запуск Дебіана Джессі. Це вирішило мою проблему, вирішивши величезний головний біль, ДЯКУЙТЕ!
xebo

Я спробував це в Ubuntu 15.10, але значення не застосовується (значення 2). Чи можна ще щось спробувати?
Йонас Адлер

Я ще 14.04. Але afaik, в останніх версіях ядра, параметр для зміни є autosuspend_delay_ms.
Раель Гугельмін Кунья

20

Відповідно до документації з деревом ядра , час автозавертання в режимі очікування в режимі очікування регулюється autosuspendпараметром модуля в usbcore. Якщо встановити початкову затримку в режимі очікування за умовчанням на -1, запобігатиме автоматичне використання будь-якого USB-пристрою. Ви все ще маєте змогу ввімкнути автоматичне збільшення часу для вибраних пристроїв.

Параметр usbcore.autosuspendядра можна встановити, коли модуль завантажується вручну:

$ modprobe usbcore autosuspend=-1

або додавши наступний рядок у файл конфігурації у /etc/modprobe.d:

options usbcore autosuspend=-1

Якщо usbcoreкомпілюється в ядро, параметр можна відрегулювати, додавши наступне до командного рядка ядра:

usbcore.autosuspend=-1

Нарешті, параметр може бути скоригований під час виконання, виконуючи:

echo -1 >/sys/module/usbcore/parameters/autosuspend

Зміна торкнеться всіх нових USB-пристроїв. Вже існуючі пристрої не вплинуть.


2
Я usbcoreкомпілював у ядро, але використання modprobe.dопції, здається, не працює. Незважаючи на те, що modprobe -c usbcore | grep autosuspendце відображається як -1, cat /sys/module/usbcore/parameters/autosuspendя отримую2
Пітер

1
@Peter: autosuspendзастаріле. Новий файл, autosuspend_delay_msякий займає мс замість секунд. реф . Але power/controlвстановлено, що він onповинен мати той же ефект.
Руніум

@Sukminder, що я повинен налаштувати, щоб автоматична зупинка не була відключена назавжди? Я намагався використовувати і autosuspend=-1в modprobe.dі в kernelпараметрах, але жорсткий диск все ще призупиняється і не прокидається красиво.
Пітер

1
@ Петер: Якби я знав, то скажу тобі :). Я цитую лише те, що док. каже. Твій пт. 1 у вашій посаді повинен був зробити це, наскільки я можу сказати, я не маю поняття, чому це не так. Ви спробували встановити autosuspend_delay_msв -1? (В /sys/bus/usb/devices/<device>/power/autosuspend_delay_ms)
Руніум

1
Я на ядрі 4.4 і autosuspend_delay_msйого там немає. Але autosuspendЄ.
Маріано Дюпон

3

У мене є аналогічна проблема із USB-оптикою USB і PS / 2, сумісною з Microsoft Wheel Mouse, сумісною з моменту оновлення системи Linux Mint Debian Edition до ядра 3.10-2-amd64. Підозрюється неналежне автозалежність управління живленням USB . У Debian це компілюється як usbcoreмодуль у ядро.

Ви можете змінити це назавжди, видавши в командному рядку:

sudo echo "options usbcore autosuspend=-1" | sudo tee /etc/modprobe.d/disable-usb-autosuspend.conf > /dev/null

Деякі ядра, можливо, знадобляться autosuspend=0.

Якщо ваша система використовує initrd(найімовірніше, так), то відновіть initrdдля свого ядра.

Наприклад:

uname -r
sudo dpkg-reconfigure linux-image-3.10-2-amd64

Перезавантажте та перевірте:

cat /sys/module/usbcore/parameters/autosuspend

що має дати врожай -1зараз.


Я не використовую, initrdі описані тут дії не діють у цьому випадку, як на них відповіли раніше.
Пітер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.