USBツリーの物理的な場所に基づいてPulseaudio USBデバイスの名前をどのように指定しますか?

USBツリーの物理的な場所に基づいてPulseaudio USBデバイスの名前をどのように指定しますか?

これに2016年のメーリングリスト投稿、Pulseaudioユーザーがベンダーとシリアル番号が同じである可能性がある他のUSBオーディオカードに信頼できる名前を割り当てる方法を尋ねました。

そのGitHubにソリューションを公開;カードのデバイスパスに基づいて各カードにUdevラインを追加することに基づいています。

Udevルールを変更せずに新しいカードを追加できるように、このソリューションを変更したいと思います。

私はUdevが私に2つの変数を与えたことを知りました。これらの変数を連結すると、カードの信頼できる名前を設定するために使用できます。これは、USBハブのポート番号ID_IDとともにPulseaudioが選択したリスナー名のデフォルトのようですID_PATH_TAG。名前に追加する名前は次のとおりです。

$ (sleep 1; sudo udevadm trigger -s sound -c remove ; \
  sudo udevadm trigger -s sound -c add) &; \
  udevadm monitor --subsystem=sound -p | grep -P 'ID_ID|ID_PATH_TAG'
ID_PATH_TAG=pci-0000_06_00_3-usb-0_3_4_1_1_0
ID_ID=usb-C-Media_Electronics_Inc._USB_Audio_Device-00
... (some repeats)

これら2つの変数を組み合わせてPulseaudioデバイス名を生成するUdevルールをどのように作成できますか?

ベストアンサー1

これが私が思いついたものです:

$ cat /etc/udev/rules.d/99-usb-audio.rules
ACTION=="change", SUBSYSTEM=="sound", DEVPATH=="/devices/*/usb*/sound/card?", ENV{PULSE_NAME}="$env{ID_ID}.$env{ID_PATH_TAG}"

99は以前のルールで設定されているので重要ですID_PATH_TAG(どのルールがわかりません)。より低い数字を使用すると、初期試行は失敗しました。

これで、受信者名にはID_PATH_TAG物理的な場所を通じたIDカードが含まれます。

$ pactl list sinks | grep Name
        Name: alsa_output.usb-C-Media_Electronics_Inc._USB_Audio_Device-00.pci-0000_06_00_3-usb-0_2_4_2_1_1_0.analog-stereo
        Name: alsa_output.usb-C-Media_Electronics_Inc._USB_Audio_Device-00.pci-0000_06_00_3-usb-0_2_4_2_3_1_0.analog-stereo

位置は部分文字列でエンコードされます。

usb-0_2_4_2_1_1_0
usb-0_2_4_2_3_1_0

これは明らかに、私のラップトップのポート2が1つのUSBハブに接続され、別のハブがそのハブのポート4に接続され、3番目のハブが2番目のハブのポート2に接続されていることを意味します。オーディオデバイスは最後のハブのポート1と3に接続されています。 「-0_」接頭辞または「_1_0」接尾辞についてはわかりません。

$ lsusb -t
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 480M
    |__ Port 2: Dev 2, If 0, Class=Hub, Driver=hub/4p, 480M
        |__ Port 4: Dev 4, If 0, Class=Hub, Driver=hub/4p, 480M
            |__ Port 2: Dev 26, If 0, Class=Hub, Driver=hub/4p, 480M
                |__ Port 3: Dev 28, If 0, Class=Audio, Driver=snd-usb-audio, 12M
                |__ Port 1: Dev 27, If 0, Class=Audio, Driver=snd-usb-audio, 12M

おすすめ記事