Thanks for the link. I've already been there and requested entitlements two times but never received an answer. Nevertheless I can see my requests in my account->identifiers and also XCode found the profiles and could apply them without error to my project. XCode also shows the appropriate entitlements. In addition I think those entitlements should not be needed if you run your Mac with SIP disabled.
How can I find out whether I'm running into an entitlement problem? Does Error Domain=NSPOSIXErrorDomain Code=8 "Exec format error" point to an entitlement problem? What else could I do to find out why the extension is not loaded even though "systemextensionsctl list" shows the dext as enabled and active?
Post
Replies
Boosts
Views
Activity
HI, I'm wondering whether this is still valid. When I'm trying to configure my entitlements on the webpage I can see that "DriverKit Allow Third Party UserClients" is now also available for MacOS while I never could reveal this "Additional Capabilities" tab. That also seems to break the SimpleAudioDriver sample but I got at least the dext loaded after changing the entitlements and after I added com.apple.developer.driverkit.allow-third-party-userclients in my XCode project (see also https://developer.apple.com/forums/thread/726576 ).
OK, I finally got the dext loaded and shown as audio device. There seems to be a change in the entitlements and com.apple.developer.driverkit.allow-third-party-userclients is now also the way to go on MacOS. After adding this entitlement to my XCode project I could load the dext, Now I'm trying to figure out the necessary changes for the client to connect to the driver. Currently the console shows me "UC failed userclient-access check, needed bundle ID ..." so I'll find out where to add my bundle ID in my client.
Thanks for your reply. I just decided to spend one of my TSIs and filed a TSI at https://developer.apple.com/support/technical/ ...
OK, I'm still stuck with this and my TSI also doesn't make any progress. I'm only told I should read the manual, I shouldn't care about com.apple.developer.driverkit.allow-third-party-userclients and that this guy cannot help with entitlements. Also I think a real frustrating thing is that you can apply for an entitlement and get an email notification that this request will be evaluated but that's it. No further status update for weeks, neither if it's still under evaluation or if and why it would have been rejected.
OK, I composed a new feedback (FB12198391) at Feedback Assistant ...
Unfortunately I'm still stuck here. So no positive Entitlement reply from Apple so far, no Feedback Assistant answer and also digging around with various options to bypass the Entitlement check also don't work. I've disabled SIP and tried nvram boot-args "amfi_get_out_of_my_way=0x1" and "-arm64e_preview_abi". The first seems to be required to start my app when it has the com.apple.developer.driverkit.userclient-access but you do not yet have this entitlement, the second is required to load the dext. But they don't seem to work together. I tried different ways to activate both but none worked so far. Does anyone know how to establish a connection for development purposes between a dext and an app on a MacBook with Apple silicon (M2) when you don't have been granted the Entitlement com.apple.developer.driverkit.userclient-access?
Thanks a lot, Johannes
And finally I got it to work thanks to this thread:
https://developer.apple.com/forums/thread/712051
So the secret here was to use -arm64e_preview_abi in order to load the dext and inside my XCode add AD_HOC_CODE_SIGNING_ALLOWED in the dext project and then switch both the app and the dexts "Code Sign Identity" to "Sign to Run Locally"
Hi,
I'm facing a similar problem. I'd like to exchange a bigger portion of data with a dext, but using IOConnectCallStructMethod the maximum size seems to be around 4k and using IOConnectCallScalarMethod it only works up to 16 * sizeof(uint64). Is this true or am I doing something wrong? What would be the preferred way to exchange a bigger amount of data with a dext?
Thanks a lot,
Johannes
Hi,
I also got stuck when developing a virtual audio driver and I based it on AudioDriverKit and the sample https://developer.apple.com/documentation/audiodriverkit/creating_an_audio_device_driver . In the end it's running perfectly and the installation from inside my SwiftApp is fine but it seems that I unfortunately over read that you shouldn't use AudioDriverKit for virtual drivers as you will not get the required entitlements. Searching for entitlements etc. I also found this thread.
Now I started to have look at the sample https://developer.apple.com/documentation/coreaudio/building_an_audio_server_plug-in_and_driver_extension
which is probably the way I should go. On the other hand this sample also seems to require the entitlements com.apple.developer.driverkit com.apple.developer.driverkit.transport.usb and for the client com.apple.developer.driverkit.userclient-access . Assuming I'd be given these entitlements for a virtual driver the only one I'm missing is com.apple.developer.driverkit.family.audio (while I think I wouldn't need com.apple.developer.driverkit.transport.usb) to be able to use AudioDriverKit. To me it also looks like AudioDriverKit is not something completely different to using the approach shown in SimpleAudio but really allows much more clean and modern C++ code.
Does Apple think about giving the com.apple.developer.driverkit.family.audio also for virtual drivers (and if yes, when?) or is there a serious reason why this will never happen?
Thanks and best regards,
Johannes
Hi,
I also had quite a time to get this sample running. Perhaps this thread helps:
https://developer.apple.com/forums/thread/726576
In addition I had to learn that AudioDriverKit currently doesn't support virtual audio drivers. Well ... it seems to work but you will not be given the required entitlements. I still try to figure out whether this will be possible in the (near) future as I think AudioDriverKit is much better than the Audio Server Plugin API and currently my virtual driver seems to run fine here on my development machine with SIP off etc.
Best, Johannes
Thanks for this answer - I'm still searching for answers to:
Why is the entitlement com.apple.developer.driverkit.transport.usb needed for the "Audio Server Plugin with Driver Extension" sample ?
Would you be granted all the mentioned entitlements (com.apple.developer.driverkit, com.apple.developer.driverkit.transport.usb and com.apple.developer.driverkit.userclient-access) for a virtual audio driver if it is a "AudioServer Plugin" ?
How would you write a virtual audio driver for iOS ?
Does Apple think about opening AudioDriverKit also for virtual drivers or are there any technical limitations making this impossible (though it seems to work) ?
Best,
Johannes
Just for completion: ... seems like I had a bug in my code and now my settings persist a reboot when I use WriteToStorage and CopyFromStorage :-)
OK, the Feedback number is FB13209186
Thanks - but that doesn't seem to support custom icons like a company logo etc. but only selecting one of the predefined type values which in turn probably results in a system predefined icon. Using kAudioDevicePropertyIcon in Audio Server Plugins supports the usage of custom icons located inside my resource bundle. How could this be achieved in a dext based on AudioDriverKit?