Differences between revisions 12 and 13
Revision 12 as of 2015-11-08 09:43:43
Size: 9737
Comment: sync with English master
Revision 13 as of 2017-04-16 11:18:26
Size: 9750
Comment: sync with english master
Deletions are marked like this. Additions are marked like this.
Line 7: Line 7:
= ALSA = = ALSA (2015-11-01) =

Traduzioni: English - Français - Italiano - Русский


Hardware > Audio


ALSA (2015-11-01)

ALSA, Advanced Linux Sound Architecture (Architettura sonora avanzata per Linux), è sia un progetto sia un insieme di software. Il progetto è iniziato perché l'architettura OSS è in alcuni aspetti debole e la versione libera di OSS manca di alcuni driver presenti solamente in quella commerciale. Per svariati anni il software ALSA è stato sviluppato indipendentemente da Linux. I driver sono stati aggiunti alla base del codice di Linux durante lo sviluppo della serie 2.5 e sono diventati il sistema standard per i driver audio in Linux 2.6.

ALSA non è semplicemente un insieme di driver audio; è anche una libreria con un'API estensibile che dà alle applicazioni accesso alle più moderne funzionalità delle schede audio (es., canali audio multipli, Dolby AC3, ecc.). ALSA fornisce un efficace supporto per molte applicazioni, è completamente module e gestisce in maniera sicura SMP e i thread.

Le applicazioni scritte per OSS possono essere fatte funzionare con ALSA per mezzo dell'emulazione in spazio utente (usando il caricatore di programmi aoss) oppure l'emulazione nel kernel (i driver snd-*-oss). In ogni caso, non si possono usare contemporaneamente entrambi i driver ALSA e OSS.

N.B. I nomi dei driver ALSA iniziano sempre con snd- .

Pacchetti

Caricare i moduli

I pacchetti alsa-base sono progettati "semplicemente" per funzionare. Il pacchetto alsa-base non carica moduli; piuttosto è udev a rilevare l'hardware audio e a caricare i moduli ALSA appropriati e poi alsa-base si occupa di impostare i valori dei livelli del mixer utilizzabili.

Configurare alsa eseguendo il comando 'alsactl init' come utente root. Ignorare i messaggi di errore del tipo "Unknown hardware" (Hardware sconosciuto) (questo problema dovrebbe essere stato risolto in alsa-utils .20), poi riavviare e provare a testare l'audio. Per ulteriori dettagli guardare questa discussione.

Si può anche provare a rilevare e configurare la propria scheda audio in modo manuale.

  • Se si ha una scheda audio PCI, eseguire 'lspci -v' per elencare tutti i dispositivi PCI disponibili. L'elenco quasi sicuramente conterrà un riferimento ad un dispositivo audio multimediale: cioè la propria scheda audio.

  • Per una scheda USB, usare lsusb.

Si può ora guardare la Tabella delle schede audio di ALSA per scoprire quale nome di driver debba essere usato per il chipset trovato.

ALSA e OSS

Se il proprio sistema è già configurato per caricare i driver OSS per la propria scheda audio, allora si guardino gli attuali file di configurazione del caricatore di moduli. Ci saranno voci per i moduli OSS che possono dare un indizio sui chipset della propria scheda audio. Non ci si dimentichi di disabilitare queste voci prima di riconfigurare le cose in modo da caricare i moduli ALSA.

Se non si rimuovono tutti i moduli OSS dal kernel allora i moduli ALSA non potranno essere inizializzati (o funzionare correttamente) perché il driver OSS interferirà con l'hardware audio che i driver ALSA devono controllare. Se si vede un messaggio riguardante la scheda sonora che non è stata rilevata ("sound card not detected") e si è certi che si ha il driver ALSA corretto, la causa dell'errore potrebbe essere la presenza di un modulo OSS.

Test

Testare il driver, usando aplay, mplay o xmms per esempio.

Per testare i midi, si può usare aplaymidi.

Condividere una scheda tra più processi

È spesso desiderabile essere in grando di condividere una scheda audio tra diversi processi in esecuzione contemporaneamente. Questo richiede la capacità di mixare l'output audio di questi processi in un flusso audio unico.

Se la propria scheda audio economica non supporta il missaggio hardware, provare il plugin dmix. Questo viene impostato automaticamente a partire dalla versione 1.0.10-2 di libasound2; per le versioni precedenti, guardare /usr/share/doc/libasound2/examples/asound.conf_dmix per vedere come abilitare DMIX in /etc/asound.conf (per tutti gli utenti) o ~.asoundrc (per il solo proprio utente).

