iPhone to iPhone - USB Photo Transfer
TLDR:
This is a way to transfer all photos and videos from one iPhone to another, preserving EXIF data, location data, etc. while supporting multiple media types. This uses the USB PTP protocol, and supports either USB 2.0 (480Mbps) or USB 3.2 (5-10Gbps) speeds depending on the setup.
Introduction:
I needed a way to transfer all my photos/videos from my iPhone 15 running iOS 26 (source) to an iPhone 15 Pro running iOS 18 (target). I had upgraded the old iPhone to iOS 26 without creating a backup, and Apple does not let you restore an iOS 26 backup to an iOS 18 device without forcing an upgrade. I set up the iPhone 15 Pro as a new device and reinstalled my apps, fortunately Signal and Whatsapp support OTA transfers! However, there were two problems: iMessage and SMS messages would be lost, and all my photos would be lost. I didn't mind losing my messages, but with the second issue, I had to find a way to transfer photos. Most tutorials online had some issues:
- Use a Mac to download all your photos from the old iPhone, then use Finder to sync them to your new iPhone - I did not have enough storage to try this.
- Use iCloud Photos - unfortunately I do not use iCloud and self-host most of my services.
- Use NextCloud, Google Photos, etc. - this is unproven with regards to metadata / image quality and requires uploading >60GB to random cloud services.
Finally ... a random Reddit post with zero upvotes saves the day, with the most elegant method.
iPhone to iPhone Direct Transfer over USB:
- Plug the source iPhone into your target iPhone ensuring that the target iPhone is configured to use its USB-C port as a downstream-facing port (DFP). See the image above for more details.
- Unlock the source iPhone and click "Allow" or "Trust", when asked.
- Scroll to the bottom of the Photos app on the target iPhone, and wait until the source iPhone appears, then open it.
- Click Import or Import All in the top-right corner.
I was able to transfer over 16,000 photos and videos at line speed, and the process took less than an hour.
CAUTION: During the import, a few times it froze and a red X would appear next to a photo it could not import. This seems to be an intermittent bug with Apple's "Live Photos". I would go to the source iPhone, delete the offending Live Photos (or export original then re-import the image sans video) and start the process again, +/- cable reattachment. iOS skips over any duplicates. I did this about 4-5 times.
NOTE: You can use a USB-C to USB-C cable for this process, but the iPhones will configure themselves as the DFP at random. Plus, the method described above allows charging both iPhones.