10

Есть ли способ полностью отключить (определенное) USB-устройство с помощью программного обеспечения с компьютера с Linux?

Я хочу использовать это, чтобы выключить (чтобы светодиод не горит) (одну) флешку.

Знаете ли вы какой-нибудь метод для достижения этой цели? Например, используя /sys /bus /usb или тому подобное?

2 ответа2

8

Если на вашей машине работает старое ядро, вы можете запустить echo suspend > /sys/bus/usb/devices/X-X/power/level чтобы принудительно приостановить работу устройства.

Однако, начиная с 2.6.32, это больше невозможно:

Мы можем классифицировать события управления питанием в два широких класса: внешний и внутренний. Внешние события - это события, запускаемые каким-либо агентом за пределами стека USB: приостановка / возобновление работы системы (инициированное пользовательским пространством), динамическое возобновление вручную (также инициированное пользовательским пространством) и удаленное включение (запускаемое устройством). Внутренние события - это те события, которые запускаются в стеке USB: autosuspend и autoresume. Обратите внимание, что все события динамического приостановления являются внутренними ; внешние агенты не могут выдавать динамические приостановки.

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, даже если вы приостановите устройство, некоторое питание на порту останется, поэтому может быть невозможно отключить светодиод, если он питается по «тупой» схеме (то есть напрямую подключен к +5V и GND штифты).

3

Использование команды eject должно работать.

Запустите eject /dev/<devicename> и он должен выключиться.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .