enum-usb

Создание списка устройств на шине 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: Опции утилиты enum-usb разделяются запятыми, без пробелов.

Платформы:

ЗОСРВ «Нейтрино»

Целевые архитектуры:

aarch64, arm, armv7, e2k, mips, ppc, x86

Описание:

Разделы описания enum-usb:

Обзор
Информация об устройстве USB
Поведение при перечислении одного устройства USB
Конфигурационный файл enum-usb
Опция "Device" – определение конфигурации устройств
Опция "Ignore" – игнорирование устройства USB
Опция "Config" – конфигурация устройства USB
Опция "Set" – специальный тег, добавляемый в отчеты
Пользовательский тег "user_spec_id"
Пользовательский тег "inc_user_spec_id"
Использование enum-devices вместе с 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 для удаления запущенных для этого устройства драйверов.

Информация об устройстве USB

Утилита enum-usb предоставляет утилите enum-devices следующую информацию об интерфейсах устройства USB:

Для получения дополнительной информации о данных, предоставляемых утилитой enum-usb в утилиту enum-devices см. описание set конфигурационного файла утилиты enum-usb.

Дескрипторы Microsoft

Если устройство (например устройство PFS) поддерживает дескрипторы Microsoft, утилита enum-usb предоставляет следующую дополнительную информацию:


Note: Для наличия дескриптора Microsoft необходимо активировать опцию check_MS_desc; однако активация опции check_MS_desc может привести к тому, что некоторые устройства перестанут реагировать. Эту опцию следует активировать, только если используются устройства PFS и на целевой системе активированы другие функции, зависящие от данных дескриптора Microsoft.

Поведение при перечислении одного устройства USB

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

класс отличен от нуля (!=0)
Значение для enum-usb: использование каких-либо существующих на устройстве интерфейсов независимо от прочих интерфейсов на устройстве невозможно. Утилита сообщает о наличии одного пригодного к использованию интерфейса для этого устройства и ожидает от утилиты enum-devices запуска одного драйвера для управления этим устройством и его интерфейсами.
класс зависит от вендора (0xFF)
Значение для enum-usb: устройство управляется одним драйвером, предназначенным для управления устройством этого вендора. Утилита сообщает о наличии для этого устройства одного пригодного к использованию интерфейса.
класс зависит от интерфейса (=0)
Утилита enum-usb сообщает о событии для каждого интерфейса, присутствующего для текущей конфигурации устройства. Управление каждым интерфейсом этого устройства USB может осуществляться независимо от других интерфейсов на устройстве, соответственно утилиту enum-devices можно настроить для запуска уникального драйвера для каждого интерфейса USB, присутствующего для устройства USB.

Конфигурационный файл enum-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" – определение конфигурации устройств

Опция Device конфигурационного файла утилиты enum-usb определяет начало определения конфигурации устройства. Все опции, которые следуют за опцией Device в конфигурационном файле, применяются к этому устройству до нового экземпляра опции Device.

Опция Device определяет устройство USB по следующим его параметрам:

Для оператора опции Device используется следующий формат:

Device [vid=v],[did=d],[ser=s]

Существуют следующие правила создания оператора опции Device:

Опция "Ignore" – игнорирование устройства USB

Оция Ignore указывает утилите enum-usb игнорировать устройство.

Использование этой опции целесообразно при наличии устройства USB, драйвер которого регистрируется для события вставки самого устройства, а не запускается перечислителем. Игнорирование этого типа устройства утилитой enum-usb предотвращает возможные конфликты между перечислителем и драйвером, оба из которых могут предпринять попытку подключения устройства одновременно.


Note: Если для устройства в enum-usb установлена опция Ignore, то определяющая устройство опция Device должна указывать только идентификаторы устройства и вендора.

Опция "Config" – конфигурация устройства USB

Опция 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:


Note:
  • При определении конфигурационного номера указывается номер ссылки на значение конфигурации, а не ее индекс. Например, при наличии для устройства двух конфигураций, их обозначение может быть отличным от "конфигурация один" и "конфигурация два". Для определения значения конфигурации для устройства см. вывод утилиты USB ( usb -vv).
  • В ЗОСРВ «Нейтрино» рекомендуется по возможности использовать параметры class и subclass вместо конфигурационного номера (num). В отношении некоторых устройств, среда, в которой они используются, может влиять на их сообщения о конфигурациях. Этот признак устройства означает, что в различных средах, один и тот же конфигурационный номер может представлять различные конфигурации.
  • Параметр конфигурационного номера для опции Config следует использовать только при наличии уверенности в неизменности используемых конфигурационных номеров, т.е. если номера при любых обстоятельствах представляют одни и те же конфигурации.

Опция "Set" – специальный тег, добавляемый в отчеты

Специальный тег, добавляемый в отчеты устройства USB для утилиты enum-devices. Опция Set позволяет указать пользовательскую строку для передачи утилите enum-devices. Способы применения этой строки:

В настоящее время существуют два определенных пользовательских тега, которые утилита enum-usb может передать утилите enum-devices.

Создание операторов опции Set

Операторы опции Set в конфигурационном файле утилиты enum-usb должны быть указаны следующим образом:

Пример:

Device vid=05AC,did=12* Config class=01 Set usr_spec_id=AppleIPODwithDigitalAudio Config class=08 Set usr_spec_id=AppleIPODUMASSmode

Пользовательский тег "user_spec_id"

Применение опции Set user_spec_id целесообразно для создания привязки нескольких устройств или диапазона устройств к одной конфигурации утилиты enum-devices. Варианты использования:

Для оператора опции Set user_spec_id используется следующий формат:

Set usr_spec_id=x

Правила создания оператора опции Set user_spec_id:

Пользовательский тег "inc_user_spec_id"

Применение опции Set inc_user_spec_id целесообразно для создания привязки нескольких устройств или диапазона устройств с одновременным предоставлением уникального для устройства суффикса с автоматическим приращением, который присоединяется к предоставленной пользователем строке. Поскольку конфигурационные файлы утилиты enum-devices не поддерживают групповые символы, эта опция может использоваться только как аргумент, переданный соответствующей конфигурации.

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

Пример. Поведение при использовании примера конфигурации inc_usr_spec_id=/fs/ipod:


Note:
  • Если для записи устройства в конфигурационном файле (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:

Использование enum-devices вместе с enum-usb

При запуске утилита 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




Предыдущий раздел: Утилиты