Bagikan melalui


Driver USB Audio 2.0

Dimulai dengan Windows 10, rilis 1703, driver USB Audio 2.0 dikirim dengan Windows. Ini dirancang untuk mendukung kelas perangkat USB Audio 2.0. Driver adalah miniport kelas port audio WaveRT.

Driver diberi nama: usbaudio2.sys dan file inf terkait adalah usbaudio2.inf.

Driver akan mengidentifikasi di manajer perangkat sebagai "Perangkat Usb Audio Kelas 2". Nama ini akan ditimpa dengan string produk USB, jika tersedia.

Pengandar diaktifkan secara otomatis ketika perangkat yang kompatibel dilampirkan ke sistem. Namun, jika driver pihak ketiga ada pada sistem atau Windows Update, driver tersebut akan diinstal dan mengambil alih driver kelas.

Arsitektur

Driver usbaudio2.sys cocok dalam arsitektur Windows USB Audio yang lebih luas seperti yang ditunjukkan.

Diagram tumpukan yang mengilustrasikan arsitektur Windows USB Audio dengan ks.sys di bagian atas dan perangkat Audio USB di bagian bawah.

Spesifikasi USB berikut menentukan USB Audio dan dirujuk dalam artikel ini.

  • USB-2 mengacu pada Spesifikasi Universal Serial Bus, Revisi 2.0
  • ADC-2 mengacu pada Definisi Kelas Perangkat USB untuk Perangkat Audio, Rilis 2.0.
  • FMT-2 mengacu pada spesifikasi Format Data Audio, Rilis 2.0.

USB-IF adalah kelompok minat khusus yang mempertahankan Spesifikasi USB Resmi, spesifikasi dan alat pengujian.

Format audio

Driver mendukung format yang tercantum di bawah ini. Pengaturan alternatif, yang menentukan format lain yang ditentukan dalam FMT-2, atau format yang tidak diketahui, akan diabaikan.

Format Tipe I (FMT-2 2.3.1):

  • Format PCM dengan 8..32 bit per sampel (FMT-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)

Format Tipe III (FMT-2 2.3.3 dan A.2.3):

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

Deskripsi fitur

Bagian ini menjelaskan fitur driver USB Audio 2.0.

Topologi fungsi audio

Driver mendukung semua jenis entitas yang ditentukan dalam ADC-2 3.13.

Setiap Entitas Terminal harus memiliki koneksi jam yang valid dalam perangkat keras USB Audio 2.0 yang kompatibel. Jalur jam dapat secara opsional menyertakan unit Pengali Jam dan Pemilih Jam dan harus berakhir di Entitas Sumber Jam.

Driver hanya mendukung satu sumber jam tunggal. Jika perangkat menerapkan beberapa entitas sumber jam dan pemilih jam, maka driver akan menggunakan sumber jam yang dipilih secara default dan tidak akan mengubah posisi pemilih jam.

Unit Pemrosesan (ADC-2 3.13.9) dengan lebih dari satu pin input tidak didukung.

Unit Ekstensi (ADC-2 3.13.10) dengan lebih dari satu pin input tidak didukung.

Jalur siklik dalam topologi tidak diizinkan.

Streaming audio

Driver mendukung jenis sinkronisasi titik akhir berikut (USB-2 5.12.4.1):

  • IN dan OUT Asinkron
  • IN dan OUT Sinkron
  • IN dan OUT adaptif

Untuk kasus OUT asinkron, driver hanya mendukung umpan balik eksplisit. Titik akhir umpan balik harus diimplementasikan dalam pengaturan alternatif masing-masing antarmuka AS. Driver tidak mendukung umpan balik implisit.

Saat ini ada dukungan terbatas untuk perangkat yang menggunakan jam bersama untuk beberapa titik akhir.

Untuk Adaptive IN jika driver tidak mendukung titik akhir penerusan umpan. Jika titik akhir seperti itu ada di pengaturan alternatif, titik akhir tersebut akan diabaikan. Driver menangani aliran IN Adaptif dengan cara yang sama seperti aliran IN Asinkron.

