Idvendor как узнать linux

Обновлено: 06.07.2024

Не так давно стал обладателем сего девайса - Samsung Galaxy Tab 10.1 . Рассказывать про впечатления от приобретения, плюсы и минусы планшета я не буду, скажу лишь, что доволен.

Все бы хорошо, но надоумился Google в Android 3.0+ убрать возможность подключения устройства как USB накопителя (USB Mass Storage). Да и Samsung показал себя не с лучшей стороны, не допилив USB Mass Storage, как это делают другие производители, например Acer. Вместо этого в операционную систему всунули гнусный майкрософтовский MTP (Media Transfer Protocol) . У которого помимо прочих минусов , есть очень большой недостаток - сырая реализация под Linux. Ну по крайней мере подружить свою убунту и планшет через него мне так и не удалось. Поэтому я расскажу об альтернативном способе обмена файлами между Android устройством и устройством с ОС Linux. В данном случае Samsung Galaxy Tab 10.1 с Android 3.2 на борту и моя любимая Ubuntu 11.10 :)
Кстати, этот способ также подойдет и для Mac OS юзеров.

Сразу после обнаружения этой "фичи" я полез искать способ подключения к ПК. Пытался сначала все же задействовать этот MTP, но все безуспешно.
После этого начал искать альтернативу. Нашел очень интересный способ - использовать стандартную утилиту ADB из Android SDK. Она представляет собой отладочный протокол (мост) для обмена данными между ПК и Андроид устройством. Помимо этого имеется возможность обмениваться файлами, просматривать дерево каталогов и файлов, создавать директории, что нам как раз и требуется.

Так как утилита консольная, то для удобства использования нам потребуется графический интерфейс. Хоть выбор и не велик, но для себя я выбрал программку на Python - AAFM (Android ADB File Manager) . Описание, установка и способ использования есть на официальной страничке, но я все же напишу краткий мануал на русском языке.

- Python с бибилиотеками PyGTK
- GTK
- git
- Android SDK

Для Ubuntu нам понадобится только git и Android SDK.

Устанавливаем git и копируем репозиторий

sudo apt-get install git

Устанавливаем Android SDK

sudo apt-get install ia32-libs

/Applications/android-sdk и выполняем следующие команды в консоли:

Чтобы узнать idVendor нужно выполнить в консоле команду lsusb и найти там свое устройство. Список будет примерно такой:

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 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Bus 004 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 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Bus 001 Device 002: ID 064e:a103 Suyin Corp. Acer/HP Integrated Webcam [CN0314]

Bus 002 Device 002: ID 0bda:0158 Realtek Semiconductor Corp. USB 2.0 multicard reader

Bus 006 Device 002: ID 147e:1000 Upek Biometric Touchchip/Touchstrip Fingerprint Sensor

Bus 001 Device 005: ID 04e8:6860 Samsung Electronics Co., Ltd

По последней строчке можно понять, откуда берется idVendor:

Bus 001 Device 005: ID 04e8:6860 Samsung Electronics Co., Ltd

Редактируем idVendor, если требуется и сохраняем файл.
Выставляем права и перезапускаем udev:

sudo /etc/init.d/udev restart

Теперь нужно включить на Android устройстве режим отладки:
Настройки -> Приложения -> Разработка -> Отладка по USB .

Подключаем телефон/планшет через USB шнур и выполняем следующие команды:

chmod +x ./aafm-gui.py

После этого должно открыться окно такого вида:


Для себя я сделал кнопку запуска, привязал к ней иконку и добавил на панель Unity.

Процесс настройки конечно кропотливый, но на самом деле не такой сложный как кажется и займет не больше получаса вашего свободного времени. Зато результат будет оправдан :)

У меня есть Arduino, который иногда связан, /dev/ttyUSB0 а иногда и /dev/ttyUSB1 делает мой сценарий неудачным.

Я не хочу перечислять все возможности того, где может находиться мое устройство, но я бы предпочел, чтобы оно было связано где-то статично, например /dev/arduino .

Как мне этого добиться?

Просто напишите простое правило udev, которое назначит symlink / dev / arduino правильному устройству по его VID и PID.

Вы можете проверить переменные вашего устройства, запустив

