Linux/Udevオーディオデバイスの命名ガイドライン

Linux/Udevオーディオデバイスの命名ガイドライン

次のコードが与えられた場合:

  struct udev *udev_obj = udev_new();
  struct udev_enumerate *udev_enum = udev_enumerate_new(udev_obj);
  udev_enumerate_add_match_subsystem(udev_enum, "sound");
  udev_enumerate_scan_devices(udev_enum);

  struct udev_list_entry *udev_entries = udev_enumerate_get_list_entry(udev_enum);
  struct udev_list_entry *udev_entry = NULL;
  udev_list_entry_foreach(udev_entry, udev_entries) {
    printf("%s\n", udev_list_entry_get_name(udev_entry));
  }

私のThinkPad X1 Carbonには外部サウンドペリフェラル出力はありません。

/sys/devices/pci0000:00/0000:00:1f.3/sound/card0
/sys/devices/pci0000:00/0000:00:1f.3/sound/card0/hwC0D0
/sys/devices/pci0000:00/0000:00:1f.3/sound/card0/hwC0D2
/sys/devices/pci0000:00/0000:00:1f.3/sound/card0/pcmC0D0c
/sys/devices/pci0000:00/0000:00:1f.3/sound/card0/pcmC0D0p
/sys/devices/pci0000:00/0000:00:1f.3/sound/card0/pcmC0D10p
/sys/devices/pci0000:00/0000:00:1f.3/sound/card0/pcmC0D3p
/sys/devices/pci0000:00/0000:00:1f.3/sound/card0/pcmC0D7p
/sys/devices/pci0000:00/0000:00:1f.3/sound/card0/pcmC0D8p
/sys/devices/pci0000:00/0000:00:1f.3/sound/card0/pcmC0D9p
/sys/devices/pci0000:00/0000:00:1f.3/sound/card0/controlC0
/sys/devices/virtual/sound/seq
/sys/devices/virtual/sound/timer

私が知っているのは、C0 =カード0、D0 =デバイス0、c =キャプチャ/ p =再生です。しかし:

  1. 違いは何ですかカード0/ハードウェア/pcm/制御/シーケンス/タイマー
  2. カード0、デバイス3、カード0、デバイス7などの奇妙な組み合わせはなぜそんなにたくさんありますか?論理的にプラスワンはないようです。
  3. ここで親デバイスは何ですか?どうやって入手できますかlibudev

ベストアンサー1

1.)

  • card0たとえば、シングルサウンドカード、マザーボード統合サウンドチップ、またはUSBサウンドデバイスには複数の入力と出力があります。
  • hw仮想ファイルは次の目的で使用されます。ハードウェア関連デフォルトでは、サウンドチップまたはその特定の部分に標準のALSAインターフェイスでカバーされていない追加機能がある場合は、これらの仮想ファイルを介してこれらの機能にアクセスできます。
  • pcm仮想ファイルは、サウンドデータの実際の入出力チャンネルです。
  • controlチャンネルは音量設定や同様の「標準」サウンドカード制御に使用されます。
  • seqサウンドカードにMIDIシーケンサー機能がある場合、または外部MIDIインストゥルメント用のMIDIインターフェースまたはtimidityALSAと対話するための同様のソフトウェアシンセサイザーがある場合は、このオプションを使用してください。
  • timerこれは、さまざまなサウンドが調和して再生されるように準備し、他の多くのサウンド関連タスクを実行するときに重要です。したがって、ALSAはオーディオ関連の目的に最適化されたタイマーインターフェースを提供します。

2.)コンピュータのマザーボードを設計する人またはチームだけがこれを決定できます。ただし、最新のHD-Audio互換オーディオチップには、システムファームウェアを介して設定できる多数の入出力があります。おそらくマザーボードの設計者は、各信号が必要な場所(たとえば、サウンドチップの正しい側または他の場所にあります)。

システムには1つのサウンド入力チャンネル(ノートブックの内部マイク)しかありませんが、複数の出力があります。 1つは内蔵スピーカー/ヘッドフォン出力、もう1つはサウンドを提供するためのHDMI出力および/またはDisplayPortです。すべてのUSB Type-C代替ポートモード:DisplayPortはディスプレイのデイジーチェーン接続を可能にするため、USB Type-Cポートごとに複数のサウンド出力チャンネルがある可能性があります。

3.)あなたの場合、card0ALSAの意味の親デバイス0000:00:1f.3はPCI(e)バスIDです。質問のこの部分はあまり明確ではありません。正確に何をしますかlibudev

実行したい作業に応じて、このような作業により、コンポーネントがどのようにudevadm info -q all -a -p /sys/devices/pci0000:00/0000:00:1f.3/sound/card0/pcmC0D0p関連しているかについてのアイデアが得られます。この特定のバスIDは、Intelチップセットに統合されたHDオーディオサウンドチップの一般的なIDです。

おすすめ記事