Scheda sonora di default

From Studiosg
Jump to navigationJump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Benvenuti nella pagina Wiki di Simone Giustetti.


Lingue: English - Italiano


Ho recentemente aggiornato la macchina che uso per lavoro alla versione 14.0 di Slackware Linux dalla precedente 13.37, che incominciava a mostrare i segni del tempo. L'operazione è stata nel complesso semplice e veloce e nel giro di un paio d'ore ho potuto avviare il nuovo sistema operativo. Purtroppo durante la successiva fase di configurazione ho rilevato il manifestarsi di alcuni problemi con la scheda audio. Nel seguito dell'articolo verranno descritti i problemi riscontrati e la soluzione applicata.


Configurando il sottosistema audio, il kernel 3.2.29 segnalava la presenza di due schede anzichè dell'unica rilevata dal precedentemente utilizzato 2.6.37. La nuova scheda impostata come default dal sistema operativo non sembrava però funzionare risultando in molti fastidiosi problemi con le applicazioni multimediali installate:

  • Difficoltà nel controllare il volume delle applicazioni.
  • Necesssità di assegnare il controllo corrispondente al volume nel mixer successivamente ad ogni reboot.
  • Impossibilità di eseguire più applicazioni multimediali contemporaneamente. La prima avviata occupava in maniera esclusiva mixer e schede sonore impedendo alle altre di riprodurre alcunchè.
  • Continua comparsa di messaggi di errore relativi al sottosistema sonoro.
  • Impossibilità di riprodurre file musicali o filmati in applicazioni che girassero con Wine.

Lo scenario non era certamente ottimale, non potendo tornare alla precedente versione di Slackware, ho deciso di risolvere il problema di configurazione.


Diagnosi

Mi sono inizialmente preoccupato di capire perchè il kernel 3.2.29 rilevasse due schede audio essendo la macchina dotata di una sola. Per farlo ho interrogato lo pseudo file /proc/asound/cards:

  root@darkstar_5:~# cat /proc/asound/cards 
   0 [Generic        ]: HDA-Intel - HD-Audio Generic
                        HD-Audio Generic at 0xfeb44000 irq 42
   1 [Generic_1      ]: HDA-Intel - HD-Audio Generic
                        HD-Audio Generic at 0xfeb40000 irq 16

In seguito ho determinato la configurazione dei due dispositivi consultando l'output del comando amixer selezionando la scheda con l'opzione -c:

  root@darkstar_5:~# amixer info -c 0
  Card default 'Generic'/'HD-Audio Generic at 0xfeb44000 irq 42'
    Mixer name    : 'ATI R6xx HDMI'
    Components    : 'HDA:1002aa01,00aa0100,00100200'
    Controls      : 5
    Simple ctrls  : 1
  root@darkstar_5:~# amixer info -c 1
  Card hw:1 'Generic_1'/'HD-Audio Generic at 0xfeb40000 irq 16'
    Mixer name    : 'Realtek ALC269VB'
    Components    : 'HDA:10ec0269,144dc608,00100100'
    Controls      : 17
    Simple ctrls  : 11

Ho così appreso che una delle schede rilevate fosse in realtà l'uscita HDMI della scheda video ATI installata nella macchina. Il supporto HDMI è stato introdotto nei kernel della serie 3.2 per questa ragione i problemi non si erano mai presentati con Slackware 13.37. Il kernel 2.6 non era comunque in grado di far funzionare tale hardware.


Soluzioni

Diagnosticata la causa dei malfunzionamenti si presentavano due potenziali soluzioni:

  1. Disabilitare la "scheda" HDMI in modo che il sistema la ignorasse.
  2. Configurare la scheda Realtek come default per il sistema operativo.

