共用方式為


USB 音訊 2.0 驅動程式

從 Windows 10 1703 版開始,USB 音訊 2.0 驅動程式隨附於 Windows。 其設計目的是支援 USB 音訊 2.0 裝置類別。 驅動程式是 WaveRT 音訊埠類別迷你埠。

驅動程式名為: usbaudio2.sys ,且相關聯的 inf 檔案是 usbaudio2.inf

驅動程式會在設備管理器中識別為「USB 音訊類別 2 裝置」。 如果有的話,此名稱將會以USB產品字串覆寫。

當相容的裝置連接至系統時,會自動啟用驅動程式。 不過,如果系統或 Windows Update 上有第三方驅動程式,則會安裝該驅動程式並覆寫類別驅動程式。

架構

usbaudio2.sys 驅動程式適用於更廣泛的 Windows USB 音訊架構,如下所示。

說明 Windows USB 音訊架構的堆疊圖,其 ks.sys 位於頂端和底部的 USB 音訊裝置。

下列 USB 規格會定義 USB 音訊,並在本文中參考。

  • USB-2 是指通用序列總線規格 2.0 版
  • ADC-2 是指音訊裝置的 USB 裝置類別定義 2.0 版。
  • FMT-2是指 2.0 版的音訊數據格式規格。

USB-IF 是維護 官方 USB 規格、測試規格和工具的特殊興趣群組。

自動格式

驅動程式支援下列格式。 替代設定會忽略以 FMT-2 或未知格式定義的另一種格式。

類型 I (FMT-2 2.3.1) :

  • 每個範例 8..32 位的 PCM 格式 (FMT-2 2.3.1.7.1)
  • PCM8 格式 (FMT-2 2.3.1.7.2)
  • IEEE_FLOAT格式 (FMT-2 2.3.1.7.3)

