Увімкнення / вимкнення портів 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.

Відповіді:


8

Усі попередні відповіді говорять про механізм призупинення USB , тобто "логічне відключення живлення", вони ніколи фізично не відключать VBUS + 5V від порту USB.

Лише кілька концентраторів можуть наслідувати VBUS, як описано тут .

Інструмент hubpower може це зробити (якщо концентратор його підтримує).


7

Натрапивши на ту саму проблему, я виявив, що команди слід вводити по-різному, щоб "sudo" застосував права належним чином.

Використовуйте команду «трійник».

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

застосує кореневі права до команди "tee", яка запише 0 у вказаний файл, замінивши все, що там є. Щоб додати, використовуйте команду tee з опцією -a.

для інформації дивіться сторінку людини tee


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результат, схоже, що ваш пристрій 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"

Спасибі. Якщо я спробую 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:$ 
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.