Hi,
The existing UAC2 implementation presents itself as asynchronous
USB_ENDPOINT_SYNC_ASYNC
https://github.com/torvalds/linux/blob/master/drivers/usb/gadget/function/f_uac2.c#L276
+
https://github.com/torvalds/linux/blob/master/drivers/usb/gadget/function/f_uac2.c#L285
.
However:
1) The function does not define any feedback endpoint
2) IMO in reality it is adaptive - the g_audio capture device accepts
any data passed by the USB host, the USB host is the one which defines
the data pace.
While Linux and reportedly OSX accept the async EP OUT without explicit
feedback EP IN, Windows does not.
Simply changing USB_ENDPOINT_SYNC_ASYNC to USB_ENDPOINT_SYNC_ADAPTIVE
for the FS and HS output endpoints fixes the windows problem and IMO
corrects the config to reflect real function.
There are multiple projects underway adding the async feedback EP, but
in the meantime I think the .bmAttributes information should be changed
as above, making the device usable in Windows for everyone.
Thanks a lot for considering.
Best regards,
Pavel.