USB Audio 2.0-Treiber

Ab Windows 10, Release 1703, wird ein USB Audio 2.0-Treiber mit Windows ausgeliefert. Es wurde entwickelt, um die USB Audio 2.0-Geräteklasse zu unterstützen. Der Treiber ist ein WaveRT-Audioport-Klassen-Miniport.

Der Treiber hat den Namen :usbaudio2.sys , und die zugeordnete inf-Datei lautet usbaudio2.inf.

Der Treiber identifiziert im Geräte-Manager als "USB Audio Class 2 Device". Dieser Name wird mit einer USB-Produktzeichenfolge überschrieben, sofern er verfügbar ist.

Der Treiber wird automatisch aktiviert, wenn ein kompatibles Gerät an das System angefügt wird. Wenn jedoch ein Drittanbietertreiber auf dem System oder Windows Update vorhanden ist, wird dieser Treiber installiert und überschreibt den Klassentreiber.

Aufbau

Der usbaudio2.sys Treiber passt in die breitere Architektur von Windows USB Audio, wie gezeigt.

Stapeldiagramm zur Veranschaulichung der Windows-USB-Audioarchitektur mit ks.sys oben und USB-Audiogeräten am unteren Rand.

Die folgenden USB-Spezifikationen definieren USB-Audio und werden in diesem Artikel referenziert.

  • USB-2 bezieht sich auf die Universal Serial Bus Specification, Revision 2.0
  • ADC-2 bezieht sich auf die USB-Geräteklassendefinition für Audiogeräte, Release 2.0.
  • FMT-2 bezieht sich auf die Spezifikation für Audiodatenformate, Release 2.0.

Die USB-IF ist eine spezielle Interessengruppe, die die offizielle USB-Spezifikation, Testspezifikationen und Tools verwaltet.

Audioformate

Der Treiber unterstützt die unten aufgeführten Formate. Eine alternative Einstellung, die ein anderes in FMT-2 definiertes Format oder ein unbekanntes Format angibt, wird ignoriert.

Typ-I-Formate (FMT-2 2.3.1):

  • PCM-Format mit 8..32 Bits pro Stichprobe (FMT-2 2.3.1.7.1)
  • PCM8-Format (FMT-2 2.3.1.7.2)
  • IEEE_FLOAT Format (FMT-2 2.3.1.7.3)

Typ III-Formate (FMT-2 2.3.3 und A.2.3):

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

Beschreibung der Funktionen

In diesem Abschnitt werden die Features des USB Audio 2.0-Treibers beschrieben.

Topologie der Audiofunktion

Der Treiber unterstützt alle entitätstypen, die in ADC-2 3.13 definiert sind.

Jede Terminalentität muss über eine gültige Uhrverbindung in kompatibler USB Audio 2.0-Hardware verfügen. Der Taktpfad kann optional Clock Multiplier- und Clock Selector-Einheiten enthalten und muss in einer Clock Source-Entität enden.

Der Treiber unterstützt nur eine einzelne Clock-Quelle. Wenn ein Gerät mehrere Uhrenquellentitäten und eine Uhrauswahl implementiert, verwendet der Treiber die standardmäßig ausgewählte Uhrquelle und ändert die Position der Uhrauswahl nicht.

Eine Verarbeitungseinheit (ADC-2 3.13.9) mit mehr als einem Eingabestift wird nicht unterstützt.

Eine Erweiterungseinheit (ADC-2 3.13.10) mit mehr als einem Eingabestift wird nicht unterstützt.

Zyklische Pfade in der Topologie sind nicht zulässig.

Audiostreaming

Der Treiber unterstützt die folgenden Endpunktsynchronisierungstypen (USB-2 5.12.4.1):

  • Asynchrones IN und OUT
  • Synchrones IN und OUT
  • Adaptives IN und OUT

Für den asynchronen OUT-Fall unterstützt der Treiber nur explizites Feedback. Ein Feedbackendpunkt muss in der entsprechenden alternativen Einstellung der AS-Schnittstelle implementiert werden. Der Treiber unterstützt kein implizites Feedback.

Es gibt derzeit nur eingeschränkte Unterstützung für Geräte, die eine gemeinsam genutzte Uhr für mehrere Endpunkte verwenden.

Für den adaptiven IN-Fall unterstützt der Treiber keinen Feed forward-Endpunkt. Wenn ein solcher Endpunkt in der alternativen Einstellung vorhanden ist, wird er ignoriert. Der Treiber verarbeitet den adaptiven IN-Stream auf die gleiche Weise wie ein asynchroner IN-Stream.

