Avanti Indietro Indice

2. Installazione della scheda

2.1 Configurazione del kernel

Usando il kernel 2.2.20-idepci di Debian 3.0 Woody non ho trovato il supporto per la mia OAK Mozart e quindi ho deciso di ricompilarne uno appositamente per il mio sistema.

La versione del kernel che ho utilizzato è la 2.4.18, ma qualsiasi altra del ramo 2.4 dovrebbe andare bene. Se avete già un kernel con i moduli necessari, potete tralasciare questa sezione e proseguire.

Scaricate i sorgenti del kernel da http://www.kernel.org ed estraeteli in /usr/src con:


cd /usr/src
tar xzvf kernel-2.4.x.tar.gz

Se l'archivio che avete scaricato è compresso con bzip2, sostituite il flag "z" di tar con "j" (tar xjvf). Il simbolo x presente nel nome del tarball va sostituito con la versione del kernel scaricata (Es. 2.4.18 <==> x=18).

Entrate nella directory appena creata e date:


make mrproper
make menuconfig

Tralasceremo i parametri di configurazione generali (se non sapete come compilare il kernel potete leggere il Kernel-HOWTO) e passeremo direttamente alla sezione dedicata al suono. Per una maggiore flessibilità vi consiglio di abilitare le seguenti opzioni come moduli (se non diversamente specificato):

Ora salvate la configurazione e date i seguenti comandi per compilare il kernel:


make dep
make bzImage
make modules && make modules_install

Se qualcosa non va, rivedete la configurazione ed individuate la causa dei problemi aiutandovi con i messaggi di errore!

Infine, configurate il vostro boot loader e copiate System.map in /boot.

Se non ci avete mai provato, leggete il manuale di LILO ed il Kernel-HOWTO.

2.2 Test di funzionamento

Dopo aver compilato ed installato il nuovo kernel, bisogna individuare gli indirizzi che usa la nostra scheda. Dato che essa non è Plug & Play, dovremo determinarli manualmente.

Esistono tuttavia alcuni trucchetti che ci permettono di scoprirli facilmente.

Se avete altre schede ISA Plug & Play potete usare il programma pnpdump per vedere quali risorse utilizzano, in modo tale da potervi regolare su quelle che usa la scheda audio andando per esclusione.

Per quanto riguarda gli IRQ, nel mio sistema la scheda di rete usa quello numero 9 mentre la scheda video quello numero 11.

Andate in /lib/modules/2.4.x/kernel/drivers/sound e cominciate a caricare i moduli necessari per il sistema audio di base con:


insmod sound.o
insmod uart401.o
insmod sb_lib.o
insmod sb.o
insmod ad1848.o
insmod mad16 irq=7 dma=1 dma16=1 io=0x530 joystick=1 cdtype=0 mpu_io=816 mpu_irq=5

L'ultimo comando è quello strettamente legato alla vostra scheda audio: con le varie opzioni elencate, infatti, si specificano le risorse utilizzate da essa. Le opzioni mpu_io e mpu_irq servono nel caso in cui abbiate una scheda audio con una MPU integrata (come la OAK Mozart).

Le possibili impostazioni sono:

irq

IRQ della scheda. Generalmente è quello numero 7 ma talvolta anche il 5.

dma

DMA della scheda. Potete scegliere tra 0 e 1.

dma16

DMA16 della scheda. Potete scegliere tra 0 e 1.

io

Indirizzo di I/O. Generalmente è quello 0x530 ma talvolta anche 0x534.

joystick

Abilitazione della porta Joystick. Potete scegliere tra 0 e 1.

cdtype

Porta per lettore CD-ROM. Il valore 0 disabilita la porta CD-ROM integrata; 0x02 abilita il supporto per lettori SONY CDU31A; 0x04 per lettori Mitsumi; 0x06 per lettori Panasonic; 0x08 abilita una porta secondaria IDE; 0x0a abilita una porta primaria IDE.

cdirq

IRQ del lettore CD-ROM. Potete scegliere tra 0, 3, 5, 7, 9, 10 e 11.

cddma

DMA del lettore CD-ROM. Potete scegliere tra 0, 5, 6 e 7 per lettori Mitsumi o IDE; tra 0, 1, 2 e 3 per lettori Panasonic o Sony.

opl4

Versione di OPL. Potete scegliere tra 0 (OPL3) e 1 (OPL4). È preferibile adottare la prima opzione.

Infine, abilitiamo il supporto per il Synthesizer Yamaha YM8132/OPL-3 con questo comando:


insmod opl3.o io=0x388

Se non avete ricevuto messaggi di errore, la scheda dovrebbe funzionare correttamente!

In caso contrario aiutatevi con i messaggi di errore e cambiate le impostazioni del modulo.

