On Sat, 2 Oct 2021, Howard Spoelstra wrote:
Both have issues communicating with endpoint 4 (the hid controls volume
up/down and mute).
Endpoint 1 should receive the isochronous audio stream, but never does.
After some experimentation with unplugging/plugging the headset and probing
the usb stack (using the usb prober from the mac usb ddk for Mac OS 9.2) at
some point endpoint 4 communication works for both guests tested. Only once
was I able to get sound out and in working in Mac OS 9.2. For OSX I could
only once get audio in working.
The async packets are on endpoint 0. I'm not sure the HID endpoint 4 is
normally involved at all unless you push some buttons but it should work
without that so maybe look at the 0 and the audio endpoints instead of
HID that should have no traffic unless you press buttons.
Pcap and text logs for both MacOS 9.2 and OSX 10.4 tests included...
These are way too big to be possible to find anything in them. Maybe you
should do something simpler like boot the guest without the device
attached and discard all logs up to that point. Then start collecting logs
and attach device and play a short sound. Stop collecting log and try to
make sense of where that fails. That's still a lot of traces but should
only contain the relevant info of detecing the device and playing a sound
not a lot of others that makes it difficult to find what's relevant.
I'm also not sure where's the problem (maybe we have multiple problems).
It also does not work with an emulated usb-audio device but that also
doesn't work with EHCI so it may have a problem by itself (UHCI also seems
to be broken on its own so it does not even work as much as OHCI and
EHCI). You've also said it worked with pass through with a different
device so maybe this only happens with some devices or some sequence of
things these devices are doing. Only allowing one async packet in OHCI
instead of allowing one per endpoint is just a guess that could cause
delays in processing other packets but eventually it should go through
unless one async packet never completes and blocks all later ones or the
delays introduced by this limitaion causes things to go in a way that
guests don't expect and thus fail.
Regards,
BALATON Zoltan