시스템이 다시 시작된 후 일반 ALSA를 사용하여 alsa-restore.service
사운드 카드 상태(볼륨, 음소거 스위치 등)를 복원합니다.
제가 관심 있는 것은 PipeWire/WirePlumber를 사용하여 동일한 목표를 달성하는 방법입니다. 재부팅 후 어떤 이유로 헤드폰 출력이 음소거되고 일부 다른 설정이 일부 기본 상태로 재설정되었습니다.
alsa-restore.service
PipeWire/WirePlumber가 시작 시 설정을 덮어쓰기 때문에 작동하지 않습니다.
WirePlumber Lua 구성은 매우 복잡해서 이해할 수 없습니다. 나는 도움을 찾고 있습니다.
답변1
일반적으로 그래픽 데스크탑 사용자 인터페이스가 있는 Linux 시스템에서 표시되는 첫 번째 프로그램은 로그인 화면을 표시하는 시작 프로그램입니다. 환영 프로그램은 모든 사용자에 대해 정의된 사용자 단위(서비스)의 시작을 트리거하는 systemd 사용자 컨텍스트에서 실행됩니다. 장치 중 하나는 WirePlumber의 시작을 트리거하는 Pipewire입니다.
WirePlumber가 시작되면,기본적으로 가장 먼저 수행하는 작업 중 하나는 다음과 같습니다.볼륨 구성을 포함하여 사용자별로 저장되어 있던 이전에 저장된 경로를 복원하는 것입니다. 이것이 실패하면 WirePlumber는 수신기의 볼륨을 기본값인 40%로 설정하고 소스를 100%로 설정합니다.
따라서 환영 프로그램이 WirePlumber를 지원하지 않는 경우 로그인 화면이 표시될 때마다 볼륨을 재설정할 수 있습니다. 이는 WirePlumber 인스턴스가 실제 사용자의 로그인 시 선택하여 이전에 저장된 볼륨을 덮어쓰는 변경 사항입니다.
추가 상황 정보가 없으면 이 특정 문제가 귀하에게 영향을 미치는지 여부를 말하기는 어렵지만 해결하기 어려운 일반적인 문제인 것 같으므로 시도해 볼 가치가 있는 가능성이라고 생각합니다. 제 경우에는 LightDM에서 이런 일이 발생했습니다.Debian Wiki에는 SDDM 문제를 다루는 PipeWire 섹션이 있습니다..
환영자는 일반적으로 오디오를 재생할 필요가 없다는 점을 고려하여 내가 선호하는 솔루션은 환영자 사용자 계정에 대해 PipeWire가 실행되지 않도록 완전히 비활성화하는 것입니다. 이렇게 하려면 터미널에서 다음 명령을 실행하세요.
- Greetingr 사용자의 systemd 세션에 로그인하십시오:
sudo machinectl shell lightdm@ /bin/sh
.lightdm
환영 프로그램을 실행하는 사용자로 바꿉니다 . - PipeWire 및 WirePlumber를 중지합니다.
systemctl --user stop pipewire.service pipewire.socket wireplumber.service wireplumber.socket
- PipeWire 및 WirePlumber를 비활성화합니다.
systemctl --user disable pipewire.service pipewire.socket wireplumber.service wireplumber.socket
- 추가 안전망으로 PipeWire 및 WirePlumber를 차단합니다.
systemctl --user mask pipewire.service pipewire.socket wireplumber.service wireplumber.socket
- 모든 것이 순조롭게 진행되면
systemctl --user status wireplumber.service
WirePlumber 장치가 비활성 및 비활성화된 것으로 보고되어야 하며 1단계를 반복하더라도 다시 시작되지 않습니다. 이 시점부터 실제 사용자 로그인으로만 WirePlumber가 시작됩니다.