Tem uma postagem aqui mais antiga sobre como resolver alguns problemas de som que costumam ocorrer no Linux e nessa nova postagem vou acrescentar mais algumas situações, inclusive referente à chiadeira de microfones. Só lembrando que instabilidades decorrentes de drivers mal escritos ou processadores pouco potentes só podem ser remediados.
Desabilitar o "suspend" da placa de som
Por padrão o sistema costuma desabilitar a placa de som depois de certo tempo de ociosidade para economizar energia, principalmente em notebooks. Pode ocorrer de, numa dessas "desligadas", a placa "não volte" ou fique instável e que pode provocar atrasos e soluços no som. Sendo assim, temos duas coisas a serem feitas (pode fazer as duas):
Desligar a nível de kernel:
É um pouco radical, necessita de privilégios de administrador da máquina e pode não incluir dispositivos de som USB. Abra o Terminal e digite:
inxi -A
Deverá aparecer algo assim:
Audio:
Device-1: Intel NM10/ICH7 Family High Definition Audio driver: snd_hda_intel
API: ALSA v: k6.12.95+deb13-amd64 status: kernel-api
Server-1: PipeWire v: 1.4.2 status: active
O que interessa pra gente é o que está aparecendo em verde (snd_hda_intel) que é o módulo de som padrão usado no sistema. Se aparecer o snd_usb_audio é por que a placa de som ou dispositivo usado (como um microfone) é usb, esse item é importante. No Terminal, digite:
sudo nano /etc/modprobe.d/audio_disable_powersave.conf
Coloque dentro e salve com ctrl+o e feche com ctrl+x:
options snd_hda_intel power_save=0
options snd_hda_intel power_save_controller=N
Use onde está azul a opção de "snd" que apareceu no comando inxi -A dado anteriormente. Reinicie a máquina.
Desligar a nível de servidor de som
Esse me parece ser o mais adequado pois inclui dispositivos USB na jogada além de não precisar ser administrador pois as mudanças são aplicadas a nível de usuário. Pra isso precisamos saber qual a versão do Wireplumber está em uso:
wireplumber --version
Deverá aparecer algo assim:
wireplumber
Compiled with libwireplumber 0.5.8
Linked with libwireplumber 0.5.8
Se a sua versão por acima da 0.5 como no exemplo acima, no Terminal digite os comandos:
mkdir -p ~/.config/wireplumber/wireplumber.conf.d
nano ~/.config/wireplumber/wireplumber.conf.d/disable-audio-suspend.conf
e coloque dentro:
monitor.alsa.rules = [
{
matches = [
{
node.name = "~alsa_.*"
}
]
actions = {
update-props = {
session.suspend-timeout-seconds = 0
}
}
}
]
Se o Wireplumber for abaixo de 0.5:
mkdir -p ~/.config/wireplumber/main.lua.d
nano ~/.config/wireplumber/main.lua.d/50-disable-suspend.lua
e coloque dentro:
table.insert(alsa_monitor.rules, {
matches = {
{
{ "node.name", "matches", "alsa_.*" },
},
},
apply_properties = {
["session.suspend-timeout-seconds"] = 0,
},
})
Em ambos os exemplos, salve com ctrl+o e feche com ctrl+x. Reinicie a máquina.
As configurações de som não são salvas
Taí um negócio chato, você liga o PC e o som (microfone e áudio) não estão nos níveis que você deixou. Abra o Terminal e digite:
sudo nano /etc/udev/rules.d/90-alsa-restore.rules
Coloque dentro:
ACTION=="add", SUBSYSTEM=="sound", KERNEL=="controlC*", KERNELS!="card*", TEST=="/usr/sbin", TEST=="/usr/share/alsa", GOTO="alsa_restore_go"
GOTO="alsa_restore_end"
LABEL="alsa_restore_go"
ENV{ALSA_CARD_NUMBER}="$attr{device/number}"
# mark HDA analog card; HDMI/DP card does not have capture devices
DRIVERS=="snd_hda_intel", TEST=="device/pcmC$env{ALSA_CARD_NUMBER}D0p", RUN+="/bin/sh -c 'echo ALSA_CARD_HDA_ANALOG=$env{ALSA_CARD_NUMBER} >> /run/udev/alsa-hda-analog-card'"
# check for ACP hardware
TEST=="device/device/acp3x-dmic-capture", GOTO="alsa_hda_analog"
TEST=="device/device/acp6x-dmic-capture", GOTO="alsa_hda_analog"
TEST=="device/device/acp63-dmic-capture", GOTO="alsa_hda_analog"
TEST=="device/device/acp-dmic-codec", GOTO="alsa_hda_analog"
GOTO="alsa_restore_std"
LABEL="alsa_hda_analog"
# restore configuration for profile with combined cards (HDA + digital mic)
TEST!="/run/udev/alsa-hda-analog-card", GOTO="alsa_restore_std"
IMPORT{program}="/usr/bin/cat /run/udev/alsa-hda-analog-card"
ENV{ALSA_CARD_HDA_ANALOG}!="", ENV{ALSA_CARD_NUMBER}="$env{ALSA_CARD_HDA_ANALOG}"
# ---> A CORREÇÃO FICA AQUI (Substituindo o "alsa_restore_go" duplicado)
LABEL="alsa_restore_std"
TEST!="/etc/alsa/state-daemon.conf", TEST=="/usr/sbin/alsactl", RUN+="/usr/sbin/alsactl -E HOME=/run/alsa -E XDG_RUNTIME_DIR=/run/alsa/runtime restore $env{ALSA_CARD_NUMBER}"
TEST=="/etc/alsa/state-daemon.conf", TEST=="/usr/sbin/alsactl", RUN+="/usr/sbin/alsactl -E HOME=/run/alsa -E XDG_RUNTIME_DIR=/run/alsa/runtime nrestore $env{ALSA_CARD_NUMBER}"
LABEL="alsa_restore_end"
Salve com ctrl+o e feche com ctrl+x. Depois disso:
sudo udevadm control --reload-rules
Ainda no Terminal, para complementar a restauração de áudio:
nano ~/.config/autostart/restaurar-audio.desktop
Coloque dentro:
[Desktop Entry]
Type=Application
Name=Restaurar Volume Universal
Exec=alsactl restore
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
X-KDE-autostart-after=panel
Se o seu microfone fica também com essa de não voltar ao volume configurado:
nano ~/.config/autostart/travar-microfone.desktop
Coloque dentro (configurando para 85% do volume total):
[Desktop Entry]
Type=Application
Name=Fixar Volume do Microfone
Exec=amixer set Capture 85%
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
Salve com ctrl+o e feche com ctrl+x em ambos os exemplos. Agora basta colocar os níveis de acordo com a sua necessidade e reiniciar a máquina.
Tirando o chiado de gravações de microfones
Aqui vamos habilitar um recurso do Pipewire que é o filtro de ruídos para o microfone e que, usado em conjunto do filtro de ruídos do OBS-Studio deixa o som gravado do microfone limpinho; e pra quem não consegue usar o OBS na máquina, só esse filtro já tira 80% da chiadeira de fundo.
Usando o pipewire original
No Terminal, digite:
mkdir -p ~/.config/pipewire
cp /usr/share/pipewire/pipewire.conf ~/.config/pipewire/
nano ~/.config/pipewire/pipewire.conf
Procure pelo item:
context.objects = [
#{ factory = <factory-name>
# ( args = { <key> = <value> ... } )
# ( flags = [ ( nofail ) ] )
# ( condition = [ { <key> = <value> ... } ... ] )
e coloque ANTES de "context.objects":
{ name = libpipewire-module-echo-cancel
args = {
capture.props = {
node.name = "mic_capture"
audio.channels = 1
audio.position = [ MONO ]
}
source.props = {
node.name = "mic_source"
node.description = "Microfone Filtrado"
audio.channels = 1
audio.position = [ MONO ]
}
sink.props = {
node.name = "audio_sink"
node.description = "Saida Filtrada"
}
playback.props = {
node.name = "audio_playback"
}
}
}
]
Deverá então ficar assim (a parte em azul já existe no arquivo e a parte verde é a nova, atenção aos colchetes!):
}
}
flags = [ ifexists nofail ]
condition = [ { module.jackdbus-detect = true } ]
}
{ name = libpipewire-module-echo-cancel
args = {
capture.props = {
node.name = "mic_capture"
audio.channels = 1
audio.position = [ MONO ]
}
source.props = {
node.name = "mic_source"
node.description = "Microfone Filtrado"
audio.channels = 1
audio.position = [ MONO ]
}
sink.props = {
node.name = "audio_sink"
node.description = "Saida Filtrada"
}
playback.props = {
node.name = "audio_playback"
}
}
}
]
context.objects = [
#{ factory = <factory-name>
# ( args = { <key> = <value> ... } )
# ( flags = [ ( nofail ) ] )
# ( condition = [ { <key> = <value> ... } ... ] )
Novamente, atenção ao único colchete que vai mudar de lugar. No arquivo original a parte que vem antes do "context_objects" está assim:
}
}
flags = [ ifexists nofail ]
condition = [ { module.jackdbus-detect = true } ]
}
]
context.objects = [
#{ factory = <factory-name>
# ( args = { <key> = <value> ... } )
# ( flags = [ ( nofail ) ] )
# ( condition = [ { <key> = <value> ... } ... ] )
#}
Esse colchete marcado em azul vai "sumir" para dar lugar ao conteúdo em verde e esse colchete vai para o final desse mesmo conteúdo em verde (olhe lá mais pra cima). Se isso não for feito a configuração não vai funcionar. Basta então reiniciar o sistema. Se não funcionar (ficar sem som) basta apagar o arquivo que está em ~./config/pipewire/. Se funcionou, abra o seu "Painel de Controle" e selecione lá na parte de som o "Microfone Filtrado" para a entrada de microfone. No Controle de Volume do XFCE seria algo assim (atenção às entrada e saída selecionadas):
Saída (áudio interno analógico):
Entrada (dispositivo de entrada):
Com isso o seu som deverá voltar ao normal ou, pelo menos, ficar mais estável, principalmente com máquinas mais antigas.


Nenhum comentário:
Postar um comentário