Un file .asoundrc di esempio per laptop moderni che hanno una scheda audio HDMI e una semplice nell'ordine sbagliato sarebbe (usare prima aplay -l per ottenere i nomi corretti per le proprie schede):

defaults.pcm.!card Generic_1
defaults.ctl.!card Generic_1
defaults.pcm.!device 0
defaults.ctl.!device 0

Metodo alternativo

Se la propria scheda audio ha un chipset Realtek e non si riesce a far funzionare l'audio, si provi questo metodo:

1. Scaricare il driver Realtek HD Audio Codec. Seguire il collegamento nella pagina principale http://www.realtek.com.tw sotto"Quick Links", accettare le condizioni e poi scaricare il driver corretto per Linux.

2. Aprire il file scaricato, scompattarlo in una posizione (per esempio, la propria directory home), aprire un terminale come root e compilarlo nel modo consueto.

./configure
make
make install

Nota Bene:

1. Assicurarsi di avere già il necessario ambiente di compilazione (gcc, make, build-essential, linux-headers per il proprio kernel, ecc.) prima di eseguire il suddetto script di installazione.

2. Se ci sono errori, leggere il file INSTALL e modificare i file di configurazione relativi nel modo appropriato.

Risoluzione dei problemi

Per vedere quali indici sono stati assegnati alle schede, eseguire:

  cat /proc/asound/cards

Ala prima scheda trovata da ALSA viene normalmente assegnato l'indice 0 ed è perciò di solito la scheda audio 'predefinita'. Se si è sfortunati la prima scheda audio trovata non è adatta per riprodurre i suoni di sistema. (Tuttavia un errore del tipo "Unknown PCM default" (PCM predefinito sconosciuto) in fase di riproduzione audio avviene quando l'utente non è un membro del gruppo 'audio'; eseguire "sudo adduser <nome_utente> audio" e poi "newgrp" da utente normale).

Ci sono due modi di risolvere questo problema.

1. Forzare le schede a caricarsi in un ordine diverso. Ho scelto questa strada e ho aggiunto quanto segue al mio file /etc/modprobe.d/sound:

  options snd-trident index=0
  options snd-usb-audio index=1

Questo forza la mia scheda Trident come predefinita (scheda 0) ed il mio microfono USB come scheda 1.

2. Cambiare la scheda predefinita modificando il file /etc/asound.conf o ~/.asoundrc. Ulteriori informazioni su questo argomento sono nella pagina Schede multiple di Alsa.

Il reboot bypassa il BIOS e il menu di GRUB? Potrebbe essere causato da kexec-tools che permette appunto di bypassare il BIOS durante il reboot e impedire la corretta inizializzazione dei vari device. Modificare il file /etc/default/kexec come utente root e aggiornare la variabile LOAD_KEXEC a:

LOAD_KEXEC=false

Questa operazione permetterà al BIOS di inizializzare correttamente l'audio e gli altri device ad ogni riavvio.

Lista di controllo

  • aggiungere il proprio utente al gruppo "audio" (fare il log out e poi nuovamente il log in)
  • usare alsamixer e controllare che i canali non siano impostati a muto ed alzare i loro livelli (provare anche a impostare come *muti* alcuni canali come s/pdif e commutare l'opzione per rilevare l'inserimento dello spinotto)
  • è stato fermato arts o esound?
  • i moduli OSS sono stati rimossi (de-caricati) dal kernel?
  • gli altoparlanti sono accesi? sono connessi?
  • modprobe snd-pcm-oss
  • "aplay /usr/share/sounds/alsa/Noise.wav" funziona per l'utente root? Testare il proprio audio con aplay e un file wav in modo che problemi riguardo ai codec non confondano la situazione

* se l'audio non funziona dopo un riavvio del sistema, disabilitare kexec-tools

Versione

Guardare /proc/asound/version.

Strumenti

  • Alsactl: controlli Alsa
  • Alsamixer: per regolare i livelli audio; usa un'interfaccia Ncurses.
  • Aplay: per riprodurre un file .wav.
  • Arecord: per registrare un file .wav.
  • Aconnect: per connessioni ad ALSA sequencer.

Ulteriori informazioni

Per ulteriori informazioni, leggere i file README.Debian nei pacchetti alsa-base e alsa-source o guardare http://www.alsa-project.org e http://alsa.opensrc.org.

Vedere anche: AlsaMidi.

Novità:

Più vecchi


CategorySound CategoryHardware