Udostępnij przez


Sterowniki USB Audio 2.0

Począwszy od systemu Windows 10, wersja 1703, sterownik USB Audio 2.0 jest dostarczany z systemem Windows. Jest przeznaczony do obsługi klasy urządzenia USB Audio 2.0. Sterownik jest miniportem klasy portów audio WaveRT.

Sterownik nosi nazwę: usbaudio2.sys. Skojarzony plik informacji (INF) jest usbaudio2.inf.

Sterownik identyfikuje się w Menedżerze urządzeń jako urządzenie klasy audio USB 2. Ta nazwa jest zastępowana ciągiem produktu USB, jeśli jest dostępna.

Po dołączeniu zgodnego urządzenia do systemu sterownik jest włączony. Jeśli sterownik partnera istnieje w systemie lub w usłudze Windows Update, ten sterownik jest zainstalowany i zastępuje sterownik klasy.

Architektura

Sterownik usbaudio2.sys mieści się w szerszej architekturze audio USB systemu Windows, jak pokazano.

Diagram stosu ilustrujący architekturę audio USB systemu Windows z ks.sys u góry i urządzenia audio USB u dołu.

W tym artykule opisano następujące specyfikacje USB definiujące dźwięk USB.

  • USB-2 odnosi się do uniwersalnej specyfikacji magistrali szeregowej, wersja 2.0
  • ADC-2 odnosi się do definicji klasy urządzeń USB dla urządzeń audio, wersja 2.0
  • FMT-2 odnosi się do specyfikacji formatów danych audio, Release 2.0

USB-IF jest specjalną grupą zainteresowań, która utrzymuje oficjalną specyfikację USB, specyfikacje testowe i narzędzia.

Formaty audio

Sterownik obsługuje formaty wymienione tutaj. Ustawienie alternatywne, które określa inny format zdefiniowany w formacie FMT-2 lub nieznanym formacie, jest ignorowane.

Formaty typu I (FMT-2 2.3.1):

  • Format PCM z 8,32 bitami na próbkę (FMT-2 2 2.3.1.7.1)
  • Format PCM8 (FMT-2 2.3.1.7.2)
  • format IEEE_FLOAT (FMT-2 2.3.1.7.3)

Formaty TYPU III (FMT-2 2.3.3 i A.2.3):

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

Opisy funkcji

W tej sekcji opisano funkcje sterownika AUDIO USB 2.0.

Topologia funkcji audio

Sterownik obsługuje wszystkie typy jednostek zdefiniowane w usłudze ADC-2 3.13.

Każda jednostka terminalu musi mieć prawidłowe połączenie zegara w zgodnym sprzęcie USB Audio 2.0. Ścieżka zegara opcjonalnie zawiera jednostki mnożnika zegara i selektora zegara i muszą kończyć się jednostką źródłową zegara.

Sterownik obsługuje tylko jedno źródło zegara. Jeśli urządzenie implementuje wiele jednostek źródłowych zegara i selektor zegara, sterownik używa źródła zegara wybranego domyślnie. Nie modyfikuje położenia selektora zegara.

Jednostka przetwarzania (ADC-2 3.13.9) z więcej niż jednym wejściem nie jest obsługiwana.

Jednostka rozszerzenia (ADC-2 3.13.10) z więcej niż jednym numerem PIN wejściowym nie jest obsługiwana.

Ścieżki cykliczne w topologii nie są dozwolone.

Przesyłanie strumieniowe dźwięku

Sterownik obsługuje następujące typy synchronizacji punktów końcowych (USB-2 5.12.4.1):

  • Asynchroniczne IN i OUT
  • Synchroniczne wejście i wyjście
  • Adaptacyjne wejście/wyjście

W przypadku asynchronicznego przypadku OUT sterownik obsługuje tylko jawną informację zwrotną. Punkt końcowy opinii musi zostać zaimplementowany w odpowiednim alternatywnym ustawieniu interfejsu AS. Sterownik nie obsługuje niejawnych opinii.

Obecnie istnieje ograniczona obsługa urządzeń korzystających z zegara udostępnionego dla wielu punktów końcowych.

W przypadku funkcji Adaptive IN sterownik nie obsługuje punktu końcowego typu feedforward. Jeśli taki punkt końcowy znajduje się w ustawieniu alternatywnym, sterownik go ignoruje. Sterownik obsługuje strumień Adaptive IN w taki sam sposób, jak asynchroniczny strumień IN.

