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
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.