/# lic netwOrk | loginclub How To "Linux mit Soundblaster & WSS kompatiblen Soundkarten"
| How To . . . |
|
Inhaltsverzeichnis 1 Einleitung 1.1 Geschichte 1.2 Copyright 1.3 Allgemeine Infos zur Karte
2 Installation 2.1 Einstellungen fuer den Kernel 2.2 Wie funktionieren die Mixer? 2.3 FAQ 2.3.1 Details zur Hardware 2.3.2 Checkliste
1 Einleitung 1.1 Geschichte Der Text entstand von mir Urspruenglich als FAQ: Probleme mit Aztech SOUND GALAXY. Da ich haeufiger e-mails bekommen habe, in denen ich ueber die Einrichtung einer Aztech SOUND GALAXY gefragt wurde. Die Karte ist kompatibel zum Soundblaster Pro und zum Windows Sound System. Ich habe eine Moeglichkeit gefunden, 16-Bit Sound und die Mixer zu benutzen. Im Laufe der Zeit hat sich dann gezeigt, daß die meisten Aussagen allgemeingueltig furr kompatible Karten und Mixer sind.
1.2 Copyright Dieses Dokument ist urheberrechtlich geschuetzt. Das Copyright liegt bei Frank Boehm. Das Dokument darf gemaeß der GNU General Public License verbreitet werden. Insbesondere bedeutet dieses, daß der Text sowohl ueber elektronische wie auch physikalische Medien ohne die Zahlung von Lizenzgebuehren verbreitet werden darf, solange dieser Copyright Hinweis nicht entfernt wird. Eine kommerzielle Verbreitung ist erlaubt und ausdruecklich erwuenscht. Bei einer Publikation in Papierform ist das Deutsche Linux HOWTO Projekt hierueber zu zu informieren.
1.3 Allgemeine Infos zur Karte Die gute Nachricht zuerst, ich habe die gleiche Karte problemlos unter Linux (Kernel 2.0.30-32)ansprechen koennen.Bei Bedarf finde ich bestimmt auch die Werte fuer einen alten 1.x.xx Kernel. Die schlechte, um alle Mixer 2.
Installation Funktionen nutzen zu koennen, habe ich den Kernel gepatcht. Auf der Karte befinden sich zwei Soundkarten. Sie ist kompatibel zur Soundblaster Pro (lolevel) und zum Windows Sound System und beide koennen ohne Tricks nur ausschließlich benutzt werden. Entweder SB-Pro oder WSS. Beide Karten benutzen den gleichen DMA, deshalb muß leider die Entscheidung zwischen einer Karte fuer die Soundausgabe fallen, es kann deshalb sofort benutzt werden:
SB-Pro: 8-bit Aufnahme/Wiedergabe und der Mixer ohne Baß und Hoehen aber mit Synth/PCM/Line In/Mic/CD/Master oder
WSS: 16-bit Aufnahme/Wiedergabe und der Mixer zeigt an PCM/Line 1/Line 2/Mic/Rec/In gain, obwohl die meisten nicht zu funktionieren scheinen. Es koennten zwei Module kompiliert werden, die abwechselnd geladen werden. Die Entscheidung zwischen fast allen Mixerfunktionen bei der SB Version und 8-Bit oder keinem Mixer und 16-Bit Wiedergabe z.B. fuer MPG3 faellen zu muessen, hat mich aber nicht zufriedengestellt. Mit ein wenig Hardwarekenntnissen ist es zum Glueck moeglich, beide Kartenteile mit Einschraenkungen gleichzeitig zu nutzen.
2 Installation 2.1 Einstellungen f uer den Kernel Mein Ziel war ein Modul mit moeglichst vielen Funktionen:Welche Werte muessen eingestellt werden? Die Werte koennen unter DOS mit dem Befehl SET in der Zeile
GALAXY=A220 I5 D1 K10 P530 T6 oder BLASTER=A220 I5 D1 T6 entnommen werden: A220 Port Soundblaster I5 IRQ SB-Pro D1 DMA fuer SB-Pro und WSS K10 IRQ WSS P530 Port WSS T6 Gibt nur den Typ der SB-Karte an, fuer uns ohne Belang
2. Installation Sie koennen mit einem DOS-Setup Programm oder per Jumper eingestellt werden, ich ziehe letzteres vor. Unter Linux habe ich dann eingestellt: cd /usr/src/linux make menuconfig {\(<\)}M{\(>\)} Sound card support [*] Sound Blaster (SB, SBPro, SB16, clones) support [*] Generic OPL2/OPL3 FM synthesizer support [*] Microsoft Sound System support [*] /dev/dsp and /dev/audio support [*] MIDI interface support [*] FM synthesizer (YM3812/OPL-3) support (220) I/O base for SB Check from manual of the card (5) Sound Blaster IRQ Check from manual of the card (0) Sound Blaster DMA 0, 1 or 3 (0) Sound Blaster 16 bit DMA (_REQUIRED_for SB16, Jazz16, SMW) (0) MPU401 I/O base of SB16, Jazz16 and ES1688 Check from manual of (-1) SB MPU401 IRQ (Jazz16, SM Wave and ES1688) Use -1 with SB16 (530) MSS/WSS I/O base 530, 604, E80 or F40 (10) MSS/WSS IRQ 7, 9, 10 or 11 (1) MSS/WSS DMA 0, 1 or 3 (65536) Audio DMA buffer size 4096, 16384, 32768 or 65536 make dep; make clean; make zlilo; make modules; make modules_install; Hey, mit cat /dev/sndstat tauchen doch jetzt zwei scheinbar unabhaengige Karten auf? Wo sind die Einschr aenkungen? cat /dev/sndstat sieht bei mir so aus: Sound Driver:3.5.4-960630 (Sun Dec 28 08:34:41 MET 1997 root, Linux loki 2.0.32 \#2 Sat Dec 13 05:51:24 MET 1997 i486 unknown) Kernel: Linux loki 2.0.32 \#2 Sat Dec 13 05:51:24 MET 1997 i486 Config options: Installed drivers: Type 10: MS Sound System Type 24: MS Sound System (AXP) Type 27: Compaq Deskpro XL Type 1: OPL-2/OPL-3 FM Type 2: Sound Blaster Type 7: SB MPU-40 Card config: MS Sound System at 0x530 irq 10 drq 1 Sound Blaster at 0x220 irq 5 drq 0,0 (SB MPU-401 irq 1 drq 0) OPL-2/OPL-3 FM at 0x388 drq Audio devices: 0: MSS audio codec (AD1848) 1: Sound Blaster Pro (3.1) Synth devices: 0: Yamaha OPLMidi devices: 2. Installation 4 0: Sound Blaste Timers: 0: System cloc Mixers: 0: MSS audio codec (AD1848) 1: Sound Blaster Hier liegt ein Problem ”Sound Blaster at 0x220 irq 5 drq 0,0”, der 8-Bit Sound funktioniert nicht. Der große Vorteil liegt darin, daß beide Mixer benutzt werden koennen.
2.2 Wie funktionieren die Mixer? Die meisten Karten, die eine Soundblaster und eine weitere Soundkarte emulieren, funktionieren aehnlich. Mixer auf einer Soundkarte arbeiten unabhaengig von der Sounderzeugung und koennen mit Portadressen, ohne IRQ und DMA zu benoetigen, angesteuert werden. Theoretisch sind zwei unabhaengige Mixer auf der Karte vorhanden. Jeder Mixer kann mehrere Eingaenge verwalten. Es koennten wesentlich mehr Devices geregelt werden, als tatsaechlich Eingaenge vorhanden sind, leider wird nur ein Teil genutzt. Praktisch sind die Mixer hintereinander geschaltet. Der Ausgang vom WSS-Mixer geht in einen Eingang vom SBMixer. Das erklaert das merkwuerdige Verhalten, wenn man einen Mixer aufruft und nur einen Teil der Funktionenregeln kann, bzw. warum Regler auftauchen die nix bewirken. :-) Unter Windows faellt nicht auf, daß mit der Oberflaeche eines Mixerprogramms zwei unterschiedliche Devices geregelt werden. Unter DOS ist es leider ueblich, daß eine ”kompatible” Karte ein Dummy-Register hat. Ein Spiel schreibt hier z.B. die Lautstaerke fuer das CD-Rom rein, ein residenter Treiber, der beim Booten geladen wurde, schaut mit einer Zeitschleife nach ob, ein neuer Wert vorhanden ist, liest ihn aus und traegt ihn im benutzten Mixer ein. Kein Wunder, wenn es haeufig zu Problemen kommt. :-( Die Aztech Sound Galaxy ist abwaertskompatibel zum Soundblaster. Die Funktionen fuer die Baesse/Hoehen werden mit dem Mixer vom SB geregelt. Sie koennen auch ohne WSS Einbindung genutzt werden. Bei der alten Soundconfig konnte man noch angeben, ob man eine NXPro hatte, beim neuen Soundtreiber leider nicht mehr, aber die alten Werte standen noch in der Datei sb mixer.h. Ich habe nichts anderes getan, als die Galaxy- Werte bei den normalen Soundblaster Eintraegen zu ergaenzen. Ab jetzt tauchen zwar im jedem Mixer die neuen Regler auf, sinnvoll genutzt werden koennen sie aber nur, wenn die Hardware dafuer ausgelegt ist. Es wird keine Hardware beschaedigt, wenn ein Test mit einer alten Karte durchgefuehrt wird. Unterstuetzt die Karte keine Baesse/Hoehen, passiert halt nix. ;-) Es funktioniert mit mehreren Soundblaster Karten und Kompatiblen. Ich habe ein kleines DOS-Mixer Progamm geschrieben, mit dem die Bits einer SB-Karte komfortabel gesetzt werden koennen, wenn ich sehen will, welche Funktionen implementiert sind. Bei Bedarf kann ich es in eine Binary-NG posten oder direkt zuschicken. Als letztes mein Patch 2.0.30/32: --- sb_mixer.h.orig Sun Jun 30 10:43:39 1996 +++ sb_mixer.h Sun Nov 23 01:35:58 1997 @@ -23,8 +23,9 @@ /* Same as SB Pro, unless I find otherwise */ #define SGNXPRO_RECORDING_DEVICES SBPRO_RECORDING_DEVICES -#define SBPRO_MIXER_DEVICES (SOUND_MASK_SYNTH | SOUND_MASK_PCM | SOUND_MASK_LINE 2. Installation 5 - SOUND_MASK_CD | SOUND_MASK_VOLUME) +#define SBPRO_MIXER_DEVICES (SOUND_MASK_SYNTH | SOUND_MASK_PCM | SOUND_MASK_LINE + SOUND_MASK_MIC | SOUND_MASK_CD | SOUND_MASK_VOLUME + SOUND_MASK_BASS | SOUND_MASK_TREBLE | SOUND_MASK_SPEAKER /* SG NX Pro has treble and bass settings on the mixer. The ’speaker’ * channel is the COVOX/DisneySoundSource emulation volume control @@ -99,17 +100,19 @@ #ifdef __SB_MIXER_C__ mixer_tab sbpro_mix = { MIX_ENT(SOUND_MIXER_VOLUME, 0x22, 7, 4, 0x22, 3, 4), -MIX_ENT(SOUND_MIXER_BASS, 0x00, 0, 0, 0x00, 0, 0), -MIX_ENT(SOUND_MIXER_TREBLE, 0x00, 0, 0, 0x00, 0, 0), +MIX_ENT(SOUND_MIXER_BASS, 0x46, 2, 3, 0x00, 0, 0), +MIX_ENT(SOUND_MIXER_TREBLE, 0x44, 2, 3, 0x00, 0, 0), MIX_ENT(SOUND_MIXER_SYNTH, 0x26, 7, 4, 0x26, 3, 4), MIX_ENT(SOUND_MIXER_PCM, 0x04, 7, 4, 0x04, 3, 4), -MIX_ENT(SOUND_MIXER_SPEAKER, 0x00, 0, 0, 0x00, 0, 0), +MIX_ENT(SOUND_MIXER_SPEAKER, 0x42, 2, 3, 0x00, 0, 0), MIX_ENT(SOUND_MIXER_LINE, 0x2e, 7, 4, 0x2e, 3, 4), MIX_ENT(SOUND_MIXER_MIC, 0x0a, 2, 3, 0x00, 0, 0), MIX_ENT(SOUND_MIXER_CD, 0x28, 7, 4, 0x28, 3, 4), MIX_ENT(SOUND_MIXER_IMIX, 0x00, 0, 0, 0x00, 0, 0), MIX_ENT(SOUND_MIXER_ALTPCM, 0x00, 0, 0, 0x00, 0, 0), -MIX_ENT(SOUND_MIXER_RECLEV, 0x00, 0, 0, 0x00, 0, 0) +MIX_ENT(SOUND_MIXER_RECLEV, 0x00, 0, 0, 0x00, 0, 0), +MIX_ENT(SOUND_MIXER_IGAIN, 0x00, 0, 0, 0x00, 0, 0), +MIX_ENT(SOUND_MIXER_OGAIN, 0x00, 0, 0, 0x00, 0, 0) }; mixer_tab es688_mix = { MIX_ENT(SOUND_MIXER_VOLUME, 0x32, 7, 4, 0x32, 3, 4), 2.3 FAQ 2.3.1 Details zur Hardware Bei mir steht da was von ”CS4231” (oder so aehnlich)? Die folgenden Chips sind aufwaertskompatibel zum AD1848: CS4248 CS4231 CS4231A und AD1845 CS4232 CS4231A (und SB, MPU) ** Plug ´n´ Pain ** CS4232A Es sollte also funktionieren. Da kannst vermutlich den WSS Teil fuer 16-Bit Sounderzeugung benutzen und den SB-Teil als Hauptmixer. Welche Interrupts koennen fuer eine WSS Karte benutzt werden, geht z.B.: IRQ 3,4? Schau dir doch mit less /var/log/boot.msg die Bootmeldungen an. Normalerweise hat jeder neue PC mindestens zwei serielle Schnittstellen, die die IRQ 3,4 benutzten. Meistens ist an der ersten eine Maus angeschlossen und an der zweiten haengt ein Modem, aber selbst, wenn Du noch eine freie serielle Schnittstelle hast, wuerde ich davon abraten, sie zu verschwenden. Findest Du mit: less /proc/interrupts keine freien Interrupts? 2. Installation 6 \# Serial driver version 4.13 with no serial options enabled \# tty00 at 0x03f8 (irq = 4) is a 16550A \# tty01 at 0x02f8 (irq = 3) is a 16550A Die Hardware der meisten WSS kompatiblen Karten laeßt es nicht zu, andere Interrupts als die vorgegebenen (7,9,10,11) zu benutzen. 2.3.2 Checkliste Meine Checkliste fuer den Einbau: leider gibt es mehr falsche als richtigen Einstellungen. Am Ende habe ich eine komplette Liste meiner Hardware. Vielleicht hilft es.
Hardware (Jumper haben meistens aber nicht immer vorrang) Hauptplatine: z.B. feste Vergabe von IRQ 5/7 und DMA 1/3 fuer erweiterte Druckerschnittstelle ECP/EPP ueber Jumper? andere Erweiterungskarten: Netzwerkkarten benutzen z.B. IRQ5 werden die Jumper auf der Soundkarte benutzt oder PNP? (beides ist moeglich!!)
Software: BIOS: Welche Resourcen werden intern belegt. (HDD-Controler, Grafik, PS/2 Maus...) BIOS: muessen Resourcen als frei/belegt angegeben werden? BIOS: Einstellungen COM/LPT Einstellungen anderer Karten Soundkarte EEPROM, Einstellungen mit mitgelieferter Software ueberpruefen. Achtung: ¨ Anderungen werden erst nach einem Hardwarereset wirksam Bei manchen Mainboards muß sogar der Rechner ausgeschaltet werden, bevor ¨ Anderungen wirken. Stimmen unter DOS die Werte im SET BLASTER ueberein?
Test: Ab hier sollte mein Programm den SB-Mixer aendern koennen. Lest bitte auch die README.TXT im Paket. Doppelbelegungen werden von der Windows Systemsteuerung meistens nicht erkannt, normalerweise sind sie fuer Fehler verantwortlich. Ich versuche einen neuen Rechner immer mit mehreren verschiedenen Testprogrammen wie Syschk, Config u. DrHardware zu testen, da ich kein Programm kenne, das alles erkennen kann.
Frank Boehm (fraboehm@metronet.de) v0.1, 26. Januar 1998 |