Rozmiar pakietów izochronicznych utworzonych przez urządzenie musi mieścić się w granicach określonych w sekcji FMT-2.0 2.3.1.1. To wymaganie oznacza, że odchylenie rzeczywistego rozmiaru pakietu z rozmiaru nominalnego nie może przekraczać +/- jednego gniazda audio. Gniazdo audio = przykłady liczby kanałów.

Deskryptory

Funkcja audio musi implementować dokładnie jeden deskryptor interfejsu AudioControl (ADC-2 4.7) i co najmniej jeden deskryptor interfejsu AudioStreaming (ADC-2 4.9). Funkcja z interfejsem sterowania audio, ale bez interfejsu przesyłania strumieniowego, nie jest obsługiwana.

Sterownik obsługuje wszystkie typy deskryptorów zdefiniowane w ADC-2, sekcja 4. W poniższych sekcjach zamieszczono komentarze dotyczące niektórych typów deskryptorów.

Opis deskryptora interfejsu Class-Specific AS

Aby uzyskać szczegółowe informacje na temat tej specyfikacji, zobacz ADC-2 4.9.2.

Deskryptor interfejsu AS musi zaczynać się od alternatywnego ustawienia zero bez punktu końcowego (bez użycia przepustowości). Dalsze ustawienia alternatywne muszą być określone w kolejności rosnącej w zgodnym sprzęcie USB Audio 2.0.

Alternatywne ustawienie z formatem, którego sterownik nie obsługuje, jest ignorowane.

Każde niezerowe alternatywne ustawienie musi określać izochroniczny punkt końcowy danych, a opcjonalnie punkt końcowy sprzężenia zwrotnego. Niezerowe ustawienie alternatywne bez żadnego punktu końcowego nie jest obsługiwane.

Pole bTerminalLink musi przedstawiać jednostkę terminalową w topologii. Jego wartość musi być identyczna we wszystkich alternatywnych ustawieniach interfejsu AS.

Pole bFormatType w deskryptorze interfejsu AS musi być identyczne z typem bFormatType określonym w deskryptorze typów formatu (FMT-2 2.3.1.6).

W przypadku formatów typu I należy ustawić dokładnie jeden bit na jeden w polu bmFormats deskryptora interfejsu AS. W przeciwnym razie sterownik ignoruje format.

Aby zaoszczędzić przepustowość magistrali, jeden interfejs AS może zaimplementować wiele alternatywnych ustawień o tym samym formacie (pod względem bNrChannels i AS Format Type Descriptor), ale różne wartości wMaxPacketSize w deskryptorze izochronicznego punktu końcowego danych. Dla częstotliwości próbkowania sterownik wybiera ustawienie alternatywne z najmniejszym wMaxPacketSize, które spełnia wymagania dotyczące przepustowości danych.

Deskryptor typu formatu I

Aby uzyskać szczegółowe informacje na temat tej specyfikacji, zobacz FMT-2 2.3.1.6.

Obowiązują następujące ograniczenia:

Forma Rozmiar podslotu Rozdzielczość bitów
Typ I format PCM: 1 <= bSubslotSize <= 4 8 <= bBitResolution <= 32
Typ I PCM8 format: bSubslotSize == 1 bBitResolution == 8
Typ I format IEEE_FLOAT bSubslotSize == 4 bBitResolution == 32
Formaty typu III IEC61937 bSubslotSize == 2 bBitResolution == 16

Deskryptor końcowy danych audio izochronicznych specyficzny dla klasy AS

Aby uzyskać szczegółowe informacje na temat tej specyfikacji, zobacz ADC-2 4.10.1.2.

Flaga MaxPacketsOnly w polu bmAttributes nie jest obsługiwana i jest ignorowana.

Pola bmControls, bLockDelayUnits i wLockDelay są ignorowane.

Żądania klasy i komunikaty o przerwaniu działania danych

Sterownik obsługuje podzestaw żądań kontroli zdefiniowanych w ADC-2, sekcja 5.2. Obsługuje komunikaty o przerwaniu działania danych (ADC-2 6.1) dla niektórych kontrolek. W poniższej tabeli przedstawiono podzestaw zaimplementowany w sterowniku.

