Re: USBAudio.sys bug for Asynchronous OUT enpoint with rate feedba

Tech-Archive recommends: Repair Windows Errors & Optimize Windows Performance



Thanks Leo, that document was very helpful. I actually looked through this
before and therefore I always used a refresh values of 5 or 9, so this was
not the problem.

Looking through it again, though, the document recommended creating separate
settings for different wMaxPacketSize sizes (in order to conserve bandwidth).
I simply used a single setting and set wMaxPacketSize to 1024. This should
work, and does work without feedback, but for some reason this caused the
feedback problems I had.

Now I created separate settings and set wMaxPacketSize to be only slightly
larger than what is required for the given sample rate and feedback works as
expected.

So, it appears that there is a bug in usbaudio.sys (since it should have
worked before), but this is easily worked around by using separate settings -
which should be done anyway to conserve bus bandwidth.

Anyway, thanks again and I will post back with my final results since I have
not done much testing with this new configuration yet....

Cheers

Philip

"Leo Havmøller" wrote:

"pgruebele" <pgruebele@xxxxxxxxxxxxxxxxxxxxxxxxx> wrote in message
news:39D54B6A-1EC2-4A16-95A7-38130428FDDC@xxxxxxxxxxxxxxxx
Hi.

I am developing a USB audio class 1.0 device which uses an async OUT
endpoint which is associated with a feedback IN endpoint. Everything is
working normally in the sense that my device is recognized, usb frames
with
the audio are sent etc. I verified this with a USB bus analyzer.

The problem is that when I enable the feedback functionality, the usb
frames
to my OUT endpoint have skipping problems. Basically the frames/data sent
over the USB bus are out of order. Instead of the order being the
expected
1,2,3...10,11... I get 1,2.3..8,9,20,11,12,13..19,30,31,32 etc.

This happens even when the feedback value is the same as the device sample
rate. Everything else works. The packet sizes change with the feedback
value etc, so it looks like the USB device firmware and usbaudio.sys are
correctly communicating. The only wrong thing is this frame skipping
problem.

This is under Vista with latest updates as well as Windows 7 beta. I even
tried Vista SP2 RC with no change. This happens with WASAIP as well as
ASIO
and different playersand multiple computers, so it is not the players or
hardware. Offhand I don't know if it happens with regular/non-WASPI audio
since those streams mess up the audio data anyway. Since I verified this
with a USB bus analyzer I can say with certainty that vista is simply
sending
the frames out of order.

So, I believe that usbaudio.sys or surrounding layers have some sort of
buffer overrun problem and are writing over a frame buffer which has not
been
sent yet.

Any ideas? Everything is pointing at USBaudio.sys. Unfortunately the
driver source is not available so there is no way for me to fix the bug
(unlike Linux and OSX). Or is it possible to get the sources? I have
done
Vista driver development so it would be not problem to debug this
problem...

Checkout this presentation, there may be a hint for you e.g. refresh may not
be less than 4:
http://ampalliance.org/files/folders/summit_decks/entry77.aspx

Leo Havmøller.

.



Relevant Pages

  • Re: USBAudio.sys bug for Asynchronous OUT enpoint with rate feedback?
    ... I am developing a USB audio class 1.0 device which uses an async OUT ... The problem is that when I enable the feedback functionality, the usb frames ...
    (microsoft.public.development.device.drivers)
  • USBAudio.sys bug for Asynchronous OUT enpoint with rate feedback?
    ... I am developing a USB audio class 1.0 device which uses an async OUT ... The problem is that when I enable the feedback functionality, the usb frames ...
    (microsoft.public.development.device.drivers)
  • USBAudio.sys causes blue screen crash under certain conditions
    ... I am developing a USB audio class 1.0 device which uses an async OUT ... endpoint which is associated with a feedback IN endpoint. ... when running at 192/24 and setting the feedback value to be one ...
    (microsoft.public.development.device.drivers)
  • Re: usb2 iscochronous transfer
    ... Don't forget that high-speed isoc have 8 frames per millisecond! ... to scheduling transactions and limit the number of transfers per frame. ... For high-speed USB that means 128*8 frames. ... uaudio plays without any audioable distortion over the toslink interface. ...
    (freebsd-hackers)
  • Avstream Frame Injection mode
    ... I'm currently writing an Avstream driver for a USB isochronous ... I'd like to use Avstream's "Frame Injection" mode ... filter-centric processing) to "receive" the frames, ... properly transfer frames from one to the other when I use the USB ...
    (microsoft.public.development.device.drivers)