Libimobiledevice: idevicepair fails — ipheth takes over iPhone USB interface

Environment

  • Fedora 43 (kernel 6.x)
  • iPhone 15, iOS 18
  • libimobiledevice + idevicepair installed via dnf

Problem

I’m trying to do a full iPhone backup on Linux using idevicebackup2, but I can’t get past the pairing step.

When I connect the iPhone via USB, the kernel loads the ipheth module and registers the device as a USB Ethernet interface (enp2s0f0u3c4i2). This prevents usbmuxd from seeing the iPhone, so idevice_id -l returns nothing.

dmesg output:

[ 4780.601562] ipheth 1-3:4.2: ipheth_enable_ncm: usb_control_msg: 0
[ 4780.601873] ipheth 1-3:4.2: Apple iPhone USB Ethernet device attached
[ 4780.609628] ipheth 1-3:4.2 enp2s0f0u3c4i2: renamed from eth0

Errors encountered during troubleshooting:

  • idevicepair pairERROR: Could not connect to lockdownd, error code -8
  • ideviceinfoERROR: Could not connect to lockdownd: Invalid HostID (-21)
  • After modprobe -r ipheth + systemctl restart usbmuxdidevice_id -l still returns nothing, idevicepair pairNo device found

What I’ve tried

  1. Unloaded ipheth with modprobe -r ipheth
  2. Restarted usbmuxd via systemctl
  3. Reconnected iPhone while unlocked
  4. Checked /run/usbmuxd socket — usbmuxd appears to be running
  5. Verified lsusb shows the device (idVendor=05ac, idProduct=12a8)

Even after removing ipheth, idevice_id -l returns no output.


Question

Is there an additional step needed on Fedora 43 to let usbmuxd claim the iPhone after ipheth is unloaded? Do I need specific udev rules, or is there a known compatibility issue with recent iOS versions and libimobiledevice on Fedora?

Any help appreciated. Thanks!

I’m having the same issue on Fedora 44 KDE, trying to use my iPhone 16 Pro (iOS 26.6) as a virtual camera with the DroidCam plugin for OBS. When I plug in the phone the first time, it usually appears only as a camera for photo transfer (PTP mode). Hotspot is disabled in the phone’ settings.

The only workaround I was able to find is the following:

  1. Plug in the phone to load all the services
  2. Stop the usbmuxd service with systemctl stop usbmuxd
  3. unload ipheth with modprobe -r ipheth
  4. Unplug the phone, wait for a few seconds, then plug it back
  5. usbmuxd should restart automatically
  6. idevicepair should run automatically if needed (authorization prompt on phone)
  7. Checks with idevicepair validate and idevice_id -l should be okay now