Як підключити логічно відключений USB-пристрій?


55

Можливо, USB-накопичувач буде логічно відключений: пристрій все ще підключено, але він не помітний в операційній системі (наприклад, це не вказано в розділі /proc/bus/usb). Можливо, це може статися і з іншими видами USB або іншими знімними пристроями. Це може статися, наприклад:

  • після того, як Nautilus відключив USB-накопичувач ;
  • після того, як VirtualBox заявив про запам'ятовуючий пристрій USB (пристрій зникає з хоста Linux, коли він приєднаний до гостя, і не з'являється автоматично, якщо він відірваний від гостя).

Що відбувається в драйвері або в апаратному забезпеченні, і головне, (як) можна пристрій повторно підключити логічно (без фізичного підключення та повернення назад)?

Зауважте, що це питання не стосується монтажу. У стані "логічно відключеного" ядро ​​вважає, що на шині USB нічого немає (і, звичайно, немає запису під /dev).


Відповіді:


21

Іноді можна зробити цикл живлення на гілці шини USB, де пристрій підключено:

# echo suspend > /sys/bus/usb/devices/1-1/power/level
# echo auto > /sys/bus/usb/devices/1-1/power/level

1-1Повинно бути відрегульовано в конфігурацію. Ви можете бачити, до якої частини дерева дерева USB підключено ваш пристрій, lsusb -tперед тим як його вийняти.

Ви можете знайти детальну інформацію у списку розсилки linux-usb, наприклад , у цій темі .


6
"suspend" не працює на ядрах після 2.6.36.
alexisdm

Якщо припустити, що dmesgповідомляє правильний ідентифікатор пристрою ("usb 9-4: відключення USB [...]"), це не працює в останній Arch Linux. /sys/bus/usb/devices/9-4Після цього шляху немає .
l0b0

1
1. dmesg: ПОПЕРЕДЖЕННЯ! потужність / рівень застарілий; використовуйте енергію / управління замість 2. superuser.com/questions/371068/…
socketpair

Також suspendбільше не підтримується останні версії ядра ....
Герт ван ден Берг

6

Скиньте пристрій або концентратор, до якого він підключений, і пристрій повинен знову з’явитися. Ось невеличка програма для цього:

http://marc.info/?l=linux-usb-users&m=116827193506484

Він працює для більшості накопичувачів USB, які я пробував, але є винятки, як, наприклад, мій Kingston DT 101 II 4 Гб, який не виконує запити і ПРОЧИТАТИ КАПАЦІЙНОСТІ команд після скидання, і залишається непридатним до моменту циклу живлення.

Ви можете перемикати живлення на пристрій без відключення живлення, якщо він отримує живлення від порту, а ваш USB-концентратор підтримує управління потужністю на один порт. Ось невелика програма управління живленням:

http://marc.info/?l=linux-usb-devel&m=113724451205634

На жаль, майже жоден USB-концентратор не підтримує цю функцію, і знайти її, яка підтримує, дуже важко. Виробники цього не рекламують. Багато центрів також брешуть про це, наприклад, якщо ви робите "lsusb -v", ви можете бачити "Перемикання живлення за порту", що рекламується в "wHubCharacteristic", але насправді це не працює. Можливо, чіпсет це підтримує, але виробнику було легше / дешевше підключати штифти для порту безпосередньо до джерела живлення, а не проходити через чіпсет.


5

Я знайшов цю відповідь чудовою для моєї системи Gentoo. Будь ласка, не забудьте знову включити свій пристрій, якщо це важливий фрагмент вашої системи (наприклад, миша або клавіатура).

sudo sh -c 'AUTHFILE="/sys/bus/usb/devices/5-2/authorized" ; echo 0 > "$AUTHFILE" ; sleep 1 ; echo 1 > "$AUTHFILE"'

Щоб побачити, що ви відключаєте / повторно вмикаєте:

cat /sys/bus/usb/devices/5-2/product

Це могло зробити трюк у моїй сучасній системі Fedora 25. Деякі з інших методів вже неможливі.
xenithorb

5
udevadm info -a -n /dev/sdb

Тепер перевірте наявність ядра. Наприклад, якщо він підключений до порту 2 переднього UIP, тоді він буде 1-1,2, а якщо він підключений до порту 1 переднього UIP, це буде 1-1,1.

Для порту 2: Відключення USB:

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

Щоб підключити USB:

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

3

Я спробував більшість вищезазначених пропозицій, але вони не спрацювали для мене. Я дізнався, як скинути USB-пристрій з командного рядка: https://askubuntu.com/a/290519

echo $i >/sys/bus/pci/drivers/ehci_hcd/bind

звідки $iможна використовувати відповідний ідентифікатор пристрою /sys/bus/pci/drivers/ehci_hcd.


Будь ласка, опублікуйте більше, ніж посилання; включіть детальну інформацію, щоб люди не потребували натискання на відповідь.
jasonwryan


-5

Я не впевнений, що я правильно розумію ваше запитання, але в моїй системі, якщо USB-пристрій підключений, але не встановлений, я можу "побачити це"

$> fdisk -l

Це говорить мені, з яким пристроєм він пов'язаний (тобто / dev / sdd1 або щось подібне), то я вручну монтую його.


5
Знову ж таки: ні, питання не в тому, щоб файлова система стала недоступною (тобто відключена), це про те, що пристрій стає недоступним (ядро не бачить пристрій, тому, звичайно, немає запису під /dev).
Жил 'ТАК - перестань бути злим'
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.