Работал как шарм. Один вопрос: как выйти udevam ? И важно отметить, что my_uart создает символическую ссылку под /dev/my_uart . Я впервые написал /dev/arduino в первый раз, и это не удалось, пока arduino достаточно. Затем по какой-то неизвестной причине он заморозил сеанс терминала для моего Raspberry Pi при создании отчета.

Синтаксис правила выше может работать на некоторых дистрибутивах, но не работает на моем (Raspbian). Поскольку я не нашел ни одного документа, объясняющего все входы и выходы, я написал свой собственный, который можно найти здесь . Вот к чему это сводится.
1. узнать что есть на ttyUSB:

2. перечислите все атрибуты устройства:

(при условии, что вам не нужен серийный номер там, и, конечно, с номерами для idVendor и idProduct, которые вы нашли в шаге 2.
4. Загрузите новое правило:

5. Проверьте, что случилось:

покажет, на какой номер ttyUSB пошла символическая ссылка. Если это так /dev/ttyUSB1 , то проверьте, кому это принадлежит и к какой группе оно принадлежит:

Тогда просто для удовольствия:

Так есть ли решение, если idVendor и idProduct точно так же? (два датчика подключены к идентичным моделям USB для модулей UART) @StevenLu Да, см. Шаг 2, выполните udevadm info --name=/dev/ttyUSB1 --attribute-walk для обоих устройств и найдите серийные номера, они должны быть уникальными для каждого устройства. Если у ваших датчиков нет серийного номера, можете ли вы указать, какие они есть? У моих ключей USB к UART за 2 доллара есть серийный номер 0001. Не могу сказать, что я удивлен. Похоже, мне нужно идентифицировать датчики на основе их протокола вывода. @ StevenLu Неудача. Конвертеры FTDI USB-UART имеют уникальный серийный номер AFAIK. Несколько лишних баксов, но меньше времени на разработку.

У меня есть Rasperry Pi с четырьмя камерами. Я принимаю пикс с fswebcam которой идентифицирует камеры , как /dev/video0 .. video3 . Иногда камера video0 , vide02 , video4 и , video6 но мы можем забыть о том, что на данный момент.

Мне нужен постоянный идентификатор для идентификации номера камеры, чтобы, например video0 , всегда была одна и та же камера, потому что я подписываю снимки. К сожалению, это не происходит надежно - при загрузке камеры перечисляются как video0 . video3 но не всегда одинаково.

Все камеры имеют одинаковый идентификатор и серийный номер.

Решение этой проблемы включает в себя правила udev, но там также есть много рыболовных крючков.

Если вы выполните команду

вы получаете разметку выходных данных, но выдающиеся биты

Бит KERNELS - это порт USB-концентратора. С четырьмя камерами их четыре - они не меняются при перезагрузке, но video связанные с портом могут измениться.

Поэтому нам нужно правило udev для привязки номера видео к порту USB-концентратора - что-то вроде:

Выглядит просто - доступ к камере с

За исключением того, что это не работает - если вы поместите это в правило udev, и система выделит video0 (при загрузке) для другого порта, правило udev игнорируется. Символьная ссылка в /dev/camera0 основном говорит no such device . Квадратная.

Мы хотим связать символическую ссылку с адресом USB-концентратора, а не с video номером. Потребовалась программа на Python.

Первый шаг должен был бежать

для x между 1 и 8. Существование tst.jpg после каждого вызова идентифицирует есть ли камера на этом видео числом. Из этого сделайте список активных видео номеров. Мой опыт показывает, что это либо 0,1,2,3 или 0,2,4,6 для камер я использовал.

Другие могут, конечно, построить этот список, используя другой процесс.

Затем для каждого номера видео в списке запустить

и извлечь KERNELS= line из dd . В результате вы получите список адресов портов USB для камер. Сортируйте этот список так, чтобы на следующем шаге вы всегда обрабатывали его в одном и том же порядке. Назовите это «список адресов».

Запустите udevadm … > dd вещь снова и создайте список, который выглядит как

Теперь пройдитесь по списку адресов - для каждой записи найдите соответствующую запись из списка видео. Создайте новый список, который выглядит как набор строк, таких как

Символ x (номер символической ссылки) заменяется порядковым номером в списке адресов.

Теперь у вас есть правило udev, которое работает. Символическая ссылка, привязанная к адресу концентратора USB, независимо от того, какой номер видео выделен этому порту при загрузке.

udev — работающая в пространстве пользователя система, с помощью которой системный администратор может создавать обработчики событий. События, получаемые udev, обычно генерируются ядром Linux в ответ на физические события, происходящие с периферийными устройствами. Например, при обнаружении периферийных устройств или "горячем" подключении udev может выполнить определённые действия, в том числе и вернуть управление ядру, если необходима загрузка модулей или прошивок.

Подобно предшественникам, утилитам devfsd и hotplug, udev управляет файлами устройств в каталоге /dev , добавляя их, переименовывая и создавая символические ссылки. udev полностью замещает функционал hotplug и hwdetect.

Обработка событий в udev происходит параллельно, что теоретически улучшает производительность старых систем. С другой стороны, это может усложнить администрирование. Так, при перезапуске системы порядок загрузки модулей ядра может измениться, а при наличии в машине нескольких блочных устройств могут поменяться названия их файлов. Например, для системы с двумя жёсткими дисками файл /dev/sda после перезагрузки может превратиться в /dev/sdb .

Contents

Установка

udev входит в состав systemd и установлен по умолчанию. Подробнее см. systemd-udevd.service(8) .

Существует также отдельный от systemd форк, который можно установить с пакетом eudev AUR или eudev-git AUR .

О правилах udev

Правила udev подробно описаны в руководстве udev(7) . Также стоит изучить статью Создание правил udev (англ.) и приведённые в ней практические примеры: Создание правил udev - Примеры (англ.).

Пример правила udev

Ниже приведён пример правила, которое создаёт символическую ссылку /dev/video-cam , когда к компьютеру подключается веб-камера.

Предположим, мы выяснили, что для подключённой камеры создан файл устройства /dev/video2 . Причина, по которой мы создаем это правило, заключается в том, что при следующей загрузке веб-камере может быть присвоено другое имя, например, /dev/video0 .

Мы используем параметры веб-камеры KERNEL=="video2" и SUBSYSTEM=="video4linux" , затем мы возьмем идентификаторы производителя и изделия родительского USB-устройства SUBSYSTEMS=="usb" , ATTRS=="05a9" и ATTRS=="4519" для сопоставления:

В примере мы создали символическую ссылку, используя параметр SYMLINK+="video-cam" . Мы можем также легко задать владельца ( OWNER="john" ), группу ( GROUP="video" ), или установить права доступа к файлу ссылки ( MODE="0660" ).

Если вы намереваетесь создать правило, которое делает что-нибудь при удалении устройства, имейте в виду, что атрибуты устройства могут стать недоступны. В этом случае вам необходимо использовать специальный набор переменных окружения. Чтобы отобразить эти переменные, выполните следующую команду при отсоединении устройства:

В выводе команды вы увидите значения параметров устройства, например, ID_VENDOR_ID и ID_MODEL_ID , которые соответствуют использованным ранее идентификаторам производителя и изделия. Правило, которое использует переменные окружения устройства, может выглядеть следующим образом:

Список атрибутов устройства

Чтобы вывести все атрибуты устройства, которые вы можете использовать в написании правил udev, выполните:

Замените имя_устройства текущим именем файла устройства, например, /dev/sda или /dev/ttyUSB0 .

Если вы не знаете имя файла устройства, вы можете также вывести все атрибуты по конкретному системному пути:

Чтобы сузить поле поиска, определите класс устройства и выполните:

Найденную символическую ссылку (или файл, на который она указывает) можно использовать в параметре --name :

Проверка правил перед загрузкой

Вы можете также указать прямой системный путь до устройства:

Загрузка новых правил

udev способен определять наличие изменений в файлах правил автоматически, поэтому изменения сразу вступают в силу без необходимости перезапуска udev. Однако, новые правила не будут применены сразу к уже подключенным устройствам. Устройства с возможностью горячей замены, например, устройства USB, могут быть просто переподключены для применения к ним новых правил. Также вы можете перезагрузить модули ядра ohci-hcd и ehci-hcd , что автоматически приведет к перезагрузке всех драйверов для каждого USB-устройства.

Если правила не перезагружаются автоматически, выполните:

Чтобы вручную заставить udev применить ваши правила, выполните:

udisks

Советы и рекомендации

Монтирование съёмных устройств

Монтировать съёмные устройства с помощью команды mount в правиле udev не стоит по двум причинам: (1) systemd по умолчанию запускает systemd-udevd.service с отдельным "пространством имён монтирования" (см. namespaces(7) ), что означает, что данное устройство не будет видно из остальной системы. (2) Чтобы этого не происходило, можно закомментировать параметры PrivateMounts и MountFlags в файле службы, но тогда проявится другая проблема: запускаемые udev процессы система будет убивать по истечении нескольких секунд. В случае файловых систем FUSE, вроде NTFS, "монтирование" запустит в пространстве пользователя процесс для работы с файловой системой; затем процесс будет уничтожен и при попытке доступа к ФС вы получите ошибку Transport endpoint not connected .

Есть несколько возможных решений:

Доступ к программаторам и виртуальным COM-портам

Следующий набор правил даст возможность пользователям, входящим в группу users , получить доступ к USB-программаторам микроконтроллеров AVR USBtinyISP:

Идентификаторы производителя и изделия для других устройств можно узнать с помощью утилиты lsusb.

Выполнение команд при подключении VGA-монитора

Некоторые экранные менеджеры размещают файл .Xauthority вне домашнего каталога пользователя. В этом случае параметр ENV необходимо соответствующим образом изменить. Например, значение переменной XAUTHORITY для GNOME Display Manager:

Определение новых накопителей eSATA

Если ваш накопитель eSATA не был определен системой при подключении, вы можете перезагрузить систему, не отключая кабель устройства, либо, если перезагрузка нежелательна, выполнить:

Еще один вариант заключается в использовании утилиты scsiadd AUR из AUR:

Накопитель должен появиться в /dev . Если это не так, попробуйте выполнить:

до и после вышеприведенных команд и посмотреть, происходит ли что-нибудь.

Определение внутренних портов SATA как внешних

Если вы подключили eSATA-адаптер, система все еще будет распоздавать его как внутренний SATA-накопитель. GNOME и KDE будут постоянно запрашивать пароль администратора. Следующее правило помечает все указанные SATA-порты как порты eSATA, благодаря чему обычные пользователи смогут подключать свой накопитель eSATA к этому порту как USB-накопитель без запроса пароля администратора:

Примечание: Узнать правильное значение параметра DEVPATH вы можете с помощью следующих команд (вместо /dev/sdb укажите ваше устройство):

Установка постоянных имен устройств

Из-за асинхронного способа загрузки модулей, они инициализируются в разном порядке от загрузки к загрузке. Это приводит к случайному переименованию устройств при каждом запуске. Чтобы задать постоянные имена вашим устройствам, можно создать специальное правило udev.

Видеоустройства

Процедура установки веб-камеры описана в статье Webcam setup.

Примечание: Использование имен, отличных от /dev/video* , может помешать загрузке v4l1compat.so , и, возможно, v4l2convert.so .

Принтеры

Если у вас несколько принтеров, им будут случайным образом присвоены имена вида /dev/lp2 , что, например, может помешать серверу CUPS правильно настроить устройства. Вы можете создать следующее правило, которое будет создавать постоянные символические ссылки в каталогах /dev/lp/by-id и /dev/lp/by-path подобно схеме, приведенной в статье Persistent block device naming:

Определение диска по серийному номеру

Действия с дисковыми устройствами /dev/sdX можно выполнять на основании серийного номера ID_SERIAL_SHORT , который можно узнать из вывода команды udevadm info /dev/sdX . Примерное правило udev для этого случая приведено ниже. В параметре RUN сценарию передаётся имя устройства; это сделано исключительно в иллюстративных целях:

Пробуждение при активности USB-устройства

С помощью правила udev можно настроить систему выходить из режима сна при активности USB-устройств, например, мыши или клавиатуры.

Примечание: По умолчанию в контроллере USB функциональность пробуждения включена. Проверить это можно командой cat /proc/acpi/wakeup . В этом случае правило ниже оказывается ненужным, но его всё же можно использовать в качестве образца для каких-либо других действий, например — для отключения той же wakeup-функциональности.

Первым делом определите идентификаторы производителя и изделия для вашего устройства:

Затем найдите, куда данное устройство подключено:

Наконец, создайте правило, которое при подключении будет изменять атрибут power/wakeup как для устройства, так и для USB-контроллера, к которому оно подключено:

Генерирование событий

Может быть полезно сгенерировать различные события udev. Например, вы хотите симулировать отключение USB-устройства на удалённой машине. В таких случаях, используйте udevadm trigger :

Эта команда симулирует отключение всех USB-устройств с указанным идентификатором поставщика idVendor .

Уведомления на рабочем столе

Заставить правильно работать из правила udev сценарий, содержащий команду notify-send , может оказаться непростой задачей, потому что уведомления не будут выводиться на рабочий стол. Ниже показано, какие файлы, команды и переменные окружения необходимо задйствовать, чтобы notify-send работала как положено.

Примечание: В примерах ниже некоторые значения указаны явно. Когда вы будете писать свои правила и сценарии, их лучше делать портируемыми — например, использовать переменную $USER вместо явного указания имени пользователя и т.п.

1) Следующее правило udev запускает сценарий, создающий графическое и звуковое уведомление, когда яркость экрана меняется в зависимости от способа питания ноутбука:

  • USERNAME_TO_RUN_SCRIPT_AS и USERNAME необходимо заменить на имя пользователя, который запустил графический сеанс;
  • сценарий должен запускаться командой /usr/bin/su , чтобы его владельцем считался не root, а пользователь, который запустил графический сеанс и для которого будут выводиться уведомления.

