enum-usb

Создание списка устройств на шине USB

Синтаксис:

enum-usb [опции]

enum-usb [опции,]validate

Поддерживаемые платформы:

Neutrino

Целевые платформы:

ARM, PowerPC, SH, x86

Опции:

Опции утилиты enum-usb разделяются запятыми, без пробелов. Используются следующие опции:

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 для доступности расширенной информации в консоли.

Описание:

Разделы описания 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 предоставляет следующую дополнительную информацию:

Примечание. Для наличия дескриптора 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

Конфигурационный файл 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

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

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

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

Config

Опция 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: Примечание.
Set

Опция 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: Примечание. Для оператора опции 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-devices и для получения дополнительной информации об использовании утилиты enum-devices см. enum-devices в руководстве по утилитам.

Примеры:

Ниже приведен пример запуска утилиты 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)")