USB Video Class (UVC) Bug in Mac OS?

Hello All,


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,

Chris

Accepted Reply

I received a question pointing to this post and realized the community deserves an answer here. This issue was determined to be related to a UVC conflict between Mac OS and certain versions of the Chrome browser. Essentially, Chrome would "claim" the UVC device if the browser was left running in the background during enumeration. This particular problem has been resolved since early/mid-2017. If you are experiencing this issue then updating your Mac OS and/or Chrome version should be the solution.


Best Regards,

Chris

Replies

I received a question pointing to this post and realized the community deserves an answer here. This issue was determined to be related to a UVC conflict between Mac OS and certain versions of the Chrome browser. Essentially, Chrome would "claim" the UVC device if the browser was left running in the background during enumeration. This particular problem has been resolved since early/mid-2017. If you are experiencing this issue then updating your Mac OS and/or Chrome version should be the solution.


Best Regards,

Chris

Hi, Chris


I'm experiencing a similiar problem with the latest version of macos (10.14.4) and the latest version of chrome (Version 74.0.3729.157) and chrome canary (Version 76.0.3796.0 (Official Build) canary (64-bit)). Do you know how the issue was resolved, could it be a regression?