2) Содержимое сценария, который запускается правилом udev:

  • USERNAME_TO_RUN_SCRIPT_AS , UID_OF_USER_TO_RUN_SCRIPT_AS и USERNAME необходимо заменить на имя и идентификатор пользователя, запустившего графический сеанс;
  • команда /usr/bin/sudo воспроизводит звуковое уведомление с помощью pulseaudio;
  • для пользователя, запустившего графический сеанс, в котором будут отображаться уведомления, необходимо определить и экспортировать три переменные окружения ( XAUTHORITY , DISPLAY и DBUS_SESSION_BUS_ADDRESS ).
Совет: С помощью xpub AUR можно собрать переменные графического окружения пользователя и экспортировать их в правило udev ключом IMPORT .

3) Загрузите/перезагрузите новое правило udev и проверьте, как оно работает, выдернув или подключив кабель питания ноутбука.

Создание долгосрочных процессов

Программы, запущенные udev, блокируют последующие события от данного устройства, а любые процессы, порождённые правилом udev, завершаются сразу после обработки события. Если вы хотите запустить долгосрочный процесс с помощью udev, то либо используйте at (например, ваша_команда | at now или batch ), либо создайте юнит systemd, который можно запустить из правила udev.

Решение проблем

Добавление модулей в черный список

