Question

I would appreciate any help and admit I am now officially over my head.

I am in desperate need of a codeless kext for prevent a USB device from being taken by the evil Apple generic driver. I have read every question and any advice I can find, and even waded through the Apple documentation which would be great if I knew what I was doing, however I do not.

I have my kext file sitting in /system/library/extensions, chown, chmod and then kextcache -e. Can't open CFBundle

The device is a small device holding a few parameters within it's status area so I just need to gain control level access. No big read or writes.

Any advice, pointers or help wil be gratefully received. The ViD and PiD and BCDDevic numbers are correct. I read somewhere that have the CF Bundle identifier the same as the original is the solution, however this makes no sense to me as there is not original driver.

Here is my kext file

<?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>CFBundleDevelopmentRegion</key>
        <string>English</string>
        <key>CFBundleExecutable</key>
        <string>VendorSpecificDriver</string>
        <key>CFBundleIdentifier</key>
        <string>com.changers</string>
        <key>CFBundleInfoDictionaryVersion</key>
        <string>6.0</string>
        <key>CFBundlePackageType</key>
        <string>KEXT</string>
        <key>CFBundleSignature</key>
        <string>????</string>
        <key>CFBundleVersion</key>
        <string>1.0.0</string>
        <key>IOKitPersonalities</key>
        <dict>
            <key>DeviceDriver</key>
            <dict>
                <key>CFBundleIdentifier</key>
                <string>com.changers</string>
                <key>IOClass</key>
                <string>IOService</string>
                <key>IOProviderClass</key>
                <string>IOUSBDevice</string>
                <key>bcdDevice</key>
                <integer>273</integer>
                <key>idProduct</key>
                <integer>1406</integer>
                <key>idVendor</key>
                <integer>5840</integer>
            </dict>
            <key>InterfaceDriver</key>
            <dict>
                <key>CFBundleIdentifier</key>
                <string>com.changers</string>
                <key>IOClass</key>
                <string>IOService</string>
                <key>IOProviderClass</key>
                <string>IOUSBInterface</string>
                <key>bConfigurationValue</key>
                <integer>1</integer>
                <key>bInterfaceNumber</key>
                <integer>0</integer>
                <key>idProduct</key>
                <integer>1406</integer>
                <key>idVendor</key>
                <integer>5840</integer>
            </dict>
        </dict>
        <key>OSBundleLibraries</key>
        <dict>
            <key>com.apple.iokit.IOUSBFamily</key>
            <string>1.8</string>
            <key>com.apple.kernel.libkern</key>
            <string>6.0</string>
        </dict>
    </dict>
</plist>
Was it helpful?

Solution

In the CFBundleIdentifier section of the DeviceDriver and the InterfaceDriver, try using "com.apple.kpi.iokit" instead of "com.changers". Also, not sure you need the bcdDevice key in the DeviceDriver section.

Hopefully someone with more knowledge than I will chime in.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top