Package: libimobiledevice6
Version: 1.3.0-6+b3

On Debian Bookworm, idevice* will communicate with an iOS 17 device, but 
not with an iOS 5 device.

When running usbmuxd in the foreground, it prints the following error 
when the iOS 5 device is plugged in:

[15:58:20.277][1] preflight_worker_handle_device_add: ERROR StartSession failed 
on device 6e8c5ae7c41b3fc71a6be705f1303343c7db53c6, lockdown error -5

>From that point, "idevice_id -l" produces no output, and ideviceinfo 
says "ERROR: No device found!".

Apparently this is because iOS 5 uses SSLv3 to encrypt communications 
over the USB cable, but OpenSSL has intentionally removed SSLv3 
interoperability.

I installed libgnutls28-dev and libgcrypt20-dev, downloaded the 
libimobiledevice source package, added --disable-openssl to 
configure_flags, and built the libimobiledevice6 package. After I 
installed the modified libimobiledevice6 package and restarted usbmuxd, 
it no longer printed an error when the iOS 5 device was plugged in, and 
I was able to back up the device with idevicebackup2. I also tested the 
modified libimobiledevice6 with an iOS 17 device, and I was able to see 
that device with idevice_id, mount it with ifuse and copy files from the 
camera roll.

I believe this is a regression that was introduced in 1.3.0-4 by 
changing from GnuTLS to OpenSSL. The corresponding 1.3.0-4 change should 
be reverted. To prevent this from happening again, a comment should be 
added to debian/rules above configure_flags, explaining why we build 
against GnuTLS instead of OpenSSL.

-- Adam

Reply via email to