qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Implementing isochronous transfers in hw/hcd-ohci.c


From: Howard Spoelstra
Subject: Re: Implementing isochronous transfers in hw/hcd-ohci.c
Date: Fri, 10 Sep 2021 08:12:17 +0200



On Fri, Sep 10, 2021 at 7:07 AM Gerd Hoffmann <kraxel@redhat.com> wrote:
On Thu, Sep 09, 2021 at 05:06:17PM -0400, Programmingkid wrote:
> Hi Gerd,
>
> Howard and I were talking about USB audio problems with Mac OS guests. We think the issue might be with frames being sent to the USB audio card too soon. My guess is only one frame is suppose to be transmitted every 1 millisecond. I was also reading the todo notes in the file hw/hcd-ohci.c. This is what it says:
>
>  * TODO:
>  *  o Isochronous transfers
>  *  o Allocate bandwidth in frames properly
>  *  o Disable timers when nothing needs to be done, or remove timer usage
>  *    all together.
>  *  o BIOS work to boot from USB storage
> */
>
> Do you think implementing isochronous transfers would fix the audio problems Mac OS guest are experiencing?

Most likely yes, audio devices typically use iso endpints.

take care,
  Gerd

Hi,

Below I pasted the first lines mentioning isochronous traffic from a pcap file when running fedora12 with the usb-audio device and the first lines from a pcap file running Mac OS 9.2 with the usb-audio device

Fedora:
91 56.715001 host 0.5.1 USB 256 URB_ISOCHRONOUS out
92 56.715018 0.5.1 host USB 64 URB_ISOCHRONOUS out
 
MacOS:
143 56.031989 host 0.16.1 USB 256 URB_ISOCHRONOUS out
144 56.032026 0.16.1 host USB 64 URB_ISOCHRONOUS out

The usb-audio device works for the fedora guest, so would this not indicate that the iso endpoints are already working?

The usb-audio device also work (for a limited amount of time) when running MacOS. Looking at USB logging in the Mac OS guest, to me it seems the MacOS side runs into timing issues when packages drift too far apart. It then finally gives up trying to keep the stream open.

Best,
Howard


reply via email to

[Prev in Thread] Current Thread [Next in Thread]