No surround sound on VIA8237 with Alsa
Hi. I'm having an incredibly difficult time trying to get sound to work on my SuSE box. For weeks I've been running with no speakers, and I finally just got a 6-channel speaker set. After some tinkering, I've managed to get it to behave like an overdecorated stereo set, and can get no further. I have a VIA8237 onboard sound card, and have made sure that all channels are unmuted in a mixer, and that the options "Line-in AS Surround" and "Mic as Center/LFE" are enabled. When I toggle the latter, I can actually hear the base speaker thump as if it's being turned off (or on?).
When I try to configure the card in YaST, I get the following message:
Yet the module is already loaded if I lsmod.
An error occurred during the installation of
VT8233/A/8235/8237 AC97 Audio Controller
The kernel module snd-via82xx for sound support could not be loaded. This can be caused by incorrect module parameters, including invalid IO or IRQ parameters.
If I try to play a higher-channel sample in xmms, I'm told in the console:
Can anyone shed some light on this?
** WARNING **: Input has 6 channels, soundcard uses 2 channels
No conversion is available
[Update] I substituted one xmms warning for another by instructing it to use the alsa driver in the preference page. Now I get
Also, I took a look at /proc/asound and found
ALSA lib pcm_hw.c:509:(snd_pcm_hw_hwsync) SNDRV_PCM_IOCTL_HWSYNC failed: File descriptor in bad state
The fact that there are only two pcm devices further suggests that the darn thing just isn't set up at the driver level for 6 channels.
localhost:/proc/asound/card0 # ls
. .. codec97#0 id oss_mixer pcm0c pcm0p pcm1c pcm1p via82xx
From this informative page:
So of course I ran
Q: You can hear stereo sound from the front speakers, but not from the other speakers
A: The default ALSA output virtual device is 2 channel only. In order to hear sound on more than two speakers you need to use the name of a virtual device that supports more than two channels.
These virtual device names begin with surround; the most commonly used are surround40 and surround51. To get a full list of those defined for your card run:
aplay -L 2>&1 | egrep surround
but I still have no idea what this means. Obviously these aren't "/dev"-style device names, and I don't know how to specify them over the default.
jonny@localhost:~> aplay -L 2>&1 | egrep surround
I found a wav called chan-id that consists of 6 alternately playing channels. The command "aplay -Dplug:surround51 chan-id.wav", successfully plays on all the speakers. If I open this wav using xmms, the first two (front left and right, the standard stereo output) work, but the rest of the wav is silent.