Niels Horn's Blog
Random thoughts, tips & tricks about Slackware-Linux, Lego and Star WarsStuttering sound with Via HDA Intel sound chip
October 19th, 2010 by Niels Horn in Slackware, configuration, kernel
Fixing problems with Linux systems is something I like. I've been in the support business for most of my professional life, and solving a difficult problem still gives me that satisfaction
The system
Recently I upgraded a system that was still running Slackware 13.0. It's a not-so-new system, but should be good enough to serve as a desktop for some more time: 2.6GHz P4, 1GB of memory, 160GB hard drive. Video, sound, network are all on-board, using a cheap Via chipset.
This box has had some stability problems before, like freezing with several tabs open in Firefox, but I thought it was simply because that browser was getting more and more "obese"
Youtube or not Youtube?
After upgrading it to Slackware 13.1, it showed very "consistent" behavior: All videos from Youtube were without sound or stuttering sound. I checked the usual suspects: flashplayer-plugin, alsaconf, etc., but without success. All I found on the internet about Youtube videos without sound was old information from years ago that did not apply.
I tried to save some videos locally, and found that they played well in mplayer, but also with stuttering sound in gxine. So the problem was not related to Youtube…
Comparing with another system
Next step was comparing the configuration with a similar box, with the same sound chip (at least I thought…). On this second system I had no problems at all with sound, although the configuration is quite similar - it's just a bit newer and has some better specs (memory, processor, etc.)
But… there was a small difference between the two HDA Intel chips…
This is the one that stutters:
02:01.0 Audio device: VIA Technologies, Inc. VT1708/A [Azalia HDAC] (VIA High Definition Audio Controller) Subsystem: ASUSTeK Computer Inc. Device 818f Flags: bus master, fast devsel, latency 0, IRQ 17 Memory at fbefc000 (32-bit, non-prefetchable) [size=16K] Capabilities: [50] Power Management version 2 Capabilities: [60] MSI: Enable- Count=1/1 Maskable- 64bit- Capabilities: [70] Express Legacy Endpoint, MSI 00 Capabilities: [100] Virtual Channel > Capabilities: [130] Root Complex Link > Kernel driver in use: HDA Intel Kernel modules: snd-hda-intel
and this is the one that works fine:
00:1b.0 Audio device: Intel Corporation 82801G (ICH7 Family) High Definition Audio Controller (rev 01) Subsystem: ASUSTeK Computer Inc. P5KPL-CM Motherboard Flags: bus master, fast devsel, latency 0, IRQ 44 Memory at f9ffc000 (64-bit, non-prefetchable) [size=16K] Capabilities: [50] Power Management version 2 Capabilities: [60] MSI: Enable+ Count=1/1 Maskable- 64bit+ Capabilities: [70] Express Root Complex Integrated Endpoint, MSI 00 Capabilities: [100] Virtual Channel > Capabilities: [130] Root Complex Link > Kernel driver in use: HDA Intel Kernel modules: snd-hda-intel
Google is our friend again
So, back to Google, and after some browsing I found an interesting article about nvidia chips that had the same problem here.
I edited the /etc/modprobe.d/sound.conf
file and added this line:
options snd-hda-intel enable_msi=0
And, after a reboot, the system played videos in Youtube and locally without any stuttering
The kernel patch that is suggested in the article is already included in the kernel that comes with Slackware 13.1, but it only checks for the nvidia chip.
If this box continues to work fine, I might patch the source for the HDA Intel driver (hda_intel.c) and compile a custom kernel. If that works fine, I'll send the patch to the maintainer of this module.