Per controllare il corretto funzionamento della scheda avviate esd (Enlightenment Sound Daemon): se sentite la musichetta iniziale tutte le operazioni sono state eseguite alla perfezione. Se non l'avete ancora installato, su Debian potete farlo con:


apt-get install esd

2.3 Il mixer della scheda

Come ho accennato in precedenza, questa scheda usa un sistema di indirizzamento per il mixer che necessita di una configurazione particolare. Per farlo ci sono due possibili alternative, le analizzeremo entrambe.

Configurazione semplice di aumix

Nel primo caso è possibile configurare il programma aumix in modo molto semplice eseguendo:


aumix -w 15 -p 20 -m 0 -1 0 -2 0 -3 0 -i 0

Se ottenete degli errori, provate con il secondo metodo.

Nel caso in cui non abbiate aumix nel sistema, potete installarlo su Debian eseguendo:


apt-get install aumix

Configurazione avanzata di aumix

Il secondo metodo consiste nel compilare questo sorgente tratto dalla documentazione del kernel (Documentation/sound/Opti):


#include <stdio.h>
#include <fcntl.h>
#include <linux/soundcard.h>

static char *mixer_names[SOUND_MIXER_NRDEVICES] =
        SOUND_DEVICE_LABELS;

int
main(int argc, char **argv) {
        int val, from, to;
        int i, fd;

        fd = open("/dev/mixer", O_RDWR);
        if(fd < 0) {
                perror("/dev/mixer");
                return 1;
        }

        for(i = 2; i < argc; i += 2) {
                from = atoi(argv[i-1]);
                to = atoi(argv[i]);

                if(to == SOUND_MIXER_NONE)
                        fprintf(stderr, "%s: turning off mixer %s\n",
                                argv[0], mixer_names[to]);
                else
                        fprintf(stderr, "%s: rerouting mixer %s to %s\n",
                                argv[0], mixer_names[from], mixer_names[to]);

                val = from << 8 | to;

                if(ioctl(fd, SOUND_MIXER_PRIVATE2, &val)) {
                        perror("AD1848 mixer reroute");
                        return 1;
                }
        }

        return 0;
}

Salvate il sorgente come ad1848_mixer_reroute.c e compilatelo con:


gcc -o /sbin/ad1848_mixer_reroute ad1848_mixer_reroute.c

Una volta generato l'eseguibile, date:


ad1848_mixer_reroute 14 8 15 3 16 6

Se il programma non dà errori, il vostro mixer è stato configurato correttamente!

2.4 Configurazione di /etc/modules.conf

Il file /etc/modules.conf contiene diverse informazioni usate dal programma modprobe per caricare i moduli. Utilizzando questo programma basterà dare un solo comando per configurare la vostra scheda audio.

Aprite con il vostro editor di testo preferito il file /etc/modules.conf ed aggiungete alla fine del file queste righe:


### Inizio sezione audio ###
alias char-major-14 mad16
alias mixer0 mad16
alias audio0 mad16
alias synth0 mad16
options adlib_card io=0x388
options sb mad16=1
options mad16 irq=7 dma=1 dma16=1 io=0x530 joystick=1 cdtype=0 mpu_io=816 mpu_irq=5 && /usr/bin/aumix -w 15 -p 20 -m 0 -1 0 -2 0 -3 0 -i 0
options opl3 io=0x388
### Fine sezione audio ###

Sostituite eventualmente i parametri originali con quelli del vostro sistema. Nel caso in cui abbiate optato per la configurazione avanzata di aumix, eliminate il contenuto della penultima riga a partire da && e scrivete in una nuova riga:


post-install mad16 /sbin/ad1848_mixer_reroute 14 8 15 3 16 6

In questo caso, il vostro /etc/modules.conf dovrebbe essere simile all'esempio di codice riportato qui di seguito.


### Inizio sezione audio ###
alias char-major-14 mad16
alias mixer0 mad16
alias audio0 mad16
alias synth0 mad16
options adlib_card io=0x388
options sb mad16=1
options mad16 irq=7 dma=1 dma16=1 io=0x530 joystick=1 cdtype=0 mpu_io=816 mpu_irq=5
post-install mad16 /sbin/ad1848_mixer_reroute 14 8 15 3 16 6
options opl3 io=0x388
### Fine sezione audio ###

Ora salvate il file ed uscite dall'editor di testo, quindi riavviate il sistema. Una volta fatto il login come root, date:


modprobe mad16
modprobe opl3

Ora la scheda audio dovrebbe funzionare correttamente.

Potete automatizzare il caricamento dei moduli all'avvio del sistema eseguendo:


echo "modprobe mad16 && modprobe opl3" >> /etc/rc.d/rc.local


Avanti Indietro Indice