Поделиться через


Драйверы USB Audio 2.0

Начиная с Windows 10 выпуска 1703 драйвер USB Audio 2.0 поставляется вместе с Windows. Он предназначен для поддержки класса устройств USB Audio 2.0. Драйвер — это мини-порт класса звукового порта WaveRT.

Драйвер называется :usbaudio2.sys , а связанный INF-файл — usbaudio2.inf.

Драйвер будет идентифицироваться в диспетчере устройств как "USB Audio Class 2 Device". Это имя будет перезаписан строкой продукта USB, если оно доступно.

Драйвер автоматически включается при подключении совместимого устройства к системе. Однако если в системе или клиентский компонент Центра обновления Windows существует сторонний драйвер, он будет установлен и переопределит драйвер класса.

Архитектура

Драйвер usbaudio2.sys соответствует более широкой архитектуре Windows USB Audio, как показано ниже.

Схема стека, иллюстрирующая архитектуру Windows USB Audio с ks.sys в верхней части и usb audio в нижней части.

Следующие спецификации USB определяют usb audio и ссылаются в этой статье.

  • USB-2 относится к спецификации универсальной серийной шины, редакция 2.0
  • ADC-2 относится к определению класса USB-устройства для звуковых устройств, выпуск 2.0.
  • FMT-2 относится к спецификации форматов аудиоданных, выпуск 2.0.

USB-IF — это группа особых интересов, которая поддерживает официальные спецификации USB, тестовые спецификации и инструменты.

Форматы аудио

Драйвер поддерживает перечисленные ниже форматы. Альтернативный параметр, указывающий другой формат, определенный в FMT-2, или неизвестный формат, будет игнорироваться.

Форматы типа I (FMT-2 2.3.1):

  • Формат PCM с 8,32 битами на выборку (FMT-2 2.3.1.7.1)
  • Формат PCM8 (FMT-2 2.3.1.7.2)
  • Формат IEEE_FLOAT (FMT-2 2.3.1.7.3)

Форматы Type III (FMT-2 2.3.3 и A.2.3):

  • IEC61937_AC-3
  • IEC61937_MPEG 2_AAC_ADTS
  • IEC61937_DTS-I
  • IEC61937_DTS-II
  • IEC61937_DTS-III
  • TYPE_III_WMA

Описание функций

В этом разделе описываются функции драйвера USB Audio 2.0.

Топология звуковых функций

Драйвер поддерживает все типы сущностей, определенные в ADC-2 3.13.

Каждая сущность терминала должна иметь допустимое соединение с часами в совместимом оборудовании USB Audio 2.0. Путь к часам может при необходимости включать единицы умножения часов и селектора часов и должен заканчиваться в исходной сущности часов.

Драйвер поддерживает только один источник часов. Если устройство реализует несколько сущностей источника часов и селектор часов, драйвер будет использовать источник часов, выбранный по умолчанию, и не будет изменять положение селектора часов.

Единица обработки (ADC-2 3.13.9) с несколькими входными контактами не поддерживается.

Модуль расширения (ADC-2 3.13.10) с несколькими входными контактами не поддерживается.

Циклические пути в топологии не допускаются.

Потоковая передача звука

Драйвер поддерживает следующие типы синхронизации конечных точек (USB-2 5.12.4.1):

  • Асинхронные in и out
  • Синхронные входы и выходы
  • Адаптивные in и out

Для асинхронного случая OUT драйвер поддерживает только явную обратную связь. Конечная точка обратной связи должна быть реализована в соответствующем альтернативном параметре интерфейса AS. Драйвер не поддерживает неявную обратную связь.

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

Для адаптивного в, если драйвер не поддерживает конечную точку прямого канала. Если такая конечная точка присутствует в альтернативном параметре, она будет игнорироваться. Драйвер обрабатывает адаптивный поток IN так же, как асинхронный поток IN.

Размер изохронных пакетов, созданных устройством, должен быть в пределах, указанных в разделе FMT-2.0 2.3.1.1. Это означает, что отклонение фактического размера пакета от номинального размера не должно превышать +/- один звуковой слот (звуковой слот = количество выборок каналов).

Дескрипторы

Звуковая функция должна реализовывать ровно один дескриптор интерфейса AudioControl (ADC-2 4.7) и один или несколько дескрипторов интерфейса AudioStreaming (ADC-2 4.9). Функция с интерфейсом управления звуком, но без интерфейса потоковой передачи не поддерживается.

Драйвер поддерживает все типы дескрипторов, определенные в разделе 4 ADC-2. В следующих подразделах приводятся комментарии по некоторым конкретным типам дескрипторов.

