<!doctype linuxdoc system>
<article opts="italian">
<title>
OAK Mozart and Linux HOWTO
</title>
<author>
pctips &lt;pctips@hardwaretips.com&gt;
</author>
<date>
29 Agosto 2003
</date>
<abstract>
Questo documento spiega come configurare una scheda audio OAK Mozart con
GNU/Linux.
</abstract>
<toc>
<sect>
Introduzione
<sect1>
Che cos'&egrave; una OAK Mozart?
<p>
Una OAK Mozart &egrave; una scheda audio (ora non pi&ugrave; in produzione)
molto diffusa su hardware non molto recente, come 486 e primi Pentium.
Questa scheda usa il vecchio bus ISA e non &egrave; Plug &amp; Play, quindi
richiede una configurazione manuale dei parametri di funzionamento.
</p>
<sect1>
A cosa serve questo HOWTO?
<p>
Lo scopo di questo HOWTO &egrave; guidare il lettore nella configurazione di
una di queste schede sul proprio sistema GNU/Linux, operazione che per un
utente alle prime armi (e non solo) all'apparenza potrebbe risultare
piuttosto difficoltosa.
</p>
<sect1>
Caratteristiche tecniche
<p>
Le schede OAK Mozart sono basate sui chip Opti (ora ESS) 82C931, noti anche
come MAD16 (OAK-601), e sono supportate da Linux con degli appositi moduli.
</p>
<p>
Esse hanno un Synthesizer Yamaha YM3812/OPL3, basato sulla tecnologia OPL3 e
capace di offrire buone prestazioni. Inoltre il mixer della scheda audio non
segue gli standard e per questo bisogna configurare con attenzione gli
strumenti che lo gestiscono.
</p>
<p>
<sect1>
Configurazione di prova
<p>
Per scrivere questo HOWTO mi sono basato sui risultati ottenuti sul mio 486,
una macchina con bus PCI e chipset SiS. Vi sono presenti tre slot ISA e
quattro PCI.
</p>
<p>
La scheda Mozart &egrave; inserita nel secondo slot ISA, mentre due di
quelli PCI sono occupati da una scheda di rete Realtek 8139 10/100 Mbps e da
una scheda video S3 VIRGE/DX.
</p>
<p>
La distribuzione utilizzata &egrave; Debian 3.0 (Woody) con un kernel
ricompilato ad hoc.
</p>
<sect>
Installazione della scheda
<sect1>
Configurazione del kernel
<p>
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.
</p>
<p>
La versione del kernel che ho utilizzato &egrave; la 2.4.18, ma qualsiasi
altra del ramo 2.4 dovrebbe andare bene. Se avete gi&agrave; un kernel con
i moduli necessari, potete tralasciare questa sezione e proseguire.
</p>
<p>
Scaricate i sorgenti del kernel da <htmlurl url="http://www.kernel.org"
name="http://www.kernel.org"> ed estraeteli in /usr/src con:
</p>
<p>
<code>
cd /usr/src
tar xzvf kernel-2.4.x.tar.gz
</code>
</p>
<p>
Se l'archivio che avete scaricato &egrave; 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
&lt;==&gt; x=18).
</p>
<p>
Entrate nella directory appena creata e date:
</p>
<p>
<code>
make mrproper
make menuconfig
</code>
</p>
<p>
Tralasceremo i parametri di configurazione generali (se non sapete come
compilare il kernel potete leggere il <htmlurl
url="http://ildp.pluto.linux.it/HOWTO/Kernel-HOWTO.html"
name="Kernel-HOWTO">) e passeremo direttamente alla sezione dedicata al
suono. Per una maggiore flessibilit&agrave; vi consiglio di abilitare le
seguenti opzioni come moduli (se non diversamente specificato):
</p>
<p>
<itemize>
<item>
ISA bus Support (CONFIG_ISA) (Y)
<item>
EISA Support (CONFIG_EISA) (Y)
<item>
Sound Card Support (CONFIG_SOUND)
<item>
OSS Sound Modules (CONFIG_SOUND_OSS)
<item>
Adlib Cards (CONFIG_SOUND_ADLIB)
<item>
Microsoft Sound System Support (CONFIG_SOUND_MSS)
<item>
Opti MAD16 and/or Mozart based cards (CONFIG_SOUND_MAD16)
<item>
Support MIDI in older MAD16 based cards (requires SB) (CONFIG_MAD16_OLDCARD) (Y)
<item>
Yamaha FM synthesizer (YM3812/OPL-3) support (CONFIG_SOUND_YM3812)
</itemize>
</p>
<p>
Ora salvate la configurazione e date i seguenti comandi per compilare il
kernel:
</p>
<p>
<code>
make dep
make bzImage
make modules &amp;&amp; make modules_install
</code>
</p>
<p>
Se qualcosa non va, rivedete la configurazione ed individuate la causa dei
problemi aiutandovi con i messaggi di errore!
</p>
<p>
Infine, configurate il vostro boot loader e copiate System.map in /boot.
</p>
<p>
Se non ci avete mai provato, leggete il manuale di LILO ed il <htmlurl
url="http://ildp.pluto.linux.it/HOWTO/Kernel-HOWTO.html"
name="Kernel-HOWTO">.
</p>
<sect1>
Test di funzionamento
<p>
Dopo aver compilato ed installato il nuovo kernel, bisogna individuare gli
indirizzi che usa la nostra scheda. Dato che essa non &egrave; Plug &amp;
Play, dovremo determinarli manualmente.
</p>
<p>
Esistono tuttavia alcuni trucchetti che ci permettono di scoprirli
facilmente.
</p>
<p>
Se avete altre schede ISA Plug &amp; 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.
</p>
<p>
Per quanto riguarda gli IRQ, nel mio sistema la scheda di rete usa quello
numero 9 mentre la scheda video quello numero 11.
</p>
<p>
Andate in /lib/modules/2.4.x/kernel/drivers/sound e cominciate a caricare i
moduli necessari per il sistema audio di base con:
</p>
<p>
<code>
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
</code>
</p>
<p>
L'ultimo comando &egrave; 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).
</p>
<p>
Le possibili impostazioni sono:
</p>
<p>
<descrip>
<tag>
irq
</tag>
IRQ della scheda. Generalmente &egrave; quello numero 7 ma talvolta anche il
5.
<tag>
dma
</tag>
DMA della scheda. Potete scegliere tra 0 e 1.
<tag>
dma16
</tag>
DMA16 della scheda. Potete scegliere tra 0 e 1.
<tag>
io
</tag>
Indirizzo di I/O. Generalmente &egrave; quello 0x530 ma talvolta anche 0x534.
<tag>
joystick
</tag>
Abilitazione della porta Joystick. Potete scegliere tra 0 e 1.
<tag>
cdtype
</tag>
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.
<tag>
cdirq
</tag>
IRQ del lettore CD-ROM. Potete scegliere tra 0, 3, 5, 7, 9, 10 e 11.
<tag>
cddma
</tag>
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.
<tag>
opl4
</tag>
Versione di OPL. Potete scegliere tra 0 (OPL3) e 1 (OPL4). &Egrave;
preferibile adottare la prima opzione.
</descrip>
</p>
<p>
Infine, abilitiamo il supporto per il Synthesizer Yamaha YM8132/OPL-3 con
questo comando:
</p>
<p>
<code>
insmod opl3.o io=0x388
</code>
</p>
<p>
Se non avete ricevuto messaggi di errore, la scheda dovrebbe funzionare
correttamente!
</p>
<p>
In caso contrario aiutatevi con i messaggi di errore e cambiate le
impostazioni del modulo.
</p>
<p>
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:
</p>
<p>
<code>
apt-get install esd
</code>
</p>
<sect1>
Il mixer della scheda
<p>
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.
</p>
<sect2>
Configurazione semplice di aumix
<p>
Nel primo caso &egrave; possibile configurare il programma aumix in modo
molto semplice eseguendo:
</p>
<p>
<code>
aumix -w 15 -p 20 -m 0 -1 0 -2 0 -3 0 -i 0
</code>
</p>
<p>
Se ottenete degli errori, provate con il secondo metodo.
</p>
<p>
Nel caso in cui non abbiate aumix nel sistema, potete installarlo su Debian
eseguendo:
</p>
<p>
<code>
apt-get install aumix
</code>
</p>
<sect2>
Configurazione avanzata di aumix
<p>
Il secondo metodo consiste nel compilare questo sorgente tratto dalla
documentazione del kernel (Documentation/sound/Opti):
</p>
<p>
<code>
#include &lt;stdio.h&gt;
#include &lt;fcntl.h&gt;
#include &lt;linux/soundcard.h&gt;

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 &lt; 0) {
		perror("/dev/mixer");
		return 1;
	}

	for(i = 2; i &lt; 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 &lt;&lt; 8 | to;

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

	return 0;
}
</code>
</p>
<p>
Salvate il sorgente come ad1848_mixer_reroute.c e compilatelo con:
</p>
<p>
<code>
gcc -o /sbin/ad1848_mixer_reroute ad1848_mixer_reroute.c
</code>
</p>
<p>
Una volta generato l'eseguibile, date:
</p>
<p>
<code>
ad1848_mixer_reroute 14 8 15 3 16 6
</code>
</p>
<p>
Se il programma non d&agrave; errori, il vostro mixer &egrave; stato
configurato correttamente!
</p>
<sect1>
Configurazione di /etc/modules.conf
<p>
Il file /etc/modules.conf contiene diverse informazioni usate dal programma
modprobe per caricare i moduli. Utilizzando questo programma baster&agrave;
dare un solo comando per configurare la vostra scheda audio.
</p>
<p>
Aprite con il vostro editor di testo preferito il file /etc/modules.conf ed
aggiungete alla fine del file queste righe:
</p>
<p>
<code>
### 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 &amp;&amp; /usr/bin/aumix -w 15 -p 20 -m 0 -1 0 -2 0 -3 0 -i 0
options opl3 io=0x388
### Fine sezione audio ###
</code>
</p>
<p>
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 &amp;&amp;
e scrivete in una nuova riga:
</p>
<p>
<code>
post-install mad16 /sbin/ad1848_mixer_reroute 14 8 15 3 16 6
</code>
</p>
<p>
In questo caso, il vostro /etc/modules.conf dovrebbe essere simile
all'esempio di codice riportato qui di seguito.
<code>
### 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 ###
</code>
</p>
<p>
Ora salvate il file ed uscite dall'editor di testo, quindi riavviate il
sistema. Una volta fatto il login come root, date:
</p>
<p>
<code>
modprobe mad16
modprobe opl3
</code>
</p>
<p>
Ora la scheda audio dovrebbe funzionare correttamente.
</p>
<p>
Potete automatizzare il caricamento dei moduli all'avvio del sistema
eseguendo:
</p>
<p>
<code>
echo "modprobe mad16 && modprobe opl3" &gt;&gt; /etc/rc.d/rc.local
</code>
</p>
<sect>
Conclusione
<sect1>
Licenza
<p>
Copyright (C) 2003 pctips &lt;pctips@hardwaretips.com&gt;
</p>
<p>
This manual is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free
Software Foundation; either version 2 of the License, or (at your option)
any later version.
</p>
<p>
This is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
details.
</p>
<p>
A copy of the GNU General Public License is available on the World Wide Web
at <htmlurl url="http://www.fsf.org/copyleft/gpl.html"
name="http://www.fsf.org/copyleft/gpl.html">. You can also obtain it by
writing to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
Boston, MA 02111-1307, USA.
</p>
<p>
<em>Questa &egrave; la traduzione italiana della licenza: essa &egrave;
presente solo a scopo dimostrativo poich&eacute; la versione inglese
&egrave; l'unica avente valore legale.</em>
</p>
<p>
Questo manuale &egrave; software libero; è lecito redistribuirlo o
modificarlo secondo i termini della Licenza Pubblica Generica GNU come è
pubblicata dalla Free Software Foundation; o la versione 2 della licenza o
(a propria scelta) una versione successiva.
</p>
<p>
&Egrave; distribuito nella speranza che che sia utile,
ma SENZA ALCUNA GARANZIA; senza neppure la garanzia implicita di
COMMERCIABILIT&Agrave; o APPLICABILIT&Agrave; PER UN PARTICOLARE SCOPO. Si
veda la GNU General Public License per avere maggiori dettagli.
</p>
<p>
Una copia della Licenza Pubblica Generica GNU è disponibile sul World Wide
Web su <htmlurl url="http://www.fsf.org/copyleft/gpl.html"
name="http://www.fsf.org/copyleft/gpl.html">. La si può ottenere anche
scrivendo alla Free Software Foundation, Inc., 59 Temple Place, Suite 330,
Boston, MA 02111-1307 USA.
</p>
<sect1>
Contribuire a questo documento
<p>
Chiunque pu&ograve; contribuire alla stesura ed al mantenimento di questo
documento. Per suggerimenti, commenti o critiche potete scrivermi
all'indirizzo di posta elettronica <htmlurl
url="mailto:pctips@hardwaretips.com" name="pctips@hardwaretips.com">.
</p>
</article>

