次の方法で共有


USB Audio 2.0 ドライバー

Windows 10 リリース 1703 以降では、USB Audio 2.0 ドライバーが Windows に付属しています。 USB Audio 2.0 デバイス クラスをサポートするように設計されています。 ドライバーは、WaveRT オーディオ ポート クラス ミニポートです。

ドライバーには、usbaudio2.sysという名前が けられています。 関連情報 (INF) ファイルは usbaudio2.inf です

ドライバーは、 USB オーディオ クラス 2 デバイスとしてデバイス マネージャーで識別します。 この名前は、USB 製品文字列 (使用可能な場合) で上書きされます。

互換性のあるデバイスがシステムに接続されている場合、ドライバーは有効になります。 パートナー ドライバーがシステムまたは Windows Update に存在する場合、そのドライバーがインストールされ、クラス ドライバーがオーバーライドされます。

アーキテクチャ

usbaudio2.sys ドライバーは、次に示すように、Windows USB オーディオのより広いアーキテクチャ内に収まります。

上部に ks.sys、下部に USB オーディオ デバイスがある Windows 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 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 ハードウェアで有効なクロック接続が必要です。 クロック パスには必要に応じて、クロック乗数とクロック セレクターの単位が含まれており、クロック ソース エンティティで終わる必要があります。

ドライバーは、1 つのクロック ソースのみをサポートします。 デバイスが複数のクロック ソース エンティティとクロック セレクターを実装している場合、ドライバーは既定で選択されているクロック ソースを使用します。 クロック セレクターの位置は変更されません。

入力ピンが複数ある処理装置 (ADC-2 3.13.9) はサポートされていません。

複数の入力ピンを備えた拡張ユニット (ADC-2 3.13.10) はサポートされていません。

トポロジ内の循環パスは許可されません。

オーディオ ストリーミング

ドライバーは、次のエンドポイント同期の種類 (USB-2 5.12.4.1) をサポートしています。

  • 非同期インおよびアウト
  • 同期入力と出力
  • 適応型入出力

非同期 OUT の場合、ドライバーは明示的なフィードバックのみをサポートします。 フィードバック エンドポイントは、AS インターフェイスのそれぞれの代替設定に実装する必要があります。 ドライバーは暗黙的なフィードバックをサポートしていません。

現在、複数のエンドポイントで共有クロックを使用するデバイスのサポートは制限されています。

アダプティブ IN の場合、ドライバーはフィード転送エンドポイントをサポートしていません。 このようなエンドポイントが代替設定に存在する場合、ドライバーはそれを無視します。 ドライバーは、非同期 IN ストリームと同じ方法でアダプティブ IN ストリームを処理します。

デバイスによって作成される等時性パケットのサイズは、FMT-2.0 セクション 2.3.1.1 で指定されている制限内にある必要があります。 この要件は、標準サイズからの実際のパケット サイズの偏差が、+/- 1 つのオーディオ スロットを超えてはならないことを意味します。 オーディオ スロット = チャネル数のサンプル。

記述子

オーディオ関数は、1 つの AudioControl インターフェイス記述子 (ADC-2 4.7) と 1 つ以上の AudioStreaming インターフェイス記述子 (ADC-2 4.9) を実装する必要があります。 オーディオ コントロール インターフェイスを持つ関数が、ストリーミング インターフェイスを持たない関数はサポートされていません。

ドライバーは、ADC-2、セクション 4 で定義されているすべての記述子の種類をサポートしています。 次のセクションでは、一部の記述子の種類に関するコメントを示します。

Class-Specific AS インターフェース記述子

この仕様の詳細については、ADC-2 4.9.2 を参照してください。

AS インターフェイス記述子は、エンドポイントのない代替設定 0 で始まる必要があります (帯域幅消費なし)。 互換性のある USB Audio 2.0 ハードウェアでは、代替設定を昇順で指定する必要があります。