дескриптор интерфейса AS Class-Specific

Дополнительные сведения об этой спецификации см. в статье ADC-2 4.9.2.

Дескриптор интерфейса AS должен начинаться с альтернативного нуля без конечной точки (без использования пропускной способности), а дополнительные альтернативные параметры должны быть указаны в порядке возрастания на совместимом оборудовании USB Audio 2.0.

Альтернативный параметр с форматом, который не поддерживается драйвером, будет игнорироваться.

Каждый ненулевой альтернативный параметр должен указывать изохронную конечную точку данных и при необходимости конечную точку обратной связи. Ненулевая альтернативная настройка без конечной точки не поддерживается.

Поле bTerminalLink должно ссылаться на сущность терминала в топологии, и его значение должно быть одинаковым во всех альтернативных параметрах интерфейса AS.

Поле bFormatType в дескрипторе интерфейса AS должно совпадать с полем bFormatType, указанным в дескрипторе типа формата (FMT-2 2.3.1.6).

Для форматов типа I необходимо задать ровно один бит в поле bmFormats дескриптора интерфейса AS. В противном случае этот формат будет игнорироваться драйвером.

Чтобы сэкономить пропускную способность шины, один интерфейс AS может реализовать несколько альтернативных параметров в одном формате (с точки зрения bNrChannels и дескриптора типа формата AS), но разные значения wMaxPacketSize в дескрипторе изохронной конечной точки данных. Для заданной частоты выборки драйвер выбирает альтернативный параметр с наименьшим wMaxPacketSize, который может соответствовать требованиям к скорости передачи данных.

Дескриптор типа I

Дополнительные сведения об этой спецификации см. в FMT-2 2.3.1.6.

Применяются следующие ограничения:

Формат Размер подсчитана Битовое разрешение
Тип I PCM формат: 1 <= bSubslotSize <= 4 8 <= bBitResolution <= 32
Введите формат I PCM8: bSubslotSize == 1 bBitResolution == 8
Тип I IEEE_FLOAT формате: bSubslotSize == 4 bBitResolution == 32
Форматы IEC61937 типа III: bSubslotSize == 2 bBitResolution == 16

дескриптор конечной точки аудиоданных Class-Specific AS

Дополнительные сведения об этой спецификации см. в статье ADC-2 4.10.1.2.

Флаг MaxPacketsOnly в поле bmAttributes не поддерживается и будет игнорироваться.

Поля bmControls, bLockDelayUnits и wLockDelay будут игнорироваться.

Запросы классов и сообщения данных прерывания

Драйвер поддерживает подмножество запросов элементов управления, определенных в ADC-2, раздел 5.2, и поддерживает сообщения данных прерывания (ADC-2 6.1) для некоторых элементов управления. В следующей таблице показано подмножество, реализованного в драйвере.

Сущность Control GET CUR SET CUR GET RANGE ПРЕРВАТЬ
Источник часов Контроль частоты выборки x x x
Селектор часов Элемент управления "Селектор часов" x
Множитель часов Элемент управления числителями x
Элемент управления "Знаменатель" x
Терминал Элемент управления соединителем x x
Блок микшера Элемент управления mixer x x x
Единица выбора Элемент управления "Селектор" x x
Единица функций Управление отключением звука x x x
Управление громкостей x x x x
Автоматическое управление получением x x
Единица эффекта
Единица обработки
Модуль расширения

Дополнительные сведения об элементах управления и запросах см. в следующих подразделах.

Сущность источника clock

Дополнительные сведения об этой спецификации см. в статье ADC-2 5.2.5.1.

Как минимум, сущность источника часов должна реализовать запросы GET RANGE и GET CUR для управления частотой выборки (ADC-2 5.2.5.1.1) на совместимом оборудовании USB Audio 2.0.

Запрос GET RANGE для управления частотой выборки возвращает список поддиаготов (ADC-2 5.2.1). Каждый вложенный диапазон описывает дискретную частоту или диапазон частот. Дискретная частота выборки должна быть выражена путем установки в полях MIN и MAX соответствующей частоты, а res — нулевой. Отдельные поддиаготы не должны перекрываться. Если поддиапсул перекрывает предыдущий, драйвер будет игнорировать его.

Сущность источника часов, реализующая только одну фиксированную частоту, не должна реализовывать контроль частоты выборки SET CUR. Он реализует GET CUR, который возвращает фиксированную частоту, и реализует GET RANGE, который сообщает одну дискретную частоту.