Ho inizialmente intrapreso la prima strada in quanto non utilizzo comunque dispositivi esterni collegati alla scheda video. Ho pensato quindi di disabilitare il relativo modulo del kernel inserendo una istruzione blacklist nel file /etc/modprobe.d/alsa-base.conf. Per capire quali moduli utilizzassero le due schede audio ho ispezionato l'output del comando lspci lanciato con l'ausilio della opzione -v. Segue un estratto:

  root@darkstar_5:~# lspci -v
  ...
  00:01.1 Audio device: Advanced Micro Devices [AMD] nee ATI BeaverCreek HDMI Audio [Radeon HD 6500D and 6400G-6600G series]
          Subsystem: Advanced Micro Devices [AMD] nee ATI BeaverCreek HDMI Audio [Radeon HD 6500D and 6400G-6600G series]
          Flags: bus master, fast devsel, latency 0, IRQ 42
          Memory at feb44000 (32-bit, non-prefetchable) [size=16K]
          Capabilities: [50] Power Management version 3
          Capabilities: [58] Express Root Complex Integrated Endpoint, MSI 00
          Capabilities: [a0] MSI: Enable+ Count=1/1 Maskable- 64bit+
          Capabilities: [100] Vendor Specific Information: ID=0001 Rev=1 Len=010 <?>
          Kernel driver in use: snd_hda_intel
  ...
  00:14.2 Audio device: Advanced Micro Devices [AMD] Hudson Azalia Controller (rev 01)
          Subsystem: Samsung Electronics Co Ltd Device c608
          Flags: bus master, slow devsel, latency 32, IRQ 16
          Memory at feb40000 (64-bit, non-prefetchable) [size=16K]
          Capabilities: [50] Power Management version 2
          Kernel driver in use: snd_hda_intel

Entrambe le schede utilizzano il medesimo modulo ne risulta l'impossibilità di escluderne il caricamento all'avvio del sistema. Non resta che la seconda strada: configurare la scheda Realtek come predefinita.


La versione di ALSA installata, la 1.0.26, è in grado di funzionare in assenza di file di configurazione, interfacciandosi con il sistema. Per aggirare la configurazione di sistema ed imporne una personalizzata i file devono però essere creati. Nello specifico ho scritto il file /etc/asound.conf finalizzato alla configurazione globale delle schede audio. Il contenuto del file influenza la configurazione del sottosistema audio per tutti gli utenti. Nel file ho inserito le righe:

  root@darkstar_5:~# cat /etc/asound.conf
  # Set the realtek sound card as the default one
  defaults.ctl.card 1
  defaults.pcm.card 1
  defaults.pcm.device 0

Per verificare l'efficacia della configurazione ho riavviato ALSA:

  root@darkstar_5:~# /etc/rc.d/rc.alsa restart
  Loading ALSA mixer settings:  /usr/sbin/alsactl restore
  Found hardware: "HDA-Intel" "Realtek ALC269VB" "HDA:10ec0269,144dc608,00100100" "0x144d" "0xc608"
  Hardware is initialized using a generic method

Potendo subito constatare che la nuova configurazione corrispondesse ai miei desideri:

  root@darkstar_5:~# amixer info -c 0
  Card hw:0 'Generic'/'HD-Audio Generic at 0xfeb44000 irq 42'
    Mixer name    : 'ATI R6xx HDMI'
    Components    : 'HDA:1002aa01,00aa0100,00100200'
    Controls      : 5
    Simple ctrls  : 1
  root@darkstar_5:~# amixer info -c 1
  Card hw:1 'Generic_1'/'HD-Audio Generic at 0xfeb40000 irq 16'
    Mixer name    : 'Realtek ALC269VB'
    Components    : 'HDA:10ec0269,144dc608,00100100'
    Controls      : 17
    Simple ctrls  : 11
  root@darkstar_5:~# amixer info -d default
  Card default 'Generic_1'/'HD-Audio Generic at 0xfeb40000 irq 16'
    Mixer name    : 'Realtek ALC269VB'
    Components    : 'HDA:10ec0269,144dc608,00100100'
    Controls      : 17
    Simple ctrls  : 11

Per ulteriore verifica ho lanciato la riproduzione di un file di test tramite il comando aplay specificando il dispositivo di default con l'opzione -D:

  root@darkstar_5:~# aplay -D default /usr/share/sounds/alsa/Front_Center.wav
  Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Mono

Gli altoparlanti hanno riprodotto la sequenza di parole "front center" quando prima ottenevo solo un irritante silenzio.


Per commenti, consigli, domande inviate una e-mail all'indirizzo studiosg [chiocciola] giustetti [punto] net.


Link esterni





Lingue: English - Italiano