I am working on a USB Video Class (UVC) compliant device, and noticed some strange issues with UVC enumeration on Mac OS. I am currently running Sierra 10.12.1 on a Macbook Air 13" mid-2011 edition.
Often (~25-50% of the time), UVC class-specific enumeration is not completed. I have been testing with the device my company is creating, and as a control, an industry-standard UVC-compliant device (Logitech C920) and observed similar results. These are both USB composite devices, consisting of USB audio class (microphone, and optionally speaker) and USB video class (camera) components.
In all cases, the audio (UAC) functionality is properly enumerated when the device is plugged in. This is presumably because this is central to the operating system, and needs to be made available in the system sound preferences.
The video (UVC) functionality, however, is a different story. This is not enumerated until a camera application is executed, but fairly often, the video enumeration is just not initiated by the host. I have found somewhat better results when the USB device is plugged in prior to opening the camera application, but either way the video device is available significantly less than 100% of the time.
Yes, sometimes the user will have to unplug and re-plug the UVC device less than a few times in order to restore the camera functionality, but regardless the end-user experience seems rather poor for these class-compliant devices that are supposed to be supported by the USB driver that ships with Mac OS. I have tested with many applications - Photobooth, Quicktime, Facetime, Skype, Zoom, and Hangouts...all exhibited the same issue, so my presumption is that this is a bug in the UVC host driver in the operating system itself.
It's possible that I have missed something - I haven't really found a good way to see what's going on inside this version of Mac OS during the enumeration process. All I can see from my protocol analyzer is that sometimes the UVC function is initialized when the camera application starts, and sometimes it is not. Any advice on how I can gather more info on what is happening would be greatly appreciated!
Hopefully this is something that has been noticed and is being fixed. I will also look into following the formal bug reporting process, but it's probably a good idea to get some input from the community before taking that next step. Is anyone else seeing this? Does anyone know a good way I can log what is happening for the bug report?
Thanks in advance,