Сущность селектора часов

Дополнительные сведения об этой спецификации см. в статье ADC-2 5.2.5.2.

Драйвер USB Audio 2.0 не поддерживает выбор часов. Драйвер использует сущность источника clock, которая выбрана по умолчанию и никогда не выдает запрос SET CUR для управления селектором часов. Запрос GET CUR элемента управления "Селектор часов" (ADC-2 5.2.5.2.1) должен быть реализован на совместимом оборудовании USB Audio 2.0.

Единица функций

Дополнительные сведения об этой спецификации см. в статье ADC-2 5.2.5.7.

Драйвер поддерживает только один диапазон томов. Если запрос GET RANGE регулятора громкости возвращает несколько диапазонов, последующие диапазоны будут игнорироваться.

Интервал тома, выраженный полями MIN и MAX, должен быть целым числом, кратным размеру шага, указанному в поле RES.

Если функциональный блок реализует элементы управления с одним каналом и элемент управления master для отключения звука или громкости, драйвер использует элементы управления с одним каналом и игнорирует элемент управления master.

Дополнительные сведения для OEM и IHV

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

С встроенным драйвером USB Audio 2.0 нет конкретных настроек партнера.

Эта запись INF-файла (предоставленная в обновлении до выпуска Windows 1703) используется для определения того, что встроенный драйвер является универсальным драйвером устройства.

GenericDriverInstalled,,,,1

Встроенный драйвер регистрирует следующие совместимые идентификаторы с usbaudio2.inf.

USB\Class_01&SubClass_00&Prot_20
USB\Class_01&SubClass_01&Prot_20
USB\Class_01&SubClass_02&Prot_20
USB\Class_01&SubClass_03&Prot_20

Сведения о типах подклассов см. в спецификации USB Audio 2.0.

Usb Audio 2.0 Устройства с MIDI (подкласс 0x03 выше) перечисляют функцию MIDI как отдельное многофункциональное устройство с загруженным usbaudio.sys (драйвер USB Audio 1.0).

Драйвер класса USB Audio 1.0 регистрирует этот совместимый идентификатор в wdma_usb.inf.

USB\Class_01

И имеет следующие исключения:

USB\Class_01&SubClass_00&Prot_20
USB\Class_01&SubClass_01&Prot_20
USB\Class_01&SubClass_02&Prot_20
USB\Class_01&SubClass_03&Prot_20

Произвольное количество каналов (больше восьми) не поддерживается в общем режиме из-за ограничения стека звука Windows.

Драйверы и обновления IHV USB Audio 2.0

Для драйверов USB Audio 2.0, предоставляемых IHV сторонних производителей, эти драйверы будут по-прежнему предпочтительными для своих устройств по сравнению с нашим встроенным драйвером, если они не обновят свой драйвер, чтобы явно переопределить это поведение и использовать встроенный драйвер.

Описания реестра аудиоразъемов

Начиная с Windows 10 выпуска 1703, IHV, создающие устройства класса USB Audio 2.0 с одним или несколькими разъемами, могут описывать эти разъемы в встроенном драйвере Класса Аудио 2.0. Встроенный драйвер использует предоставленные сведения о разъеме при обработке KSPROPERTY_JACK_DESCRIPTION для этого устройства.

Сведения о разъеме хранятся в реестре в разделе экземпляра устройства (ключ HW).

Ниже описаны параметры сведений о аудиоразъеме в реестре.

REG_DWORD  T<tid>_NrJacks                 # of the jack on this device
REG_DWORD  T<tid>_J<n>_ChannelMapping     Channel mask. The value is defined in ksmedia.h. e.g. SPEAKER_FRONT_RIGHT or KSAUDIO_SPEAKER_5POINT1_SURROUND
REG_DWORD  T<tid>_J<n>_ConnectorType      The enum value is define in EPcxConnectionType.
REG_DWORD  T<tid>_J<n>_GeoLocation        The enum value is define in EPcxGeoLocation.
REG_DWORD  T<tid>_J<n>_GenLocation        The enum value is define in EPcxGenLocation.
REG_DWORD  T<tid>_J<n>_PortConnection     The enum value is define in EPxcPortConnection.
REG_DWORD  T<tid>_J<n>_Color              The color needs to be represent by RGB like this: 0x00RRGGBB (NOT a COLORREF).

<tid> = идентификатор терминала (как определено в дескрипторе)

<n> = число разъема (1 ~ n).

Соглашение для <tid> и <n> :

  • Base 10 (8, 9, 10, а не 8, 9, a)
  • Без начальных нулей
  • n — на основе 1 (первый разъем — это разъем 1, а не разъем 0)

