Computers 'n Stuff: Solved: nForce4 CK804 (Intel8x0) ALSA audiodriver uses only on two speakers for stereo playback when 5.1 6 channel speakers are connected

I here share the resolutions for my Linux problems so they might safe somebody some time.

Thursday, May 17, 2007 parmanent link to this post

Solved: nForce4 CK804 (Intel8x0) ALSA audiodriver uses only on two speakers for stereo playback when 5.1 6 channel speakers are connected

I have a 5.1 surround speaker set connected to my K8N ultra SLI mainboard with a CK804 sound on board. When playing MP3 I realized that Linux used only the front speaker for stereo playback, which is pretty annoying since the front speakers are not full range an desperately need the woofer to run for a nice sound. Here I write how I solved this issue.



It turned out that this issue is not a driver issue, however. This is due to a, in my opinion, odd behavior of the ALSA drivers. ALSA feeds the channel from the source to the corresponding speaker. Since you have only to two channels in stereo sound alsa sends only sound to the front (left and right) speaker. Although this behavior is very logical its verry confusing for a easyly confused noob like me and it took me quite a while to fix this problem.

First I had to make sure that the hardware is set up properly. Therefore I used a little helper applet that comes with the ALSA package:

# speaker-test -c 6 -r 48000


Now I heard sound (noise) on all speakers. If you hear something then the driver and ALSA should work.

Getting a driver update from nvidia is not necessary since they only distribute only sata and lan drivers for their nForce chip set. They included their driver sources for their on board sound to the ALSA project so it should be fine to use their driver. The CK804 is supported as as intel8x0. Anyway, here are the sites for the nvidia downloads:

http://www.nvidia.com/object/linux_nforce_1.21.html
http://http.download.nvidia.com/XFree86/nforce/1.0-0310/ReleaseNotes.html

But I did an ALSA driver update. However, this update is optional I guess.

---snip---

To do this you need to install autoconf, kernel-source, gnu make, kernel-headers with yast if not done yet.

To compile and install the latest drivers from source, first download the CVS
(Remark: devfs is depreciated in Suse 10.2 since it uses udev so we don't need to execute ./snddevices script here)

# rsync -avz --delete rsync://alsa.alsa-project.org/hg your_directory
# ./cvscompile --with-cards=intel8x0 --with-sequencer=yes
# make install
# modprobe snd-intel8x0;modprobe snd-pcm-oss;modprobe snd-mixer-oss;modprobe snd-seq-oss
---snip----

The most important step is to edit the .asoundrc. The .asoundrc is a configuration file which is read in by default and lives in your home directory.

# vi /home/xxx/.asoundrc
vi is an editor but you can use whichever you you prfer to perorm this task. xxx denotes the name of your home directory. Then add the the following code to your .asoundrc :

pcm.ch51dup {
type route
slave.pcm surround51
slave.channels 6
ttable.0.0 1
ttable.1.1 1
ttable.0.2 1
ttable.1.3 1
ttable.0.4 0.5
ttable.1.4 0.5
ttable.0.5 0.5
ttable.1.5 0.5
}


This will duplicate stereo channels to the sourround speakers but you have to use ch51dup as device for output of stereo files. In Amarok I use the configuration shown in the screenshot:

I used the following links as source:


Technorati Tags: , , , , , ,

Labels: , , , , , , ,