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