Entitlements for a virtual audio driver including IOUserClient

Dear Sirs,

I’d like to write a virtual audio driver that also exchanges data with a application and thus probably also offers a driver extension using IOUserClient.

My first implementation was based on the sample https://developer.apple.com/documentation/audiodriverkit/creating_an_audio_device_driver and everything works fine and as expected on my development machine and I can install/uninstall the dext from within my application. But I had to learn that I will not be given the required entitlement com.apple.developer.driverkit.family.audio as AudioDriverKit seems to be not intended to be used for virtual drivers.

So I found out that this sample should be used as starting point for virtual audio drivers: https://developer.apple.com/documentation/coreaudio/creating_an_audio_server_driver_plug-in. But this sample does not include a dext offering the IOUserClient interface which I think I need.

The next sample I found was https://developer.apple.com/documentation/coreaudio/building_an_audio_server_plug-in_and_driver_extension . This doesn’t use AudioDriverKit and it includes IOUserClient so it seems to be a good start. Nevertheless it also requires some entitlements which are com.apple.developer.driverkit and com.apple.developer.driverkit.transport.usb. The client also probably needs the entitlement com.apple.developer.driverkit.userclient-access. Would I be given these entitlements for a pure virtual audio driver and why would I need com.apple.developer.driverkit.transport.usb?

And is there a chance that AudioDriverKit will also be opened for virtual drivers as it seems to be a much more modern approach and doesn’t require a reboot for installing?

Thanks and best regards, Johannes

AudioDriverKit currently does not support virtual audio devices and entitlements will not be granted for those types of audio drivers.

You will need to use AudioServerPlugIn if you want to implement a virtual audio device, which does require a reboot, or at least needs to restart the coreaudiod process.

AudioServerPlugIn is not supported on iOS and is not supported in the App Store. You will need to have your app/driver use an installer, and that is the only option if you want to create virtual audio drivers.

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

Entitlements for a virtual audio driver including IOUserClient
 
 
Q