Nenhum som do conector de fone de ouvido frontal no MSI TRX40 Pro WiFi

Aug 18 2020

Estou tentando fazer o som funcionar a partir do fone de ouvido frontal no Ubuntu 20.04 em um MSI TRX40 Pro WiFi. A placa-mãe tem uma configuração um pouco instável, onde o áudio aparentemente vem de um dispositivo de áudio USB, então ele aparece em vários mixers (também como o painel de som em Configurações) como "Áudio USB". Quando os fones de ouvido são conectados, o sistema detecta corretamente que eles estão conectados, mas nenhum som é emitido pelos fones de ouvido.

Pesquisando no Google, encontrei um conselho para desativar o mudo automático no alsamixer, mas o alsamixer não tem essa opção listada.

O que é realmente interessante é que posso obter áudio da entrada do fone de ouvido selecionando o dispositivo certo usando aplay. Os dispositivos encontrados por aplay -l:

**** List of PLAYBACK Hardware Devices ****
card 0: HDMI [HDA ATI HDMI], device 3: HDMI 0 [HDMI 0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: HDMI [HDA ATI HDMI], device 7: HDMI 1 [HDMI 1]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: HDMI [HDA ATI HDMI], device 8: HDMI 2 [HDMI 2]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: HDMI [HDA ATI HDMI], device 9: HDMI 3 [HDMI 3]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: ALC1220VBDT [ALC1220-VB-DT], device 0: USB Audio [USB Audio]
  Subdevices: 0/1
  Subdevice #0: subdevice #0
card 1: ALC1220VBDT [ALC1220-VB-DT], device 1: USB Audio [USB Audio #1]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: ALC1220VBDT [ALC1220-VB-DT], device 2: USB Audio [USB Audio #2]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: ALC1220VBDT [ALC1220-VB-DT], device 3: USB Audio [USB Audio #3]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

[Ignore o áudio HDMI; esse é o suporte de áudio da GPU, que realmente funciona - contanto que eu queira reproduzir o som nos alto-falantes do monitor]

Se eu escolher o dispositivo de áudio hw: 1,1, posso fazer com que o aplay reproduza um arquivo wav e ouvi-lo pelos fones de ouvido na entrada frontal:

aplay -Dhw:1,1 a2002011001-e02.wav

Então, se eu pudesse de alguma forma fazer com que os vários mixers de todo o sistema usassem hw:1,1como saída, tudo funcionaria bem (eu acho).

Eu vi que este chipset tem alguns problemas no Linux e li este (longo) relatório de bug do kernel . Então, talvez tudo isso fosse consertado usando o topic/usb-trx40branch dehttps://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git/? Mas hesito em seguir esse caminho se houver uma maneira simples de fazê-lo funcionar aqui.

Resumo: o som do painel frontal funciona se eu selecionar manualmente o dispositivo certo usando aplay -D, não consigo descobrir como fazer com que outro mixer use esse dispositivo.

Respostas

2 BrendanDolan-Gavitt Aug 19 2020 at 18:45

Consegui consertar isso com a seguinte combinação de ALSA, PulseAudio e patches de kernel:

  1. ALSA: https://github.com/alsa-project/alsa-ucm-conf/pull/25. Eu não recompilei o pacote, apenas coloquei os dois novos arquivos no /usr/share/alsa/ucm2/USB-Audio/.
  2. PulseAudio: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/292. Eu costumava apt-get source pulseaudiopegar o código-fonte, aplicar o patch e então dpkg-source --commitdizer ao dpkg sobre as informações do patch. Então eu reconstruí os pacotes pulseaudio dpkg-buildpackage -rfakeroote os instalei.
  3. O topic/usb-trx40ramo desta árvore do kernel:https://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git/log/?h=topic/usb-trx40. Isso é um pouco complicado porque estou usando ZFS, então tive que aplicar os patches ZFS, bem como documentado aqui:https://forum.level1techs.com/t/building-custom-kernel-with-zfs-built-in/117464

Não estou totalmente certo de que todos os três são necessários, mas são suficientes. O som funciona agora!