Jednostka Kontrola POBIERZ CUR SET CUR POBIERZ ZAKRES PRZERWANIE
Źródło zegara Kontrolka częstotliwości próbkowania x x x
Selektor zegara Kontrolka selektora zegara x
Mnożnik zegara Kontrolka licznika x
Kontrola Mianownika x
Terminal Kontrolka łącznika x x
Jednostka miksera Kontrolka miksera x x x
Jednostka selektora Kontrolka selektora x x
Jednostka funkcji Wycisz kontrolkę x x x
Sterowanie głośnością x x x x
Automatyczna kontrola przyrostka x x
Jednostka efektu
Jednostka przetwarzania
Jednostka rozszerzenia

Dodatkowe informacje na temat kontrolek i żądań są dostępne w poniższych sekcjach.

Jednostka źródła zegara

Aby uzyskać szczegółowe informacje na temat tej specyfikacji, zobacz ADC-2 5.2.5.1.

Co najmniej jednostka źródłowa zegara musi zaimplementować kontrolę częstotliwości próbkowania GET RANGE i GET CUR żądań (ADC-2 5.2.5.1.1) w zgodnym sprzęcie USB Audio 2.0.

Żądanie GET RANGE kontrolki częstotliwości próbkowania zwraca listę podgrup (ADC-2 5.2.1). Każda podgrupa opisuje dyskretną częstotliwość lub zakres częstotliwości. Częstotliwość próbkowania dyskretnego musi być wyrażona przez ustawienie pól MIN i MAX na odpowiednią częstotliwość i wartość RES na zero. Poszczególne podzestawy nie mogą się nakładać. Jeśli podzakres nakłada się na poprzedni podzakres, sterownik go ignoruje.

Jednostka źródłowa zegara, która implementuje jedną stałą częstotliwość, nie musi implementować kontroli częstotliwości próbkowania SET CUR. Implementuje metodę GET CUR, która zwraca stałą częstotliwość. Implementuje również metodę GET RANGE, która zgłasza jedną dyskretną częstotliwość.

Jednostka selektora zegara

Aby uzyskać szczegółowe informacje na temat tej specyfikacji, zobacz ADC-2 5.2.5.2.

Sterownik USB Audio 2.0 nie obsługuje wyboru zegara. Sterownik używa jednostki źródłowej zegara, która jest domyślnie wybrana i nigdy nie wysyła żądania SET CUR selektora zegara. Kontrola wyboru zegara żądania GET CUR (ADC-2 5.2.5.2.1) musi być zaimplementowana w zgodnym sprzęcie USB Audio 2.0.

Jednostka funkcji

Aby uzyskać szczegółowe informacje na temat tej specyfikacji, zobacz ADC-2 5.2.5.7.

Sterownik obsługuje tylko jeden zakres głośności. Jeśli żądanie GET RANGE sterowania woluminem zwraca więcej niż jeden zakres, sterownik ignoruje kolejne zakresy.

Interwał woluminu wyrażony przez pola MIN i MAX powinien być całkowitą wielokrotnością rozmiaru kroku określonego w polu RES.

Jeśli jednostka funkcji implementuje kontrolki pojedynczego kanału i podstawową kontrolkę dla wyciszenia lub głośności, sterownik używa kontrolek pojedynczego kanału i ignoruje kontrolkę podstawową.

Dodatkowe informacje dla producentów sprzętu

Producenci sprzętu powinni przetestować istniejące i nowe urządzenia pod kątem dostarczonego sterownika.

Nie ma żadnych dostosowań partnerskich skojarzonych z dostarczonym sterownikiem USB Audio 2.0.

Ten wpis pliku INF, który jest udostępniany w aktualizacji systemu Windows Release 1703, służy do identyfikowania, że sterownik w pudełku jest ogólnym sterownikiem urządzenia.

GenericDriverInstalled,,,,1

Wbudowany sterownik rejestruje następujące zgodne identyfikatory w 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

Zobacz specyfikację audio USB 2.0 dla typów podklas.

Urządzenia USB 2.0 dźwięku z funkcją MIDI (podklasa 0x03 powyżej) wyodrębniają funkcję MIDI jako osobne urządzenie wielofunkcyjne po załadowaniu sterownika usbaudio.sys (sterownik USB Audio 1.0).

Sterownik klasy Audio 1.0 USB rejestruje ten zgodny identyfikator z wdma_usb.inf.