ドライバーがサポートしていない形式の代替設定は無視されます。

0 以外の各代替設定では、等時性データ エンドポイントと、必要に応じてフィードバック エンドポイントを指定する必要があります。 エンドポイントのない 0 以外の代替設定はサポートされていません。

bTerminalLink フィールドには、トポロジ内のターミナル エンティティが表示されている必要があります。 その値は、AS インターフェイスのすべての代替設定で同じである必要があります。

AS インターフェイス記述子の bFormatType フィールドは、フォーマット型記述子 (FMT-2 2.3.1.6) で指定された bFormatType と同じである必要があります。

タイプ I 形式の場合、AS インターフェイス記述子の bmFormats フィールドに 1 ビットを設定する必要があります。 それ以外の場合、ドライバーは形式を無視します。

バス帯域幅を節約するために、1 つの AS インターフェイスは、同じ形式 (bNrChannels と AS 形式型記述子の観点から) を持つ複数の代替設定を実装できますが、等時性データ エンドポイント記述子には異なる wMaxPacketSize 値を実装できます。 サンプル レートの場合、ドライバーは、データ レート要件を満たすことができる最小の wMaxPacketSize で代替設定を選択します。

Type 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
タイプIII IEC61937形式: bSubslotSize == 2 bBitResolution == 16

クラス固有の AS 等時性オーディオ データ エンドポイント記述子

この仕様の詳細については、ADC-2 4.10.1.2 を参照してください。

bmAttributes フィールドの MaxPacketsOnly フラグはサポートされておらず、無視されます。

フィールド bmControls、bLockDelayUnits、および wLockDelay は無視されます。

クラス要求と割り込みデータメッセージ

ドライバーは、ADC-2 セクション 5.2 で定義されている制御要求のサブセットをサポートします。 一部のコントロールでは、割り込みデータ メッセージ (ADC-2 6.1) がサポートされています。 次の表は、ドライバーに実装されているサブセットを示しています。

エンティティ コントロール カレント取得 カレントを設定 範囲の取得 割り込み
クロック ソース サンプリング周波数制御 x x x
クロック セレクター クロック セレクター コントロール x
クロック乗数 分子制御 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 Audio 2.0 ハードウェアにサンプリング周波数制御 GET RANGE 要求と GET CUR 要求 (ADC-2 5.2.5.1.1) を実装する必要があります。

サンプリング周波数制御 GET RANGE 要求は、サブ範囲のリストを返します (ADC-2 5.2.1)。 各サブ範囲は、個別の周波数または周波数範囲を表します。 個別のサンプリング周波数は、MIN フィールドと MAX フィールドをそれぞれの周波数に設定し、RES を 0 に設定して表す必要があります。 個々のサブ範囲は重複してはなりません。 サブ範囲が前の部分範囲と重複している場合、ドライバーはそれを無視します。

1 つの固定周波数のみを実装するクロック ソース エンティティでは、サンプリング周波数制御 SET CUR を実装する必要はありません。 これは、固定周波数を返す GET CUR を実装します。 また、1 つの個別の頻度を報告する GET RANGE も実装します。

クロック セレクター エンティティ

この仕様の詳細については、ADC-2 5.2.5.2 を参照してください。

USB Audio 2.0 ドライバーでは、クロックの選択はサポートされていません。 ドライバーは、既定で選択され、クロック セレクター コントロール SET CUR 要求を発行しないクロック ソース エンティティを使用します。 クロック セレクター コントロール GET CUR 要求 (ADC-2 5.2.5.2.1) は、互換性のある USB Audio 2.0 ハードウェアに実装する必要があります。

機能ユニット

この仕様の詳細については、ADC-2 5.2.5.7 を参照してください。

ドライバーは、1 つのボリューム範囲のみをサポートします。 ボリューム コントロール GET RANGE 要求が複数の範囲を返す場合、ドライバーは後続の範囲を無視します。