Пример:

T1_NrJacks, T1_J2_ChannelMapping T1_J2_ConnectorType

Дополнительные сведения о аудиоразъеме см . в разделе структура KSJACK_DESCRIPTION.

Эти значения реестра можно задать различными способами:

  • С помощью пользовательских inFs, которые упаковывают встроенный INF-файл для установки этих значений.

  • Непосредственно аппаратным устройством через дескриптор ОС Майкрософт для USB-устройств (см. пример ниже). Дополнительные сведения о создании этих дескрипторов см. в разделе Дескрипторы ОС Майкрософт для USB-устройств.

Пример дескрипторов ОС Майкрософт для USB

Следующий пример дескрипторов ОС Майкрософт для USB содержит сопоставление каналов и цвет для одного разъема. Пример предназначен для не составного устройства с одним дескриптором функции.

Поставщик IHV должен расширить его, чтобы он содержал любые другие сведения для описания разъема.

UCHAR Example2_MSOS20DescriptorSetForUAC2 [0x76] = {
    //
    // Microsoft OS 2.0 Descriptor Set Header
    //
    0x0A, 0x00,             // wLength - 10 bytes
    0x00, 0x00,             // MSOS20_SET_HEADER_DESCRIPTOR
    0x00, 0x00, 0x0?, 0x06, // dwWindowsVersion – 0x060?0000 for future Windows version
    0x76, 0x00,             // wTotalLength – 118 bytes // update later

    //
    // Microsoft OS 2.0 Registry Value Feature Descriptor
    //
    0x42, 0x00,             // bLength - 66 bytes
    0x04, 0x00,             // wDescriptorType – 5 for Registry Property
    0x04, 0x00,             // wPropertyDataType - 4 for REG_DWORD
    0x34, 0x00,             // wPropertyNameLength – 52 bytes
    0x54, 0x00, 0x30, 0x00, // Property Name - "T01_J01_ChannelMapping"
    0x31, 0x00, 0x5f, 0x00,
    0x4a, 0x00, 0x30, 0x00,
    0x31, 0x00, 0x5f, 0x00,
    0x43, 0x00, 0x68, 0x00,
    0x61, 0x00, 0x6e, 0x00,
    0x6e, 0x00, 0x65, 0x00,
    0x6c, 0x00, 0x4d, 0x00,
    0x61, 0x00, 0x70, 0x00,
    0x70, 0x00, 0x69, 0x00,
    0x6e, 0x00, 0x67, 0x00,
    0x00, 0x00
    0x04, 0x00,                       // wPropertyDataLength – 4 bytes
    0x02, 0x00, 0x00, 0x00  // PropertyData - SPEAKER_FRONT_RIGHT

    //
    // Microsoft OS 2.0 Registry Value Feature Descriptor
    //
    0x2A, 0x00,             // bLength - 42 bytes
    0x04, 0x00,             // wDescriptorType – 5 for Registry Property
    0x04, 0x00,             // wPropertyDataType - 4 for REG_DWORD
    0x1C, 0x00,             // wPropertyNameLength – 28 bytes
    0x54, 0x00, 0x30, 0x00, // Property Name - "T01_J01_Color"
    0x31, 0x00, 0x5f, 0x00,
    0x4a, 0x00, 0x30, 0x00,
    0x31, 0x00, 0x5f, 0x00,
    0x43, 0x00, 0x6f, 0x00,
    0x6c, 0x00, 0x6f, 0x00,
    0x72, 0x00, 0x00, 0x00,
    0x04, 0x00,             // wPropertyDataLength – 4 bytes
    0x00, 0x00, 0xff, 0x00  // PropertyData - 0xff0000 - RED }

Устранение неполадок

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

Сведения о том, как считывать журналы для драйвера класса USB Audio 2.0 с помощью дополнительных файлов TMF, см. в статье Отчет о проблемах с журналами и рекомендации функций с помощью Центра отзывов в веб-журнале Мэтью ван Эерде. Общие сведения о работе с TMF-файлами см. в разделе Отображение журнала трассировки с помощью TMF-файла.

Сведения об ошибке "Аудиослужбы не отвечают" и USB-звуковое устройство не работает в Windows 10 версии 1703, см. в статье Usb Audio Not Playing (Звук USB не воспроизводим).

Центр отзывов

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

Разработка драйверов

Этот драйвер класса USB Audio 2.0 был разработан Компанией Thesycon и поддерживается корпорацией Майкрософт.

См. также раздел