Die Größe der vom Gerät erstellten isochronen Pakete muss innerhalb der im Abschnitt 2.3.1.1 FMT-2.0 angegebenen Grenzwerten entsprechen. Dies bedeutet, dass die Abweichung der tatsächlichen Paketgröße von der nominalen Größe nicht +/- einen Audioslot (Audioslot = Beispiele für die Kanalanzahl) überschreiten darf.

Deskriptoren

Eine Audiofunktion muss genau einen AudioControl Interface Descriptor (ADC-2 4.7) und mindestens einen AudioStreaming Interface-Deskriptor (ADC-2 4.9) implementieren. Eine Funktion mit einer Audiosteuerungsschnittstelle, aber ohne Streamingschnittstelle wird nicht unterstützt.

Der Treiber unterstützt alle Deskriptortypen, die in ADC-2, Abschnitt 4, definiert sind. Die folgenden Unterabschnitte enthalten Kommentare zu bestimmten Deskriptortypen.

Class-Specific AS-Schnittstellendeskriptor

Ausführliche Informationen zu dieser Spezifikation finden Sie unter ADC-2 4.9.2.

Ein AS-Schnittstellendeskriptor muss mit einer alternativen Einstellung null ohne Endpunkt (ohne Bandbreitenverbrauch) beginnen, und weitere alternative Einstellungen müssen in aufsteigender Reihenfolge in kompatibler USB Audio 2.0-Hardware angegeben werden.

Eine alternative Einstellung mit einem Format, das vom Treiber nicht unterstützt wird, wird ignoriert.

Jede alternative Einstellung ungleich Null muss einen isochronen Datenendpunkt und optional einen Feedbackendpunkt angeben. Eine alternative Einstellung ungleich Null ohne Endpunkt wird nicht unterstützt.

Das Feld bTerminalLink muss auf eine Terminalentität in der Topologie verweisen, und ihr Wert muss in allen alternativen Einstellungen einer AS-Schnittstelle identisch sein.

Das Feld bFormatType im AS-Schnittstellendeskriptor muss mit bFormatType identisch sein, der im Formattypdeskriptor (FMT-2 2.3.1.6) angegeben ist.

Für Typ-I-Formate muss genau ein Bit im Feld bmFormats des AS-Schnittstellendeskriptors auf ein Bit festgelegt werden. Andernfalls wird das Format vom Treiber ignoriert.

Um Busbandbreite zu sparen, kann eine AS-Schnittstelle mehrere alternative Einstellungen mit demselben Format (in Bezug auf bNrChannels und AS-Formattypdeskriptor) aber unterschiedliche wMaxPacketSize-Werte im isochronen Datenendpunktdeskriptor implementieren. Für eine bestimmte Abtastrate wählt der Treiber die alternative Einstellung mit der kleinsten wMaxPacketSize aus, die die Anforderungen an die Datenrate erfüllen kann.

Typ-I-Formattypdeskriptor

Ausführliche Informationen zu dieser Spezifikation finden Sie unter FMT-2 2.3.1.6.

Es gelten folgende Einschränkungen:

Format Größe des Teilfensters Bitauflösung
Typ I PCM-Format: 1 <= bSubslotSize <= 4 8 <= bBitResolution <= 32
Typ I PCM8-Format: bSubslotSize == 1 bBitResolution == 8
Geben Sie I IEEE_FLOAT Format ein: bSubslotSize == 4 bBitResolution == 32
Typ III IEC61937 Formate: bSubslotSize == 2 bBitResolution == 16

Class-Specific AS isochroner Audiodatenendpunktdeskriptor

Ausführliche Informationen zu dieser Spezifikation finden Sie unter ADC-2 4.10.1.2.

Das MaxPacketsOnly-Flag im Feld bmAttributes wird nicht unterstützt und ignoriert.

Die Felder bmControls, bLockDelayUnits und wLockDelay werden ignoriert.

Klassenanforderungen und Unterbrechen von Datenmeldungen

Der Treiber unterstützt eine Teilmenge der in ADC-2, Abschnitt 5.2, definierten Steuerungsanforderungen und unterstützt Interruptdatenmeldungen (ADC-2 6.1) für einige Steuerelemente. Die folgende Tabelle zeigt die Teilmenge, die im Treiber implementiert ist.