Иногда udev может ошибочно загружать неправильные модули ядра. Чтобы избежать этого, добавьте такие модули в чёрный список. Если модуль находится в чёрном списке, udev будет игнорировать его как при загрузке, так и при более позднем "горячем" подключении внешнего устройства (например, USB-носителя).

Отладочная печать

Если задать параметр ядра udev.log-priority=debug , то аппаратное обеспечение будет выдавать отладочную информацию. Другой способ — задать параметр

Чтобы добавить эту опцию в initramfs, укажите файл настроек udev в строке FILES

после чего сгенерируйте initramfs.

udevd вылетает при загрузке

Необходимо, чтобы все используемые в LDAP группы были продублированы локально. Получить имена групп, используемых в правилах udev, и имена групп, присутствующих в системе, можно командами:

Вывод будет записан в файлы present_groups и udev_groups . Чтобы увидеть различия, выполните построчное сравнение командой diff:

В данном примере группа pcscd по какой-то причине отсутствует в системе. Все такие группы необходимо добавить в систему. Также убедитесь, что имена всех локальных ресурсов разрешены, прежде чем возвращаться к LDAP. Файл /etc/nsswitch.conf должен содержать следующую строку:

Устройство является съемным, однако не признается таковым

Создайте правило udev для конкретного устройства. Чтобы получить подробную информацию об устройстве вы можете либо использовать ID_SERIAL , либо ID_SERIAL_SHORT (не забудьте поменять /dev/sdb если нужно):

