Post

Replies

Boosts

Views

Activity

Reply to Driver Activation failure error code 9. Maybe Entitlements? Please help
Kevin, ssmith_c, thank you both so much for your help. Thanks to your help and patience, I am finally able to get my driver to load. It errors out almost immediately, but it's writing to the logs, which is the most functionality I've gotten out of this enterprise since I started writing in December. FWIW, I think it was the <string>*</string> that did it, so I'll be accepting that answer for this question. Based on ssmith_c's reply I suspect I have some re-thinking to do with respect to my programmatic approach, but I think that's going to be the subject of a different question. For additional context on how I got there... if you care... I had initially switched over to <integer>number<integer> for vendor ID in my entitlements file but it continued to fail the entitlements check. Eventually I compared the output of security cms -D -i <profile embedded in dext> against the output of codesign -d --entitlements <dext> and discovered a discrepancy -- the codesign result included the integer vendor ID, while the embedded profile included a wildcard. I had been using automated signing, so I manually created and downloaded a profile, and received the same wildcard in it, even though we had requested and gotten approved for the vendor ID capability request with the specific vendor ID. I'm not going to sweat that right now, since I have programming to do again, but if either of you happen to know why that is, I'd appreciate the info. I presume it's something I'll have to deal with when this is ready to roll out
Topic: App & System Services SubTopic: Drivers Tags:
Mar ’26
Reply to Can't enable an iOS Driverkit driver when using an older app ID
This post was a godsend for me while trying to implement automatically generated date-based build numbers. For anyone who wants to fit date-based versioning into this parse, the following format will work: BUILD_NUMBER=$(date '+%Y.%m%d.%H%Mf%S') This generates a version in the format 2026.0303.1749f09 The "f" in there is arbitrary; I picked it because it's the closest to "s" in shape.
Mar ’26
Reply to Driver Activation failure error code 9. Maybe Entitlements? Please help
Hello again, Kevin, and thank you again for your help. I notice that you commented 18 hrs ago, but I could have sworn I checked yesterday and there wasn't anything here. I ended up getting matching working by also specifying version number, which increased my probe score. And... you should also be aware of the version number limitation described here, which is another arbitrary restriction the kernel enforces. you definitely predicted my next issue. I prefer date-based build and version numbers, and this one was problematic, but your link helped me fit a date based number into that parsing code. If anyone else wants to try that, I used BUILD_NUMBER=$(date '+%Y.%m%d.%H%Mf%S') in my update script, which yields a version number e.g. 2026.0303.1749f09. The arbitrary "f" enables me to get past that 4[letter]3 format. I picked "f" only because it looks similar to an "s". Before I move onto my current problem... Can you do that, perhaps by operating at the device instead of interface level? Could you explain what you mean by that? Do you mean the difference between picking IOUSBHostDevice vs IOUSBHostInterface for the IOProviderClass? If so, I currently have IOUSBHostDevice selected. I've been trying to learn this API and I don't recall running into anything that discusses the fundamental differences between those two and why I would chose which. Any links you happen to have will be happily devoured. So now my new problem, and again I'll thank you in advance for any help you provide. In short, my driver matches and tries to load, but fails to load. In the logs I see the matching log entry for my driver, and it goes through some setup that mentions my driver and some entries that do not, and eventually ends with "provider entitlements check failed", at which point the logs show that the OS switched to the default driver. There are two entries with "Sandbox: kernelmanagerd(358) deny(1) file-write-create /private/var/folders/zz/zyxvpxvq6csfxvn_n0000000000000/T/com.apple.kernelmanagerd/TemporaryItems" sandwiched between mentions of my driver, then are a bunch of entries from the kernel process that just say "", and then the notification that entitlements check failed. How do I go about troubleshooting this? For more context, my current entitlements file is this: <dict> <key>com.apple.developer.driverkit</key> <true/> <key>com.apple.developer.driverkit.allow-any-userclient-access</key> <true/> <key>com.apple.developer.driverkit.transport.usb</key> <array> <dict> <key>idVendor</key> <integer>*</integer> </dict> </array> </dict> And I'm using automated signing with our apple developer team selected, and in the Apple Developer Oortal, the App ID configuration I have that maps to the driver's bundle ID has the following checked: DriverKit DriverKit (development) DriverKit Allow Any UserClient (development) DriverKit USB Transport (development) DriverKit USB Transport - VendorID In App Purchases (automatically added by the portal) Am I missing something? Could my IOKitPersonalities be wrong? If that will help, it's currently set to <dict> <key>CFBundleIdentifier</key> <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string> <key>CFBundleIdentifierKernel</key> <string>com.apple.driver.driverkit.serial</string> <key>IOClass</key> <string>IOUserService</string> <key>IOProviderClass</key> <string>IOUSBHostDevice</string> <key>IOUserClass</key> <string>AmstronBatteryDriver</string> <key>IOUserServerName</key> <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string> <key>UserClientProperties</key> <dict> <key>IOClass</key> <string>IOUserUserClient</string> <key>IOUserClass</key> <string>BatteryStatusUserClient</string> </dict> <key>bcdDevice</key> <integer>256</integer> <key>bConfigurationValue</key> <integer>1</integer> <key>bInterfaceNumber</key> <integer>0</integer> <key>idProduct</key> <integer>60000</integer> <key>idVendor</key> <integer>4292</integer> </dict> Again, thanks so much for your time and responses. I very much appreciate it.
Topic: App & System Services SubTopic: Drivers Tags:
Mar ’26
Reply to Driver Activation failure error code 9. Maybe Entitlements? Please help
Kevin, First, I wanted to apologize for not replying for a full month, as well as thank you very much for your reply. I was pulled away from this project for a couple weeks, and when I got back I was still spinning my wheels getting the driver installed. I only today found my issue, which wasn't something you could have helped with since I hadn't thought to include the correct context in my original comment. I only found the issue after careful log monitoring in the Console app during the install process as my main installer app was running. It turns out that my bundle ID was too long. It was 67 characters and, apparently the maximum is 63. Seems like an arbitrarily short max in this day and age, and you'd think both XCode and the Developer Portal would catch that, but that's what it was. When I redid my bundle IDs more succinctly (and all my permissions on the Apple Developer Portal), I was able to successfully install/register/enable the driver. I have granted it permission in System Settings, it shows up under systemextensionsctl list, everything seems on the up and up. So now I am moving on to other issues, and if you're still willing, I'll gladly accept additional help. First, to answer your original question about my goals, the primary goal is to translate this custom USB protocol into something that an iMac will recognize as an external UPS battery. Meaning, when the UPS data cable is plugged in, the iMac shows the battery icon widget in the Notification Center area with the correct battery percentage. Unless I'm completely wrong about it, which is entirely plausible, that means I need a driver (virtual or otherwise) that speaks HID in the Power Device class format to the operating system. And the UPS I'm working with does not speak that protocol. Although I plan/hope to pull some of the data I'll get from the UPS battery out into user-app space to support future functionality, that's a nice-to-have. My primary goal is translating the battery into something the OS recognizes. So, on to my current problem. The driver installs... but doesn't load. Probably because it's not matching. So I'm going to give more detailed information in the hope you can help me with this. As I said, the device is a UPS battery, connected via USB cable from its data port. It speaks a custom RPC protocol over USB (I have internal documentation from the vendor with the bytecodes it uses). It uses a stock Silicon Labs firmware chip When I plug the device into any iMac, I get the following item in the IO Registry / USB Tree: CP2102N USB to UART Bridge Controller: Location ID: 0x01120000 Connection Type: Removable Manufacturer: Silicon Labs Serial Number: 0c3421465321e86fcce05720eef3 Link Speed: 12 Mb/s USB Vendor ID: 0x10c4 USB Product ID: 0xea60 USB Product Version: 0x0100 Those hex codes translate to Vendor ID 4242 and Product ID 60000. Using Console and trawling through the logs when I plug the device in, I was able to find the following log entry: CP2102N USB to UART Bridge Controller@01120000: IOUSBHostDevice::setConfigurationGated: AppleUSBHostCompositeDevice selected configuration 1 And immediately after that several entries involving the matching pocess, which resulted in Picked matching dext for bundle identifier com.apple.DriverKit-AppleUSBSLCOM: Dext com.apple.DriverKit-AppleUSBSLCOM v1 in executable dext bundle com.apple.DriverKit-AppleUSBSLCOM at /System/Library/DriverExtensions/com.apple.DriverKit-AppleUSBSLCOM.dext. Snooping around in there I found the following in its Info.plist under the IOKitPersonalities dict: <key>DriverKit-AppleUSBSLCOM-CP2102</key> <dict> <key>CFBundleIdentifier</key> <string>com.apple.DriverKit-AppleUSBSLCOM</string> <key>CFBundleIdentifierKernel</key> <string>com.apple.driver.driverkit.serial</string> <key>IOClass</key> <string>IOUserSerial</string> <key>IOProviderClass</key> <string>IOUSBHostInterface</string> <key>IOUserClass</key> <string>AppleUSBSLCOM</string> <key>IOUserServerName</key> <string>com.apple.driverkit.AppleUSBSLCOM</string> <key>bConfigurationValue</key> <integer>1</integer> <key>bInterfaceNumber</key> <integer>0</integer> <key>idProduct</key> <integer>60000</integer> <key>idVendor</key> <integer>4292</integer> </dict> Along with several others with different product and vendor IDs. I tried to match it in my own Info.plist: <key>AmstronBatteryDriver</key> <dict> <key>CFBundleIdentifier</key> <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string> <key>CFBundleIdentifierKernel</key> <string>com.apple.driver.driverkit.serial</string> <key>IOClass</key> <string>IOUserService</string> <key>IOProviderClass</key> <string>IOUSBHostInterface</string> <key>IOUserClass</key> <string>AmstronBatteryDriver</string> <key>IOUserServerName</key> <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string> <key>UserClientProperties</key> <dict> <key>IOClass</key> <string>IOUserUserClient</string> <key>IOUserClass</key> <string>BatteryStatusUserClient</string> </dict> <key>bConfigurationValue</key> <integer>1</integer> <key>bInterfaceNumber</key> <integer>0</integer> <key>idProduct</key> <integer>60000</integer> <key>idVendor</key> <integer>4292</integer> </dict> But so far I have had no luck. Any suggestions on how I can get my driver to be picked rather than the default one?
Topic: App & System Services SubTopic: Drivers Tags:
Feb ’26
Reply to Driver Activation failure error code 9. Maybe Entitlements? Please help
my driver entitlements file originally looked like this: <dict> <key>com.apple.developer.driverkit</key> <true/> <key>com.apple.developer.driverkit.family.hid.device</key> <true/> <key>com.apple.developer.driverkit.transport.usb</key> <array/> <key>com.apple.developer.driverkit.allow-any-userclient-access</key> <true/> </dict> but I also tried this <dict> <key>com.apple.developer.driverkit</key> <true/> <key>com.apple.developer.driverkit.transport.usb</key> <array> <dict> <key>idVendor</key> <integer>*</integer> <!-- I've also tried hex and decimal values here. Wildcard was a last ditch hope --> </dict> </array> </dict> to no effect. The driver's Info.plist originally looked like this: <dict> <key>CFBundleShortVersionString</key> <string>1.0</string> <key>CFBundleVersion</key> <string>1</string> <key>IOKitPersonalities</key> <dict> <key>MyBatteryDriver</key> <dict> <key>CFBundleIdentifier</key> <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string> <key>CFBundleIdentifierKernel</key> <string>com.apple.kpi.iokit</string> <key>IOClass</key> <string>IOUserService</string> <key>IOMatchCategory</key> <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string> <key>IOProviderClass</key> <string>IOUserResources</string> <key>IOResourceMatch</key> <string>IOKit</string> <key>IOUserClass</key> <string>MyDriver</string> <key>IOUserServerName</key> <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string> <key>UserClientProperties</key> <dict> <key>IOClass</key> <string>IOUserUserClient</string> <key>IOUserClass</key> <string>StatusUserClient</string> </dict> <key>idVendor</key> <integer>0x0000</integer> <!-- showing the format, but not the actual vendor or product ID --> <key>idProduct</key> <integer>0x0000</integer> </dict> </dict> <key>OSBundleUsageDescription</key> <string>Driver description</string> <key>OSBundleUsageDescriptionKey</key> <string>This application is trying to install a driver.</string> </dict> But I also tried this <dict> <key>CFBundleShortVersionString</key> <string>2.0</string> <key>CFBundleVersion</key> <string>2</string> <key>OSBundleUsageDescriptionKey</key> <string>This application is trying to install a driver.</string> <key>OSBundleUsageDescription</key> <string>Driver description</string> <key>IOKitPersonalities</key> <dict> <key>MyBatteryDriver</key> <dict> <key>CFBundleIdentifier</key> <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string> <key>CFBundleIdentifierKernel</key> <string>com.apple.kpi.iokit</string> <key>IOClass</key> <string>IOUserService</string> <key>IOMatchCategory</key> <string>IOUserService</string> <key>IOProviderClass</key> <string>IOUserResources</string> <key>IOResourceMatch</key> <string>IOKit</string> <key>IOUserClass</key> <string>MyDriver</string> <key>IOUserServerName</key> <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string> <key>UserClientProperties</key> <dict> <key>IOClass</key> <string>IOUserUserClient</string> <key>IOUserClass</key> <string>StatusUserClient</string> </dict> <key>idVendor</key> <integer>2222</integer> <!-- again showing the format, which was the hex value converted to decimal --> </dict> </dict> </dict> to also no effect.
Topic: App & System Services SubTopic: Drivers Tags:
Jan ’26
Reply to Driver Activation failure error code 9. Maybe Entitlements? Please help
Kevin, ssmith_c, thank you both so much for your help. Thanks to your help and patience, I am finally able to get my driver to load. It errors out almost immediately, but it's writing to the logs, which is the most functionality I've gotten out of this enterprise since I started writing in December. FWIW, I think it was the <string>*</string> that did it, so I'll be accepting that answer for this question. Based on ssmith_c's reply I suspect I have some re-thinking to do with respect to my programmatic approach, but I think that's going to be the subject of a different question. For additional context on how I got there... if you care... I had initially switched over to <integer>number<integer> for vendor ID in my entitlements file but it continued to fail the entitlements check. Eventually I compared the output of security cms -D -i <profile embedded in dext> against the output of codesign -d --entitlements <dext> and discovered a discrepancy -- the codesign result included the integer vendor ID, while the embedded profile included a wildcard. I had been using automated signing, so I manually created and downloaded a profile, and received the same wildcard in it, even though we had requested and gotten approved for the vendor ID capability request with the specific vendor ID. I'm not going to sweat that right now, since I have programming to do again, but if either of you happen to know why that is, I'd appreciate the info. I presume it's something I'll have to deal with when this is ready to roll out
Topic: App & System Services SubTopic: Drivers Tags:
Replies
Boosts
Views
Activity
Mar ’26
Reply to Can't enable an iOS Driverkit driver when using an older app ID
Done. I filed FB22127978 for the CFBundleVersion issue, and FB22127869 for the Bundle ID length issue
Replies
Boosts
Views
Activity
Mar ’26
Reply to Can't enable an iOS Driverkit driver when using an older app ID
This post was a godsend for me while trying to implement automatically generated date-based build numbers. For anyone who wants to fit date-based versioning into this parse, the following format will work: BUILD_NUMBER=$(date '+%Y.%m%d.%H%Mf%S') This generates a version in the format 2026.0303.1749f09 The "f" in there is arbitrary; I picked it because it's the closest to "s" in shape.
Replies
Boosts
Views
Activity
Mar ’26
Reply to Driver Activation failure error code 9. Maybe Entitlements? Please help
Hello again, Kevin, and thank you again for your help. I notice that you commented 18 hrs ago, but I could have sworn I checked yesterday and there wasn't anything here. I ended up getting matching working by also specifying version number, which increased my probe score. And... you should also be aware of the version number limitation described here, which is another arbitrary restriction the kernel enforces. you definitely predicted my next issue. I prefer date-based build and version numbers, and this one was problematic, but your link helped me fit a date based number into that parsing code. If anyone else wants to try that, I used BUILD_NUMBER=$(date '+%Y.%m%d.%H%Mf%S') in my update script, which yields a version number e.g. 2026.0303.1749f09. The arbitrary "f" enables me to get past that 4[letter]3 format. I picked "f" only because it looks similar to an "s". Before I move onto my current problem... Can you do that, perhaps by operating at the device instead of interface level? Could you explain what you mean by that? Do you mean the difference between picking IOUSBHostDevice vs IOUSBHostInterface for the IOProviderClass? If so, I currently have IOUSBHostDevice selected. I've been trying to learn this API and I don't recall running into anything that discusses the fundamental differences between those two and why I would chose which. Any links you happen to have will be happily devoured. So now my new problem, and again I'll thank you in advance for any help you provide. In short, my driver matches and tries to load, but fails to load. In the logs I see the matching log entry for my driver, and it goes through some setup that mentions my driver and some entries that do not, and eventually ends with "provider entitlements check failed", at which point the logs show that the OS switched to the default driver. There are two entries with "Sandbox: kernelmanagerd(358) deny(1) file-write-create /private/var/folders/zz/zyxvpxvq6csfxvn_n0000000000000/T/com.apple.kernelmanagerd/TemporaryItems" sandwiched between mentions of my driver, then are a bunch of entries from the kernel process that just say "", and then the notification that entitlements check failed. How do I go about troubleshooting this? For more context, my current entitlements file is this: <dict> <key>com.apple.developer.driverkit</key> <true/> <key>com.apple.developer.driverkit.allow-any-userclient-access</key> <true/> <key>com.apple.developer.driverkit.transport.usb</key> <array> <dict> <key>idVendor</key> <integer>*</integer> </dict> </array> </dict> And I'm using automated signing with our apple developer team selected, and in the Apple Developer Oortal, the App ID configuration I have that maps to the driver's bundle ID has the following checked: DriverKit DriverKit (development) DriverKit Allow Any UserClient (development) DriverKit USB Transport (development) DriverKit USB Transport - VendorID In App Purchases (automatically added by the portal) Am I missing something? Could my IOKitPersonalities be wrong? If that will help, it's currently set to <dict> <key>CFBundleIdentifier</key> <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string> <key>CFBundleIdentifierKernel</key> <string>com.apple.driver.driverkit.serial</string> <key>IOClass</key> <string>IOUserService</string> <key>IOProviderClass</key> <string>IOUSBHostDevice</string> <key>IOUserClass</key> <string>AmstronBatteryDriver</string> <key>IOUserServerName</key> <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string> <key>UserClientProperties</key> <dict> <key>IOClass</key> <string>IOUserUserClient</string> <key>IOUserClass</key> <string>BatteryStatusUserClient</string> </dict> <key>bcdDevice</key> <integer>256</integer> <key>bConfigurationValue</key> <integer>1</integer> <key>bInterfaceNumber</key> <integer>0</integer> <key>idProduct</key> <integer>60000</integer> <key>idVendor</key> <integer>4292</integer> </dict> Again, thanks so much for your time and responses. I very much appreciate it.
Topic: App & System Services SubTopic: Drivers Tags:
Replies
Boosts
Views
Activity
Mar ’26
Reply to Driver Activation failure error code 9. Maybe Entitlements? Please help
Kevin, First, I wanted to apologize for not replying for a full month, as well as thank you very much for your reply. I was pulled away from this project for a couple weeks, and when I got back I was still spinning my wheels getting the driver installed. I only today found my issue, which wasn't something you could have helped with since I hadn't thought to include the correct context in my original comment. I only found the issue after careful log monitoring in the Console app during the install process as my main installer app was running. It turns out that my bundle ID was too long. It was 67 characters and, apparently the maximum is 63. Seems like an arbitrarily short max in this day and age, and you'd think both XCode and the Developer Portal would catch that, but that's what it was. When I redid my bundle IDs more succinctly (and all my permissions on the Apple Developer Portal), I was able to successfully install/register/enable the driver. I have granted it permission in System Settings, it shows up under systemextensionsctl list, everything seems on the up and up. So now I am moving on to other issues, and if you're still willing, I'll gladly accept additional help. First, to answer your original question about my goals, the primary goal is to translate this custom USB protocol into something that an iMac will recognize as an external UPS battery. Meaning, when the UPS data cable is plugged in, the iMac shows the battery icon widget in the Notification Center area with the correct battery percentage. Unless I'm completely wrong about it, which is entirely plausible, that means I need a driver (virtual or otherwise) that speaks HID in the Power Device class format to the operating system. And the UPS I'm working with does not speak that protocol. Although I plan/hope to pull some of the data I'll get from the UPS battery out into user-app space to support future functionality, that's a nice-to-have. My primary goal is translating the battery into something the OS recognizes. So, on to my current problem. The driver installs... but doesn't load. Probably because it's not matching. So I'm going to give more detailed information in the hope you can help me with this. As I said, the device is a UPS battery, connected via USB cable from its data port. It speaks a custom RPC protocol over USB (I have internal documentation from the vendor with the bytecodes it uses). It uses a stock Silicon Labs firmware chip When I plug the device into any iMac, I get the following item in the IO Registry / USB Tree: CP2102N USB to UART Bridge Controller: Location ID: 0x01120000 Connection Type: Removable Manufacturer: Silicon Labs Serial Number: 0c3421465321e86fcce05720eef3 Link Speed: 12 Mb/s USB Vendor ID: 0x10c4 USB Product ID: 0xea60 USB Product Version: 0x0100 Those hex codes translate to Vendor ID 4242 and Product ID 60000. Using Console and trawling through the logs when I plug the device in, I was able to find the following log entry: CP2102N USB to UART Bridge Controller@01120000: IOUSBHostDevice::setConfigurationGated: AppleUSBHostCompositeDevice selected configuration 1 And immediately after that several entries involving the matching pocess, which resulted in Picked matching dext for bundle identifier com.apple.DriverKit-AppleUSBSLCOM: Dext com.apple.DriverKit-AppleUSBSLCOM v1 in executable dext bundle com.apple.DriverKit-AppleUSBSLCOM at /System/Library/DriverExtensions/com.apple.DriverKit-AppleUSBSLCOM.dext. Snooping around in there I found the following in its Info.plist under the IOKitPersonalities dict: <key>DriverKit-AppleUSBSLCOM-CP2102</key> <dict> <key>CFBundleIdentifier</key> <string>com.apple.DriverKit-AppleUSBSLCOM</string> <key>CFBundleIdentifierKernel</key> <string>com.apple.driver.driverkit.serial</string> <key>IOClass</key> <string>IOUserSerial</string> <key>IOProviderClass</key> <string>IOUSBHostInterface</string> <key>IOUserClass</key> <string>AppleUSBSLCOM</string> <key>IOUserServerName</key> <string>com.apple.driverkit.AppleUSBSLCOM</string> <key>bConfigurationValue</key> <integer>1</integer> <key>bInterfaceNumber</key> <integer>0</integer> <key>idProduct</key> <integer>60000</integer> <key>idVendor</key> <integer>4292</integer> </dict> Along with several others with different product and vendor IDs. I tried to match it in my own Info.plist: <key>AmstronBatteryDriver</key> <dict> <key>CFBundleIdentifier</key> <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string> <key>CFBundleIdentifierKernel</key> <string>com.apple.driver.driverkit.serial</string> <key>IOClass</key> <string>IOUserService</string> <key>IOProviderClass</key> <string>IOUSBHostInterface</string> <key>IOUserClass</key> <string>AmstronBatteryDriver</string> <key>IOUserServerName</key> <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string> <key>UserClientProperties</key> <dict> <key>IOClass</key> <string>IOUserUserClient</string> <key>IOUserClass</key> <string>BatteryStatusUserClient</string> </dict> <key>bConfigurationValue</key> <integer>1</integer> <key>bInterfaceNumber</key> <integer>0</integer> <key>idProduct</key> <integer>60000</integer> <key>idVendor</key> <integer>4292</integer> </dict> But so far I have had no luck. Any suggestions on how I can get my driver to be picked rather than the default one?
Topic: App & System Services SubTopic: Drivers Tags:
Replies
Boosts
Views
Activity
Feb ’26
Reply to Driver Activation failure error code 9. Maybe Entitlements? Please help
my driver entitlements file originally looked like this: <dict> <key>com.apple.developer.driverkit</key> <true/> <key>com.apple.developer.driverkit.family.hid.device</key> <true/> <key>com.apple.developer.driverkit.transport.usb</key> <array/> <key>com.apple.developer.driverkit.allow-any-userclient-access</key> <true/> </dict> but I also tried this <dict> <key>com.apple.developer.driverkit</key> <true/> <key>com.apple.developer.driverkit.transport.usb</key> <array> <dict> <key>idVendor</key> <integer>*</integer> <!-- I've also tried hex and decimal values here. Wildcard was a last ditch hope --> </dict> </array> </dict> to no effect. The driver's Info.plist originally looked like this: <dict> <key>CFBundleShortVersionString</key> <string>1.0</string> <key>CFBundleVersion</key> <string>1</string> <key>IOKitPersonalities</key> <dict> <key>MyBatteryDriver</key> <dict> <key>CFBundleIdentifier</key> <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string> <key>CFBundleIdentifierKernel</key> <string>com.apple.kpi.iokit</string> <key>IOClass</key> <string>IOUserService</string> <key>IOMatchCategory</key> <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string> <key>IOProviderClass</key> <string>IOUserResources</string> <key>IOResourceMatch</key> <string>IOKit</string> <key>IOUserClass</key> <string>MyDriver</string> <key>IOUserServerName</key> <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string> <key>UserClientProperties</key> <dict> <key>IOClass</key> <string>IOUserUserClient</string> <key>IOUserClass</key> <string>StatusUserClient</string> </dict> <key>idVendor</key> <integer>0x0000</integer> <!-- showing the format, but not the actual vendor or product ID --> <key>idProduct</key> <integer>0x0000</integer> </dict> </dict> <key>OSBundleUsageDescription</key> <string>Driver description</string> <key>OSBundleUsageDescriptionKey</key> <string>This application is trying to install a driver.</string> </dict> But I also tried this <dict> <key>CFBundleShortVersionString</key> <string>2.0</string> <key>CFBundleVersion</key> <string>2</string> <key>OSBundleUsageDescriptionKey</key> <string>This application is trying to install a driver.</string> <key>OSBundleUsageDescription</key> <string>Driver description</string> <key>IOKitPersonalities</key> <dict> <key>MyBatteryDriver</key> <dict> <key>CFBundleIdentifier</key> <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string> <key>CFBundleIdentifierKernel</key> <string>com.apple.kpi.iokit</string> <key>IOClass</key> <string>IOUserService</string> <key>IOMatchCategory</key> <string>IOUserService</string> <key>IOProviderClass</key> <string>IOUserResources</string> <key>IOResourceMatch</key> <string>IOKit</string> <key>IOUserClass</key> <string>MyDriver</string> <key>IOUserServerName</key> <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string> <key>UserClientProperties</key> <dict> <key>IOClass</key> <string>IOUserUserClient</string> <key>IOUserClass</key> <string>StatusUserClient</string> </dict> <key>idVendor</key> <integer>2222</integer> <!-- again showing the format, which was the hex value converted to decimal --> </dict> </dict> </dict> to also no effect.
Topic: App & System Services SubTopic: Drivers Tags:
Replies
Boosts
Views
Activity
Jan ’26