This is a brief how-to on getting my Aureal-based sound card (Turtle Beach Montego) to work under RedHat Linux 9. I’m sure I’m not the only one who owns such a card, so this might be useful for someone in the future.
RedHat did not recognize my sound card upon installation, so naturally I thought it wasn’t supported. This was until I stumbled upon a driver at SourceForge that purported to provide support for Aureal-based cards.
I downloaded the project’s distribution files, and tried to compile it… but the compiler couldn’t get past 10 lines of code before it choked. The source files were obviously written for an earlier version of the kernel.
However, all hope was not lost. I downloaded a CVS snapshot of the project (instead of the distribution), and tried to compile that. Miraculously, that only gave one or two errors. Then, all I did was comment out the two offending lines of code, and it compiled successfully. The output was a kernel module called au8830.o
.
Installing it was a different issue altogether.
This driver uses a combination of open- and closed-source code. The closed-source portion that came with the driver was compiled with a much earlier version of gcc
. Because of this, insmod
would not allow me to load the module. It gave an error that the module needs to be compiled with gcc
version greater than 3. Fortunately, insmod
can be forced to load the module anyway by issuing the -f option.
With the -f option, insmod
tried to load it, but reported a few unresolved externals. I realized that I needed to load the soundcore
module first. After loading soundcore
, I tried loading my module again, and what do you know? It loaded successfully!
/dev/dsp
was working like a charm, but sound in KDE (aRts?) wasn’t loading properly. I went into the KDE Control Center, into the Sound Server tab, and changed the server startup setting from “autodetect” to “Threaded OSS.” That seemed to do the trick, and it’s been working fine ever since.
To automate the process of loading the module at boot time, I edited my /etc/modules.conf
file and added the following lines:
# Sound configuration
post-install sound-slot-0 /bin/aumix-minimal -f /etc/.aumixrc -L >/dev/null 2>&1 || :
pre-remove sound-slot-0 /bin/aumix-minimal -f /etc/.aumixrc -S >/dev/null 2>&1 || :
pre-install au8830 /sbin/modprobe soundcore; /sbin/insmod -f au8830
alias char-major-14 sound
alias sound-slot-0 sound
alias sound au8830
alias midi au8830
This will ensure that the au8830
module will be loaded after the soundcore
module, and that the au8830
module will be force-loaded with the -f option.