Включите / выключите USB порты

Можно ли включить / выключить определенный порт USB, используя терминал в Ubuntu?

lsusb отображает следующий результат

Bus 001 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 2232:1020  
Bus 002 Device 009: ID 0bc2:a013 Seagate RSS LLC 
Bus 002 Device 003: ID 0a5c:219c Broadcom Corp. 

Seagate - это мой внешний жесткий диск. Могу ли я выключить его в терминале? Я попытался https://stackoverflow.com/questions/4702216/controlling-a-usb-power-supply-on-off-with-linux . Но запутался, что следует заменить вместо usbX

21
задан 23 May 2017 в 15:39

4 ответа

После того, как я столкнулся с той же проблемой, я обнаружил, что команды должны вводиться по-другому, чтобы «sudo» применил права соответствующим образом.

Используйте команду "tee".

echo 0 | sudo tee /sys/bus/usb/devices/usb2/power/autosuspend_delay_ms

будет применять права root к команде "tee", которая запишет 0 в указанный файл, заменив все, что там есть в данный момент. Чтобы добавить, используйте команду tee с опцией -a.

для информации см. Справочную страницу tee

0
ответ дан 23 May 2017 в 15:39

Все предыдущие ответы говорят о механизме USB Suspend , то есть «логическом отключении питания», они никогда не будут физически отключать VBUS + 5V от порта USB.

Только несколько концентраторов могут фактически сократить VBUS, как описано здесь .

Инструмент hubpower может это сделать (если концентратор его поддерживает).

0
ответ дан 23 May 2017 в 15:39

На самом деле usbX - это не что иное, как номера портов USB, где X обозначает номер, такой как 1 или 2 и т. Д. Например, usb1 и usb2 для портов 1 и 2 . Как правило, ноутбук может иметь 3 или 4 порта USB с портами USB 2.0 и USB 3.0.

В убунти usb1, usb2 ... usbX ссылки на /sys/devices/pci000:00/*. Чтобы хорошо это понять, выполните следующую команду:

    ls -l /sys/bus/usb/devices/

Так что включите / отключите USB-порты usbX, которые будут заменены на usb1, если вы хотите включить / отключить USB Port Number 1 (или см. StackExchange) :

Редактировать

Благодаря Стефану Денчеву сообщить правильный путь к эхо некоторый текст в файл, используя sudo . (Также проверьте его комментарий.) Вы не должны получать сообщение permission denied сейчас.

sudo sh -c "echo '0' > /sys/bus/usb/devices/usb1/power/autosuspend_delay_ms"
sudo sh -c "echo 'auto' > /sys/bus/usb/devices/usb1/power/control"

После просмотра результата lsusb выглядит, что ваше устройство Seagate подключено к Port No. 2, поэтому вам нужно отключить usb2, тогда команды будут:

sudo sh -c "echo '0' > /sys/bus/usb/devices/usb2/power/autosuspend_delay_ms"
sudo sh -c "echo 'auto' > /sys/bus/usb/devices/usb2/power/control"

Надеюсь, что это сработает, и теперь вы можете понять.

0
ответ дан 23 May 2017 в 15:39

udisksctl имеет флаг power-off, который я предлагаю вам использовать вместе с unmount

Из man udisksctl:

power-off
           Arranges for the drive to be safely removed and powered off. On the
           OS side this includes ensuring that no process is using the drive,
           then requesting that in-flight buffers and caches are committed to
           stable storage. The exact steps for powering off the drive depends
           on the drive itself and the interconnect used. For drives connected
           through USB, the effect is that the USB device will be deconfigured
           followed by disabling the upstream hub port it is connected to

Демо ]

Вот я размонтирую свой USB-переключатель и затем выключаю его

testdir:$ lsusb
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 009: ID 154b:007a PNY 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

testdir:$ lsblk                                                                
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0 111.8G  0 disk 
└─sda1   8:1    0 111.8G  0 part /
sdb      8:16   1    30G  0 disk 
└─sdb1   8:17   1    30G  0 part /media/xieerqi/6A32C4555E1C5B4D
sr0     11:0    1  1024M  0 rom  

testdir:$ udisksctl unmount -b /dev/sdb1 && udisksctl power-off -b /dev/sdb1
Unmounted /dev/sdb1.

testdir:$ lsusb
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

testdir:$ lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0 111.8G  0 disk 
└─sda1   8:1    0 111.8G  0 part /
sr0     11:0    1  1024M  0 rom  

testdir:$ 
0
ответ дан 23 May 2017 в 15:39

Другие вопросы по тегам:

Похожие вопросы: