The entitlement, USB Transport and UserClient Access, doesn't work

Hi, I have requested USB Transport and UserClient Access successfully, but the applications containing the entitlemet don't work.

  1. driver.dext: User-mode usb driver
  2. Driver.app: Application to install the user-mode driver

Error Termination Reason: Namespace CODESIGNING, Code 0x01

・entitlement file of driver.dext

	<key>com.apple.developer.driverkit</key>
	<true/>
	<key>com.apple.developer.driverkit.transport.usb</key>
	<array>
		<dict>
			<key>idVendor</key>
			<integer>****</integer>
		</dict>
	</array>

・entitlement file of Driver.app

	<key>com.apple.developer.driverkit.userclient-access</key>
	<array>
		<string>****bundle id of driver.dext</string>
	</array>

・driver.dext provisioning profile CMS command

 	<key>Entitlements</key>
	<dict>
  <key>com.apple.developer.driverkit.transport.usb</key>       
		<array>
		</array>
				<key>com.apple.developer.driverkit</key>
		<true/>
				<key>com.apple.application-identifier</key>		<string>bundle id</string>				
				<key>keychain-access-groups</key>
		<array>
				<string>****</string>
		</array>				
				<key>com.apple.developer.team-identifier</key>
		<string>****</string>
	</dict>

・Driver.app provisioning profile CMS command

	<key>Entitlements</key>
	<dict>				
				<key>com.apple.developer.system-extension.install</key>
		<true/>				
				<key>com.apple.application-identifier</key>		<string>bundle ID</string>				
				<key>keychain-access-groups</key>
		<array>
				<string>****.*</string>
		</array>				
				<key>com.apple.developer.team-identifier</key>
		<string>****</string>
	</dict>

Would you let me know the solutions if you have?

Replies

There's a couple of issues based on what is listed here.

  1. The dext's provisioning profile doesn't contain any vendor IDs, is that correct? You won't be able to match against a specific vendor ID unless you have been granted access to that vendor ID.
  2. Your app's provisioning profile doesn't contain the userclient-access entitlement. The entitlement will need to be added to your provisioning profile with content identical to what is in your entitlements file. That includes the specific bundle ID of the dext you are attempting to connect to.
  • I hid the vendor ID. It's "<integer>****</integer>".I couldn't find the userclient-access entitlement in capabilities when I generated identifiers. How can I set it in the provisioning profile?
  • You would have to specifically request that entitlement with your specific content in the text field of the form you requested your entitlements from. In the meantime, the entitlement com.apple.developer.driverkit.allow-any-userclient-access should be available for your dext, which will allow any application to connect to the dext. This should allow you to get your dext working.

Add a Comment