Выключение одного устройства USB... снова

Я знаю, что эта тема обсуждалась много раз, но ни один из ответов не помог мне. Для записи я запускаю Debian.

Сделка: я купил светодиодную лампу с питанием от USB, которая очень проста и даже не имеет переключателя вкл/выкл (он работает и всегда включен). Я хочу, чтобы включить/выключить его через командную строку. Вот что я пробовал:

    echo on > /sys/bus/usb/devices/usb1/power/level       # turn on
    echo suspend > /sys/bus/usb/devices/usb1/power/level  # turn off

что я нашел на многих форумах. Поворот "on" работает, но "приостановка" дает

    -su: echo: write error: Invalid argument

для каждого usbN. Я также пробовал

    echo "0" > "/sys/bus/usb/devices/usbX/power/autosuspend_delay_ms"

который не дает ошибки, но также ничего не делает (опять же, для каждого usbN)

попытка

    echo "usb1" > /sys/bus/usb/drivers/usb/unbind

работает только для более "интеллектуальных" устройств, таких как клавиатура, мышь или Wi-Fi-карта Wi-Fi. Я имею в виду, что только отключенные устройства отключены, другие usbN не выдают ошибку, но лампа никогда не гаснет.

содержимое/sys/bus/usb/devices/are

    1-0:1.0 1-1:1.0 1-2:1.0 1-2:1.2 2-0:1.0 4-0:1.0 4-1:1.0 6-0:1.0 8-0:1.0 8-2:1.0 usb2 usb4 usb6 usb8
    1-1 1-2 1-2:1.1 1-2:1.3 3-0:1.0 4-1 5-0:1.0 7-0:1.0 8-2 usb1 usb3 usb5 usb7

Я пытался сделать

    echo device_name > /sys/bus/usb/drivers/usb/unbind

с каждым из них, но реагируют только устройства usbN и N-M, которые имеют вид n-m: x.y yield

    tee: /sys/bus/usb/drivers/usb/bind: No such device

(я попытался вставить, например, "1-0: 1.0", "1-0 \: 1.0" и "1-0 \: 1.0", все дали тот же результат).

Последнее, что показано после выполнения

    lsusb -t

не изменяется при подключении или отключении лампы.

Любые идеи?

Ответы

Ответ 1

Отключите идентификатор устройства 2-1:

echo '2-1' |sudo tee /sys/bus/usb/drivers/usb/unbind

Включить идентификатор устройства 2-1:

echo '2-1' |sudo tee /sys/bus/usb/drivers/usb/bind

В моем случае использование идентификатора устройства 2-1 контролирует питание на моем USB-накопителе и, как следствие, контролирует свет.

  • СОВЕТ. Если они работают для вас в Debian, создайте для них псевдоним, чтобы облегчить вам жизнь позже.

Надеюсь, это поможет, Су

Ответ 2

Если все, что вы хотите сделать, это reset устройство USB, чтобы исправить его, когда оно попадает в разбитое состояние, тогда использование специальных файлов bind/unbind usbfs может быть немного больно (поскольку идентификаторы устройств могут меняться, и они немного сложно определить, если вы не хотите переустанавливать другие устройства). В этом случае я нашел гораздо проще использовать идентификаторы поставщика и продукта, указанные lsusb с usb_modeswitch. Например, если я идентифицирую свой беспроводной адаптер, используя:

$ lsusb
Bus 001 Device 042: ID 7392:7811 Edimax Technology Co., Ltd EW-7811Un 802.11n Wireless Adapter [Realtek RTL8188CUS]
Bus 001 Device 035: ID 0409:005a NEC Corp. HighSpeed Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Я могу использовать reset беспроводной адаптер, используя:

$ sudo usb_modeswitch -v 0x7392 -p 0x7811 --reset-usb

Если у вас несколько устройств с одинаковыми идентификаторами поставщиков и продуктов, то usb_modeswitch предоставляет флаги номера шины и устройства. В приведенном выше примере беспроводного адаптера я добавлю -b 1 -g 42 к флагам.

Ответ 3

Это не будет работать для вашей лампы. Это отключение логически. Это устройство для работы с электропитанием. И ваша лампа просто ничего не делает (