Hi guys, How to achieve the following feature on macOS when a USB device (Camera/Mic/Speaker) is connected:
- When a third-party video conferencing app is not in a meeting, ensure the app defaults to using the USB device (Camera/Mic/Speaker).
- When a third-party conferencing app is in a meeting, ensure the app automatically switches to the USB device (Camera/Mic/Speaker).
I want to make use of IOKit extension to hidden or ignore build-in camera to realize the requirement. however the extension can't be loaded for Invalid permissions in MacOS 15.4.1, buildVersion:24E263. I also tried to run in in MacOS 14.4.1, which can be loaded but can't auto load when restart laptop as KDK version not match. Could you please give me some suggestion? Is it possible hidden build-in camera in MacOS M-series chip? Is there any other method to realize the feature. Thanks a lot.
I want to make use of IOKit extension to hidden or ignore build-in camera to realize the requirement.
KEXT support has been formally deprecated and is no longer supported by Apple.
Could you please give me some suggestion? Is it possible hidden build-in camera in MacOS M-series chip?
The main issue here is that the built-in camera doesn't have a standard implementation, so the specific details vary considerable from model to model. Any solution to this is going to require significant testing across a very broad range of our products and will probably require active maintenance to support new devices and/or changes to the software stack used by those machines.
In any case, while I haven't looked into this in great details, I can think of three approaches that are likely to work:
-
Use the EndpointSecurity framework to block access to the device. Routing video from the camera to user space is going to go the through a user client, so using ES_EVENT_TYPE_AUTH_IOKIT_OPEN to block that connection would prevent the camera from functioning.
-
It might be possible to use a codeless DEXT to replace the existing KEXT. You can find a general description of that here and a more detailed example of that process here. Note that while this approach will function and might be useful for your own testing/experimentation, it is very unlikely that we would approve the necessary entitlements that would allow this to be distributed. In general, our policy has been that we grant DEXT entitlements to developers trying to suport "their" hardware, not to 3rd parties trying to interfere with other hardware.
-
I'm not familiar enough with CoreMedia I/O to know what would be involved, but it's possible you might be able to use that framework to interfere with or "hide" our camera. Similarly, you might be able to simply claim exclusives access to the camera, which would prevent other clients from using it.
__
Kevin Elliott
DTS Engineer, CoreOS/Hardware