Workaround For Ice1724-Based Soundcards' Muted Left Channel Problem

I've got an excellent M-Audio Revolution 5.1 sound card, and everything's fine with it under Linux but two things:

  • Headphones output doesn't work
  • On boot, the front left channel is muted, though any mixer app indicates, it's level is restored.

The first problem seems to be a major bug, but it doesn't feel so critical for me, I do not use speakers, so I plug headphones into Front jack and enjoy the sound.

The second is not that serious, but terribly irritating. The volume restores on both channels when you try to adjust it, but I'm sick of adjusting it every time I boot my Linux box. This issue applies to all Revo 5.1 and 7.1 cards and probably some others ice1724 (Envy24/HT) chip based cards.

Tonight my sickness of this issue reached it's apogee, so I created a small workaround for it. I haven't touch ALSA sources and have no idea about how it actually works, so my statements and explanations could look lame for ones who are more familiar with ALSA. The solution is Gentoo-specific, but I guess, it could be easily applied to any distro.

It seemed that ALSA didn't set volume correctly for my soundcard.. hmm... from the first try, let call that so. So, I edited /etc/init.d/alsasound file, putting amixer set PCM 90% inside the restore() procedure. It worked after reboot, I was happy. But on the next reboot, left channel was muted again. Shit.
I tried to run amixer set PCM 90% in console then and was unpleasantly surprised: it didn't work. Left channel was still muted.

Ok, I suspected that ALSA checks if it should actually do something when adjusting volume level, and if current (assumed by driver) level is the same as requested by user, it does nothing. This command worked: amixer set PCM 80%

So, finally I made the following changes to /etc/init.d/alsasound: in function restore(): added two lines amixer set PCM 8%
amixer set PCM 9%
before alsactl -f "${alsastatedir}/asound.state" restore ${cardnum} \ The to different values ensure that ALSA will HAVE to actually set the volume.

This updated file survived 4 reboots already and both channel are working. Yes, it's the dirty hack, but it's beta better than nothing, because this bug is known for 4 years so far and still (as of ALSA 1.0.14) not fixed.

Top Top  AddThis Social Bookmark Button

Category: desktop Words: ALSA, Gentoo, ice1724, Envy24HT

Disabled
Comment Deleted