xcode4device-driveriokitkernel-extension

Device Driver created with Xcode won't load


I have implemented a Device Driver Application based on this link https://developer.apple.com/library/archive/documentation/Darwin/Conceptual/KEXTConcept/KEXTConceptIOKit/iokit_tutorial.html

If I try to load Device on Terminal($ sudo cp -R MyDriver.kext /tmp) I get the error:

No kernel file specified; using running kernel for linking.
MyDriver.kext is invalid; can't resolve dependencies.
MyDriver.kext is invalid; can't resolve dependencies.
MyDriver.kext is invalid; can't resolve dependencies.
MyDriver.kext has problems:
Validation Failures: 
    Info dictionary property value is of illegal type: 
        IOKitPersonalities->MyDriver->IOKitDebug

Authentication Failures:             File owner/permissions are incorrect (must be root:wheel, nonwritable by group/other): 
        /Users/Rasheed/Library/Developer/Xcode/DerivedData/MyDriver-gdmnlqdybpdwzyanoeludcalqwba/Build/Products/Debug/MyDriver.kext
        /Users/Rasheed/Library/Developer/Xcode/DerivedData/MyDriver-gdmnlqdybpdwzyanoeludcalqwba/Build/Products/Debug/MyDriver.kext/Contents
        /Users/Rasheed/Library/Developer/Xcode/DerivedData/MyDriver-gdmnlqdybpdwzyanoeludcalqwba/Build/Products/Debug/MyDriver.kext/Contents/Info.plist
        /Users/Rasheed/Library/Developer/Xcode/DerivedData/MyDriver-gdmnlqdybpdwzyanoeludcalqwba/Build/Products/Debug/MyDriver.kext/Contents/MacOS
        /Users/Rasheed/Library/Developer/Xcode/DerivedData/MyDriver-gdmnlqdybpdwzyanoeludcalqwba/Build/Products/Debug/MyDriver.kext/Contents/MacOS/MyDriver
        /Users/Rasheed/Library/Developer/Xcode/DerivedData/MyDriver-gdmnlqdybpdwzyanoeludcalqwba/Build/Products/Debug/MyDriver.kext/Contents/Resources
        /Users/Rasheed/Library/Developer/Xcode/DerivedData/MyDriver-gdmnlqdybpdwzyanoeludcalqwba/Build/Products/Debug/MyDriver.kext/Contents/Resources/en.lproj
        /Users/Rasheed/Library/Developer/Xcode/DerivedData/MyDriver-gdmnlqdybpdwzyanoeludcalqwba/Build/Products/Debug/MyDriver.kext/Contents/Resources/en.lproj/InfoPlist.strings        
Warnings: 
    Personality has no CFBundleIdentifier; the kext's identifier will be inserted when sending to the IOCatalogue: 
        MyDriver    

My Doubts are:

  1. What is No Kernel file specified Error (what have I missed on my application)?

  2. What is MyDriver.kext is invalid; can't resolve dependencies?

  3. My Bundle Identifier is:

     <key>CFBundleIdentifier</key>
     <string>com.MyCompany.driver.${PRODUCT_NAME:maanu}</string>
    

    what is Info dictionary property value is of illegal type:

    IOKitPersonalities->MyDriver->IOKitDebug?

    (MyDriver My application Name.)


Solution

  • First kernel dependencies.
    This is specified in the info.plist of your driver. Here the path to info.plist seems to be /Users/Rasheed/Library/Developer/Xcode/DerivedData/MyDriver-gdmnlqdybpdwzyanoeludcalqwba/Build/Products/Debug/MyDriver.kext/Contents/Info.plist

    The following is the kernel dependencies of AppleHIDKeyboard.kext in the info.plist
    (key)OSBundleLibraries<(/key)
    (dict)
    (key)com.apple.iokit.IOHIDFamily(/key)
    (string)1.4(/string)
    (key)com.apple.kpi.iokit(/key)
    (string)10.0.0d2(/string)
    (key)com.apple.kpi.libkern(/key)
    (string)10.0.0d2(/string)
    (/dict)

    Second Authentication Failures:
    U can solve this issue by the following procedure to deployment your driver.
    1.place MyDriver.kext in your Desktop.
    2.open the Terminal app and type commands list below.
    3.sudo chown -R root:wheel ~/Desktop/MyDriver.kext
    4.sudo chmod -R 755 ~/Desktop/MyDriver.kext
    5.mv -f ~/Desktop/MyDriver.kext /System/Library/Extensions/
    6.touch /System/Library/Extenstions/

    Third CFBundleIdentifier warning.
    I am not sure what type of issue here, this warning may make your driver unexecutable.
    However, u should check your driver's info.plist, confirm whether your driver has the CFBundleIdentifier key and the associate value.
    Besides, u should also check the driver's project settings.

    Hope this is helpful to u, have a good day!