If you are using the SB Live! Value rev 08 soundcard, it will report itself as a "VGA Compatible Device". As a result you will not get analog sound output when modern xservers such as X.org and contemporary XFree86 are running. What happens is that incorrect PCI identification of this card as a video device "confuses" X.org and causes it to disable the soundcard; it looks like this is related to the newer xservers multi-head capability.
This problem seems to be limited to this particular soundcard, and shows up across motherboard chipsets. I have been told that this card was made for Microsoft Window 98, and it appears that it was programmed in the wrong PCI address space, hence gets identified as a VGA device. Some users of this card had sound working on older versions of their distribution, and sound stopped working when they upgraded to versions with newer kernels and xservers.
Running "/sbin/lspci -v" under this chipset will give the following incorrect listing for the soundcard:
00:14.0 VGA compatible unclassified device: Creative Labs SB Live! EMU10k1 (rev 08)
Subsystem: Creative Labs CT4832 SBLive! Value
Flags: bus master, medium devsel, latency 32, IRQ 11
I/O ports at dc00 [disabled] [size=32]
Capabilities: [dc] Power Management version 1
00:14.1 Input device controller: Creative Labs SB Live! Game Port (rev 08)
Subsystem: Creative Labs Gameport Joystick
Flags: bus master, medium devsel, latency 32
I/O ports at e000 [size=8]
Capabilities: [dc] Power Management version 1
Note that the device is identified as a "VGA compatible unclassified device: " which is incorrect, and is why X disables the soundcard as shown by the disabled port; if you run alsamixer in an xterm and try to turn the SB Live Analog/Digital Output Jack off there will be no result (pressing the "m" key will not toggle this control off). This condition only exists while X is running, so if you open a TTY from X (ctrl-alt F3 for example) you will find the A/D switch turned off; when you return to X (ctrl-alt F7 on most systems) it will be on again.
For an immediate work-around, run the "setpci" command as root in an xterm like this:
su -c '/sbin/setpci -s 00:14.0 COMMAND=5'
Note that you must substitute the address of your soundcard for the address [00:14.0] shown in this example. Type the command "/sbin/lspci -v" in the terminal to get the address of your soundcard.
After running the "setpci" command, lspci should give this result (output edited to show only the soundcard):
johnpipe:$ /sbin/lspci -v
---
00:14.0 VGA compatible unclassified device: Creative Labs SB Live! EMU10k1 (rev 08)
Subsystem: Creative Labs CT4832 SBLive! Value
Flags: bus master, medium devsel, latency 32, IRQ 11
I/O ports at dc00 [size=32]
Capabilities: <access denied>
00:14.1 Input device controller: Creative Labs SB Live! Game Port (rev 08)
Subsystem: Creative Labs Gameport Joystick
Flags: bus master, medium devsel, latency 32
I/O ports at e000 [size=8]
Capabilities: <access denied>
---
The port is now enabled, and sound apps will now work; this will have to be done after each boot and login to enable sound.
To make a permanent, system wide fix, you need to edit /etc/X11/xorg.conf. If using vim under VL5.8-STD, make the following system-wide fix to vim first by running this command:
su -c 'cp /etc/vimrc /usr/share/vim/'
This will get vim running correctly. Next, add the "IsolateDevice" option to /etc/X11/xorg.conf:
Section "ServerLayout"
Identifier "Layout0"
Screen 0 "Screen0" 0 0
InputDevice "Keyboard0" "CoreKeyboard"
InputDevice "Mouse0" "CorePointer"
Option "IsolateDevice" "PCI:1:0:0"
EndSection
The adress shown above is for most AGP cards; check your video card address with lspci -v (NOTE: xorg.conf uses the bus_id format shown above, where the [:] separator is used throughout the address, unlike the lspci -v output):
Note the video card address given in this example:
/sbin/lspci -v
---
01:00.0 VGA compatible controller: ATI Technologies Inc 3D Rage Pro AGP 1X/2X (rev 5c) (prog-if 00 [VGA])
Subsystem: ATI Technologies Inc Rage Pro Turbo AGP 2X
Flags: bus master, stepping, medium devsel, latency 32
Memory at de000000 (32-bit, prefetchable) [size=16M]
I/O ports at c000 [size=256]
Memory at dd000000 (32-bit, non-prefetchable) [size=4K]
[virtual] Expansion ROM at dc000000 [disabled] [size=128K]
Capabilities: <access denied>
---
Now, when X starts, the video card will be isolated, and the xserver will no longer send interrupts to disable the SB. For a more technical explanation of why this fixes the problem, run 'man xorg.conf' and read the section on IsolateDevice.
According to my research, this particular soundcard has been causing trouble for linux users worldwide for at least the last 6 years.
HTH, Johnpipe
Revised and Updated 13 January 2007