Wouter1 / EMU-driver

OSX Kernel extension for Creative Labs EMU driver
189 stars 30 forks source link

OS X 10.8.5 dependency resolution failure; #106

Closed sjuktstarkgrogg closed 6 years ago

sjuktstarkgrogg commented 6 years ago

Hi, so I read that another user had the same 'dependency resolution failure' but on a much more recent version of OS X... I tried to modify the .plist file a bit by changing versions etc. but nothing worked...

I'm running it on OS X 10.8.5 and I'm getting following error:

Adjusting driver for low latency
(Re)placing EMU kernel extension. We need the admin password for this.

rm: /System/Library/Extensions/EMUUSBAudio.kext: No such file or directory
/System/Library/Extensions/EMUUSBAudio.kext failed to load - (libkern/kext) dependency resolution failure; check the system/kernel logs for errors or try kextutil(8).
Waiting for the system to finish installation. Can take several minutes.
Rebuilding the kernel
Waiting for lock to replace the old kernel
Driver is installed and ready for use!
You can close this window.
logout
Wouter1 commented 6 years ago

@sjuktstarkgrogg Sorry for the slow response, I have no time left at all unfortunately...

Can you post the message in the system/kernel logs. There should be a message stating specifically which dependency can not be resoloved. This might be just a version issue, eg I might be requiring too new a library where an older version might also work.

sjuktstarkgrogg commented 6 years ago
• Jan 16 21:24:53 MacBook-Pro-2.local com.apple.kextd[16]: Cache file /System/Library/Caches/com.apple.kext.caches/Directories/System/Library/Extensions/KextIdentifiers.plist.gz is out of date; not using.
• Jan 16 21:24:54 MacBook-Pro-2.local com.apple.kextd[16]: EMUUSBAudio.kext - no compatible dependency found for com.apple.iokit.IOAudioFamily.
• Jan 16 21:24:54 MacBook-Pro-2.local com.apple.kextd[16]: EMUUSBAudio.kext - no compatible dependency found for com.apple.iokit.IOUSBFamily.
• Jan 16 21:24:54 MacBook-Pro-2.local com.apple.kextd[16]: EMUUSBAudio.kext - no compatible dependency found for com.apple.kpi.iokit.
• Jan 16 21:24:54 MacBook-Pro-2.local com.apple.kextd[16]: EMUUSBAudio.kext - no compatible dependency found for com.apple.kpi.libkern.
• Jan 16 21:24:54 MacBook-Pro-2.local com.apple.kextd[16]: EMUUSBAudio.kext - no compatible dependency found for com.apple.kpi.mach.
• Jan 16 21:24:54 MacBook-Pro-2.local com.apple.kextd[16]: Can't load EMUUSBAudio.kext - failed to resolve dependencies.

• Jan 16 21:25:24 MacBook-Pro-2.local com.apple.kextd[16]: Cache file /System/Library/Caches/com.apple.kext.caches/Startup/KextPropertyValues_OSBundleHelper_x86_64.plist.gz is out of date; not using.

• Jan 16 21:25:24 MacBook-Pro-2.local com.apple.kextd[16]: Cache file /System/Library/Caches/com.apple.kext.caches/Startup/IOKitPersonalities_x86_64.ioplist.gz is out of date; not using.

I hope those where the messages you meant!

Thanks a lot for your reply and that you're willing to look into this! I'd be extremely grateful if you managed help me to run this EMU0404 on my MBPr on OS X 10.8.5

Wouter1 commented 6 years ago

@sjuktstarkgrogg
I'm not sure about the first line. Maybe something is not up to date and it might be related to problem

it looks like my driver is asking for a newer version of the libraries (IOAudioFamily, IOUSBFamily,..., mach)

Which versions of these libraries do you have? Then I can check against the code.

sjuktstarkgrogg commented 6 years ago

