How to view USB descriptors?

I am developing a USB UVC product and we are seeing poor performance on VLC. We are streaming 16 bit 1080p60 Uncompressed video but VLC says the codec is 32 bit RV32 Uncompressed with a frame rate of 0.0000033. Something is obviously wrong and I want to view the USB descriptors on my Mac to verify what the Mac is seeing the USB device is capable of. How can I do this?

Looking online I found an IORegistryExplorer application but that doesnt seem to give me the full descriptors of the connected USB device, just some metadata about the connection. Any help finding the descriptor would be appreciated.

Answered by DTS Engineer in 796206022

Something is obviously wrong and I want to view the USB descriptors on my Mac to verify what the Mac is seeing the USB device is capable of. How can I do this?

In terms of application options, there is an old tool called "USB Prober" that might help, however, getting access to it will be a bit involved. Note that this tool is VERY old, so I can't promise it will get you what you want or even run at all. It worked on the Intel iMac (2019) running Sonoma that I happened to have at hand, but this isn't something we made any effort to maintain. If you want to try it:

  • You need to have an Intel machine available, as the USB stack on ARM has diverged enough that it just hangs.

  • You can find the installer if you search for "USB" in the "More Downloads" section of the developer site. That will find "IOUSBFamily Log Release for OS X 10.9.4", which is that last place time we released it.

  • The app itself is inside either of those installers, but both of those installers are so old that neither of them should be run on a modern system, assuming they'll run at all. You'll need to extract the app "manually" instead. I used Pacifist, but I'm sure their are other options.

  • If the app doesn't run after you've extracted it, you may need to manually strip quarantine data (this happened to me).

I'm not sure if that will have the data you're looking for but this was the tool we used to provide for this sort of thing. If that doesn't get you what you want, then the other option would be to write a test app using IOUSBHost to talk directly to the device.

__
Kevin Elliott
DTS Engineer, CoreOS/Hardware

Something is obviously wrong and I want to view the USB descriptors on my Mac to verify what the Mac is seeing the USB device is capable of. How can I do this?

In terms of application options, there is an old tool called "USB Prober" that might help, however, getting access to it will be a bit involved. Note that this tool is VERY old, so I can't promise it will get you what you want or even run at all. It worked on the Intel iMac (2019) running Sonoma that I happened to have at hand, but this isn't something we made any effort to maintain. If you want to try it:

  • You need to have an Intel machine available, as the USB stack on ARM has diverged enough that it just hangs.

  • You can find the installer if you search for "USB" in the "More Downloads" section of the developer site. That will find "IOUSBFamily Log Release for OS X 10.9.4", which is that last place time we released it.

  • The app itself is inside either of those installers, but both of those installers are so old that neither of them should be run on a modern system, assuming they'll run at all. You'll need to extract the app "manually" instead. I used Pacifist, but I'm sure their are other options.

  • If the app doesn't run after you've extracted it, you may need to manually strip quarantine data (this happened to me).

I'm not sure if that will have the data you're looking for but this was the tool we used to provide for this sort of thing. If that doesn't get you what you want, then the other option would be to write a test app using IOUSBHost to talk directly to the device.

__
Kevin Elliott
DTS Engineer, CoreOS/Hardware

that's interesting. I have version 666.4.0 of USB Prober, and it works for viewing USB descriptors on Apple Silicon (for me).

It does a fine job of displaying parsed descriptors, better than the utilities I have found on Windows. I don't use it for anything else. I probably installed it long ago on an Intel machine, and the binary runs on my M1 Mac.

The code is ancient - the logging function appears to rely on a kernel extension which simply isn't there any more.

Related source code is at https://opensource.apple.com/source/IOUSBFamily/IOUSBFamily-540.4.1/USBProberV2/, in case anyone wants to stake a stab at modernizing it.

that's interesting. I have version 666.4.0 of USB Prober, and it works for viewing USB descriptors on Apple Silicon (for me).

To be honest, my comment there was based on a very brief test on the ARM and Intel machine's I had at hand, and I didn't really spend anytime looking into it. It's certainly possible that the tool will work (at least partially), as the IOKit APIs and subset of AppKit it was written in haven't really changed since macOS 10.0. The USB stack rewrite is what would have caused this:

The code is ancient - the logging function appears to rely on a kernel extension which simply isn't there any more.

...but the general structure (keys, etc.) is basically the same, which is why it still works at all.

__
Kevin Elliott
DTS Engineer, CoreOS/Hardware

How to view USB descriptors?
 
 
Q