When I made the switch on my main desktop machine from Windows to Linux (I mean, a Linux kernel-based operating environment solution incorporating elements from FSF projects as well as thousands of other contributors, including but not limited to: Apache Software Foundation, Sun Microsystems Incorporated, the GNOME Foundation… ah, I mean, Linux), I lost my sound. I got it back by finding the main ‘kernel’ line in my /boot/grub/menu.lst and adding the following kernel parameters to the end of that line:
noisapnp pnpbios=off pnpacpi=off
So the whole line now looks like this:
kernel /boot/vmlinuz-2.6.24-16-generic root=UUID=... ro quiet splash noisapnp pnpbios=off pnpacpi=off
(Don’t copy that line exactly, though, if you’re going to try this solution. Just add those extra arguments to the end. I removed my disk UUID from the line because it’s specific to my computer and wouldn’t work for anyone else.)
In more detail: I’m running the newly-published Ubuntu 8.04 ‘Hardy Heron’ distribution, which is currently using Linux kernel 2.6.24 as a base. This version of the kernel doesn’t work well with some BIOSes that report probably-incorrect information about some motherboard resources (some kernel-list discussion in which Torvalds’ primary argument is ‘x is crap’, a PnP-quirks patch, and there are about a million pages about people having this problem if you look hard enough).
The eventual diagnosis centered around this in the kernel output (using the dmesg command to view it):
PCI: Unable to reserve mem region #1:4000@febf8000 for device 0000:00:1b.0
ACPI: PCI interrupt for device 0000:00:1b.0 disabled
HDA Intel: probe of 0000:00:1b.0 failed with error -16
This region couldn’t be reserved because it was already reserved, as a message like this shows (I’m copying this from someone else’s description of the problem, but the idea’s the same):
system 00:08: iomem range 0xfebfa000-0xfebfac00 has been reserved
I also used the contents of /proc/iomem to shore up the diagnosis. Here’s the indicative bits:
febf8000-febfbfff : 0000:00:1b.0
febfa000-febfac00 : pnp 00:07
febfe000-febfec00 : pnp 00:07
The part that snd_intel_hda wants overlaps with what pnp has already claimed. It ought to look like
febf8000-febfbfff : 0000:00:1b.0
febf8000-febfbfff : ICH HD audio
This overlap problem was happening on my ASUS P5B-Plus board, with two different BIOS versions (1002 and either 0903 or 1001). This board uses an Intel 82801H (ICH8 Family) HD Audio controller sound solution.
Rather than patching and building the kernel myself or trying to find some .debs out there with a newer version (the patch is included in 2.6.25), either of which is more work than I’d like to do for this problem, I just turned off all PnP. The last time I cared about PnP (a hacky system devised to make PC configuration easier back in the days of the ISA bus, and if you don’t know what an ISA bus is, you can probably just nod and forget it) was more than 5 years ago, so this is no loss for me.
2 Comments