
Ao usar alto-falantes de laptop, conectar fones de ouvido alterna automaticamente a saída dos alto-falantes para os fones de ouvido e vice-versa para desconectar. Ao usar os alto-falantes do monitor via HDMI, não há troca automática:
A saída de áudio pode ser alternada automaticamente entre dispositivos quando os fones de ouvido estão (des) conectados?
Debian 12 (bookworm), versão do kernel 6.7.9-2, pipewire 1.0.5.
Responder1
A troca automática de áudio entre alto-falantes de laptop e fones de ouvido analógicos ocorre entre diferentes saídas de um único chip de áudio. O chip pode até ter algum suporte de hardware para ele: com conectores de áudio no painel frontal estilo HD-Audio, é um recurso selecionável dentro do chip de som que, quando ativado, silencia automaticamente outras saídas quando detecta que os fones de ouvido estão conectados.
(Se você usar, por exemplo, alsamixer
e selecionar o mixer de hardware real do seu chip de som em vez do controle de volume simplificado fornecido pelo Pipewire, você poderá vê-lo como uma Auto-Mute
alternância.)
Com conectores de áudio do painel frontal estilo AC97 mais antigos, na verdade é uma chave mecânica dentro do próprio conector de áudio, que interromperá os sinais de saída para a saída de alto-falante/linha quando um conector de fone de ouvido for conectado.
Ao alternar entre HDMI e fones de ouvido de qualquer tipo, ou entre alto-falantes de laptop e fones de ouvido USB, o fluxo de dados de áudio precisa ser alternado para um chip de áudio diferente. O Pipewire pode fazer isso, mas só o fará se as prioridades do coletor de saída estiverem definidas corretamente e a comutação automática estiver habilitada.
Veresta entrada do blog: descreve como verificar e ajustar as prioridades do coletor de áudio na wireplumber
série 0.4, que é o que o Debian 12 possui.Este conselho não será diretamente aplicável se você tiver wireplumber
0.5 ou superior, pois o método de configuração mudou na versão 0.5.
Resumindo: o primeiro passo é ativar a troca automática quando um novo dispositivo de som é conectado. Você pode fazer isso temporariamente executando pactl load-module module-switch-on-connect
.
Esta pergunta do AskUbuntu.SEtambém inclui a sugestão de executar pactl load-module module-switch-on-port-available
: Entendo que permite a troca quando uma nova porta fica disponível em um dispositivo de áudio existente.
Para tornar os comandos acima persistentes, leia /usr/share/pipewire/pipewire-pulse.conf
exemplos e adicione a parte relevante a um *.conf
arquivo em seu ~/.config/pipewire/pipewire-pulse.conf.d/
diretório (crie-o se não existir). Por exemplo:
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" ] }
]
A segunda etapa é garantir que seus dispositivos de som recebam as prioridades apropriadas atribuídas a eles.
Você pode usar wpctl status
para ver os números de identificação de qualquer dispositivo de interesse do Pipewire e, em seguida, wpctl inspect <number> | grep -e node -e priority
ver o(s) nome(s), descrição e prioridade de um dispositivo de áudio específico. Caso a ordem de prioridade padrão não seja a desejada, você pode criar um ~/.config/wireplumber/main.lua.d/60-*.lua
arquivo para ajustá-las, com conteúdo semelhante a este:
rule = {
matches = {
{
{ "node.name", "equals", "alsa_output.usb-MOTU_M4_M4MC0570FU-00.Direct__hw_M4__sink" },
},
},
apply_properties = {
["priority.driver"] = 1050,
["priority.session"] = 1050,
},
}
A prioridade padrão para o dispositivo de som primário "esperado" deve ser cerca de 1009, portanto, atribuir um valor mais alto a algum outro dispositivo de som pipewire
o tornaria preferível a outros, se estiver disponível. Mas você não deve atribuir um valor superior a 1500, pois os valores superiores a esse são reservados para dispositivos monitores.
Aparentemente também existem valores de prioridade para portas individuais, infelizmente não sei como personalizá-los. Você pode visualizá-los pactl list cards
embora a saída seja bastante longa.
Se alguém souber uma boa maneira de ajustar as prioridades das portas do Pipewire, sinta-se à vontade para editá-la se não quiser escrever sua própria resposta completa.