Hi everyone,
Bit of an esoteric question here…
The latest VMware workstation now supports isochronous transfers for USB
devices. I’ve checked it works using a USB audio device in conjunction
with microsoft’s usbaudio.sys driver.
But for some reason my own (in-development) driver is not able to do
isoch transfers. I don’t get returned any errors when submitting the
requests, but my IoCompletion routine does not get called in a timely
fashion, and from monitoring URBs using USB Snoopy Pro I can see that
the isoch urbs for my driver do not get passed to vmusb.sys on the host
(i can see the URBs being passed through with the microsoft driver)
I’ve checked over and over to make sure my requests are good, and can’t
see anything out of line (I’ve been using the isousb sample code as
inspiration). The driver works fine when used normally (i.e. not under
vmware).
Does anyone have experience of this, or know of any special requirements
for vmware - usb isoch?
Thanks,
Nick
> Hi everyone,
Bit of an esoteric question here…
The latest VMware workstation now supports isochronous transfers for USB
devices. I’ve checked it works using a USB audio device in conjunction
with microsoft’s usbaudio.sys driver.
But for some reason my own (in-development) driver is not able to do
isoch transfers. I don’t get returned any errors when submitting the
requests, but my IoCompletion routine does not get called in a timely
fashion, and from monitoring URBs using USB Snoopy Pro I can see that
the isoch urbs for my driver do not get passed to vmusb.sys on the host
(i can see the URBs being passed through with the microsoft driver)
I’ve checked over and over to make sure my requests are good, and can’t
see anything out of line (I’ve been using the isousb sample code as
inspiration). The driver works fine when used normally (i.e. not under
vmware).
Does anyone have experience of this, or know of any special requirements
for vmware - usb isoch?
Thanks,
Nick
Nick,
Is your device USB 1.1 or 2.0 (high-speed)? Currently VMware Workstation
emulates UHCI and supports only USB 1.1 devices.
Do you see any suspicious USB messages/warnings in VM’s log file (usually
‘vmware.log’ in VM’s directory)?
You can also enable additional USB logging by putting
usb.analyzer.enable = TRUE
in the VM’s config file (*.vmx).
Regards,
Dmitriy Budko
VMware
Dmitriy Budko wrote:
> Hi everyone,
>
> Bit of an esoteric question here…
>
> The latest VMware workstation now supports isochronous transfers for USB
> devices. I’ve checked it works using a USB audio device in conjunction
> with microsoft’s usbaudio.sys driver.
>
> But for some reason my own (in-development) driver is not able to do
> isoch transfers. I don’t get returned any errors when submitting the
> requests, but my IoCompletion routine does not get called in a timely
> fashion, and from monitoring URBs using USB Snoopy Pro I can see that
> the isoch urbs for my driver do not get passed to vmusb.sys on the host
> (i can see the URBs being passed through with the microsoft driver)
>
> I’ve checked over and over to make sure my requests are good, and can’t
> see anything out of line (I’ve been using the isousb sample code as
> inspiration). The driver works fine when used normally (i.e. not under
> vmware).
>
> Does anyone have experience of this, or know of any special requirements
> for vmware - usb isoch?
>
> Thanks,
>
> Nick
Nick,
Is your device USB 1.1 or 2.0 (high-speed)? Currently VMware Workstation
emulates UHCI and supports only USB 1.1 devices.
Do you see any suspicious USB messages/warnings in VM’s log file (usually
‘vmware.log’ in VM’s directory)?
You can also enable additional USB logging by putting
usb.analyzer.enable = TRUE
in the VM’s config file (*.vmx).
Regards,
Dmitriy Budko
VMware
Many thanks for the info, enabling that USB logging helped me find the
cause of my issue!
For the record, it is a USB 1.1 device, and there was a problem with my
_URB_SELECT_INTERFACE which prevented subsequent streaming (although
strangely I wouldn’t see an error from that).
Regards,
Nick
Okay, I think I’ve found a real issue with vmusb.sys.
If and when an Isoc URB is completed with an error, the status field of
each USBD_ISO_PACKET_DESCRIPTOR in the list of packets is not preserved
(it gets set to 0xffffffff) probably when vmusb.sys passes it on to the
guest OS. In fact the offset and length fields are not preserved either
(being set to 0).
I have isolated this by
a) observing the return codes when running on the host compared to the
guest OS
b) monitoring vmusb.sys with SnoopyPro (which allows inspection of URB
fields) and comparing with those received by my driver under vmware.
Is this a known issue with VMware 5.5.1?
Thanks,
Nick
Nick Dowell wrote:
Dmitriy Budko wrote:
>> Hi everyone,
>>
>> Bit of an esoteric question here…
>>
>> The latest VMware workstation now supports isochronous transfers for USB
>> devices. I’ve checked it works using a USB audio device in conjunction
>> with microsoft’s usbaudio.sys driver.
>>
>> But for some reason my own (in-development) driver is not able to do
>> isoch transfers. I don’t get returned any errors when submitting the
>> requests, but my IoCompletion routine does not get called in a timely
>> fashion, and from monitoring URBs using USB Snoopy Pro I can see that
>> the isoch urbs for my driver do not get passed to vmusb.sys on the host
>> (i can see the URBs being passed through with the microsoft driver)
>>
>> I’ve checked over and over to make sure my requests are good, and can’t
>> see anything out of line (I’ve been using the isousb sample code as
>> inspiration). The driver works fine when used normally (i.e. not under
>> vmware).
>>
>> Does anyone have experience of this, or know of any special requirements
>> for vmware - usb isoch?
>>
>> Thanks,
>>
>> Nick
>
>
> Nick,
>
> Is your device USB 1.1 or 2.0 (high-speed)? Currently VMware Workstation
> emulates UHCI and supports only USB 1.1 devices.
>
> Do you see any suspicious USB messages/warnings in VM’s log file (usually
> ‘vmware.log’ in VM’s directory)?
>
> You can also enable additional USB logging by putting
> usb.analyzer.enable = TRUE
> in the VM’s config file (*.vmx).
>
>
> Regards,
>
> Dmitriy Budko
> VMware
Many thanks for the info, enabling that USB logging helped me find the
cause of my issue!
For the record, it is a USB 1.1 device, and there was a problem with my
_URB_SELECT_INTERFACE which prevented subsequent streaming (although
strangely I wouldn’t see an error from that).
Regards,
Nick