
노트북 스피커를 사용할 때 헤드폰을 연결하면 출력이 스피커에서 헤드폰으로 자동 전환되고, 그 반대의 경우도 마찬가지입니다. HDMI를 통해 모니터 스피커를 사용하는 경우 자동 스위치가 없습니다.
헤드폰이 연결되어 있지 않은 경우 오디오 출력이 장치 간에 자동 전환될 수 있습니까?
Debian 12(bookworm), 커널 버전 6.7.9-2, 파이프와이어 1.0.5.
답변1
노트북 스피커와 아날로그 헤드폰 간의 오디오 자동 전환은 단일 오디오 칩의 서로 다른 출력 간에 이루어집니다. 칩에는 일부 하드웨어 지원도 있을 수 있습니다. HD 오디오 스타일 전면 패널 오디오 잭을 사용하면 사운드 칩 내에서 전환 가능한 기능으로, 활성화되면 헤드폰이 연결되어 있음을 감지하면 다른 출력을 자동으로 음소거합니다.
(예를 들어 alsamixer
Pipewire에서 제공하는 단순화된 볼륨 컨트롤 대신 사운드 칩의 실제 하드웨어 믹서를 선택 하면 Auto-Mute
토글로 표시될 수 있습니다.)
구형 AC97 스타일 전면 패널 오디오 잭의 경우 이는 실제로 오디오 잭 자체 내의 기계식 스위치로, 헤드폰 잭이 연결되면 스피커/라인 출력으로의 출력 신호를 중단합니다.
HDMI와 모든 유형의 헤드폰 간 또는 노트북 스피커와 USB 헤드셋 간 전환 시 오디오 데이터 스트림을 다른 오디오 칩으로 전환해야 합니다. Pipewire는 그렇게 할 수 있지만 출력 싱크 우선순위가 올바르게 설정되고 자동 전환이 활성화된 경우에만 그렇게 합니다.
보다이 블로그 항목wireplumber
: 데비안 12에 있는 0.4 시리즈 의 오디오 싱크 우선순위를 확인하고 조정하는 방법을 설명합니다 .wireplumber
버전 0.5에서 구성 방법이 변경되었으므로 이 조언은 0.5 이상인 경우 직접 적용할 수 없습니다 .
간단히 말해서, 첫 번째 단계는 새 사운드 장치가 연결될 때 자동 전환을 활성화하는 것입니다. 를 실행하여 임시로 전환할 수 있습니다 pactl load-module module-switch-on-connect
.
이 AskUbuntu.SE 질문실행 제안도 포함되어 있습니다 pactl load-module module-switch-on-port-available
. 기존 오디오 장치에서 새 포트를 사용할 수 있게 되면 전환이 가능하다는 것을 이해합니다.
위 명령을 지속되게 만들려면 /usr/share/pipewire/pipewire-pulse.conf
예제를 읽고 관련 부분을 디렉터리 *.conf
의 파일 에 추가합니다 ~/.config/pipewire/pipewire-pulse.conf.d/
(없는 경우 새로 만듭니다). 예를 들어:
pulse.cmd = [
{ cmd = "load-module" args = "module-always-sink" flags = [ ] } #default
{ cmd = "load-module" args = "module-switch-on-connect" } #uncommented
{ cmd = "load-module" args = "module-switch-on-port-available" } #added
#{ cmd = "load-module" args = "module-gsettings" flags = [ "nofail" ] }
]
두 번째 단계는 사운드 장치에 적절한 우선순위가 할당되었는지 확인하는 것입니다.
wpctl status
Pipewire가 관리하는 모든 장치의 식별 번호를 확인한 다음 wpctl inspect <number> | grep -e node -e priority
특정 오디오 장치의 이름, 설명 및 우선 순위를 확인하는 데 사용할 수 있습니다 . 기본 우선순위가 원하는 순서가 아닌 경우 ~/.config/wireplumber/main.lua.d/60-*.lua
다음과 유사한 내용으로 파일을 생성하여 조정할 수 있습니다.
rule = {
matches = {
{
{ "node.name", "equals", "alsa_output.usb-MOTU_M4_M4MC0570FU-00.Direct__hw_M4__sink" },
},
},
apply_properties = {
["priority.driver"] = 1050,
["priority.session"] = 1050,
},
}
"예상되는" 기본 사운드 장치의 기본 우선순위는 약 1009여야 합니다. 따라서 다른 사운드 장치에 더 높은 값을 할당하면 pipewire
사용 가능한 경우 다른 사운드 장치보다 해당 장치를 선호하게 됩니다. 그러나 1500보다 높은 값은 모니터 장치용으로 예약되어 있으므로 1500보다 높은 값을 할당해서는 안 됩니다.
개별 포트에도 우선 순위 값이 있는 것 같습니다. 불행히도 현재 이를 사용자 정의하는 방법을 모르겠습니다. pactl list cards
출력이 꽤 길더라도 볼 수 있습니다 .
누군가가 Pipewire 포트 우선순위를 조정하는 좋은 방법을 알고 있다면, 완전한 답변을 직접 작성하고 싶지 않다면 자유롭게 편집하세요.