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.
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 della scheda. Generalmente è quello numero 7 ma talvolta anche il 5.
DMA della scheda. Potete scegliere tra 0 e 1.
DMA16 della scheda. Potete scegliere tra 0 e 1.
Indirizzo di I/O. Generalmente è quello 0x530 ma talvolta anche 0x534.
Abilitazione della porta Joystick. Potete scegliere tra 0 e 1.
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.
IRQ del lettore CD-ROM. Potete scegliere tra 0, 3, 5, 7, 9, 10 e 11.
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.
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
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.
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
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!
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