USB\Class_01

I ma następujące wykluczenia:

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

Ze względu na ograniczenie stosu audio systemu Windows dowolna liczba kanałów, większa niż osiem, nie jest obsługiwana w trybie udostępnionym.

Sterowniki i aktualizacje IHV USB Audio 2.0

W przypadku sterowników IHV USB Audio 2.0 sterowniki te nadal są preferowane dla swoich urządzeń nad sterownikiem wbudowanym firmy Microsoft, chyba że zaktualizują sterownik, aby jawnie zastąpić to zachowanie i użyć sterownika wbudowanego.

Opisy rejestru jack audio

Począwszy od systemu Windows 10 w wersji 1703, producenci IHV, którzy tworzą urządzenia USB Audio Class 2.0 z co najmniej jednym gniazdem, mają możliwość opisania tych gniazd wbudowanemu sterownikowi klasy audio 2.0. Wbudowany sterownik używa podanych informacji o gnieździe podczas obsługi KSPROPERTY_JACK_DESCRIPTION dla tego urządzenia.

Informacje o Jacku są przechowywane w rejestrze w kluczu wystąpienia urządzenia (klucz HW).

Poniższa lista zawiera opis ustawień informacji o jacku audio w rejestrze:

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> = identyfikator terminalu, zgodnie z definicją w deskryptorze
  • <n> = numer jacka (1 ~ n)

Konwencja dla <tid> i <n> jest:

  • Podstawa 10 (8, 9, 10, a nie 8, 9, a)
  • Brak zer wiodących
  • n zaczyna się od 1 (pierwszy jack to jack 1, a nie jack 0)

Przykład: T1_NrJacks, T1_J2_ChannelMapping, T1_J2_ConnectorType

Aby uzyskać więcej informacji o jacku audio, zobacz KSJACK_DESCRIPTION struktura.

Te wartości rejestru można ustawić na różne sposoby:

  • Za pomocą niestandardowych plików INF, które opakowuje wbudowane elementy INF w celu ustawienia tych wartości.
  • Bezpośrednio przez urządzenie sprzętowe przy użyciu deskryptora systemu operacyjnego Microsoft dla urządzeń USB, jak w przykładzie w następnej sekcji. Aby uzyskać więcej informacji, zobacz Deskryptory systemu operacyjnego Microsoft dla urządzeń USB.

Deskryptory systemu operacyjnego Microsoft dla przykładu USB

Poniższe deskryptory systemu operacyjnego Microsoft dla przykładu USB zawierają mapowanie kanału oraz kolor dla jednego portu. Przykład dotyczy urządzenia niebędącego kompozycją z deskryptorem pojedynczej funkcji.

Dostawca IHV powinien rozszerzyć go tak, aby zawierał wszelkie inne informacje dotyczące opisu gniazda.

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 }

Rozwiązywanie problemów

Jeśli sterownik nie zostanie uruchomiony, sprawdź dziennik zdarzeń systemu. Zdarzenia dzienników sterowników mogą wskazywać przyczynę błędu. Możesz ręcznie zbierać logi zgodnie z opisem w temacie Zbieranie logów audio w tradycyjny sposób. Jeśli błąd może wskazywać na problem ze sterownikiem, zgłoś go przy użyciu centrum opinii opisanego tutaj i dołącz dzienniki.

Aby uzyskać informacje na temat odczytywania dzienników sterownika klasy AUDIO 2.0 USB przy użyciu dodatkowych plików TMF, zobacz Zgłaszanie problemów z dziennikami i sugerowanie funkcji za pomocą centrum opinii. Aby uzyskać ogólne informacje na temat pracy z plikami TMF, zobacz Wyświetlanie dziennika śledzenia z plikiem TMF.

Aby uzyskać informacje na temat usług audio, które nie odpowiadają , a urządzenie audio USB nie działa w systemie Windows 10 w wersji 1703, zobacz USB Audio Not Playing (Nie odtwarzane audio USB).

Centrum opinii

Jeśli wystąpi problem z tym sterownikiem, zbierz dzienniki audio, a następnie wykonaj kroki opisane w temacie Zgłoś problemy, dołącz dzienniki i zasugeruj funkcje w Centrum Opinii.

Opracowywanie sterowników

Thesycon opracował ten sterownik klasy USB Audio 2.0. Firma Microsoft ją obsługuje.