Sound Blaster Live! on Solaris
By User13277689-Oracle on Mar 27, 2007
During stressful days of libmd backport to Solaris 10 update 4 I managed to break my iPod mini by sliding on my chair backwards and running to get next coffee cup. (The catch was that I still had my headphones connected to the iPod on so the iPod fell down on the floor. It now only reports the unhappy face of Macintosh.)
Only after that I have realized how music is important for my day-to-day tasks. I cannot simply continue in the same pace as before without steady flow of rhythm into my ears.
Before buying another iPod I wanted to get some interim relief. This is when I entered the not-so-happy world of Solaris audio drivers. My workstation is Acer Aspire E300 which came with integrated TV card and whatnot but also with integrated sound card. The sound card is supported in Solaris but the level of noise coming from it was unbearable. (and I am no HiFi snob, listening mostly to 32kbps radio Akropolis streams) After some googling I have realized that there is a driver for Sound Blaster Live! 5.1 PCI card which I had in my Solaris test workstation at home. The driver was backported by Jürgen Keil (frequent OpenSolaris contributor) from NetBSD among other drivers.
The relevant part of prtconf -v output looks like this:
pci1102,8027 (driver not attached) Hardware properties: name='assigned-addresses' type=int items=5 value=81024810.00000000.00009400.00000000.00000020 name='reg' type=int items=10 value=00024800.00000000.00000000.00000000.00000000.01024 810.00000000.00000000.00000000.00000020 name='compatible' type=string items=7 value='pci1102,2.1102.8027.7' + 'pci1102,2.1102.8027' + 'pci1102,8027' + 'pci1102,2.7' + 'pci1102,2' + 'pciclass,040100' + 'pciclass,0401' name='model' type=string items=1 value='Audio device'
It's quite easy to get it working:
- disable the on-board sound card in BIOS
- get the sources and extract them
/usr/sfw/bin/wget http://www.tools.de/files/opensource/solaris/audio/beta/audio-1.9beta.tar.bz2 bzcat audio-1.9beta.tar.bz2 | tar -xf -
- compile (set the PATH if needed to get access to gcc/ar)
export PATH=/usr/bin:/usr/sbin:/usr/sfw/bin:/usr/sfw/sbin:/usr/ccs/bin cd audio-1.9beta && make
- install the driver (audioemu) and its dependency (audiohlp) on x86:
cp drv/emu/audioemu /platform/i86pc/kernel/drv cp drv/emu/amd64/audioemu /platform/i86pc/kernel/drv/amd64 cp drv/emu/audioemu.conf /platform/i86pc/kernel/drv cp misc/audiohlp /kernel/misc cp misc/amd64/audiohlp /kernel/misc/amd64 cp misc/audiohlp.conf /kernel/misc
- attach the driver (see instructions in drv/emu/Makefile)
add_drv -i '"pci1102,2" "pci1102,4"' audioemu
Yes, I could have used the infrastructure provided in Makefiles to create the package and install it but I wanted to have minimalistic install and have just the things which are really needed.
After the reboot you should be able to play sound via e.g. xmms. (installed e.g. from Blastwave) Check for audioemu in modinfo(1M) output and dmesg(1M) output for error messages if something goes wrong. So far it has been working for me rather flawlessly. (no kernel panics ;))
During the search for the driver I have discovered number of complaints from the users trying OpenSolaris for the first time that their Sound Blaster Live! was not recognized.
Looking into Device drivers community not much is going on about soundcard drivers.
I wonder how hard would it be to get the audioemu NetBSD-based driver into ON.. the CR number is 6539690.
2007-08-08 update: After asking on opensolaris-discuss mailing list I have realized that there is a project underway which will deliver OSS into (Open)Solaris. Some info can be found in PSARC/2007/238, however there is no project page at opensolaris.org (yet). Hopefully, RFE 6539690 will be closed after OSS integrates into ONNV.