Issue with Audio Unit on 10.11

Some details on this, including a fix that solely relies on official Apple downloads

TL;DR is Apple is still pushing the bad framework, but a working one for at least 10.11 (El Capitan) systems can be reinstalled via iTunes 12.8.2, after the bad one is deleted. Users will have to disable SIP to swap out the framework, and have to continue to avoid further updates that will reinstall the bad framework. Not ideal by any means, but it IS a way to for users to get their legacy systems functioning again without resorting to bypasses of the verification process or installing frameworks modified by third parties, or depending on individually patched plug-ins from every vendor.

IDENTIFICATION
The easiest way to identify the version # of the installed framework is to issue the following command in the Terminal:

/usr/libexec/PlistBuddy -c "Print :CFBundleVersion" /System/Library/PrivateFrameworks/MobileDevice.framework/Versions/Current/Resources/version.plist

If the command fails rather than printing a version #, see footnote (1).

Known BAD versions incompatible with OSX 10.11.6 El Capitan:

  • 1369.122.1.100.2

Known GOOD versions compatible with OSX 10.11.6 El Capitan:

  • 988.250.11.100.2
  • 988.222.1

As of 22 August 2022, Apple Software Update is still pushing the BAD 1369.122.1.100.2 version of MobileDevice.framework on 10.11.6 El Capitan systems.

WORKAROUND
The ideal workaround is to recover a version of MobileDevice framework from a backup of the target computer prior to the bad update. Unfortunately that is often not possible.

For systems running OSX 10.11.6 (El Capitan) the following workaround has been verified relying solely on official Apple downloads. Unfortunately, it requires the user to temporarily disable SIP. There does not appear to be a way to avoid this, since the faulty framework is located in a System folder and SIP must be disabled to remove or replace it.

Steps to disable SIP:

  • Shut down computer
  • Press and hold cmd-R while starting the computer
  • Release the cmd and ‘R’ keys when the progress bar appears
  • Select a preferred language if prompted
  • Select Utilities->Terminal from main menu
  • Enter the command:
csrutil disable
  • Restart computer

Now remove the faulty MobileDevice framework:

  • From the finder, navigate to the folder /System/Library/PrivateFrameworks/
  • Move the MobileDevice.framework folder to the trash

Install a known good MobileDevice framework via the iTunes 12.8.2 installer, which is available via a link on this official Apple page (not the main download button, but the inline link below that reads "10.11 and 10.12 users download iTunes 12.8.2 here.”):

https://support.apple.com/kb/DL1977

  • Download the iTunes.dmg disk image
  • Double-click the “Install iTunes.pkg” installer in that disk image

Verify that the MobileDevice framework is now the correct version (988.222.1) by entering this command in the Terminal:

/usr/libexec/PlistBuddy -c "Print :CFBundleVersion" /System/Library/PrivateFrameworks/MobileDevice.framework/Versions/Current/Resources/version.plist

Turn off Software Updates

  • Select System Preferences->App Store
  • Uncheck “Automatically check for updates"

Re-enable SIP:

  • Shut down computer
  • Press and hold cmd-R while starting the computer
  • Release the cmd and ‘R’ keys when the progress bar appears
  • Select a preferred language if prompted
  • Select Utilities->Terminal from main menu
  • Enter the command:
csrutil enable
  • Restart computer

At this point, a properly compatible MobileDevice framework should now be installed but any plug-ins which previously failed verification will need to be re-verified in order to allow their use in Logic.

IMPORTANT NOTE:

DO NOT INSTALL ANY FURTHER SECURITY OR DEVICE UPDATES ON THAT VERSION OF OSX or a faulty MobileDevice framework is likely to be installed again.

Footnote:

(1) If PlistBuddy is not installed on the target computer or cannot be run for some reason, the version can be determined by visual inspection of the complete plist file by:

more /System/Library/PrivateFrameworks/MobileDevice.framework/Versions/Current/Resources/version.plist`

Which will result in an output 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>BuildAliasOf</key>
 <string>MobileDevice</string>
 <key>BuildVersion</key>
 <string>1</string>
 <key>CFBundleShortVersionString</key>
 <string>988.222.1</string>
 <key>CFBundleVersion</key>
 <string>988.222.1</string>
 <key>ProjectName</key>
 <string>MobileDevice</string>
 <key>SourceVersion</key>
 <string>988222001000000</string>
 </dict>
 </plist>
3 Likes