Entität Control GET CUR SET CUR BEREICH ABRUFEN UNTERBRECHEN
Uhrquelle Steuerung der Stichprobenhäufigkeit x x x
Uhrauswahl Uhrauswahlsteuerung x
Uhrmultiplikator Zählersteuerung x
Nennersteuerung x
Terminal Connectorsteuerung x x
Mischeinheit Mischersteuerung x x x
Selektoreinheit Auswahlsteuerung x x
Featureeinheit Stummschaltsteuerung x x x
Lautstärkeregelung x x x x
Automatische Verstärkungssteuerung x x
Effekteinheit
Verarbeitungseinheit
Erweiterungseinheit

Weitere Informationen zu den Steuerelementen und Anforderungen finden Sie in den folgenden Unterabschnitten.

Uhrquellenentität

Ausführliche Informationen zu dieser Spezifikation finden Sie unter ADC-2 5.2.5.1.

Mindestens muss eine Clock Source-Entität GET RANGE- und GET CUR-Anforderungen (ADC-2 5.2.5.1.1) in kompatibler USB Audio 2.0-Hardware implementieren.

Die Get Range-Anforderung "Sampling Frequency Control" gibt eine Liste von Unterbereichen zurück (ADC-2 5.2.1). Jeder Unterbereich beschreibt eine diskrete Häufigkeit oder einen Frequenzbereich. Eine diskrete Stichprobenhäufigkeit muss ausgedrückt werden, indem die Felder MIN und MAX auf die jeweilige Häufigkeit und RES auf 0 festgelegt werden. Einzelne Unterbereiche dürfen sich nicht überlappen. Wenn sich ein Unterbereich mit einem vorherigen überschneidet, wird er vom Treiber ignoriert.

Eine Clock Source-Entität, die nur eine einzelne feste Häufigkeit implementiert, muss keine Sampling Frequency Control SET CUR implementieren. Es implementiert GET CUR, das die feste Häufigkeit zurückgibt, und implementiert GET RANGE, das eine einzelne diskrete Häufigkeit meldet.

Uhrauswahlentität

Ausführliche Informationen zu dieser Spezifikation finden Sie unter ADC-2 5.2.5.2.

Der USB Audio 2.0-Treiber unterstützt keine Taktauswahl. Der Treiber verwendet die Clock-Quellentität, die standardmäßig ausgewählt ist und niemals eine CUR-Anforderung für die Steuerung der Uhrauswahl ausgibt. Die GET CUR-Anforderung "Clock Selector Control" (ADC-2 5.2.5.2.1) muss in kompatibler USB Audio 2.0-Hardware implementiert werden.

Featureeinheit

Ausführliche Informationen zu dieser Spezifikation finden Sie unter ADC-2 5.2.5.7.

Der Treiber unterstützt nur einen einzelnen Volumebereich. Wenn die Get Range-Anforderung für die Lautstärkeregelung mehr als einen Bereich zurückgibt, werden nachfolgende Bereiche ignoriert.

Das durch die Felder MIN und MAX ausgedrückte Volumeintervall sollte ein ganzzahliges Vielfaches der im RES-Feld angegebenen Schrittgröße sein.

Wenn eine Featureeinheit Einzelne-Kanal-Steuerelemente und ein master-Steuerelement für Stummschaltung oder Lautstärke implementiert, verwendet der Treiber die Einzelkanalsteuerelemente und ignoriert das master-Steuerelement.

Zusätzliche Informationen für OEM und IHVs

OEMs und IHVs sollten ihre vorhandenen und neuen Geräte mit dem mitgelieferten In-Box-Treiber testen.

Es gibt keine spezifische Partneranpassung, die dem mitgelieferten USB Audio 2.0-Treiber zugeordnet ist.

Dieser INF-Dateieintrag (bereitgestellt in einem Update auf Windows Release 1703) wird verwendet, um zu identifizieren, dass der im Lieferumfang enthaltene Treiber ein generischer Gerätetreiber ist.

GenericDriverInstalled,,,,1

Der Im Lieferumfang enthaltene Treiber registriert sich für die folgenden kompatiblen IDs bei 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

Weitere Informationen finden Sie in der USB Audio 2.0-Spezifikation für Unterklassentypen.

USB Audio 2.0-Geräte mit MIDI (Unterklasse 0x03 oben) werden die MIDI-Funktion als separates Mehrfunktionsgerät mit usbaudio.sys (USB Audio 1.0-Treiber) aufgezählt.

Der USB Audio 1.0-Klassentreiber registriert diese kompatible ID bei wdma_usb.inf.

USB\Class_01

Und hat die folgenden Ausschlüsse:

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

Eine beliebige Anzahl von Kanälen (größer als acht) wird im freigegebenen Modus aufgrund einer Einschränkung des Windows-Audiostapels nicht unterstützt.