Ukuran paket isochronous yang dibuat oleh perangkat harus berada dalam batas yang ditentukan dalam bagian FMT-2.0 2.3.1.1. Ini berarti bahwa penyimpangan ukuran paket aktual dari ukuran nominal tidak boleh melebihi +/- satu slot audio (slot audio = sampel jumlah saluran).

Deskriptor

Fungsi audio harus mengimplementasikan satu Deskriptor Antarmuka AudioControl (ADC-2 4.7) dan satu atau beberapa Deskriptor Antarmuka AudioStreaming (ADC-2 4.9). Fungsi dengan antarmuka kontrol audio tetapi tidak ada antarmuka streaming yang tidak didukung.

Driver mendukung semua jenis deskriptor yang ditentukan dalam ADC-2, bagian 4. Sub-bagian berikut memberikan komentar pada beberapa jenis deskriptor tertentu.

Class-Specific deskriptor antarmuka AS

Untuk detail tentang spesifikasi ini, lihat ADC-2 4.9.2.

Deskriptor antarmuka AS harus dimulai dengan pengaturan alternatif nol tanpa titik akhir (tanpa konsumsi bandwidth) dan pengaturan alternatif lebih lanjut harus ditentukan dalam urutan naik dalam perangkat keras USB Audio 2.0 yang kompatibel.

Pengaturan alternatif dengan format yang tidak didukung oleh driver akan diabaikan.

Setiap pengaturan alternatif bukan nol harus menentukan titik akhir data isochronous, dan secara opsional titik akhir umpan balik. Pengaturan alternatif bukan nol tanpa titik akhir apa pun tidak didukung.

Bidang bTerminalLink harus merujuk ke Entitas Terminal dalam topologi dan nilainya harus identik di semua pengaturan alternatif antarmuka AS.

Bidang bFormatType di deskriptor antarmuka AS harus identik dengan bFormatType yang ditentukan dalam Format Type Descriptor (FMT-2 2.3.1.6).

Untuk format Tipe I, tepat satu bit harus diatur ke satu di bidang bmFormats dari deskriptor antarmuka AS. Jika tidak, format akan diabaikan oleh driver.

Untuk menyimpan bandwidth bus, satu antarmuka AS dapat menerapkan beberapa pengaturan alternatif dengan format yang sama (dalam hal bNrChannels dan Deskriptor Jenis Format AS) tetapi nilai wMaxPacketSize yang berbeda dalam deskriptor titik akhir data isochronous. Untuk laju sampel tertentu, driver memilih pengaturan alternatif dengan wMaxPacketSize terkecil yang dapat memenuhi persyaratan laju data.

Deskriptor tipe format Tipe I

Untuk detail tentang spesifikasi ini, lihat FMT-2 2.3.1.6.

Pembatasan berikut berlaku:

Format Ukuran subslot Resolusi bit
Format PCM Tipe I: 1 <= bSubslotSize <= 4 8 <= bBitResolution <= 32
Format PCM8 Tipe I: bSubslotSize == 1 bBitResolution == 8
Format IEEE_FLOAT Tipe I: bSubslotSize == 4 bBitResolution == 32
Format IEC61937 tipe III: bSubslotSize == 2 bBitResolution == 16

Class-Specific deskriptor titik akhir data audio isochronous AS

Untuk detail tentang spesifikasi ini, lihat ADC-2 4.10.1.2.

Bendera MaxPacketsOnly di bidang bmAttributes tidak didukung dan akan diabaikan.

Bidang bmControls, bLockDelayUnits, dan wLockDelay akan diabaikan.

Permintaan kelas dan pesan data interupsi

Driver mendukung subset permintaan kontrol yang ditentukan dalam ADC-2, bagian 5.2, dan mendukung pesan data interupsi (ADC-2 6.1) untuk beberapa kontrol. Tabel berikut ini memperlihatkan subset yang diimplementasikan dalam driver.

