- 5 способов исправить неисправное USB-устройство или порт в Linux
- USB не работает в Ubuntu?
- 1. Ваше устройство обнаружено Linux?
- 2. Как проверить порт USB
- 3. Исправление поврежденного USB-оборудования
- 4. Перезагрузка Linux для исправления USB-порта
- 5. Проверка драйверов USB-устройств на Linux
- Устранение неполадок USB на Linux: исправлено!
- Identify, disconnect and reconnect USB device via terminal
- 1 Answer 1
- Как перезагрузить USB-устройство из командной строки?
5 способов исправить неисправное USB-устройство или порт в Linux
Вы подключили USB-флеш-накопитель или клавиатуру или мышь к вашему Linux ПК. Но ничего не происходит.
В чем дело? Почему ваш Linux ПК не обнаруживает устройство? Дело в Linux, или ваше USB-устройство перестало работать?
USB не работает в Ubuntu?
Дисководы, устройства чтения карт памяти, телефоны, медиаплееры и периферийные устройства мультимедиа… все они полезны, но если есть проблема с USB-портом или драйверами вашей системы, они не будут работать. Это может быть особенно неприятно, если вы используете клавиатуру Bluetooth или мышь (с USB-ключом), поскольку это означает выкапывание проводных альтернатив USB.
Однако, это может быть не неработающий порт. Возможно, USB-устройство, которое вы используете, имеет неисправность и не может быть обнаружено.
Решение проблем с USB может быть сложной задачей, но эти неисправности не невозможно диагностировать и сделать необходимые исправления.
Для устранения проблем USB в Linux необходимо выполнить пять шагов:
- Убедитесь, что USB-порт обнаружен
- Произвести необходимые ремонтные работы в порта
- Исправить или восстановить USB-устройства
- Перезагрузите операционную систему Linux
- Подтвердите наличие драйверов устройств
Давайте рассмотрим каждый из них по очереди и научимся работать с хитроумными USB-устройствами в Linux.
1. Ваше устройство обнаружено Linux?
Первое, что нужно проверить при вставке вашего USB-устройства на ваш компьютер Linux, – это его обнаружение. Обнаружение USB-устройства обычно не является вербальным или слышимым (в Linux Deepin – это не так), как в Windows или macOS, что означает, что вам часто приходится проверять, что устройство было захвачено операционной системой.
К счастью, это просто.
Во-первых, отсоедините USB-устройства, которые вы запрашиваете. Затем откройте окно терминала и введите команду ” list USB:
Запомните результаты, затем подключите USB-устройство и снова запустите lsusb.
На этот раз вы должны увидеть дополнительное устройство, указанное с идентификатором шины, идентификатором устройства, USB-идентификатором и описанием. Если вы не можете определить, что такое дополнительное устройство (у вас может быть внутреннее устройство USB, возможно, Ethernet), попробуйте выполнить другую команду.
Команда dmesg перечислит подключенные USB-устройства в вашей системе. Он также будет включать в себя оборудование, отличное от USB и к сожалению, предоставляет огромный объем информации. Чтобы противостоять этому, вы можете попробовать:
Наконец, вы можете просто положиться на более удобный:
Это похоже на нечто среднее между командами dmesg и lsusb, перечисляя подключенное USB-оборудование с достаточной информацией для их идентификации.
Итак, USB который вы подключили, указан здесь? Если нет, то возможно порт поврежден или возникла проблема с устройством. Точно так же устройство может быть несовместимо с Linux.
2. Как проверить порт USB
Если USB-устройство не отображается, это может быть связано с неисправностью USB-порта.
Лучший способ проверить это, просто использовать другой USB-порт на компьютере. Если оборудование USB теперь обнаружено, то вы знаете, что у вас есть проблема с одним из USB-портов.
Если другой USB-порт недоступен, вам нужно попробовать USB-устройство на другом ПК или ноутбуке. Однако, это может быть не идеальным вариантом, поскольку в качестве альтернативы вы можете использовать компьютер с Windows или macOS и в данном случае, некоторые USB-устройства не могут использоваться в Linux. Так что будет сложно определить, что именно вызывает проблемы, является ли это USB-устройство или USB-порт.
Для достижения наилучших результатов, где это возможно, придерживаться Linux-совместимого оборудования при устранении неполадок USB-устройств.
3. Исправление поврежденного USB-оборудования
Если ваше оборудование USB неисправно, у вас есть два варианта: исправить или вернуть.
Исправление обычно включает проверку порта USB, а также устройства, которое в настоящее время не работает. Исправления почти всегда будут сосредоточены вокруг кабеля USB и порта на вашем компьютере. USB-кабели, как правило, могут быть заменены, однако USB-порты могут быть отремонтированы.
Физическая проверка оборудования USB – хорошая идея. Кабели должны быть прочными, без каких-либо разрывов, металлическая секция надежно закреплена.
USB-порты, тем временем, должны быть проверены с выключенным ПК и отключены от электросети. Проверьте, что порты надежно закреплены, шаткие порты USB являются признаком износа оборудования.
Если USB-порт ослабевает, вы можете припаять его обратно на место. Конечно, вы уже должны знать как паять, никогда не пытайтесь выполнять DIY работу (сделай это сам) без предварительного опыта.
Кроме того, проверьте наличие пыли и грязи в USB-портах, особенно на задней панели компьютера, где регулярно собирается пыль. Пыль является врагом ПК, поэтому стоит держать вашу систему в среде где нет пыли. Пыль может проложить свой путь в ваш ПК через USB-порты, найдите время держать эти порты в чистоте. Используйте сжатый воздух для рассеивания пыли и грязи.
Можете ли вы вернуть свое USB-устройство? Если оно новое, то вероятно. Проблема в том, что если она явно не помечено как работающее под Linux, то магазин вряд ли примет возврат.
4. Перезагрузка Linux для исправления USB-порта
В некоторых случаях – например, если вы используете ноутбук – проблемы с питанием могут повлиять на его способность обнаруживать USB-устройства. Параметр autosuspend предназначен для снижения энергопотребления ноутбуков Linux, но он может оказаться контрпродуктивным.
Так, что вы можете сделать?
Сначала проверьте, является ли причиной проблемы autosuspend. Вы можете сделать это, перезагрузив компьютер. Если USB-устройство работает, то этот USB-порт получает питание.
Следующий шаг – убедиться, что это не повторится. Следующие трюки командной строки предназначены для Ubuntu 18.10, поэтому проверьте правильность процедуры в предпочитаемом дистрибутиве Linux.
Откройте окно терминала и введите:
Это должно вернуть значение 2 , что означает, что функция autosuspend включена. Вы можете исправить это, отредактировав файл grub. Войти:
Измените это на:
Нажмите Ctrl + X для сохранения файла и выхода. Далее, обновите grub:
После этого перезапустите Ubuntu.
После перезагрузки войдите в свою учетную запись и снова введите команду cat:
На этот раз возвращаемое значение должно быть -1. Вы отключили autosuspend, поэтому USB-устройства, подключенные к ноутбуку, не должны выходить из строя из-за проблем с питанием.
5. Проверка драйверов USB-устройств на Linux
Когда-то давно USB-устройства не часто работали в Linux. Только устройства, производимые OEM-производителями с интересом к Linux (возможно, они использовали его для разработки), предложили драйвер Linux.
В наши дни все по-другому, большинство производителей предлагают драйвер Linux. В большинстве случаев это уже будет доступно в вашей операционной системе Linux через ядро. Вам не нужно устанавливать USB-драйверы.
Если драйвер недоступен, вы, вероятно, сможете его найти, связавшись с производителем устройства USB.
Устранение неполадок USB на Linux: исправлено!
Благодаря встроенным драйверам и широкой поддержке многих типов USB-устройств легко диагностировать проблемы с USB-оборудованием компьютера.
В то время как сломанное оборудование может потребовать ремонта или замены, также доступны исправления программного обеспечения.
Если вы недавно пришли с Windows, проблемы с USB на Linux могут быть проблемой. К счастью, эти проблемы обычно легко решаются, что облегчает переход на Linux!
Источник
Identify, disconnect and reconnect USB device via terminal
I use a USB Huawei ME906s-158 device as described in Huawei ME906s-158 not working with Ubuntu 16.04. If the module loses the connection it seems to have problems reconnecting to the network. So my idea is to write some script, running in the background checking if the LTE connection is up, and if not release the USB device and reconnect it, using terminal commands. I found helpful information in How to enable/disable mobile broadband from terminal? and on this forum thread, but the code is not running on my Ubuntu 16.04, which may be the problem.
Taking this line for example:
results in modprobe: FATAL: Module uhci_hcd is builtin. error. The same is true if I use xhci_hcd, which is used for my device. So my question is how to change the modprobe commands to remove/connect my device?
Using dmesg the device is connected as
where the device number varies and the usb port depends on the used hardware port. I think I simply don’t understand how the device is named or mounted to be addressed with modprobe.
The relevant information of lsusb is Bus 003 Device 028: ID 12d1:15c1 Huawei Technologies Co., Ltd. and lsusb -t delivers
Thank you very much for your help.
Here is the full dmesg output:
The full output of tree /sys/devices/pci0000:00/0000:00:14.0/usb3/3-13/ | grep driver is:
1 Answer 1
As far as I know modprobe is used to add/remove modules / drivers. With the command modprobe -r -f uhci_hcd you are trying to remove a module built in the kernel see this post on Unix & Linux.
If you want to deactivate your USB device and than reactivate it, have a look at his posting here: Disconnect and reconnect USB post via CLI.
Some useful information can be found on this kernel.org page on power management. under USB Port Power Control and below that at User Interface for Port Power Control.
I am running Lubuntu 16.04. My USB device for testing was a 8GB USB stick.
First of all open a terminal and type dmesg -w . Next, plug in your USB device.
Here we can see that a new ehci-pci device at usb 2-2 has been recognized. After a few lines usb 2-2 changes to usb-storage 2-2:1.0 to scsi 22:0:0:0 and finally to sd 22:0:0:0 What these numbers exactly mean is beyond my knowledge. It has something to do with the USB-Port, but that is not everything. At least it is an identifier.
Anyway, now we go for the /sys/ folder. Somewhere inside /sys/ we will find the driver that is responsible for our usb device. We want to unbind our device from that driver. Therefore we need to find out the path to the driver and its unbind command. We are going to use the tree command.
We type tree /sys/ | grep 22:0:0:0
The very first line is already telling us where to go:
Remember, we are still searching for the unbind command somewhere in a driver folder, that is somehow attached to our device. Our device, regarding to dmesg was also called 2-2:1.0 , so we use that as parent folder for tree :
Now we have found the path to the driver that is attached to the usb device.
So let’s ls /sys/bus/usb/drivers/usb-storage/
Now we have all the information we need, so we type the following:
and right after that, because you wanted the reconnect effect:
Output of dmesg -w :
I hope this will help you to find a solution.
Источник
Как перезагрузить USB-устройство из командной строки?
Можно ли сбросить подключение USB-устройства без физического отключения / подключения от ПК?
В частности, мое устройство представляет собой цифровую камеру. Я использую gphoto2 , но в последнее время я получаю «ошибки чтения устройства», поэтому я хотел бы попытаться выполнить программный сброс соединения.
Из того, что я могу сказать, нет никаких модулей ядра, загружаемых для камеры. Единственный, который выглядит связанным, это usbhid .
Сохранить следующее как usbreset.c
Выполните следующие команды в терминале:
Получите идентификатор шины и устройства USB-устройства, которое вы хотите сбросить:
Сделайте нашу скомпилированную программу исполняемой:
Запустите программу с привилегией sudo; сделать необходимые замены и идентификаторы, найденные с помощью lsusb команды:
Я раньше не сталкивался с вашими конкретными обстоятельствами, поэтому я не уверен, что этого будет достаточно, но я нашел самый простой способ перезагрузить USB-устройство с помощью этой команды: (Внешние приложения не нужны)
Это именно то, что я использую для сброса моего Kinect, поскольку у libfreenect, похоже, нет API для возврата его в спящий режим. Он у меня на Gentoo box, но ядро должно быть достаточно новым, чтобы использовать ту же структуру пути для sysfs.
Ваш, очевидно, не будет, 1-4.6 но вы можете либо извлечь этот путь устройства из журнала ядра ( dmesg ), либо использовать что-то вроде lsusb получения идентификатора производителя и продукта, а затем использовать быструю команду, подобную этой, чтобы увидеть, как эти пути связаны с другим поставщиком. / пары идентификаторов продукта:
Это сбросит все подключенные порты USB1 / 2/3 [1]:
Я верю, что это решит вашу проблему. Если вы не хотите сбрасывать все конечные точки USB, вы можете использовать соответствующий идентификатор устройства из /sys/bus/pci/drivers/ehci_hcd
Примечания: [1]: *hci_hcd драйверы ядра обычно управляют портами USB. ohci_hcd и uhci_hcd для портов USB1.1, ehci_hcd для портов USB2 и xhci_hcd для портов USB3. (см. https://en.wikipedia.org/wiki/Host_controller_interface_(USB,_Firewire) )
Мне нужно было автоматизировать это в скрипте Python, поэтому я адаптировал чрезвычайно полезный ответ LiLo к следующему:
В моем случае это был драйвер cp210x (о котором я мог сказать lsmod | grep usbserial ), так что вы можете сохранить приведенный фрагмент как reset_usb.py, а затем сделать это:
Это также может быть полезно, если у вас еще нет настройки компилятора переменного тока в вашей системе, но у вас есть Python.
Я создал скрипт Python, который упрощает весь процесс на основе ответов здесь.
Сохраните приведенный ниже скрипт как reset_usb.py или клонируйте этот репозиторий .
Поскольку частный случай вопроса — это проблема связи gphoto2 с камерой по USB, в gphoto2 есть возможность сбросить USB-соединение:
Возможно, этот вариант не существовал в 2010 году, когда был задан вопрос.
Самым быстрым способом сброса будет сброс самого контроллера USB. Это заставит udev отменить регистрацию устройства при отключении, и регистрация вернется после того, как вы его включите.
Это должно работать для большинства компьютерных сред. Однако, если вы используете какое-то нестандартное оборудование, вы можете просто перебирать имена устройств. С помощью этого метода вам не нужно узнавать имя устройства по lsusb. Вы также можете включить в автоматизированный скрипт.
Я использую кувалду, перезагружая модули. Это мой скрипт usb_reset.sh:
И это мой файл службы systemd /usr/lib/systemd/system/usbreset.service, который запускает usb_reset.sh после запуска моего менеджера diplay:
Я сделал скрипт Python, который будет сбрасывать определенное устройство USB на основе номера устройства. Вы можете узнать номер устройства из команды lsusb.
В этой строке 004 номер устройства
Вот скрипт, который будет сбрасывать только соответствующий идентификатор продукта / поставщика.
Кто-нибудь заказывал кувалду? Это воедино из различных других ответов здесь.
Иногда я хочу выполнить эту операцию на определенном устройстве, как указано VID (идентификатор поставщика) и PID (идентификатор продукта). Это скрипт, который я нашел полезным для этой цели, который использует изящную библиотеку libusb.
Затем этот c ++ файл resetDeviceConnection должен выполнить эту задачу сброса подключения устройства, как указано в vid и pid.
Я сделал простой скрипт для перезагрузки определенного USB-устройства.
Возможно, это работает и для камеры:
После я восстановил голодный USB 3.0 HDD на 3.4.42 (kernel.org) Linux на моей стороне. dmesg сказал, что это было время ожидания команд после 360 секунд (извините, я не могу скопировать системный журнал здесь, не подключенные сети), и диск завис полностью. Процессы доступа к устройству были заблокированы в ядре и не могут быть уничтожены. NFS висел, ZFS висел, dd висел.
После этого все снова заработало. dmesg рассказал только одну строчку о USB найденном устройстве.
Я действительно понятия не имею, что делает следующее подробно. Но это сработало.
Следующий пример выводится из Debian Squeeze с 2.6.32-5-686 ядром, поэтому я думаю, что он работает для 2.6 и выше:
Если это не работает, возможно, кто-то еще может выяснить, как отправить реальный сброс на устройство.
Попробуйте, это отключение программного обеспечения (Eject).
Иногда не работает просто отсоединить устройство для некоторых устройств.
Я хочу удалить или извлечь мой «Genius NetScroll 120».
Тогда я сначала проверь мое подключенное USB-устройство
Хорошо, я нашел свою мышь, она имеет шину 002, устройство 009, idVendor 0458 и idProduct 003a, так что это справочная информация об устройстве мыши.
Это важно, номер шины — это начальный путь к устройству, и я проверю идентификатор продукта и поставщика, чтобы убедиться, что устройство удаляется.
Обратите внимание на папки, проверьте начало с папкой номер 2, я проверю эту, потому что мой Bus — 002, и одну за другой я проверяю каждую папку, содержащую правильные idVendor и idProduct, о моей информации о мыши.
В этом случае я получу информацию с помощью этой команды:
Хорошо, путь /sys/bus/usb/drivers/usb/2-1.3/ совпадает с моей информационной мышью! XDDD.
Пришло время удалить устройство!
Подключите снова USB-устройство, и оно снова работает!
Источник