Skip to content

Repository files navigation

iPhone Continuity Camera Fix for Mac Pro 5,1 (OCLP)

Fixes wired Continuity Camera on unsupported Macs running macOS Sequoia via OpenCore Legacy Patcher.

The Problem

On Mac Pro 5,1 (and similar OCLP machines) with third-party USB controllers (e.g. ASMedia XHCI), usbmuxd fails to negotiate the correct USB configuration for Continuity Camera. Specifically:

  1. usbmuxd calls IORegistryEntryCreateCFProperty("kCDCDoNotMatchThisDevice") which returns NULL on unsupported hardware.
  2. This causes usbmuxd to skip the deviceRequiresMuxConfiguration code path.
  3. The iPhone never switches to USB config 5/6 (which contain the NCM network interfaces needed for Continuity Camera).
  4. The en3 (iPhone USB) network interface never appears.

The Fix

Two-part approach:

  1. Binary patch usbmuxd — Bypasses the kCDCDoNotMatchThisDevice NULL check so the mux configuration logic always runs. This allows the iPhone to enumerate with all 6 USB configs (including NCM interfaces for Continuity Camera).

  2. Launch daemon for en3 — Automatically brings up the NCM network interface (en3) when the iPhone is connected, since macOS doesn't activate it automatically on unsupported hardware.

Requirements

  • Mac Pro 5,1 (or similar unsupported Mac) running macOS 15 Sequoia via OCLP
  • SIP disabled and Authenticated Root disabled (required for binary patching)
  • iPhone with iOS 17+ and Continuity Camera support
  • USB connection (not Bluetooth/Wi-Fi)
  • Python 3.10+ (for the config switcher script)

Installation

Quick Install (manual)

# 1. Patch usbmuxd (backs up original automatically)
sudo python3 _patch_usbmuxd.py --patch

# 2. Re-sign the binary
sudo codesign -f -s - /System/Library/PrivateFrameworks/MobileDevice.framework/Versions/A/Resources/usbmuxd

# 3. Restart usbmuxd
sudo launchctl kickstart -k system/com.apple.usbmuxd

# 4. Install en3 auto-activate daemon
sudo cp com.local.iphone-en3-up.plist /Library/LaunchDaemons/
sudo chown root:wheel /Library/LaunchDaemons/com.local.iphone-en3-up.plist
sudo chmod 644 /Library/LaunchDaemons/com.local.iphone-en3-up.plist
sudo launchctl load /Library/LaunchDaemons/com.local.iphone-en3-up.plist

Package Installer

./build-installer.sh
# Then install the generated .pkg

Uninstall

sudo ./uninstall.sh

This restores the original usbmuxd binary from backup, removes all launch daemons/agents, and restarts services.

How It Works

usbmuxd Binary Patch

The patch modifies the x86_64 slice of usbmuxd at the point where it checks kCDCDoNotMatchThisDevice:

Original: test rax, rax; je 0x10000ccb3   (branch to "is NULL" error path)
Patched:  jmp +0x3b; nop×7                (skip NULL check, continue to mux config)

The original binary is backed up to usbmuxd.bak alongside the patched version.

en3 Launch Daemon

com.local.iphone-en3-up.plist runs at boot and polls every 5 seconds. When en3 exists but is inactive, it runs ifconfig en3 up.

Config Switcher (iphone-usb-fix.py)

Monitors USB for iPhone connection and switches to the optimal USB configuration (config 5/6 with NCM + Mux interfaces). Runs as a launch agent.

File Structure

_patch_usbmuxd.py              # usbmuxd binary patcher
iphone-usb-fix.py              # USB config switcher daemon
iphone-usb-fix-launcher        # Launcher script (finds Python)
iphone-usb-fix-install-python3 # Python 3 installer helper
cc-wired-hook.m                # Continuity Capture agent hook (Obj-C)
com.local.iphone-usb-fix.plist # Launch agent for config switcher
com.local.iphone-en3-up.plist  # Launch daemon for en3 auto-activate
com.local.iphone-cc-kick.plist # Launch daemon for CC service kick
build-installer.sh             # Builds .pkg installer
uninstall.sh                   # Removes all components
vendor/                        # Vendored libusb1 Python bindings

Caveats

  • macOS updates that replace usbmuxd will overwrite the patch. Re-run _patch_usbmuxd.py --patch after updating.
  • Requires SIP disabled — this is already the case for OCLP installations.
  • The patch is x86_64-specific. ARM Macs are not affected by this issue.

Tested On

  • Mac Pro 5,1 (2010/2012) + ASMedia USB 3.1 XHCI controller
  • macOS 15.7.5 Sequoia (OCLP 2.4.1)
  • iPhone 15 Pro (iOS 18.4)

License

MIT

About

Fix wired Continuity Camera on Mac Pro 5,1 and other unsupported Macs with third-party USB controllers (OCLP)

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Used by

Contributors

Languages