Чи є спосіб вимкнути USB-пристрій за допомогою програмного забезпечення?


11

Чи є спосіб я повністю вимкнути (конкретний) USB-пристрій, використовуючи програмне забезпечення з машини Linux?

Я хочу використати це для вимкнення (щоб світлодіод вимкнувся) (однієї) USB-палички.

Чи знаєте ви якийсь метод для досягнення цього? Наприклад, використовуючи / sys / bus / usb чи подібне?


Так. Просто відключіть пристрій.
iglvzx

1
Ні, це не допомагає. Існує також можливість відсутності корисних перегородок (які можна було б встановити) на палиці.
Даніель Жур

Для флеш-пам’яті єдиним способом видалення диска є echo 1 > /sys/block/sd<letter[s]>/device/delete… (витяг, можливо, це робиться …) Це МОЖЕ призвести до того, що пристрій буде (м'яким) “вимкненим”… (Якщо він працює для дисків, він не працюватиме для недискових пристроїв ..)
Герт ван ден Берг

Відповіді:


10

Якщо ваша машина працює зі старим ядром, ви можете echo suspend > /sys/bus/usb/devices/X-X/power/levelвидалити призупинення роботи пристрою.

Однак з 2.6.32 це вже неможливо:

Ми можемо класифікувати події управління енергією у двох широких класах: зовнішній та внутрішній. Зовнішні події - це ті, що викликаються деяким агентом поза стеком USB: призупинення / відновлення системи (викликане простором користувача), відновлення динамічного вручну (також викликане простором користувача) та віддалене пробудження (викликане пристроєм). Внутрішні події - це ті, що спрацьовують усередині USB-стеку : автозапуск і автозапуск Зауважте, що всі динамічні події призупинення є внутрішніми ; зовнішнім агентам заборонено видавати динамічні призупинення.

power/control

    This file contains one of two words: "on" or "auto".
    You can write those words to the file to change the
    device's setting.

    "on" means that the device should be resumed and
    autosuspend is not allowed.  (Of course, system
    suspends are still allowed.)

    "auto" is the normal state in which the kernel is
    allowed to autosuspend and autoresume the device.

    (In kernels up to 2.6.32, you could also specify
    "suspend", meaning that the device should remain
    suspended and autoresume was not allowed.  This
    setting is no longer supported.

http://www.kernel.org/doc/Documentation/usb/power-management.txt )

Я думаю, що найкраще, що ви можете зробити, - це від’єднати пристрій від драйвера , так що на ньому не буде активності, а потім налаштувати пристрій якнайшвидше ( echo auto > /sys/bus/usb/devices/X-X/power/control && echo 0 > /sys/bus/usb/devices/X-X/power/autosuspend_delay_ms).

Однак, наскільки я розумію специфікації USB , навіть якщо ви призупинили пристрій, деяка потужність на порту залишатиметься, тому може бути неможливо відключити світлодіод, якщо він працює за схемою "німий" (тобто безпосередньо підключений до + 5 В та GND шпильки).


Я відзначаю це прийнятою відповіддю, тому що мені вдалося від’єднати пристрій від його драйвера та налаштувати автозалежність, що призводить до відключення пристрою. На жаль, цільові USB-накопичувачі (або: їх світлодіоди) безпосередньо підключені до + 5 В та GND, і тому їх не можна вимкнути.
Даніель Жур

3

Використання команди викидання повинно працювати.

Запустіть eject /dev/<devicename>і воно повинно вимкнути живлення.


На жаль, це не працює для моєї тестової палички тут :(
Daniel Jour

2
Що не дивно, якщо USB-накопичувач не є компакт-диском, дискетою, стрічкою або SCSI-накопичувачем. ejectпрацює лише з цими.
Дмитро Григор'єв
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.