Alsa e scheda audio, non funziona il "mute" e mettere il volume a 0 non ammutolisce davvero

Tags: 

Problema (rilevato su arch ma in passato anche su ubuntu): il "mute" della scheda audio non funziona. Semplicemente non fa nulla. Mi tocca abbassare a zero il volume, ma in realtà anche così qualche suono basso basso si sente...

Il problema si rileva inizialmente sul mixer del desktop (KDE), ma basta fare dei test direttamente con alsa (tramite alsamixer) per capire che è un problema del layer audio base.

  • Mi sembra di ricordare che con pulseaudio il problema non ci fosse (perchè mette un altro layer sopra alsa che probabilmente risolve la cosa). Ma pulseaudio fa talmente casino che preferisco non metterlo...
  • Il problema, nel mio caso, è dovuto a una non perfetta rilevazione della scheda audio interna Intel sul mio Acer Aspire 6930g.

    Alsa infatti rileva che la scheda è intel, e carica il modulo giusto (snd_hda_intel) ma poi non rileva bene il modello e il risultato è che l'audio funziona al 90%.

    La soluzione è inserire nelle configurazioni di modprobe l'opzione che forza la rilevazione della scheda giusta.

    Innanzitutto vediamo il codec della scheda audio con questo comando:

    head -n 1 /proc/asound/card0/codec*

    Il risultato sarà qualcosa di simile:

    ==> /proc/asound/card0/codec#0 <==
    <strong>Codec: Realtek ALC888</strong>
     
    ==> /proc/asound/card0/codec#1 <==
    Codec: Conexant ID 2c06
     
    ==> /proc/asound/card0/codec#3 <==
    Codec: Nvidia MCP77/78 HDMI

    Il codec che mi interessa à l'ALC888. Per vedere i modelli di scheda audio supportati da ALSA per questo codec bisogna andare nella documentazione. In particolare l'elenco aggiornato specifico della HDA Intel è qui:

    http://www.kernel.org/doc/Documentation/sound/alsa/HD-Audio-Models.txt

    Per l'ALC888 si rilevano questi modelli (inserisco solo quelli rilevanti per il mio computer):

    ALC882/883/885/888/889
    ======================
      3stack-dig  3-jack with SPDIF I/O
      6stack-dig  6-jack digital with SPDIF I/O
      3stack-6ch    3-jack 6-channel
      3stack-6ch-dig 3-jack 6-channel with SPDIF I/O
      acer    Acer laptops (Travelmate 3012WTMi, Aspire 5600, etc)
      acer-aspire Acer Aspire 9810
      acer-aspire-4930g Acer Aspire 4930G
      acer-aspire-6530g Acer Aspire 6530G
      acer-aspire-7730g Acer Aspire 7730G
      acer-aspire-8930g Acer Aspire 8930G
      auto    auto-config reading BIOS (default)

    Il mio specifico modello di acer (6930g) non c'è, ma di aspire ce ne sono vari... bisogna provare qual'è quello giusto.

    Per provare occorre chiudere tutte le applicazioni audio (la cosa migliore è chiudere completamente il desktop è andare in console, così non ci sono seghe...) e dare questi comandi:

    modprobe -r snd_hda_intel
    modprobe snd_hda_intel model=XXX

    Dove al posto di "XXX" ci vuole uno dei nomi scritti sopra. Se i comandi non vanno è probabile che ci sia qualche applicazione che sta usando l'audio, per verificare dare il comando: "lsof /dev/snd/*"  e killare l'applicazione (basta anche solo un alsamixer).

    Per testare l'audio basta ascoltare qualcosa e provare il mute del mixer, se siamo via console (come file audio possiamo mettere qualunque cosa, magari che duri un pò di tempo):

    cd /usr/share/sounds
    aplay KDE_Startup_new.wav &
    alsamixer

    (Eventualmente alsamixer possiamo avviarlo in un'altra console).

    Sul mio PC ho testato tutti gli acer*, rilevando che:

  • acer e acer-aspire-6530g non funzionano
  • acer-aspire-4930g, acer-aspire-7730g, acer-aspire-8930g funzionano bene
  • acer-aspire funziona bene, ma mi vede un uscita separata (headphone) per la parte di speaker, che rimane attivato anche collegando le casse esterne. Può essere interessante per tenere attivate entrambe (esterne e interne) avendo il controllo del volume di entrambe. Ma nell'uso quotidiano credo sia più inutile che altro...
  • Alla fine ho deciso di tenere acer-aspire-4930g.

    Per rendere le modifiche permanenti occorre modificare la configurazione di modprobe, in modo da aggiungere l'opzione "model=acer-aspire-4930g" ogni volta che carica il modulo snd_hda_intel. Per fare questo è sufficiente creare un file "alsa.conf" in "/etc/modprobe.d" con scritto:

    options snd-hda-intel model=acer-aspire-4930g
  • If fatto di creare un file alsa.conf, rispetto a modificare direttamente il modprobe.conf o a creare un file "50-alsa.conf" dipende dalle policy della vostra distribuzione. Su arch linux il file "alsa.conf" va benissimo, su *buntu credo sia meglio "50-alsa.conf".
  • Tutto fatto, riavviamo e il mixer dovrebbe andare bene!

     

    Maggiori informazioni:

    http://www.alsa-project.org/main/index.php/Help_To_Debug_Intel_HDA

    http://www.kernel.org/doc/Documentation/sound/alsa/

    https://wiki.archlinux.org/index.php/Advanced_Linux_Sound_Architecture#M...

    Aggiungi un commento