MIN フィールドと MAX フィールドで表されるボリューム間隔は、RES フィールドで指定されたステップ サイズの整数倍数である必要があります。

機能ユニットがミュートまたはボリュームの単一チャネル コントロールとプライマリ コントロールを実装している場合、ドライバーは単一チャネル コントロールを使用し、プライマリ コントロールを無視します。

ハードウェア製造元向けの追加情報

ハードウェアの製造元は、付属のインボックス ドライバーに対して既存のデバイスと新しいデバイスをテストする必要があります。

インボックス USB Audio 2.0 ドライバーに関連付けられている特定のパートナーカスタマイズはありません。

この INF ファイル エントリは、Windows リリース 1703 の更新プログラムで提供され、インボックス ドライバーが汎用デバイス ドライバーであることを識別するために使用されます。

GenericDriverInstalled,,,,1

インボックス ドライバーは、usbaudio2.inf と互換性のある次の ID に登録します。

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 DEVICES with MIDI (サブクラス 0x03 上記) は、usbaudio.sys (USB Audio 1.0 ドライバー) が読み込まれた個別のマルチファンクション デバイスとして MIDI 関数を列挙します。

USB Audio 1.0 クラス ドライバーは、この互換性のある ID を 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 オーディオ スタックの制限により、8 を超える任意の数のチャネルは共有モードではサポートされません。

IHV USB Audio 2.0 ドライバーと更新プログラム

IHV が提供するドライバー USB Audio 2.0 ドライバーの場合、これらのドライバーは、この動作を明示的にオーバーライドしてインボックス ドライバーを使用するようにドライバーを更新しない限り、Microsoft インボックス ドライバーよりもデバイスに対して引き続き優先されます。

オーディオ ジャック レジストリの説明

Windows 10 リリース 1703 以降では、1 つ以上のジャックを持つ USB オーディオ クラス 2.0 デバイスを作成する IHV は、これらのジャックをインボックス オーディオ クラス 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> = ターミナル ID (記述子で定義されているとおり)
  • <n> = ジャック番号 (1 ~ n)

<tid>と<nの規則>は次のとおりです。

  • Base 10 (8、9、a ではなく 8、9、10)
  • 先頭にゼロがない
  • nは1基(第1ジャックはジャック0ではなくジャック1)

例: T1_NrJacks, T1_J2_ChannelMapping, T1_J2_ConnectorType

オーディオ ジャックの詳細については、「 KSJACK_DESCRIPTION構造」を参照してください。

これらのレジストリ値は、さまざまな方法で設定できます。

  • これらの値を設定するために、インボックスの INF を包む(ラップする)カスタム INF を使用します。
  • 次のセクションの例のように、USB デバイス用の Microsoft OS 記述子を使用してハードウェア デバイスから直接。 詳細については、 USB デバイスの Microsoft OS 記述子を参照してください。

USB 用 Microsoft OS 記述子の例

USB 用の次の Microsoft OS 記述子の例には、1 つのジャックのチャネル マッピングと色が含まれています。 この例は、1 つの機能記述子を持つ非複合デバイスの場合です。

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 Audio 2.0 クラス ドライバーのログを読み取る方法については、 フィードバック ハブで問題を報告し、ログに関する問題を報告し、機能を提案するを参照してください。 TMF ファイルの操作に関する一般的な情報については、 TMF ファイルを使用したトレース・ログの表示を参照してください。

オーディオ サービスが応答せずWINDOWS 10 バージョン 1703 で USB オーディオ デバイスが動作しない方法については、「USB Audio Not Playing」を参照してください。

フィードバックハブ

このドライバーで問題が発生した場合は、オーディオ ログを収集し、「問題の報告」に記載されている手順に従い 、ログを使用して、フィードバック ハブで機能を提案します

ドライバーの開発

Thesycon は 、この USB Audio 2.0 クラス ドライバーを開発しました。 Microsoft ではサポートされています。