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.

관련 정보