IHV USB Audio 2.0 Treiber und Updates

Für von IHV bereitgestellte Usb Audio 2.0-Treiber von Drittanbietern werden diese Treiber weiterhin für ihre Geräte gegenüber unserem im Lieferumfang enthaltenen Treiber bevorzugt, es sei denn, sie aktualisieren ihren Treiber, um dieses Verhalten explizit zu überschreiben und den im Lieferumfang enthaltenen Treiber zu verwenden.

Audio Jack Registry Descriptions

Ab Windows 10 Release 1703 können IHVs, die USB-Audioklasse 2.0-Geräte mit einem oder mehreren Klinkenbuchsen erstellen, diese Buchsen für den mitgelieferten Treiber audio class 2.0 beschreiben. Der Im Lieferumfang enthaltene Treiber verwendet die bereitgestellten Klinkeninformationen, wenn die KSPROPERTY_JACK_DESCRIPTION für dieses Gerät verarbeitet werden.

Jack-Informationen werden in der Registrierung im Geräte-instance-Schlüssel (HW-Schlüssel) gespeichert.

Im Folgenden werden die Einstellungen für Audiobuchseninformationen in der Registrierung beschrieben:

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> = Terminal-ID (Wie im Deskriptor definiert)

<n> = Jack number (1 ~ n).

Die Konvention für <tid> und <n> lautet:

  • Basis 10 (8, 9, 10 statt 8, 9, a)
  • Keine führenden Nullen
  • n ist 1-basiert (die erste Buchse ist Buchse 1 statt Buchse 0).

Beispiel:

T1_NrJacks, T1_J2_ChannelMapping, T1_J2_ConnectorType

Weitere Informationen zur Audiobuchse finden Sie unter KSJACK_DESCRIPTION Struktur.

Diese Registrierungswerte können auf verschiedene Arten festgelegt werden:

  • Mithilfe von benutzerdefinierten INFs, die den im Lieferumfang enthaltenen INF umschließen, um diese Werte festzulegen.

  • Direkt durch das Hardwaregerät über einen Microsoft OS Descriptor für USB-Geräte (siehe Beispiel unten). Weitere Informationen zum Erstellen dieser Deskriptoren finden Sie unter Microsoft-Betriebssystemdeskriptoren für USB-Geräte.

Beispiel für Microsoft OS-Deskriptoren für USB

Das folgende Microsoft-Betriebssystemdeskriptoren für USB enthält die Kanalzuordnung und die Farbe für eine Buchse. Das Beispiel gilt für ein nicht zusammengesetztes Gerät mit einem einzelnen Featuredeskriptor.

Der IHV-Anbieter sollte ihn erweitern, um weitere Informationen für die Jack-Beschreibung zu enthalten.

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 }

Problembehandlung

Wenn der Treiber nicht gestartet wird, sollte das Systemereignisprotokoll überprüft werden. Der Treiber protokolliert Ereignisse, die den Grund für den Fehler angeben. Ebenso können Audioprotokolle manuell gesammelt werden, indem sie die Schritte befolgen, die in Matthew van Eerdes Webprotokollartikel Sammeln von Audioprotokollen auf altmodische Weise beschrieben sind. Wenn der Fehler auf ein Treiberproblem hindeuten kann, melden Sie es bitte über den unten beschriebenen Feedback-Hub, und fügen Sie die Protokolle hinzu.

Informationen zum Lesen von Protokollen für den USB Audio 2.0-Klassentreiber mithilfe zusätzlicher TMF-Dateien finden Sie unter Melden von Problemen mit Protokollen und Vorschlagen von Features mit dem Feedback-Hub im Webprotokoll von Matthew van Eerde. Allgemeine Informationen zum Arbeiten mit TMF-Dateien finden Sie unter Anzeigen eines Ablaufverfolgungsprotokolls mit einer TMF-Datei.

Informationen zum Fehler "Audiodienste reagieren nicht" und USB-Audiogerät funktioniert in Windows 10 Version 1703 nicht unter USB-Audio nicht wiedergegeben.

Feedback-Hub

Wenn Sie auf ein Problem mit diesem Treiber stoßen, sammeln Sie Audioprotokolle, und führen Sie dann die Schritte aus, die unter Melden von Problemen mit Protokollen und Vorschlagen von Features mit dem Feedback-Hub beschrieben sind, um uns darauf aufmerksam zu machen.

Treiberentwicklung

Dieser USB Audio 2.0-Klassentreiber wurde von Thesycon entwickelt und wird von Microsoft unterstützt.

Weitere Informationen