Создание списка устройств на шине USB
enum-usb [опции]
enum-usb [опции,]validate
- cfg_file_path=путевое_имя
- путевое_имя является путем к конфигурационному файлу утилиты enum-usb. Значение по умолчанию
/etc/enum-usb.conf
.
- check_MS_desc
- Обратиться к устройствам с запросом данных дескриптора Microsoft. По умолчанию выключено. См. раздел "Дескрипторы Microsoft" далее.
- iface_tbl_size=размер
- размер определяет максимальное количество интерфейсов, одновременно управляемых утилитой enum-usb. Эти интерфейсы могут быть на любом количестве устройств. Значение по умолчанию – 50 интерфейсов.
- USB_mgr_pathname=путевое_имя
- путевое_имя является путем к менеджеру ресурсов USB. Значение по умолчанию
/dev/io-usb/io-usb
.
- validate
- Проверить конфигурационный файл. Если используется эта опция, то утилита enum-usb выполняет анализ конфигурационного файла, выдает отчет о любых обнаруженных в файле ошибках, после чего завершает работу.
- verbose=уровень
- Вывести расширенную информацию в поток stdout с заданным уровнем подробности. Если утилита enum-usb используется в сочетании с enum-devices, то необходимо установить опции вывода расширенной информации утилиты enum-devices для доступности расширенной информации в консоли.
![Caution:](./../../gendoc_inserted_style/images/caution.png) | Опции утилиты enum-usb разделяются запятыми, без пробелов. |
ЗОСРВ «Нейтрино»
aarch64, arm, armv7, e2k, mips, ppc, x86
Разделы описания enum-usb:
Утилита enum-usb представляет собой программу-перечислитель шины, вызываемую утилитой enum-devices для обработки специфических для USB аспектов распознавания устройств.
Поскольку утилита enum-usb вызывается утилитой enum-devices, опции enum-usb указаны в выражении перечислителя в конфигурационных файлах enum-devices. Пример:
enumerator("usb verbose=10,cfg_file_path=/etc/enum-usb.conf")
По умолчанию конфигурационным файлом для выражений перечислителя является /etc/system/enum/common
.
Утилита enum-usb сканирует шину USB и записывает в стандартный поток вывода ( stdout) строку с описанием всех найденных устройств. Менеджер-перечислитель устройств enum-devices считывает информацию из этого потока и запускает требующиеся для управления устройствами драйверы с помощью конфигурационных файлов enum-devices.
При удалении устройства USB из системы утилита enum-usb сообщает об этом утилите enum-devices для удаления запущенных для этого устройства драйверов.
Утилита enum-usb предоставляет утилите enum-devices следующую информацию об интерфейсах устройства USB:
- busno – номер шины USB
- cfg – используемая устройством конфигурация USB
- class – класс устройства или интерфейса;
- devno – номер устройства USB
- did – идентификатор устройства
- iface – номер интерфейса USB
- num_iface – число интерфейсов, доступных для выбранной конфигурации устройства USB
- proto – протокол устройства или интерфейса
- rev – версия устройства
- subclass – подкласс устройства или интерфейса
- vid – идентификатор вендора
Для получения дополнительной информации о данных, предоставляемых утилитой enum-usb в утилиту enum-devices см. описание set конфигурационного файла утилиты enum-usb.
Дескрипторы Microsoft
Если устройство (например устройство PFS) поддерживает дескрипторы Microsoft, утилита enum-usb предоставляет следующую дополнительную информацию:
- mscomp – согласованный идентификатор Microsoft
- msven – Microsoft идентификатор вендора
- mssubcomp – вторичный согласованный идентификатор Microsoft
![Note:](./../../gendoc_inserted_style/images/note.png) | Для наличия дескриптора Microsoft необходимо активировать опцию check_MS_desc; однако активация опции check_MS_desc может привести к тому, что некоторые устройства перестанут реагировать. Эту опцию следует активировать, только если используются устройства PFS и на целевой системе активированы другие функции, зависящие от данных дескриптора Microsoft. |
Если enum-usb распознает только одно устройство USB, она может сообщить утилите enum-devices о нескольких устройствах. В этом случае поведение определяется значением класс устройства устройства USB следующим образом:
- класс отличен от нуля (!=0)
- Значение для enum-usb: использование каких-либо существующих на устройстве интерфейсов независимо от прочих интерфейсов на устройстве невозможно. Утилита сообщает о наличии одного пригодного к использованию интерфейса для этого устройства и ожидает от утилиты enum-devices запуска одного драйвера для управления этим устройством и его интерфейсами.
- класс зависит от вендора (0xFF)
- Значение для enum-usb: устройство управляется одним драйвером, предназначенным для управления устройством этого вендора. Утилита сообщает о наличии для этого устройства одного пригодного к использованию интерфейса.
- класс зависит от интерфейса (=0)
- Утилита enum-usb сообщает о событии для каждого интерфейса, присутствующего для текущей конфигурации устройства. Управление каждым интерфейсом этого устройства USB может осуществляться независимо от других интерфейсов на устройстве, соответственно утилиту enum-devices можно настроить для запуска уникального драйвера для каждого интерфейса USB, присутствующего для устройства USB.
Конфигурационный файл позволяет идентифицировать устройства USB по идентификатору вендора, идентификатору устройства и серийному номеру для контроля перечисления устройств утилитой enum-usb. По умолчанию конфигурационным файлом является /etc/enum-usb.conf. Для выбора другого конфигурационного файла используется опция -c.
Каждая опция должна указываться в отдельной строке. Строки комментария начинаются с символа решетки (#
) и игнорируются утилитой enum-usb. Пробелы игнорируются.
Пример конфигурационного файла enum-usb.conf
#Определить используемую конфигурацию для устройств IPOD
Device vid=05AC,did=12*
Config class=03
Set usr_spec_id=AppleIpod
#Не распознавать это устройство
Device vid=13FE,did=1D00
Ignore
Опция Device конфигурационного файла утилиты enum-usb определяет начало определения конфигурации устройства. Все опции, которые следуют за опцией Device в конфигурационном файле, применяются к этому устройству до нового экземпляра опции Device.
Опция Device определяет устройство USB по следующим его параметрам:
- идентификатор устройства (did);
- идентификатор вендора (vid);
- серийный номер (ser).
Для оператора опции Device используется следующий формат:
Device [vid=v],[did=d],[ser=s]
Существуют следующие правила создания оператора опции Device:
- В модели выше параметры vvvv, dddd и s представляют собой шестнадцатеричные значения для соответствия, а параметр s – строку серийного номера.
- Оператор опции должен содержать не менее одного параметра.
- Параметры могут следовать в любом порядке и разделяются запятыми.
- Если устройство будет игнорироваться, параметр серийного номера (ser) указывать не следует; см. далее Ignore.
- Поскольку оператор опции поддерживает сопоставление групповых символов (см. fnmatch()), существует возможность сопоставления диапазона устройств. Например, оператор опции did=05ac,vid=12* сопоставит определенного вендора с диапазоном устройств, где значение "12*" соответствует диапазону 1200–12FF.
- Если в совпадающих строках групповые символы не содержатся, то в них должен быть указан идентификатор вендора (vid) и идентификатор устройства (did) в виде четырех цифр, при необходимости с начальными нулями. Серийный номер является строкой, формат и длина которой зависят от устройства.
Оция Ignore указывает утилите enum-usb игнорировать устройство.
Использование этой опции целесообразно при наличии устройства USB, драйвер которого регистрируется для события вставки самого устройства, а не запускается перечислителем. Игнорирование этого типа устройства утилитой enum-usb предотвращает возможные конфликты между перечислителем и драйвером, оба из которых могут предпринять попытку подключения устройства одновременно.
![Note:](./../../gendoc_inserted_style/images/note.png) | Если для устройства в enum-usb установлена опция Ignore, то определяющая устройство опция Device должна указывать только идентификаторы устройства и вендора. |
Опция Config позволяет пользователю указывать конфигурацию устройства USB, используемую в случае поддержки перечисляемым устройством нескольких конфигураций.
Если опция Config не используется, утилита enum-usb использует первую выбранную конфигурацию устройства. Если опция Config используется, но указанная конфигурация устройства отсутствует, утилита enum-usb регистрирует ошибку и не распознает устройство.
При обнаружении указанного устройства утилита enum-usb устанавливает для конфигурации устройства USB указанный в опции Config номер (Config num=x) или первую конфигурацию с интерфейсом, который соответствует комбинации класса и подкласса, указанной в опции Config.
Выбор нескольких конфигураций
Если устройство поддерживает несколько конфигураций или интерфейсов для различных поколений, в конфигурационном файле утилиты enum-usb можно указать несколько строк опции Config для каждого устройства, упорядоченных по приоритетам. Утилита enum-usb использует первый оператор опции Config, соответствующий устройству, для которого он приведен.
Создание операторов опции Config
Для операторов опции Config используется следующий формат:
Config [class=xx],[subclass=xx]
или
Config num=x
Правила создания операторов опции Config:
- В модели выше параметр xx представляет собой шестнадцатеричные значения для соответствия параметров class и subclass, а параметр x – конфигурационное десятичное значение для соответствия.
- Оператор опции должен содержать не менее одного параметра.
- Оператор опции может указать любой из следующих параметров:
- только параметр class;
- только параметр subclass;
- оба параметра class и subclass.
- Совпадающие строки для параметров class и subclass должны быть представлены двумя цифрами, с начальным нулем при необходимости.
![Note:](./../../gendoc_inserted_style/images/note.png) | - При определении конфигурационного номера указывается номер ссылки на значение конфигурации, а не ее индекс. Например, при наличии для устройства двух конфигураций, их обозначение может быть отличным от "конфигурация один" и "конфигурация два". Для определения значения конфигурации для устройства см. вывод утилиты USB ( usb -vv).
- В ЗОСРВ «Нейтрино» рекомендуется по возможности использовать параметры class и subclass вместо конфигурационного номера (num). В отношении некоторых устройств, среда, в которой они используются, может влиять на их сообщения о конфигурациях. Этот признак устройства означает, что в различных средах, один и тот же конфигурационный номер может представлять различные конфигурации.
- Параметр конфигурационного номера для опции Config следует использовать только при наличии уверенности в неизменности используемых конфигурационных номеров, т.е. если номера при любых обстоятельствах представляют одни и те же конфигурации.
|
Специальный тег, добавляемый в отчеты устройства USB для утилиты enum-devices. Опция Set позволяет указать пользовательскую строку для передачи утилите enum-devices. Способы применения этой строки:
- Эту строку можно использовать для оказания утилите enum-devices содействия в сопоставлении устройства и определенной конфигурации утилиты enum-usb.
- Строка может применяться к конфигурации утилиты enum-devices; например, в качестве аргумента для запускаемого драйвера.
В настоящее время существуют два определенных пользовательских тега, которые утилита enum-usb может передать утилите enum-devices.
Создание операторов опции Set
Операторы опции Set в конфигурационном файле утилиты enum-usb должны быть указаны следующим образом:
- Если раздел Device не содержит оператор Config, операторы Set можно указать после оператора Device.
- Если конфигурационный файл содержит операторы Config, операторы Set должны находиться непосредственно после операторов Config, к которым они применяются.
Пример:
Device vid=05AC,did=12*
Config class=01
Set usr_spec_id=AppleIPODwithDigitalAudio
Config class=08
Set usr_spec_id=AppleIPODUMASSmode
Применение опции Set user_spec_id целесообразно для создания привязки нескольких устройств или диапазона устройств к одной конфигурации утилиты enum-devices. Варианты использования:
- Для подтверждения соответствия критериям, и, таким образом, запуска одного драйвера для всех связанных устройств.
- Для передачи в качестве аргумента подходящей конфигурации, и, таким образом, представления общего компонента системы, состоящего из нескольких запущенных драйверов.
Для оператора опции Set user_spec_id используется следующий формат:
Set usr_spec_id=x
Правила создания оператора опции Set user_spec_id:
- В модели выше x представляет собой строку без пробельных символов.
- Длина строки ограничена 40 символами.
Применение опции Set inc_user_spec_id целесообразно для создания привязки нескольких устройств или диапазона устройств с одновременным предоставлением уникального для устройства суффикса с автоматическим приращением, который присоединяется к предоставленной пользователем строке. Поскольку конфигурационные файлы утилиты enum-devices не поддерживают групповые символы, эта опция может использоваться только как аргумент, переданный соответствующей конфигурации.
Свойства суффикса, присоединенного к предоставленной пользователем строке с помощью этой опции:
- извлекается из разделяемого пула
- зарезервирован для указанного имени
- деблокируется при удалении устройства
- может быть повторного использован после деблокирования
- запускает автоматическое приращение от нуля
Пример. Поведение при использовании примера конфигурации inc_usr_spec_id=/fs/ipod:
- При подключении первого iPod к главной системе все события вставки, относящиеся к этому устройству, содержат тег inc_usr_spec_id=/fs/ipod0.
- При подключении второго iPod к главной системе все события вставки, относящиеся к этому устройству, содержат тег inc_usr_spec_id=/fs/ipod1 и т.д. для всех дальнейших подключаемых к системе устройств iPod.
- При удалении второго устройства iPod суффикс 1 освобождается и будет использован повторно для следующего вставленного iPod.
![Note:](./../../gendoc_inserted_style/images/note.png) | - Если для записи устройства в конфигурационном файле (enum-usb.conf) утилиты enum-usb требуется приращение суффикса устройства от нуля, а не от значения из разделяемого пула, то для записи устройства в конфигурационном файле используется уникальный идентификатор inc_usr_spec_id.
- Если значение inc_usr_spec_id является путевым именем, то для резервирования суффикса используется базовое имя: например, inc_usr_spec_id=/fs/ipod будет разделять пул суффиксов с inc_usr_spec_id=ipod.
|
Для оператора опции Set inc_user_spec_id используется следующий формат:
Set inc_usr_spec_id=x
Правила создания оператора опции Set inc_user_spec_id:
- В модели выше x представляет собой строку без пробельных символов.
- Длина строки ограничена 1024 символами, включая присоединенный суффикс.
При запуске утилита enum-devices запускает утилиту enum-usb. Для активации запуска утилиты enum-usb утилитой enum-devices необходимо добавить утилиту enum-usb в общий файл, доступ к которому имеют утилиты enum-devices и enum-usb. Это выполняется следующим образом:
all
config(include)
config(overrides)
config(devices)
enumerator(usb)
Ниже приведен пример запуска утилиты enum-usb, в котором указан путь к конфигурационному файлу и установлено максимальное число интерфейсов:
# enum-usb cfg_filepath=/etc/enum-usb-custom.conf,iface_tbl_size=32
enum-usb.conf
В этом примере утилите enum-devices требуется запустить драйвер для устройства iPod с несколькими различными идентификаторами устройства. Вместо использования конфигурации enum-devices, которая содержит запись для каждой комбинации vid и did, применяется указанный пользователем идентификатор, который представляет набор устройств iPod.
#Определить используемую конфигурацию для устройств iPod
Device vid=05AC,did=12*
Config class=03
Set usr_spec_id=AppleIpod
Конфигурационный файл enum-devices
# Если классом является "AUDIO", подклассом – "STREAMING"
# и присутствует строка "AppleIpod",
# запустить администратор io-audio.
device(usb, class=01, subclass=01, usr_spec_id=AppleIpod)
driver(io-audio "-dipod busno=$(busno),devno=$(devno),
cap_name=ipod-$(busno)-$(devno),
ipod_mount=/fs/ipod-$(busno)-$(devno)")
Базовые подсистемы ЗОСРВ «Нейтрино»
enum-devices
Предыдущий раздел: Утилиты