DriverKit driver does not appear in iPadOS app settings

The driver does not show up in the app settings after switching to “DriverKit USB Transport - VendorID”. Previously, the app used “DriverKit USB Transport (development)” and everything worked as expected.

The entitlements looked like this:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>com.apple.developer.driverkit</key>
    <true/>
    <key>com.apple.developer.driverkit.transport.usb</key>
    <array>
        <dict>
            <key>idVendor</key>
            <string>*</string>
        </dict>
    </array>
</dict>
</plist>

I received approval to use “DriverKit USB Transport - VendorID”. I updated the App ID configuration in the portal, removed all development entitlements, updated the provisioning profile, and edited the driver’s .entitlements as follows:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>com.apple.developer.driverkit</key>
    <true/>
    <key>com.apple.developer.driverkit.transport.usb</key>
    <array>
        <dict>
            <key>idVendor</key>
            <integer>1111</integer>
        </dict>
    </array>
</dict>
</plist>

The app installs on an iPad with an M processor, but the driver does not appear in the settings. In the logs I see the following:


272	debug	19:50:42.005193+0300	installd	7935 signing bytes in 5 blob(s) from /var/installd/Library/Caches/com.apple.mobile.installd.staging/temp.bugkAE/extracted/Payload/****.app/SystemExtensions/****Driver.dext/****.Driver(arm64)
272	debug	19:50:42.012068+0300	installd	open(/var/installd/Library/Caches/com.apple.mobile.installd.staging/temp.bugkAE/extracted/Payload/****.app/SystemExtensions/net.svedm.****.SDRDriver.dext/Info.plist,0x0,0x1b6) = 4
272	debug	19:50:42.012712+0300	installd	0xc2e14c618 done serializing <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "https://www.apple.com/DTDs/PropertyList-1.0.dtd"><plist version="1.0"><dict><key>application-identifier</key><string>****.Driver</string><key>com.apple.application-identifier</key><string>****</string><key>com.apple.developer.driverkit</key><true/><key>com.apple.developer.driverkit.transport.usb</key><array><dict><key>idVendor</key><integer>3034</integer></dict></array><key>com.apple.developer.team-identifier</key><string>****</string><key>com.apple.security.get-task-allow</key><true/><key>get-task-allow</key><true/></dict></plist>

0	error	19:53:08.930054+0300	kernel	Sandbox: MyApp(844) deny(1) sysctl-read kern.bootargs
0	error	19:53:08.931571+0300	kernel	Sandbox: driverkitd(77) deny(1) syscall-unix 284
syscall-unix-denied-SIGKILL
0	error	19:53:09.985946+0300	kernel	1 duplicate report for Sandbox: driverkitd(77) deny(1) syscall-unix 284
syscall-unix-denied-SIGKILL
0	error	19:53:09.985985+0300	kernel	Sandbox: MyApp(844) deny(2) file-test-existence /usr/bin/swift-backtrace
0	error	19:53:09.986011+0300	kernel	Sandbox: MyApp(844) deny(2) file-test-existence /usr/bin/arm64e

But I don’t quite understand what is going wrong. Any ideas?

Answered by svedm in 845808022

The issue was with the iPadOS version. Updating to the latest one fixed it.

The entitlements file looks okay. Remember, the vendor ID is a decimal number.

I suggest that you install your app and driver on a Mac. There are more tools available to debug with, and you can add code to explicitly load and unload the driver, while on iPadOS that process is completely automatic.

Are you using the same version of iPadOS now as you were using with the working (development version) of the driver? One version of iPadOS didn't show the Driver toggle in Settings, I don't remember which.

The issue was with the iPadOS version. Updating to the latest one fixed it.

DriverKit driver does not appear in iPadOS app settings
 
 
Q