This is what's written about the concerned libraries in the following file: KextIdentifiers.plist.gz

        <dict>
            <key>CFBundleIdentifier</key>
            <string>com.apple.iokit.IOAudioFamily</string>
            <key>CFBundleVersion</key>
            <string>1.9.2fc7</string>
            <key>OSBundlePath</key>
            <string>IOAudioFamily.kext</string>
        </dict>
        <dict>
            <key>CFBundleIdentifier</key>
            <string>com.apple.iokit.IOUSBFamily</string>
            <key>CFBundleVersion</key>
            <string>635.4.0</string>
            <key>OSBundlePath</key>
            <string>IOUSBFamily.kext</string>
        </dict>
        <dict>
            <key>CFBundleIdentifier</key>
            <string>com.apple.kpi.iokit</string>
            <key>CFBundleVersion</key>
            <string>12.6.0</string>
            <key>OSBundlePath</key>
            <string>System.kext/PlugIns/IOKit.kext</string>
        </dict>
        <dict>
            <key>CFBundleIdentifier</key>
            <string>com.apple.kpi.libkern</string>
            <key>CFBundleVersion</key>
            <string>12.6.0</string>
            <key>OSBundlePath</key>
            <string>System.kext/PlugIns/Libkern.kext</string>
        </dict>
        <dict>
            <key>CFBundleIdentifier</key>
            <string>com.apple.kpi.mach</string>
            <key>CFBundleVersion</key>
            <string>12.6.0</string>
            <key>OSBundlePath</key>
            <string>System.kext/PlugIns/Mach.kext</string>
        </dict>
Wouter1 commented 6 years ago

@sjuktstarkgrogg This is in the bundle target properties of the driver (EMUUSBAudio-info.plist)

IOAudioFamily 1.9.7f2 IOUSBFamily 683.4 iokit 13.4 libkern 13.4 mach 13.4

So that explains why it does not load.

We would need to test if lowering the requirements to your machine versions would give a working driver.

Can you try the following:

Before installing the driver, edit the Contents/Info.plist inside the v9 version of the driver (EMU-driver/v9/right click on EMUUSBAudio.kext and 'show package contents'/Contents/Info.plist). The values are at the far bottom of the plist. Make sure you dont change only the numbers, not the wrapper structures ( etc). Change the values in OSBundleLibraries according to the values you reported above. This can be done with xcode or plain text editor. Save. After that, run the installer as usual.

sjuktstarkgrogg commented 6 years ago

Ok, so I tried to replace those versions in the info.plist in V9 file as you told me. But it still doesn't work... Do I have to take that folder/kext out from the v9 folder and drop it in the root of the driver folder to replace the already existing EMUUSBAudio.kext? I noticed though that my .kext files appear as folders and not as 'bundles' or as self-contained files. I noticed now since you told me that I should rightclick to show package content... Which I didn't need to do because they're all just folders named EMUUSBAudio.kext. I'm sorry if these are noob stuff that I should've recognized from the beginning. Anyhow these are system messages:


2018-01-18 17:11:40,205 sudo[863]: user : TTY=ttys000 ; PWD=/Users/user/Downloads/EMU-driver-master ; USER=root ; COMMAND=/sbin/kextunload -q /System/Library/Extensions/EMUUSBAudio.kext
2018-01-18 17:11:40,218 sudo[866]: user : TTY=ttys000 ; PWD=/Users/user/Downloads/EMU-driver-master ; USER=root ; COMMAND=/bin/rm -r /System/Library/Extensions/EMUUSBAudio.kext
2018-01-18 17:11:40,238 sudo[868]: user : TTY=ttys000 ; PWD=/Users/user/Downloads/EMU-driver-master ; USER=root ; COMMAND=/bin/cp -r EMUUSBAudio.kext /System/Library/Extensions
2018-01-18 17:11:40,259 sudo[870]: user : TTY=ttys000 ; PWD=/Users/user/Downloads/EMU-driver-master ; USER=root ; COMMAND=/bin/rm -rf /Library/Audio/MIDI Drivers/EMUMIDIDriver.plugin
2018-01-18 17:11:40,277 sudo[872]: user : TTY=ttys000 ; PWD=/Users/user/Downloads/EMU-driver-master ; USER=root ; COMMAND=/bin/mkdir -p /Library/Audio/MIDI Drivers/
2018-01-18 17:11:40,295 sudo[874]: user : TTY=ttys000 ; PWD=/Users/user/Downloads/EMU-driver-master ; USER=root ; COMMAND=/bin/cp -R EMUMIDIDriver orig.plugin /Library/Audio/MIDI Drivers/EMUMIDIDriver.plugin
2018-01-18 17:11:40,314 sudo[876]: user : TTY=ttys000 ; PWD=/Library/Audio/MIDI Drivers ; USER=root ; COMMAND=/usr/bin/chgrp -R wheel EMUMIDIDriver.plugin
2018-01-18 17:11:40,334 sudo[878]: user : TTY=ttys000 ; PWD=/System/Library/Extensions ; USER=root ; COMMAND=/usr/bin/chgrp -R wheel EMUUSBAudio.kext
2018-01-18 17:11:40,353 sudo[880]: user : TTY=ttys000 ; PWD=/System/Library/Extensions ; USER=root ; COMMAND=/sbin/kextload -v 0 EMUUSBAudio.kext
2018-01-18 17:11:40,366 com.apple.kextd[16]: Cache file /System/Library/Caches/com.apple.kext.caches/Directories/System/Library/Extensions/KextIdentifiers.plist.gz is out of date; not using.
2018-01-18 17:11:41,024 com.apple.kextd[16]: Failed to load EMUUSBAudio.kext - (libkern/kext) link error.
2018-01-18 17:11:41,000 kernel[0]: kxld[com.emu.driver.EMUUSBAudio]: The super class vtable '__ZTV12IOUserClient' for vtable '__ZTV16EMUUSBUserClient' is out of date. Make sure your kext has been built against the correct headers.
2018-01-18 17:11:41,000 kernel[0]: kxld[com.emu.driver.EMUUSBAudio]: The super class vtable '__ZTV13IOAudioDevice' for vtable '__ZTV17EMUUSBAudioDevice' is out of date. Make sure your kext has been built against the correct headers.
2018-01-18 17:11:41,000 kernel[0]: kxld[com.emu.driver.EMUUSBAudio]: The super class vtable '__ZTV13IOAudioEngine' for vtable '__ZTV17EMUUSBAudioEngine' is out of date. Make sure your kext has been built against the correct headers.
2018-01-18 17:11:41,000 kernel[0]: kxld[com.emu.driver.EMUUSBAudio]: The super class vtable '__ZTV9IOService' for vtable '__ZTV17EMUUSBAudioPlugin' is out of date. Make sure your kext has been built against the correct headers.
2018-01-18 17:11:41,000 kernel[0]: kxld[com.emu.driver.EMUUSBAudio]: The super class vtable '__ZTV14IOAudioControl' for vtable '__ZTV18EMUXUCustomControl' is out of date. Make sure your kext has been built against the correct headers.
2018-01-18 17:11:41,000 kernel[0]: kxld[com.emu.driver.EMUUSBAudio]: The super class vtable '__ZTV19IOAudioLevelControl' for vtable '__ZTV27EMUUSBAudioHardLevelControl' is out of date. Make sure your kext has been built against the correct headers.
2018-01-18 17:11:41,000 kernel[0]: kxld[com.emu.driver.EMUUSBAudio]: The super class vtable '__ZTV19IOAudioLevelControl' for vtable '__ZTV27EMUUSBAudioSoftLevelControl' is out of date. Make sure your kext has been built against the correct headers.
2018-01-18 17:11:41,000 kernel[0]: kxld[com.emu.driver.EMUUSBAudio]: The super class vtable '__ZTV12IOUserClient' for vtable '__ZTV16EMUUSBUserClient' is out of date. Make sure your kext has been built against the correct headers.
2018-01-18 17:11:41,000 kernel[0]: kxld[com.emu.driver.EMUUSBAudio]: The super class vtable '__ZTV13IOAudioDevice' for vtable '__ZTV17EMUUSBAudioDevice' is out of date. Make sure your kext has been built against the correct headers.
2018-01-18 17:11:41,000 kernel[0]: kxld[com.emu.driver.EMUUSBAudio]: The super class vtable '__ZTV13IOAudioEngine' for vtable '__ZTV17EMUUSBAudioEngine' is out of date. Make sure your kext has been built against the correct headers.
2018-01-18 17:11:41,000 kernel[0]: kxld[com.emu.driver.EMUUSBAudio]: The super class vtable '__ZTV9IOService' for vtable '__ZTV17EMUUSBAudioPlugin' is out of date. Make sure your kext has been built against the correct headers.
2018-01-18 17:11:41,000 kernel[0]: kxld[com.emu.driver.EMUUSBAudio]: The super class vtable '__ZTV14IOAudioControl' for vtable '__ZTV18EMUXUCustomControl' is out of date. Make sure your kext has been built against the correct headers.
2018-01-18 17:11:41,000 kernel[0]: kxld[com.emu.driver.EMUUSBAudio]: The super class vtable '__ZTV19IOAudioLevelControl' for vtable '__ZTV27EMUUSBAudioHardLevelControl' is out of date. Make sure your kext has been built against the correct headers.
2018-01-18 17:11:41,000 kernel[0]: kxld[com.emu.driver.EMUUSBAudio]: The super class vtable '__ZTV19IOAudioLevelControl' for vtable '__ZTV27EMUUSBAudioSoftLevelControl' is out of date. Make sure your kext has been built against the correct headers.
2018-01-18 17:11:41,000 kernel[0]: Can't load kext com.emu.driver.EMUUSBAudio - link failed.
2018-01-18 17:11:41,000 kernel[0]: Failed to load executable for kext com.emu.driver.EMUUSBAudio.
2018-01-18 17:11:41,000 kernel[0]: Kext com.emu.driver.EMUUSBAudio failed to load (0xdc008016).
2018-01-18 17:11:41,000 kernel[0]: Failed to load kext com.emu.driver.EMUUSBAudio (error 0xdc008016).