類型 III 格式 (FMT-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 音訊 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
  • 自適性 IN 和 OUT

針對異步 OUT 案例,驅動程式僅支持明確的意見反應。 意見反應端點必須在 AS 介面的個別替代設定中實作。 驅動程式不支援隱含的意見反應。

目前針對多個端點使用共享時鐘的裝置支援有限。

若為自適性 IN,驅動程式不支援摘要轉送端點。 如果這類端點存在於替代設定中,則會忽略它。 驅動程式會以與異步 IN 數據流相同的方式處理 Adaptive IN 數據流。

裝置所建立的異時封包大小必須位於 FMT-2.0 節 2.3.1.1 中指定的限制內。 這表示實際封包大小與標準大小的偏差不得超過 +/- 一個音訊位置 (音訊位置 = 通道計數樣本) 。

描述項

音訊函式必須只實作一個 AudioControl 介面描述元, (ADC-2 4.7) 和一或多個音訊串流介面描述元 (ADC-2 4.9) 。 具有音訊控制件介面但不支援串流介面的函式。

驅動程式支援 ADC-2 第 4 節中定義的所有描述元類型。 下列小節提供某些特定描述元類型的批注。

Class-Specific AS 介面描述元

如需此規格的詳細資訊,請參閱 ADC-2 4.9.2。

AS 介面描述元的開頭必須是無端點的替代設定零, (沒有頻寬耗用量) ,而且必須在相容的 USB 音訊 2.0 硬體中以遞增順序指定進一步的替代設定。

系統會忽略具有驅動程式不支援之格式的替代設定。

每個非零的替代設定都必須指定一個連續的數據端點,並選擇性地指定意見反應端點。 不支援不含任何端點的非零替代設定。

bTerminalLink 字段必須參考拓撲中的終端機實體,而且其值在 AS 介面的所有替代設定中必須相同。

AS 介面描述元中的 bFormatType 欄位必須與格式類型描述元中指定的 bFormatType (FMT-2.3.1.6) 相同。

針對 Type I 格式,必須在 AS 介面描述元的 bmFormats 欄位中,只設定一個位。 否則,驅動程式將會忽略格式。

若要節省總線頻寬,一個 AS 介面可以在 bNrChannels 和 AS 格式類型描述元) 但不同的 wMaxPacketSize 值方面,實作多個格式相同的替代設定 (,但不同 wMaxPacketSize 值在非時序數據端點描述元中。 針對指定的取樣率,驅動程式會選取具有最小 wMaxPacketSize 的替代設定,以符合數據速率需求。

類型 I 格式類型描述元

如需此規格的詳細資訊,請參閱 FMT-2 2.3.1.6。

適用以下限制:

格式 Subslot 大小 位解析度
類型 I PCM 格式: 1 <= bSubslotSize <= 4 8 <= bBitResolution <= 32
類型 I PCM8 格式: bSubslotSize == 1 bBitResolution == 8
輸入 I IEEE_FLOAT 格式: bSubslotSize == 4 bBitResolution == 32
類型 III IEC61937格式: bSubslotSize == 2 bBitResolution == 16

Class-Specific AS 等時音訊數據端點描述元

如需此規格的詳細資訊,請參閱 ADC-2 4.10.1.2。

不支援 bmAttributes 字段中的 MaxPacketsOnly 旗標,而且會被忽略。

將會忽略 bmControls、bLockDelayUnits 和 wLockDelay 字段。

類別要求和中斷數據訊息

驅動程式支援 ADC-2 第 5.2 節中所定義的控件要求子集,並支援某些控件的插斷資料訊息 (ADC-2 6.1) 。 下表顯示驅動程式中實作的子集。

實體 控制 GET CUR SET CUR GET RANGE 中斷
時鐘來源 取樣頻率控制 x x x
時鐘選取器 時鐘選取器控件 x
時鐘乘數 Numerator 控件 x
分母控件 x
終端 連接器控制件 x x
混合器單位 混合器控件 x x x
選取器單位 選取器控件 x x
功能單位 靜音控件 x x x
音量控制 x x x x
自動增益控制 x x
效果單位
處理單位
擴充單位

下列小節提供控制項和要求的其他資訊。

時鐘來源實體

如需此規格的詳細資訊,請參閱 ADC-2 5.2.5.1。

時鐘來源實體至少必須在相容的 USB 音訊 2.0 硬體中 (ADC-2 5.2.5.1.1) 實作取樣頻率控制 GET RANGE 和 GET CUR 要求。

取樣頻率控制 GET RANGE 要求會傳回 ADC-2 5.2.1) (子範圍清單。 每個子範圍都會描述離散頻率或頻率範圍。 離散取樣頻率必須透過將MIN和 MAX字段設定為個別頻率,並將 RES 設定為零來表示。 個別子範圍不得重疊。 如果子範圍與前一個子範圍重疊,驅動程式將會忽略它。

實作單一固定頻率的時鐘來源實體不需要實作取樣頻率控制 SET CUR。 它會實作 GET CUR,它會傳回固定頻率,並實作 GET RANGE,這會報告單一離散頻率。

時鐘選取器實體

如需此規格的詳細資訊,請參閱 ADC-2 5.2.5.2

USB 音訊 2.0 驅動程式不支援時鐘選取。 驅動程式會使用預設選取的時鐘來源實體,而且永遠不會發出時鐘選取器控制 SET CUR 要求。 時鐘選取器控件 GET CUR 要求 (ADC-2 5.2.5.2.1) 必須在相容的 USB 音訊 2.0 硬體中實作。

功能單位

如需此規格的詳細資訊,請參閱 ADC-2 5.2.5.7。

驅動程式僅支援單一磁碟區範圍。 如果音量控制 GET RANGE 要求傳回多個範圍,則會忽略後續的範圍。

MIN 和 MAX欄位所表示的磁碟區間隔應該是 RES 欄位中指定之步驟大小的整數倍數。

如果功能單位實作單一通道控件和靜音或磁碟區的主要控件,則驅動程式會使用單一通道控件並忽略主要控件。

OEM 和 IHV 的其他資訊

OEM 和 IHV 應該針對提供的內建驅動程式測試其現有和新裝置。

沒有任何與內建 USB 音訊 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音訊2.0規格。

上述具有 MIDI (子 0x03類別的 USB 音訊 2.0 裝置,) 會將 MIDI 函式列舉為 usbaudio.sys (USB 音訊 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 音訊 2.0 驅動程式和更新

針對 IHV 提供的第三方驅動程式 USB 音訊 2.0 驅動程式,除非驅動程式更新驅動程式以明確覆寫此行為並使用內建驅動程式,否則這些驅動程式會繼續優先用於其裝置。

音訊 Jack 登錄描述

從 Windows 10 1703 版開始,建立 USB 音訊類別 2.0 裝置的 IHV 具有一或多個插孔的功能,可將這些插孔描述到內建音訊類別 2.0 驅動程式。 當處理此裝置 的KSPROPERTY_JACK_DESCRIPTION 時,內建驅動程式會使用提供的插孔資訊。

Jack 資訊會儲存在裝置實例密鑰的登錄中, (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> = Jack number (1 ~ n) 。

tid> 和 <n> 的<慣例為:

  • 基底 10 (8、9、10 而非 8、9、)
  • 沒有前置零
  • n 是以 1 為基礎的 (第一個插孔是 jack 1,而不是 jack 0)

例如:

T1_NrJacks、T1_J2_ChannelMapping、T1_J2_ConnectorType

如需更多音訊插孔資訊,請參閱 KSJACK_DESCRIPTION 結構

這些登錄值可以透過各種方式設定:

  • 使用自定義 INF 來包裝內建 INF,以便設定這些值。

  • 直接由硬體裝置透過適用於 USB 裝置的 Microsoft OS 描述項 (請參閱下列範例) 。 如需建立這些描述項的詳細資訊,請參閱 適用於USB裝置的 Microsoft OS 描述元

適用於 USB 的 Microsoft OS 描述項範例

下列適用於 USB 的 Microsoft OS 描述元範例包含一個插孔的通道對應和色彩。 此範例適用於具有單一功能描述元的非複合裝置。

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 }

疑難排解

如果驅動程式未啟動,應該檢查系統事件記錄檔。 驅動程式會記錄指出失敗原因的事件。 同樣地,您可以依照以 舊式方式收集音訊記錄一文中說明的步驟手動收集音訊記錄。 如果失敗可能表示驅動程序問題,請使用下面所述的意見反應中樞回報,並包含記錄。

如需如何使用補充TMF檔案讀取USB音訊2.0類別驅動程式的記錄的相關信息,請參閱使用在一般Linux van Eerde 的 Web 記錄中,回報 問題、記錄和建議功能 。 如需使用TMF檔案的一般資訊,請參閱 使用TMF檔案顯示追蹤記錄檔。

如需「音訊服務未回應」錯誤和 USB 音訊裝置無法在 Windows 10 1703 版中運作的資訊,請參閱 USB 音訊未播放

意見反應中樞

如果您遇到此驅動程序的問題,請收集音訊記錄,然後遵循回報 問題、記錄和建議功能中所述的步驟,以及 意見反應中樞以吸引我們注意。

驅動程式開發

此 USB 音訊 2.0 類別驅動程式是由 Thesycon 所開發,由 Microsoft 支援。

另請參閱