PulseAudioが仮想サウンドカード(VirMIDI)を無視するように強制する方法は?

PulseAudioが仮想サウンドカード(VirMIDI)を無視するように強制する方法は?

システムログに次の行が見つかりました。

pulseaudio[353168]: ジョブ構成ファイルが見つかりません。

pulseaudio[353168]: 'module-alsa-card' モジュールをロードできません (パラメータ: 'device_id="3" name="platform-snd_virmidi.0" card_name="alsa_card.platform-snd_virmidi.0" namereg_fail= false tsched= yes fix_latency_range=noignore_dB=no deferred_volume=yes use_ucm=yes 回避_resampling=no カード_properties="module-udev-Detect.discovered=1""): 初期化に失敗しました。

方法があります。PulseAudioがハードウェアサウンドカードを無視するようにするには、次のUDEVルールに似たものを使用します。

ATTRS{idVendor}=="1852", ATTRS{idProduct}=="5110", ENV{PULSE_IGNORE}="1"

ただし、問題のサウンドカードは、snd-virmidi.koカーネルモジュールがロードされたときに生成される仮想サウンドカードです。

$ cat /proc/asound/cards
...
 3 [VirMIDI        ]: VirMIDI - VirMIDI
                      Virtual MIDI Card 1

残念ながら、このモジュールは私のシステムにジャック用に組み込まれているモジュールなので、取り外す方法はありません。

それでは、PulseAudioがこのデバイスを無視するように強制する方法は何ですか?

ベストアンサー1

方法そうですね。 PulseAudioはudevサウンドカードを検出するために使用されます。
特定のカードを無視するには、udevルールを追加する必要があります。

udevルールを誤って追加しても機能しないようです。

例えば、名前付きの名前は無視します。sound-ds

  1. 2ここでカードIDを確認してください。

    $ cat /proc/asound/cards
    ...
     2 [soundds        ]: sound-ds - sound-ds
                          sound-ds
    
  2. udev情報を取得カード2存在する/sys/class/sound/

    $ udevadm info -a -p /sys/class/sound/card2
    
    looking at device '/devices/platform/sound-ds/sound/card2':
    KERNEL=="card2"
    SUBSYSTEM=="sound"
    DRIVER==""
    ATTR{id}=="soundds"
    ATTR{number}=="2"
    ATTR{power/async}=="disabled"
    ATTR{power/control}=="auto"
    ATTR{power/runtime_active_kids}=="0"
    ATTR{power/runtime_active_time}=="0"
    ATTR{power/runtime_enabled}=="disabled"
    ATTR{power/runtime_status}=="unsupported"
    ATTR{power/runtime_suspended_time}=="0"
    ATTR{power/runtime_usage}=="0"
    
  3. udevルールを追加する
    システムには、/lib/udev/rules.dudevルールがすでにディレクトリに定義されている必要があります。たとえば、独自のルールを定義できるディレクトリ90-pulseaudio.rulesも必要です。/etc/udev/rules.d

    のファイルの/etc/udev/rules.d優先順位が最も高いです。、正しいファイルを修正したことを確認してください。

    ATTR{id}info の属性はudevカードを一致させるために使用され、ルール
    は次のとおりです。

    ATTR{id}=="soundds", ENV{PULSE_IGNORE}="1"
    

    その意味は

    if ATTR{id} == "soundds" then
      ENV{PULSE_IGNORE}="1"
    endif
    

    PulseAudioが確認します環境変数PULSE_IGNOREカードをロードするとき。に設定すると、trueカードは無視されます。

  4. システムを再起動して確認してください。

運が良ければ、カードはすでにPulseAudioにあります。 PulseAudio 詳細ログには、ルールが適用されたことを示す次の内容が表示されます。

[pulseaudio] module-udev-detect.c: Ignoring /devices/platform/sound-ds/sound/card2, because marked so.

おすすめ記事