Configurare Linux per supportare il suono prevede i seguenti passaggi:
La prossima sezione descrive dettagliatamente questi passaggi.
Segui le istruzioni del produttore per l'installazione dell'hardware o, meglio, richiedi al tuo rivenditore l'installazione della scheda al momento dell'acquisto.
Le vecchie schede sonore usano switch o jumper per il settaggio di IRQ, canali DMA , ecc; trascrivi su un foglio i valori assegnati. Se non sei sicuro, usa i parametri predefiniti. Nel limite del possibile cerca di evitare conflitti con altro hardware installato sul sistema (e.g. ethernet, SCSI , seriali e porte parallele) .
Usualmente si dovrebbero usare la stessa porta di I/O, IRQ e settaggi di DMA che si usano sotto DOS. In qualche caso (particolarmente con schede PnP) si devono usare diversi settaggi per far funzionare le cose sotto Linux. Serve qualche prova.
Al momento della prima installazione normalmente si usa un kernel precompilato. Questo kernel normalmente non supporta il suono. La cosa migliore è, senza dubbio, la ricompilazione del kernel con l'aggiunta dei driver che vi servono. Dovreste comunque ricompilare il kernel perlomeno per aggiornare la versione e minimizzare la grandezza del file stesso (vmlinuz) onde evitare di occupare troppo spazio in memoria
Il Linux Kernel HOWTO dovrebbe essere consultato per i dettagli su come compilare un nuovo kernel. Qui procederó solamente a riportare alcuni passaggi riguardanti il supporto sonoro.
Se, prima d'ora, non avete mai configurato il kernel per il supporto sonoro sarebbe una buona idea leggere tutti i Readme file inclusi con il kernel sound driver ed in particolar modo le informazioni specifiche riguardanti la vostra scheda sonora. La seguente documentazione si trova normalmente nella directory del kernel sound driver, che viene installata di default in /usr/src/linux/drivers/sound:
CHANGELOG - descrizione dei cambiamenti apportati in ogni release COPYING - copying and copyright Readme - ultime e più importanti novità Readme.aedsp16 - informazioni sulla scheda sonora Audio Excel DSP 16 Readme.cards - note sulla configurazione di schede particolari Readme.linux - note sull'installazione di release separate del sound driver Readme.modules - configurare il driver come modulo per il kernel (insmod) Readme.v30 - nuove implementazioni nella versione 3.0 del sound driver experimental.txt - note sulle inclusioni sperimentali
Segui la metodologia normale per compilare il kernel. Attualmente vi sono tre interfacce per il processo di configurazione. Un'interfaccia utente grafica che gira sotto X11 può essere lanciata con "make xconfig". Una basata su menu che richiede sono un display testuale è disponibile con "make menuconfig". Il metodo originale, usando "make config", offre una semplice interfaccia di testo.
Si deve stare attenti quando si usa "make xconfig" o "make menuconfig". Tutte le domande Yes/No devono essere esaminate con attenzione. La risposta predefinita di queste domande è sempre No che non in tutti i casi è quella corretta. In particolare l'opzione "/dev/dsp and /dev/audio support" (CONFIG_AUDIO) deve normalmente essere abilitata.
In questo documento ipotizzerò che si usi l'interfaccia tradizionale di configurazione che si lancia con "make config", anche se il processo può dirsi simile in altri casi.
Vi sono anche due modi differenti per configurare il supporto sonoro. Il primo è quello "vecchia" maniera (l'unico disponibile prima dei kernel 2.0.0). Esso utilizza un programma separato di configurazione che è distribuito assieme al driver sonoro. Questo metodo funziona con molte schede audio eccezione fatta per quelle che richiedono dei driver "low level" addizionali (schede miroSOUND, AWE32 e AEDSP16).
Il secondo metodo è quello "nuovo" che è maggiormente integrato con il processo di configurazione basato su menu utilizzato per il resto del kernel. Questo metodo non funziona con quelle schede audio che richiedono un file di download del firmware. Queste includono le schede PSS, SM Wave, AudioTrix Pro e TurtleBeach Tropez/Maui. Con queste schede si deve utilizzare il vecchio metodo.
Il metodo utilizzato da "make xconfig" è quello "nuovo". Se si usa "make menuconfig" si può scegliere tra il "vecchio" ed il "nuovo" metodo nella sottosezione "sound". Se si usa "make config" il metodo predefinito è quello "vecchio". Comunque sia se si è utilizzato il "nuovo" metodo per una volta esso verrà utilizzato anche da "make config". Si può ritornare al "vecchio" metodo eseguendo "make menuconfig" e scegliendo il metodo "vecchio".
Si raccomanda di usare "make menuconfig" assieme al "vecchio" metodo si configurazione del supporto sonoro. Molti problemi di configurazione del supporto sonoro sono causati (almeno in parte) da un uso scorretto del "nuovo" metodo.
È altresì possibile compilare il driver sonoro come modulo caricabile del kernel. Io raccomando di compilare inizialmente il supporto sonoro direttamente nel kernel. Una volta che esso è stato testato e non dà problemi si può provare a smanettare con l'opzione che consente di compilarlo come modulo kernel.
Quando si esegue make config
, si abiliti il supporto sonoro
rispondendo "Yes" alla domanda
Sound card support (CONFIG_SOUND) [M/n/y/?]
Alla fine delle domande sulla configurazione verrà eseguito un programma di configurazione per il sonoro e vi verrà chiesto il tipo di scheda sonora che vorrete supportare . Ponete una grande attenzione quando rispondete alle domande poiché una risposta sbagliata potrebbe impedire che vi vengano poste le altre domande . Per esempio, non rispondete "yes" alla prima domanda (PAS16) se non avete una PAS16. Non abilitate più schede di quante realmente ne avete bisogno, sprechereste inutilmente memoria. Inoltre alcuni drivers (tipo MPU401) possono entrare in conflitto con il controller SCSI ed impedirvi di eseguire il boot.
Qui c'è una breve descrizione di tutte le opzioni che vi chiederà il programma di configurazione. Rispondete "y" (yes) o "n" (no) ad ogni domanda. La risposta di default viene presentata in questo modo "(y/n)" assegna "y" di default e "(n/y)" assegna "n" di default. Per usare il default , basta premere Invio, ma ricordatevi che i valori assegnati di default non sono necessariamente corretti.
Immettendo un punto interrogativo ("?") si otterrà una breve descrizione della corrente opzione di configurazione.
Da notare che non necessariamente vi saranno poste tutte le domande. Il programma di configurazione potrebbe disabilitare alcune domande in base alle risposte precedenti. E potrebbe inoltre scegliere alcune opzioni automaticamente.
Se il kernel è stato precedentemente compilato con il supporto per il suono, la precedente configurazione può essere salvata. Se si vuole utilizzare il setup precedente si risponda "y". Se si vuole modificare la configurazione o si è aggiornato il kernel si deve rispondere "n" ed eseguire il processo di configurazione.
Rispondi "y" solo se hai una Pro Audio Spectrum 16, ProAudio Studio 16 o Logitech SoundMan 16. Non rispondere 'y' se hai qualche altra scheda costruita da Media Vision o Logitech poiché esse non sono compatibili con la PAS16.
Rispondi "y" se hai una SoundBlaster originale della Creative Labs o un clone compatibile a livello hardware al 100% (tipo la Thunderboard o la SM Games). Se la vostra scheda era nella lista di quelle supportate date un occhiata alle istruzioni specifiche nel file Readme.cards prima di rispondere a questa domanda. Per una scheda non documentata o sconosciuta risponderete "y" solo se è dichiarata compatibile SoundBlaster.
Rispondi "y" se hai una GUS o una GUS MAX. Rispondi "n" se non hai una GUS visto che il driver occupa un bel po' di memoria.
Attenzione a questa domanda. L'interfaccia MPU401 è supportata da quasi tutte le schede sonore . Benché, alcune schede supportate abbiano il loro driver per la MPU401. Abilitare il supporto MPU401 con queste schede causa dei conflitti. E comunque abilitare il supporto MPU401 su un sistema che non ha la MPU401 può causare alcuni problemi. Se la vostra scheda era nella lista delle schede supportate controllate le istruzioni specifiche nel file Readme.cards. È esatto rispondere "y" se avete una vera interfaccia midi MPU401.
La risposta più giusta a questa domanda è "n". L'interfaccia 6850 UART è usata solo in rarissimi casi.
Rispondi "y" solo se hai una Orchid SW32, Cardinal DSP16 o qualche altra scheda basata sul chipset PSS (AD1848 codec + ADSP-2115 DSP chip + Echo ESC614 ASIC CHIP).
Rispondi "y" se hai installato la scheda add-on per il campionamento a 16 bit sulla tua GUS. Rispondi "n" se hai una GUS MAX. L'abilitazione di questa opzione disabilita automaticamente il supporto GUS MAX
Rispondi "y" solo se hai una GUS MAX.
Anche qui pensaci bene prima di rispondere "y" a questa domanda. È esatto rispondere "y" solo se hai la "Windows Sound System card" originale prodotta da Microsoft o la Aztech SG 16 Pro (oppure NX16 Pro). Comunque devi rispondere "y" nel caso in cui la tua scheda non fosse stata presentata prima in questo file. Per le schede con supporto nativo nel driver VoxWare, consulta le istruzione specifiche per la scheda nel Readme.cards. Alcuni drivers hanno il proprio supporto MSS e l'abilitazione di questa opzione può causare dei conflitti.
Rispondi "y" se hai una scheda sonora basata sul chipset Ensoniq SoundScape. Questo tipo di scheda viene prodotto da Ensoniq, Spea and Reveal (Reveal produce anche altri tipi di schede).
Rispondi "y" se hai la AudioTriX Pro.
Rispondi "y" se la tua scheda monta un'interfaccia audio basata sul chip Mozart (OAK OTI-601) o MAD16 (OPTi 82C928 or 82C929). Questi chips sono abbastanza comuni ed è possibile che alcune schede sconosciute ne facciano uso. In aggiunta, il chip MAD16 viene usato in alcune schede prodotte da ditte conosciute tipo Turtle Beach (Tropez), Reveal (alcuni modelli) e Diamond (le ultime).
Rispondi "y" se hai una scheda basata sul chipset Crystal CS4232.
Rispondi "y" se hai una di queste schede.
Abilita questo supporto se la tua scheda è una SoundBlaster Pro o SoundBlaster 16. Abilitalo comunque con qualsiasi clone SoundBlaster Pro. Rispondere "n" libera un po' di memoria, comunque rispondere "y" è una buona alternativa.
Abilitalo se hai una SoundBlaster 16 (inclusa la AWE32).
Abilitalo se hai una scheda Audio Excel DSP16. Controlla il file Readme.aedsp16 per informazioni aggiuntive.
Il programma di configurazione vi porrà adesso alcune domande sui servizi di alto livello. Si raccomanda di rispondere "y" a tutte queste domande. Rispondere "n" solo se si sa di non avere bisogno di questa opzione.
Rispondendo "n" si disabilitano il /dev/dsp e il /dev/audio, i dispositivi del convertitore A/D e D/A . Rispondere "y".
Rispondendo "n" si disabilitano i device /dev/midixx e l'accesso a qualsiasi porta MIDI usando il device /dev/sequencer e il device /dev/music. Questa opzione riguarda qualsiasi dispositivo MPU401 ed/o General MIDI compatibile.
Qui rispondere "y".
Rispondendo "n" si disabilitano i dispositivi /dev/sequencer e /dev/music.
Rispondere "y" se si una scheda audio Sound Galaxy NX Pro e si vuole che le sue funzioni estese del mixer siano supportate.
Rispondere "y" se si ha una scheda audio MV Jazz 16.
Rispondere "Y" se si ha una scheda audio Logitech SoundMan Games.
Dopo le informazioni sopra descritte il programma di configurazione vi richiederà informazioni specifiche sulla scheda. Normalmente vengono chiesti una serie di: indirizzi I/O, numeri di IRQ e DMA . Con alcune schede il programma richiede circa l'utilizzo di alcuni file al momento dell'inizializzazione della scheda stessa. Vengono usati da schede che montano un chip DSP o un microprocessore che devono essere inizializzate mandando un file (microcodice) alla scheda. In alcuni casi questo codice è scritto in un file .h dal programma di configurazione ed incluso nel sound driver durante la compilazione. Comunque, consulta le informazioni nel file Readme.cards pertinenti il tuo tipo di scheda.
Si potrà quindi leggere il prompt:
The sound driver is now configured.
Save copy of this configuration to /etc/soundconf [Y/n/?]
(il driver sonoro è stato configurato. Si vuole copiare questa configurazione
in /etc/soundconf. ndt.)
Normalmente si risponde "y" in maniera tale che se poi si avrà bisogno di ricompilare il kernel, si avrà l'opzione di poter usare la medesima configurazione del driver sonoro.
Se si sta aggiornando un vecchio driver sonoro, ci si assicuri che i file
/usr/include/sys/soundcard.h e
/usr/include/sys/ultrasound.h siano dei link simbolici ai
file corrispondenti in /usr/include/linux, o che essi contengano
semplicemente le linee #include <linux/soundcard.h>
e #include <linux/ultrasound.h>
, rispettivamente.
Adesso sei pronto a compilare ed installare il nuovo kernel.
Per un corretto funzionamento devono essere creati dei file dispositivo per i dispositivi audio. Essi vengono creati di norma durante l'installazione del vostro sistema Linux. Può essere fatto un controllo veloce utilizzando il comando di cui si parla qui di seguito. Se l'output è quello mostrato (la data può variare) allora i file dispositivi sono quasi sicuramente a posto.
% ls -l /dev/sndstat
crw-rw-rw- 1 root root 14, 6 Apr 25 1995 /dev/sndstat
Si noti che il fatto che i file dispositivo siano a posto di per sé non garantisce nulla. Anche il driver del kernel deve essere stato caricato o compilato prima che le periferiche funzionino (se ne parlerà più avanti).
In qualche raro caso, se si crede che i dispositivi siano errati, essi
possono essere ricreati usando il piccolo script shell che si trova alla
file del file Readme.linux nella directory
/usr/src/linux/drivers/sound, eseguendolo come utente
root
. In alternativa, diverse distribuzioni di Linux hanno uno
script in /dev/MAKEDEV che può essere utilizzato a tale scopo.
Se state usando il driver sonoro per lo speaker PC, leggete la documentazione che è acclusa nel pacchetto per determinare quali file dispositivo creare.
Dovreste essere pronti per eseguire il boot e testare il sound driver. Seguite le normali procedure per installare e fare il boot del nuovo kernel (non cancellate il vecchio kernel, può servire nel caso in cui si incontrino problemi).
Durante il boot, controllate l'esistenza di un messaggio tipo questo alla
partenza (se passano troppo velocemente, li potete rileggere con il
comando dmesg
):
Sound initialization started
<Sound Blaster 16 (4.13)> at 0x220 irq 5 dma 1,5
<Sound Blaster 16> at 0x330 irq 5 dma 0
<Yamaha OPL3 FM> at 0x388
Sound initialization complete
Deve corrispondere al tipo di scheda installato e al settaggio di IRQ e jumper (se ci sono).
Si noti che i messaggi di cui sopra non vengono mostrati se si è preferito utilizzare il driver come modulo caricabile del kernel (a meno che non venga abilitato, ad esempio con "insmod sound trace_init=1").
Quando il driver sonoro viene compilato nel kernel i messaggi "Sound initialization started" e "Sound initialization complete" devono apparire. Se ciò non accadesse significa che non è presente un driver sonoro nel kernel. In questo caso si avrà cura di controllare che il kernel installato sia quello che è stato compilato con l'abilitazione del driver sonoro.
Se non viene visualizzato nulla tra le righe "Sound initialization started" e "Sound initialization complete" significa che non sono stati rilevati dispositivi audio. Molto probabilmente significa che non è stato abilitato il driver giusto, la scheda non è supportata, la porta di I/O è sbagliata o che si ha una scheda PnP che non è stata configurata.
Il driver può anche mostrare dei messaggi di errore e altre avvertenze durante il boot. Si stia attenti a tali messaggi la prima volta che viene effettuato il boot dopo aver configurato il driver sonoro.
Si dovrà successivamente controllare il file dispositivo /dev/sndstat. Leggendo il file sullo stato del driver sonoro (/dev/sndstat ndt.) vengono presentate informazioni aggiuntive sulla eventuale corretta inizializzazione del driver sonoro. Ecco un esempio di output:
% cat /dev/sndstat
Sound Driver:3.5.4-960630 (Sat Jan 4 23:56:57 EST 1997 root,
Linux fizzbin 2.0.27 #48 Thu Dec 5 18:24:45 EST 1996 i586)
Kernel: Linux fizzbin 2.0.27 #48 Thu Dec 5 18:24:45 EST 1996 i586
Config options: 0
Installed drivers:
Type 1: OPL-2/OPL-3 FM
Type 2: Sound Blaster
Type 7: SB MPU-401
Card config:
Sound Blaster at 0x220 irq 5 drq 1,5
SB MPU-401 at 0x330 irq 5 drq 0
OPL-2/OPL-3 FM at 0x388 drq 0
Audio devices:
0: Sound Blaster 16 (4.13)
Synth devices:
0: Yamaha OPL-3
Midi devices:
0: Sound Blaster 16
Timers:
0: System clock
Mixers:
0: Sound Blaster
Il comando precedente può restituire alcuni messaggi di errore. "No such file or directory" indica che si devono creare i file dispositivo (vedi sezione 4.3). "No such device" significa che il driver sonoro non è stato caricato o linkato nel kernel. Si ritorni alla sezione 4.2 per rimediare a questo errore.
Se le linee della sezione "Card config:" di /dev/sndstat sono visualizzate tra parentesi (tipo "(SoundBlaster at 0x220 irq5 drq 1,5)"), significa che quel dispositivo è stato configurato ma non rilevato.
Adesso siete pronti per eseguire un semplice file sonoro. Prendete un qualsiasi file sonoro e reindirizzatelo sul sound device per testarne il risultato , ad esempio:
% cat endoftheworld >/dev/dsp
% cat crash.au >/dev/audio
(State attenti a non dimenticare il ">" nel comando di cui sopra).
Si noti che, in generale, l'uso di cat
non è la maniera più
adatta per riprodurre file audio, serve solo come piccolo controllo.
Avrete bisogno di un vero e proprio programma di riproduzione
(se ne parla più avanti) che farà un lavoro migliore.
Questo comando funzionerà se vi è almeno un dispositivo nella sezione "audio devices" di /dev/sndstat. Se la sezione "audio devices" è vuota ci si dovrà accertare del perché il dispositivo non è stato rilevato.
Se il comando precedente restituisce un "I/O error", dovreste dare un'occhiata alla parte finale dei messaggi del kernel usando il comando "dmesg". È probabile che vi si trovi un messaggio di errore. Molto spesso il messaggio è "Sound: DMA (output) timed out - IRQ/DRQ config error?". Questo messaggio significa che il driver non ha utilizzato con successo l'interrupt impostato per comunicare con la scheda audio. In molti casi significa che l'IRQ o il canale DMA configurato nel driver non sono corretti. La maniera migliore di farlo funzionare è quella di tentare con tutte le possibili combinazione di DMA e IRQ supportati dal dispositivo audio.
Un'altra possibile ragione è costituita dall'incompatibilità del dispositivo rilevato con il driver che si è scelto di installare. È questo il caso delle schede che si dicono "SoundBlaster (Pro/16) compatibili" ma che non funzionano con il driver per SoundBlaster. In questo caso si dovrà scoprire con quale scheda audio è compatibilie la propria (ad esempio scrivendo un messaggio sul newsgroup comp.os.linux.hardware).
Alcuni esempi di file sonori sono reperibili presso : ftp://tsx-11.mit.edu/pub/linux/packages/sound/snd-data-0.1.tar.Z
Adesso verificate la registrazione. Se avete la possibilità di usare un dispositivo di input potete fare un test veloce in questo modo :
# registra 4 secondi di audio dal microfono
EDT% dd bs=8k count=4 </dev/audio >sample.au
4+0 records in
4+0 records out
# play back sound
% cat sample.au >/dev/audio
Ovviamente per far funzionare tutto ciò si dovrà aver connesso un microfono alla scheda audio e vi si dovrà parlare (se non lo avevate capito... ndt). Forse avrete anche bisogno di installare un programma mixer per impostare il microfono come dispositivo di input e regolare il guadagno.
Se il test non dà problemi, potete ragionevolmente confidare nel fatto che la scheda D/A and A/D e il software funzionano. Al contrario se avete riscontrato problemi controllate la sezione successiva di questo documento.
Se comunque, dopo avere seguito le istruzioni dell'HOWTO, incontrate problemi qui propongo alcune cose da controllare. I controlli sono listati in ordine progressivo di difficoltà. Se un controllo non funzionasse, risolvi il problema prima di passare al controllo successivo.
Puoi controllare la data del kernel per vedere se stai usando quello
compilato con il supporto per il suono. Puoi farlo con il comando
uname
:
% uname -a
Linux fizzbin 2.0.0 #1 Tue Jun 4 16:57:55 EDT 1996 i386
o visualizzando il file /proc/version:
% cat /proc/version
Linux version 2.0.0 (root@fizzbin) (gcc version 2.7.0) #1 Tue Jun 4 16:57:55 EDT 1996
Se la data non corrisponde al giorno in cui hai compilato il kernel, allora stai usando un vecchio kernel. Hai eseguito il reboot? Se usi LILO, lo hai reinstallato (normalmente eseguendo /etc/lilo/install)? Se esegui il boot da un floppy, ne hai creato uno nuovo di boot ? E hai usato quello, per il boot?
Il modo più facile per fare questo controllo è quello di dare un'occhiata all'output di "dev/sndstat" come prima detto. Se l'output non è quello che ci si attendeva allora qualche cosa è andata storta durante la configurazione o la compilazione del kernel. Fate ripartire il processo di installazione, ricominciando dalla configurazione e compilazione del kernel.
Assicurati che il kernel abbia rilevato la scheda al momento del boot.
Dovresti avere visto un messaggio in fase di boot. Se il messaggio è passato
troppo velocemente puoi richiamarlo con il comando dmesg
:
% dmesg
oppure
% tail /var/adm/messages
Se la scheda non è stata trovata qualcosa è andato storto. Assicurati che sia realmente installata. Se funziona sotto DOS puoi ragionevolmente sperare che l'hardware funzioni, probabilmente è solo un problema di configurazione del kernel. Forse hai configurato la scheda del tipo sbagliato o hai assegnato parametri inesatti, o la tua scheda non è compatibile con nessuno dei driver sonori del kernel di Linux.
Una possibilità è quella che la tua scheda sia una delle "compatibili" che
richiedono l'inizializzazione dal driver del DOS . Prova a fare il boot da DOS
e ad installare il driver fornito dal produttore della scheda. Poi esegui un
boot a caldo di Linux usando Control-Alt-Delete
(Control-Alt-Canc
nelle tastiere italiane. ndt). Assicurati che gli indirizzi di I/O,
DMA e le impostazioni degli IRQ della scheda siano gli stessi sia per Linux che per DOS.
Consulta il file Readme.cards nei sorgenti della distribuzione del
sound driver per eventuali consigli sulla configurazione della tua scheda.
Se la tua scheda non compare nel documento, è possibile che il Linux sound driver non la supporti. Controlla i riferimenti alla fine di questo documento.
Prova a leggere dal dispositivo /dev/audio usando il comando
dd
visto prima all'interno di questo documento. Il comando deve
funzionare senza errori.
Se non funziona probabilmente dipende da un conflitto di IRQ o DMA o da qualche tipo di incompatibilità hardware (il dispositivo non è supportato da Linux o il driver è stato configurato per un dispositivo errato).
Una remota possibilità potrebbe essere un hardware non funzionante. Prova ad eseguire un test da DOS, se possibile, per vedere se è questa la causa.
Se hai ancora problemi, qui ci sono gli ultimi consigli su eventuali cose da provare:
comp.os.linux
o su
altri gruppi Usenet (comp.os.linux.hardware è una buona scelta; a causa
dell'altro livello di traffico su questi gruppi aiuta mettere la parola "sound"
nel subject del messaggio, in modo tale che i giusti esperti lo notino)Esc-x doctor
:-)