2018-01-18 17:14:54,205 com.apple.kextcache[929]: kxld[com.emu.driver.EMUUSBAudio]: The super class vtable 'vtable for IOUserClient' for vtable 'vtable for EMUUSBUserClient' is out of date. Make sure your kext has been built against the correct headers.
2018-01-18 17:14:54,205 com.apple.kextcache[929]: kxld[com.emu.driver.EMUUSBAudio]: The super class vtable 'vtable for IOAudioDevice' for vtable 'vtable for EMUUSBAudioDevice' is out of date. Make sure your kext has been built against the correct headers.
2018-01-18 17:14:54,205 com.apple.kextcache[929]: kxld[com.emu.driver.EMUUSBAudio]: The super class vtable 'vtable for IOAudioEngine' for vtable 'vtable for EMUUSBAudioEngine' is out of date. Make sure your kext has been built against the correct headers.
2018-01-18 17:14:54,205 com.apple.kextcache[929]: kxld[com.emu.driver.EMUUSBAudio]: The super class vtable 'vtable for IOService' for vtable 'vtable for EMUUSBAudioPlugin' is out of date. Make sure your kext has been built against the correct headers.
2018-01-18 17:14:54,205 com.apple.kextcache[929]: kxld[com.emu.driver.EMUUSBAudio]: The super class vtable 'vtable for IOAudioControl' for vtable 'vtable for EMUXUCustomControl' is out of date. Make sure your kext has been built against the correct headers.
2018-01-18 17:14:54,206 com.apple.kextcache[929]: kxld[com.emu.driver.EMUUSBAudio]: The super class vtable 'vtable for IOAudioLevelControl' for vtable 'vtable for EMUUSBAudioHardLevelControl' is out of date. Make sure your kext has been built against the correct headers.
2018-01-18 17:14:54,206 com.apple.kextcache[929]: kxld[com.emu.driver.EMUUSBAudio]: The super class vtable 'vtable for IOAudioLevelControl' for vtable 'vtable for EMUUSBAudioSoftLevelControl' is out of date. Make sure your kext has been built against the correct headers.
2018-01-18 17:14:54,206 com.apple.kextcache[929]: kxld[com.emu.driver.EMUUSBAudio]: The super class vtable 'vtable for IOUserClient' for vtable 'vtable for EMUUSBUserClient' is out of date. Make sure your kext has been built against the correct headers.
2018-01-18 17:14:54,206 com.apple.kextcache[929]: kxld[com.emu.driver.EMUUSBAudio]: The super class vtable 'vtable for IOAudioDevice' for vtable 'vtable for EMUUSBAudioDevice' is out of date. Make sure your kext has been built against the correct headers.
2018-01-18 17:14:54,206 com.apple.kextcache[929]: kxld[com.emu.driver.EMUUSBAudio]: The super class vtable 'vtable for IOAudioEngine' for vtable 'vtable for EMUUSBAudioEngine' is out of date. Make sure your kext has been built against the correct headers.
2018-01-18 17:14:54,206 com.apple.kextcache[929]: kxld[com.emu.driver.EMUUSBAudio]: The super class vtable 'vtable for IOService' for vtable 'vtable for EMUUSBAudioPlugin' is out of date. Make sure your kext has been built against the correct headers.
2018-01-18 17:14:54,206 com.apple.kextcache[929]: kxld[com.emu.driver.EMUUSBAudio]: The super class vtable 'vtable for IOAudioControl' for vtable 'vtable for EMUXUCustomControl' is out of date. Make sure your kext has been built against the correct headers.
2018-01-18 17:14:54,206 com.apple.kextcache[929]: kxld[com.emu.driver.EMUUSBAudio]: The super class vtable 'vtable for IOAudioLevelControl' for vtable 'vtable for EMUUSBAudioHardLevelControl' is out of date. Make sure your kext has been built against the correct headers.
2018-01-18 17:14:54,207 com.apple.kextcache[929]: kxld[com.emu.driver.EMUUSBAudio]: The super class vtable 'vtable for IOAudioLevelControl' for vtable 'vtable for EMUUSBAudioSoftLevelControl' is out of date. Make sure your kext has been built against the correct headers.

2018-01-18 17:14:54,209 com.apple.kextcache[929]: Link failed (error code 5).
2018-01-18 17:14:54,209 com.apple.kextcache[929]: Prelink failed for com.emu.driver.EMUUSBAudio; omitting from prelinked kernel.
sjuktstarkgrogg commented 6 years ago

Update

Wouter1 commented 6 years ago

@sjuktstarkgrogg Thanks for trying. it looks like the version numbers I put in are indeed right and that it will not work with older versions of OSX than mavericks.

Does the original driver from creative not work for 10.8 either?

sjuktstarkgrogg commented 6 years ago

Thanks a lot for your time and help Wouter! It's a real bummer because I get so much clicks and pops when recording audio with the standard drivers and I really hoped that yours would solve that problem. I think I might have to buy a new sound card then :/ Anyhow, again.. Thanks for all your help! (Don't hesitate to contact me if you think of some other solution that might make the drivers work on OS X 10.8 ;) )

Wouter1 commented 6 years ago

@sjuktstarkgrogg Yes it would require at least some code fixing and back porting, but I'm not going to put work in that.

Why don't you upgrade to 10.9 (or later)? Then my driver should work fine