Теперь создайте файл правила в /etc/udev/rules.d/ и установите переменные либо для udisks, либо для udisks2.

Для udisks установите UDISKS_SYSTEM_INTERNAL="0" , которая пометит все устройства как съёмные, и, таким образом, подходящие для автоматического монтирования. Подробнее см. udisks(7) .

Для udisks2 установите UDISKS_AUTO="1" , чтобы пометить устройство для автоматического монтирования и UDISKS_SYSTEM="0" , чтобы пометить устройство как съёмное. Подробнее см. udisks(8)

Перезагрузите правила udev командой udevadm control --reload . Теперь ваше устройство будет распознаваться как съёмное.

Проблемы с автоматической загрузкой модулей аудиоустройств

Некоторые пользователи испытывают проблемы с загрузкой модулей звуковых устройств, для которых остались старые записи в /etc/modprobe.d/sound.conf . Чистка файла от таких записей может помочь.

Примечание: Начиная с версии udev 171, модули эмуляции OSS ( snd_seq_oss , snd_pcm_oss и snd_mixer_oss ) больше не загружаются автоматически.

Поддержка дисководов IDE

Начиная с версии 170, udev не поддерживает устройства CD-ROM/DVD-ROM, загружаемые как обычные IDE дисководы модулем ide_cd_mod и отображаемые в системе как /dev/hd* . Дисковод доступен только программам, которые обращаются к устройству напрямую, таким как cdparanoia, но невидим для более высокоуровневых программ вроде KDE.

