pcm0 channel dead
Patrick Tracanelli
eksffa at freebsdbrasil.com.br
Fri Jun 17 16:14:30 GMT 2005
Pyun YongHyeon wrote:
> On Thu, Jun 16, 2005 at 03:18:30PM -0300, Patrick Tracanelli wrote:
> >
> > > Hi,
> > > I guess what you are saying is the your device is half-duplex.
> > >
> > > Please do a
> > > sysctl hw.snd.verbose=3
> > > cat /dev/sndstat
> > >
> > > --Mat
> >
> > Here is the output
> >
> > (eksffa at claire-redfield)~# sysctl hw.snd.verbose=3
> > hw.snd.verbose: 1 -> 3
> > (eksffa at claire-redfield)~# cat /dev/sndstat
> > FreeBSD Audio Driver (newpcm)
> > Installed devices:
> > pcm0: <Acer Labs M5451> at io 0x8800 irq 11 (4p/1r/0v channels duplex
> > default)
> > [pcm0:record:0]: spd 8000, fmt 0x00000001/0x00000008, flags
> > 0x00000000, 0x000000
> > 00
> > interrupts 0, overruns 0, hfree 256, sfree 131072
> > {hardware} -> feeder_root(0x00000008) ->
> > feeder_u8toulaw(0x00000008 -> 0x0000000
> > 1) -> {userland}
>
> Hmm, I think capture mode works ok.
>
> > [pcm0:play:0]: spd 44100/44097, fmt 0x10000010, flags
> > 0x00003030, 0x00000000, pi
> > d 657
> > interrupts 5793, underruns 2, ready 131072
> ^^^^^^^^^^^
> This is error condition, playback channel 0 has DMA underruns.
>
> > {userland} -> feeder_root(0x10000010) -> {hardware}
> > [pcm0:play:1]: spd 22050/22042, fmt 0x10000010, flags
> > 0x00000000, 0x00000000
> > interrupts 0, underruns 0, ready 0
> > {userland} -> feeder_root(0x10000010) -> {hardware}
> > [pcm0:play:2]: spd 0, fmt 0x00000000/0x00000008, flags
> > 0x00000000, 0x00000000
> > interrupts 0, underruns 0, ready 0
> > {userland} -> feeder_root(0x00000000) -> {hardware}
> > [pcm0:play:3]: spd 0, fmt 0x00000000/0x00000008, flags
> > 0x00000000, 0x00000000
> > interrupts 0, underruns 0, ready 0
> > {userland} -> feeder_root(0x00000000) -> {hardware}
>
> What I can't understand is why other playback channel(channel1,
> channel 2) is active, though not triggered to play. Normally you
> will use one capture/playback channel.
> I have no idea how you can see "capture channel dead" as the
> above output indicates playback problem.
>
Probably the underruns might be caused by a too low HZ value, when I
sent this output. It does not get underruns with HZ=100 or =1000, here
follows some outputs:
(root at claire-redfield)~# cp /dev/audio /tmp/audio.au
/dev/audio -> /tmp/audio.au
(root at claire-redfield)~# cp /dev/dsp /tmp/au.au
/dev/dsp -> /tmp/au.au
(root at claire-redfield)~# cp /dev/dspr0.0 /tmp/audio.au
/dev/dspr0.0 -> /tmp/audio.au
(root at claire-redfield)~# dmesg | tail -3
pcm0:record:0: record interrupt timeout, channel dead (count: -8,
c->flags: 135216)
pcm0:record:0: record interrupt timeout, channel dead (count: -8,
c->flags: 135216)
pcm0:record:0: record interrupt timeout, channel dead (count: -8,
c->flags: 135216)
(root at claire-redfield)~# grep "over\|under" /dev/sndstat
interrupts 0, overruns 0, hfree 256, sfree 131072
interrupts 0, underruns 0, ready 0
interrupts 0, underruns 0, ready 0
interrupts 0, underruns 0, ready 0
interrupts 0, underruns 0, ready 0
I have no idea on whatever should be done. Should I ask -CURRENT?
--
Patrick Tracanelli
More information about the freebsd-multimedia
mailing list