Entitas Kontrol DAPATKAN CUR ATUR CUR DAPATKAN RENTANG MENGGANGGU
Sumber Jam Kontrol Frekuensi Pengambilan Sampel x x x
Pemilih Jam Kontrol Pemilih Jam x
Pengali Jam Kontrol Pembiasa x
Kontrol Denominator x
Terminal Kontrol Konektor x x
Mixer Unit Kontrol Mixer x x x
Unit Pemilih Kontrol Pemilih x x
Unit Fitur Kontrol Matikan Suara x x x
Kontrol Volume x x x x
Kontrol Perolehan Otomatis x x
Unit Efek
Unit Pemrosesan
Unit Ekstensi

Informasi tambahan tentang kontrol dan permintaan tersedia dalam sub-bagian berikut.

Entitas sumber jam

Untuk detail tentang spesifikasi ini, lihat ADC-2 5.2.5.1.

Minimal, Entitas Sumber Jam harus menerapkan permintaan GET RANGE Kontrol Frekuensi Pengambilan Sampel dan GET CUR (ADC-2 5.2.5.1.1) dalam perangkat keras USB Audio 2.0 yang kompatibel.

Permintaan GET RANGE Kontrol Frekuensi Pengambilan Sampel mengembalikan daftar subranges (ADC-2 5.2.1). Setiap subrange menjelaskan frekuensi diskrit, atau rentang frekuensi. Frekuensi pengambilan sampel diskrit harus dinyatakan dengan mengatur bidang MIN dan MAX ke frekuensi masing-masing dan RES ke nol. Subrang individu tidak boleh tumpang tindih. Jika subrange tumpang tindih dengan yang sebelumnya, subrange akan diabaikan oleh driver.

Entitas Sumber Jam yang mengimplementasikan satu frekuensi tetap tunggal saja tidak perlu menerapkan Sampling Frequency Control SET CUR. Ini mengimplementasikan GET CUR, yang mengembalikan frekuensi tetap, dan mengimplementasikan GET RANGE, yang melaporkan satu frekuensi diskrit tunggal.

Entitas pemilih jam

Untuk detail tentang spesifikasi ini, lihat ADC-2 5.2.5.2

Driver USB Audio 2.0 tidak mendukung pemilihan jam. Driver menggunakan Entitas Sumber Jam, yang dipilih secara default dan tidak pernah mengeluarkan permintaan Clock Selector Control SET CUR. Permintaan CLOCK Selector Control GET CUR (ADC-2 5.2.5.2.1) harus diimplementasikan dalam perangkat keras USB Audio 2.0 yang kompatibel.

Unit fitur

Untuk detail tentang spesifikasi ini, lihat ADC-2 5.2.5.7.

Driver hanya mendukung satu rentang volume tunggal. Jika permintaan GET RANGE Kontrol Volume mengembalikan lebih dari satu rentang, maka rentang berikutnya akan diabaikan.

Interval volume yang dinyatakan oleh bidang MIN dan MAX harus merupakan kelipatan bilangan bulat dari ukuran langkah yang ditentukan di bidang RES.

Jika unit fitur mengimplementasikan kontrol saluran tunggal dan kontrol master untuk Bisu atau Volume, maka driver menggunakan kontrol saluran tunggal dan mengabaikan kontrol master.

Informasi Tambahan untuk OEM dan IHV

OEM dan IHV harus menguji perangkat yang ada dan baru terhadap driver dalam kotak yang disediakan.

Tidak ada kustomisasi mitra tertentu yang terkait dengan driver USB Audio 2.0 dalam kotak.

Entri file INF ini (disediakan dalam pembaruan untuk Windows Release 1703), digunakan untuk mengidentifikasi bahwa driver dalam kotak adalah driver perangkat generik.

GenericDriverInstalled,,,,1

Driver dalam kotak mendaftar untuk ID yang kompatibel berikut dengan 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

Lihat spesifikasi USB Audio 2.0 untuk jenis subkelas.

Perangkat USB Audio 2.0 dengan MIDI (subkelas 0x03 di atas) akan menghitung fungsi MIDI sebagai perangkat multifungsi terpisah dengan usbaudio.sys (driver USB Audio 1.0) dimuat.

Driver kelas USB Audio 1.0 mendaftarkan ID yang kompatibel ini dengan wdma_usb.inf.

USB\Class_01

Dan memiliki pengecualian ini:

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

Jumlah saluran arbitrer (lebih dari delapan) tidak didukung dalam mode bersama karena keterbatasan tumpukan audio Windows.

Driver dan pembaruan IHV USB Audio 2.0

Untuk driver pihak ketiga yang disediakan IHV USB Audio 2.0 driver, driver tersebut akan terus disukai untuk perangkat mereka daripada driver dalam kotak kami kecuali mereka memperbarui driver mereka untuk secara eksplisit mengambil alih perilaku ini dan menggunakan driver dalam kotak.

Deskripsi Audio Jack Registry

Mulai Windows 10 rilis 1703, IHV yang membuat perangkat USB Audio Class 2.0 memiliki satu atau beberapa jack memiliki kemampuan untuk menggambarkan jack ini ke driver Audio Class 2.0 dalam kotak. Driver dalam kotak menggunakan informasi jack yang disediakan saat menangani KSPROPERTY_JACK_DESCRIPTION untuk perangkat ini.

Informasi jack disimpan dalam registri di kunci instans perangkat (kunci HW).

Berikut ini menjelaskan pengaturan informasi jack audio di registri:

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> = ID terminal (Seperti yang didefinisikan dalam deskriptor)

<n> = Nomor jack (1 ~ n).

Konvensi untuk <tid> dan <n> adalah:

  • Basis 10 (8, 9, 10 daripada 8, 9, a)
  • Tidak ada nol di depan
  • n berbasis 1 (jack pertama adalah jack 1 daripada jack 0)

Contohnya:

T1_NrJacks, T1_J2_ChannelMapping, T1_J2_ConnectorType

Untuk informasi jack audio lainnya, lihat struktur KSJACK_DESCRIPTION.

Nilai registri ini dapat diatur dengan berbagai cara:

  • Dengan menggunakan INF kustom, yang membungkus INF dalam kotak untuk tujuan mengatur nilai-nilai ini.

  • Langsung oleh perangkat keras melalui Microsoft OS Descriptor untuk perangkat USB (lihat contoh di bawah). Untuk informasi selengkapnya tentang membuat deskriptor ini, lihat Deskriptor OS Microsoft untuk Perangkat USB.

Contoh Deskriptor OS Microsoft untuk USB

Contoh Microsoft OS Descriptors untuk USB berikut berisi pemetaan dan warna saluran untuk satu jack. Contohnya adalah untuk perangkat non-komposit dengan deskriptor fitur tunggal.

Vendor IHV harus memperluasnya untuk berisi informasi lain untuk deskripsi jack.

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 }

Pemecahan Masalah

Jika driver tidak dimulai, log peristiwa sistem harus diperiksa. Driver mencatat peristiwa yang menunjukkan alasan kegagalan. Demikian pula, log audio dapat dikumpulkan secara manual mengikuti langkah-langkah yang dijelaskan dalam artikel log web Matthew van Eerde, Mengumpulkan log audio dengan cara kuno. Jika kegagalan dapat menunjukkan masalah driver, laporkan menggunakan Hub Umpan Balik yang dijelaskan di bawah ini, dan sertakan log.

Untuk informasi tentang cara membaca log untuk driver kelas USB Audio 2.0 menggunakan file TMF tambahan, lihat Melaporkan masalah, dengan log, dan menyarankan fitur, dengan Hub Umpan Balik pada log web Matthew van Eerde. Untuk informasi umum tentang bekerja dengan file TMF, lihat Menampilkan Log Jejak dengan File TMF.

Untuk informasi tentang kesalahan "Layanan audio tidak merespons" dan perangkat Audio USB tidak berfungsi di Windows 10 versi 1703 lihat, USB Audio Tidak Diputar.

Hub Tanggapan

Jika Anda mengalami masalah dengan driver ini, kumpulkan log audio lalu ikuti langkah-langkah yang diuraikan dalam Laporkan masalah, dengan log, dan sarankan fitur, dengan Hub Umpan Balik untuk menarik perhatian kami.

Pengembangan driver

Driver kelas USB Audio 2.0 ini dikembangkan oleh Thesycon dan didukung oleh Microsoft.

Lihat juga