Причина, по которой загрузка модуля ide_cd_mod имеет приоритет перед другими модулями, например, sr_mod , может заключаться в том, что по какой-либо причине модуль piix загружается в вашем initramfs. В этом случае вы можете просто заменить его в файле /etc/mkinitcpio.conf на ata_piix .

Оптические дисководы имеют неверный group ID

Если значение group ID вашего дисковода установлено как disk , но вы хотите, чтобы оно было optical , вам следует создать такое правило:

Команда lsusb позволяет задействовать одноименную утилиту, предназначенную для вывода информации о USB-шинах и подключенных к ним устройствах. Каждое из устройств имеет пару 16-битных идентификаторов: идентификатор производителя (Vendor ID) и идентификатор устройства (Device ID), которые следует использовать для идентификации устройств и поиска драйверов в случае их отсутствия в ядре ОС, а также несколько дополнительных идентификаторов, устанавливаемых производителем. В составе дистрибутивов Linux имеется файл базы данных устройств, содержащий названия устройств с известными идентификаторами. Данная команда крайне полезна для идентификации и диагностики устройств компьютера. Она выводит результаты в формате списка, который может фильтроваться с помощью утилиты grep.

Базовый синтаксис команды выглядит следующим образом:

Утилита может вызываться как без параметров, так и с ними. Наиболее полезными параметрами являются параметр -t, предназначенный для вывода информации в древовидном формате, параметр -v для вывода подробной информации об устройствах, а также параметры -s и -d для вывода информации об устройствах на заданных шинах и с заданными идентификаторами соответственно.

Примеры использования

Вывод списка USB-устройств

Для вывода списка USB-устройств достаточно использовать утилиту без каких-либо параметров. Прав суперпользователя для выполнения команды не требуется.

Вывод имеет строго регламентированную структуру. По сути, параметры устройств разделены пробелами. Возьмем последнюю строку в качестве примера:

  • Номер шины: Bus 003
  • Номер устройства на шине: Device 001
  • Идентификаторы производителя и устройства: 1d6b:0001
  • Название устройства: Linux Foundation 1.1 root hub

Несложно убедиться, что все строки имеют схожий формат. При этом в списке отражена информация как об обычных USB-устройствах (таких, как клавиатуры и мыши), так и о специализированных устройствах (таких, как хабы).

Вывод подробной информации о USB-устройствах

Для того, чтобы вывести подробную информацию о USB-устройствах, следует использовать комбинацию параметр -v:

Данный вывод является крайне обширным и содержит огромное количество параметров конфигурации USB-устройств. Он может использоваться для диагностики и идентификации устройств, причем в случае исполнения команды от лица суперпользователя, информации будет еще больше (обратите внимание на предупреждение в начале вывода).

Вывод информации о заданных USB-шинах и устройствах

Для того, чтобы вывести информацию о заданной USB-шине и устройствах на ней достаточно использовать параметр -s и передать утилите идентификатор интересующей шины:

Или шины и устройства:

При использовании лишь идентификатора шины следует использовать двоеточие в конце идентификатора.

Что касается информации об устройствах, то совместно с параметром -d может использоваться как идентификатор производителя:

Так и идентификатор устройства:

Не стоит забывать о двоеточии, которое указывает на используемый идентификатор: идентификатор производителя должен иметь двоеточие в конце, идентификатор устройства — в начале.

Читайте также: