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

18

Можно ли включить / выключить определенный порт 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 - это мой внешний жесткий диск. Могу ли я выключить его в терминале?

Я старался управлять источником питания USB (вкл / выкл) с Linux . Но я запутался в том, что следует заменить вместо usbX.

curious_coder
источник

Ответы:

8

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

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

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

rustyx
источник
7

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

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

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

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

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

JohnMoore
источник
2
У этой teeкоманды будет также побочный эффект печати на экране. При желании dd of=/sys/bus/...напишу только в файл, и больше никуда.
Брэндон Родс
4

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

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

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

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


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

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результатов Port No. 2вы увидите , что ваше устройство Seagate подключено , поэтому вам необходимо отключить его 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"
Саурав Кумар
источник
Благодарю. Если я попробую echo "0" > "/sys/bus/usb/devices/usb2/power/autosuspend_delay_ms"выводbash: /sys/bus/usb/devices/usb2/power/autosuspend_delay_ms: Permission denied
curious_coder
затем попробуйте sudoпосмотреть, что произойдет ..
Саурав Кумар
Попробовал это. Все та же ошибка.
curious_coder
На самом деле я не пытался включить / отключить какие-либо порты в Linux. Мой девиз - дать вам понять о usbXпроблеме. Если вы хорошо разбираетесь в командах, которые вы взяли, StackOverflowто только вы должны попробовать. В любом случае, мне также интересно узнать, какая команда используется для включения / выключения портов. Я отвечу вам в ближайшее время, когда это будет работать для меня. Скажите, затем вы отключите устройство и попробуйте снова. или попробуйте первый ответ, данный на stackoverflow.
Саурав Кумар
1
sudo sh -c "echo 'on' >> /sys/bus/usb/devices/usb4/power/control"
UIlrvnd
1

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:$ 
Сергей Колодяжный
источник