Connect iPhone to Arch Linux

Here's a method to download photos from your iPhone on Arch Linux. An unholy combination? Yeah, probably.

tl;dr

sudo pacman -S libimobiledevice # needed protocols to connect
yay -S ifuse # needed to mount
systemctl start usbmuxd.service # ensure service running
idevicepair pair # pair phone
mkdir /mnt/iphone # place to mount
sudo ifuse -o allow_other /mnt/iphone # mount phone
ls /mnt/iphone # go explore

Communicate with the iPhone

First, you need a library to help with the protocols to communicate with the iPhone. libimobiledevice will do that. Install it with:

sudo pacman -S libimobiledevice

Next, you want to make sure that the service to access USB devices is running. To do that, run:

systemctl status usbmuxd.service

If it's not active, you can start it

systemctl start usbmuxd.service

Query USB devices

You'll want to make sure you connect your iPhone to the computer with a USB cable. Make sure that you unlock the phone and "Trust this computer" when the phone brings up that dialog. Sometimes I have to plug in and unplug several times before I get this dialog.

Optionally, you can also do some detection of USB devices separate from the pairing (next step). A little lib called usbutils can help:

sudo pacman -S usbutils

Then you can run this to get a listing of USB devices (similar to lsblk):

lsusb

That will return a list of devices, including something like this iPhone item:

...
Bus 001 Device 005: ID 05ac:12a8 Apple, Inc. iPhone 5/5C/5S/6/SE
...

From libimobiledevice, you can also query about iPhones specifically:

ideviceinfo

Pair the iPhone

Now to be able to talk to the iPhone from the computer, you need to pair it with:

idevicepair pair

If all goes well, you'll see something like:

SUCCESS: Paired with device 00008020-001A44E40E99002E

Mounting the filesystem

To be able to browse and download files from the iPhone's filesystem, you need to mount it.

To allow mounting iOS devices, install this AUR package:

yay -S ifuse

Then create a place you want to mount it. For instance:

mkdir -p /mnt/iphone

The you can run this command:

sudo ifuse -o allow_other /mnt/iphone

Now if I was to navigate to /mnt/iphone, I might see something like:

/mnt/iphone🔒 ✦ ➜ ls -1
Books
CloudAssets
DCIM
Downloads
iTunes_Control
MediaAnalysis
PhotoData
Photos
Podcasts
Purchases
Recordings

Copy files

Now that the filesystem is mounted, one could copy files off of the iPhone with something like:

cp -r /mnt/iphone/DCIM ~/Downloads

Clean up

To clean up and reverse the process, unpair:

idevicepair unpair

And unmount:

sudo umount /mnt/iphone

What better ways are there to connect to an iPhone from Arch Linux?