Thursday, January 27, 2011

ICH5 sound issues with Fedora

I had an Albatron mobo running FC10. All was well and it could handle multiple services running headless for years.

Then I needed to run mpg123 24/7 and I found out how problematic the ICH5 ALC655 chip was with linux. I could get sound however at random instances the audio would go off. At first I though mpg123 was the problem so I ran it under supervise. At a point I came across MPD and I ditched mpg123 for it. I discovered that the same thing happened to mpd. Only I also discovered that audio would come back after a random duration of time.

To cut a long story short I assumed the alsa driver intel8x0 was responsible. Somewhere in the net a mention of a kernel patch solving the issues on FC12 made me preupgrade to FC12. After a few hours of readjusting everything to work I came to find that the sound issues were still there. I activated PulseAudio, a sound server which uses the Alsa drivers and can sit on top of Alsa. As a side note PulseAudio is the default in FC12 however since I preupgraded from FC10 it was not. Then tried mpd using PulseAudio, Alsa (via PulseAudio) with no luck. Oh linux has a wonderful world of sound software which takes forever to configure and understand. Then I read someone suggesting (the older and not really open) OSS as a solution to all your problems. I installed it to find out the problem was still there! Only this time the kernel said:

Jan 26 22:56:12 dryad kernel: irq 17: nobody cared (try booting with the "irqpoll" option)
Jan 26 22:56:12 dryad kernel: Pid: 0, comm: swapper Tainted: P 2.6.32.26-175.fc12.i686 #1
Jan 26 22:56:12 dryad kernel: Call Trace:
Jan 26 22:56:12 dryad kernel: [] __report_bad_irq+0x33/0x74
Jan 26 22:56:12 dryad kernel: [] note_interrupt+0xfa/0x153
Jan 26 22:56:12 dryad kernel: [] handle_fasteoi_irq+0x83/0xa2
Jan 26 22:56:12 dryad kernel: [] handle_irq+0x40/0x4d
Jan 26 22:56:12 dryad kernel: [] do_IRQ+0x46/0x9a
Jan 26 22:56:12 dryad kernel: [] common_interrupt+0x30/0x38
Jan 26 22:56:12 dryad kernel: [] ? mwait_idle+0x61/0x6c
Jan 26 22:56:12 dryad kernel: [] cpu_idle+0x96/0xb2
Jan 26 22:56:12 dryad kernel: [] rest_init+0x58/0x5a
Jan 26 22:56:12 dryad kernel: [] start_kernel+0x33c/0x341
Jan 26 22:56:12 dryad kernel: [] i386_start_kernel+0x97/0x9e
Jan 26 22:56:12 dryad kernel: handlers:
Jan 26 22:56:12 dryad kernel: [] (osscore_intr+0x0/0x4a [osscore])
Jan 26 22:56:12 dryad kernel: Disabling IRQ #17
Jan 26 22:56:12 dryad kernel: osscore: Output timed out on audio engine 1/'Intel ICH5 (24D5) (vmix)' (count=39919616)
Jan 26 22:56:12 dryad kernel: 157856 fifo errors were detected
Jan 26 23:05:20 dryad kernel: 1401 fifo errors were detected
Jan 26 23:07:22 dryad kernel: usbcore: deregistering interface driver oss_usb
Jan 26 23:07:22 dryad kernel: oss_ich 0000:00:1f.5: PCI INT B disabled

As I visualize it that means that the driver was eventually waiting for a write, the IRQ was set however somehow was not serviced by the appropriate handler. A kernel issue perhaps. The result was the blocking call was blocking the driver all the way up to the application which initiated the call.

I did not try the irqpolloption yet. I will do so after I try noapic first. I did try noirqdebug which does not affect the issue.

In the meantime I am trying one of these super cheap usb sound dongles. It does not work really:

Bus 002 Device 002: ID 1130:f211 Tenx Technology, Inc. audio headset

Next thing to try is a YMF724 PCI card found on storage.

UPDATE: YMF724 worked out of the box (mpd cpu dropped around 4% when no streaming). I decided to stop pursuing a solution with the onboard chip. Does not worth it.

alsa-lib-1.0.23
kernel 2.6.32.26-175

No comments: