How can I mount my iPhone 6s on Ubuntu 16.04?

I'm new to Ubuntu, and I don't know how to mount my iPhone.

I would like to download iTunes, but I saw that USB doesn't work, but I just need to access to all my files and APP because would like to transfer APP from pc to iPhone.


Evidently I was wrong about being able to mount an iPhone on Ubuntu. You can perform this using the following steps on yakkety. Note, you would need the device to be jailbroken in order to load apps onto the device this way, but this method will suffice for getting media from the device.

Option 1: Using a script

If you want to save yourself some time, you can download a script here to do most of the work of the process for you.

Once downloaded, you will need to change the permisions so you can execute the script. Assuming you downloaded it with the default name, iphone_setup.sh, cd to the directory in which you downloaded the file and do

chmod u+x iphone_setup.sh

Convert the Windows line endings by doing

ex -bsc '%!awk "{sub(/\r/,\"\")}1"' -cx iphone_setup.sh

Then run the script with root privileges using

sudo ./iphone_setup.sh

This will complete all of Step 1 of the manual setup for you, as well as Step 3 and Step 4. You will then need to do Step 2 and Step 5 of the manual setup after the script finishes running.

Option 2: Doing it manually

Step 1: Installing the tools

Before plugging in the iPhone, you will need to install the several programs to make it possible to mount the iPhone.

Step 1.1: Installing several important tools with apt-get

Do the following in the terminal to install a few packages that will be needed for any version of iOS.

sudo apt-get install ideviceinstaller python-imobiledevice libimobiledevice-utils python-plist usbmuxd

If you are connecting an iPhone with an iOS version before iOS 9, you can skip the remaining substeps of step 1 and instead just do the following:

sudo apt-get install libimobiledevice6 libplist3 ifuse

Step 1.2: Installing tools for building

Use apt-get to install a few programs needed to build the programs in the following steps

sudo apt-get install libtool autoconf automake

Step 1.3: Installing libplist

First, install the required dependencies for building libplist. In order to do this, do the following:

sudo apt-get install libxml2-dev python-dev

Then download the latest version of libplist from GitHub, and extract the contents of the zip file to some directory. For instance, if you are in the directory where you downloaded the libplist zip file, do unzip libplist-master.zip.

You should now have a directory called "libplist-master" in the directory to which you extracted the libplist zip file. cd into this directory from the terminal, and the run

./autogen.sh

When the ./autogen.sh script is done running, run

make

And, finally, run

sudo make install

Step 1.4: Installing libusbmuxd

This step is similar to the previous step, except we are installing libusbmuxd instead of libplist.

First, download the latest version of libusbmuxd from GitHub. Again, extract the contents to a directory, and cd to the directory libusbmuxd-master. Then run the following:

./autogen.sh

When this is finished, run

make

followed by

sudo make install

Step 1.5: Installing libimobiledevice

First, install the build dependencies by doing the following:

sudo apt-get install libssl-dev

Then download the latest version of libimobiledevice from GitHub. Extract as in the previous two steps; you should get a directory inside the directory to which you extracted called libimobiledevice-master. cd into this directory, and, again, run

./autogen.sh

When this is finished, run

make

followed by

sudo make install

Step 1.6: Installing a better version of usbmuxd

First, uninstall the old version of usbmuxd by doing

sudo apt-get remove usbmuxd

Then, install the build dependencies by doing

sudo apt-get install libimobiledevice-dev libplist-dev libusb-dev libusb-1.0.0-dev libtool-bin libtool

Then, download the latest version of usbmuxd from GitHub. Extract and cd to the usbmuxd-master directory. Again, run

./autogen.sh

When this is finished, run

make

followed by

sudo make install

Step 1.7: Installing ifuse

This is the last thing you will need to install!

First install, the build dependencies by doing

sudo apt-get install libfuse-dev

Download the latest version of ifuse from GitHub. Extract it to some directory, and cd into the directory ifuse-master, and cd into that directory.

This time there is an extra step in building the program. Do

./autogen.sh

as usual, but then do

./configure

as well. Then, continue on to the normal

make

and

sudo make install

Step 2: Running usbmuxd and attaching iPhone

This step is simple. Run usbmuxd in the terminal, and then plug in the iPhone.

Now check to see if the device was recognized correctly by doing

dmesg | grep ipheth

If nothing shows up, try disconnecting the iPhone, running usbmuxd again, and then plugging back in. Then check again.

Step 3: Creating a mount point for the iPhone

You can manually create a mount point for the iPhone by doing

sudo mkdir /media/iPhone

You will then likely want to change the permissions for the mount point. Do

sudo chmod 777 /media/iPhone

Step 4: Editing the ifuse configuration file

The ifuse configuration file /etc/fuse.conf requires editing if you want to access the iPhone without being root.

Edit the configuration file using your favorite editor, for example gedit

sudo gedit /etc/fuse.conf

In the file ensure that the following two lines are under the line that says # Allow non-root users to specify the allow_other or allow_root mount options:

op$
user_allow_other

Save the file and quit the editor.

Step 5: Pairing the iPhone

Run the following line in order to pair your iPhone using idevicepair:

idevicepair pair

Step 6: Mounting with ifuse

Run the following line to mount the device at the mount point specified earlier:

ifuse /media/iPhone

NOTE: At this point you may mount the root filesystem if you have your phone jailbroken by doing the following line instead

ifuse /media/iPhone/ --root

The iPhone should now be accessible at /media/iPhone through your file browser.

When you want to unmount, do the following two lines

fusermount -u /media/iPhone/
idevicepair unpair

These steps were adapted for xenial from this tutorial at dedoimedo, then further modified to suit devices with iOS 9+.


Tested on iPhone 4S on 16.04 and now SE on 18.04; no reason to believe it will be different on 6 or later versions

[EDIT: see below it works all the way to iPhone 7].

Fairly simple route:

➊ INSTALL:

sudo apt install ideviceinstaller python-imobiledevice libimobiledevice-utils  usbmuxd libimobiledevice6 libplist3 ifuse python3-plist

if on a 64-bit install

sudo apt install ideviceinstaller python-imobiledevice libimobiledevice-utils  usbmuxd libimobiledevice6 libplist3 ifuse python3-plist:i386

if on a 32-bit install

you may need to do this too: sudo mkdir /var/lib/lockdown sudo chmod 777 /var/lib/lockdown

➋ in Terminal to see your iphone address:

 lsusb -v 2> /dev/null | grep -e "Apple Inc" -A 2

You will see something thus:

iManufacturer 1 Apple Inc.
iProduct 2 iPhone
iSerial 3 ca00d62380d42746b8ff8280....d1fd7b7119ca

➌ Open Nautilus

enter the iSerial from above:

afc://ca00d62380d4274....f8280a91ed1fd7b7119ca/

NOW you see your files.Photos are in DCIM folder

➍ As an embellishment you could install VLC Mobile from App Store FREE of course which will let you play formats itunes cannot handle Flac Wavpack etc

you will see/place the music files in Documents on iPhone next to iPhone on left of page [This is on LXDE; must look similar in other Desktop Environments]

=== TIP ===

If iphone VLC files are not visible on your PC; I found this brings them back:unplug phone run command below then replug

sudo usbmuxd --verbose -f    
    

It seems that with iOS 10.2 Apple has broken it again. To fix:

  1. Download from GitHub latest versions of: libplist, libusbmuxd, libimobiledevice, ifuse and usbmuxd

  2. Extract ZIP files in a folder that you like, enter in each directory and launch compilation of the corresponding library (if you don't know how to do, just follow instructions inside the readme file inside each lib and remember that the development version of openssl is called libssl-dev when required). Please note that last command 'sudo make install' should put compiled libraries in /usr/local/lib.

  3. Make sure that environment vars point to this new versions rather than the old ones included in official packages:

    sudo LD_LIBRARY_PATH=/usr/local/lib usbmuxd    
    export LD_LIBRARY_PATH=/usr/local/lib
    
  4. Connected your iOS 10.2 device to your computer:

    idevicepair pair
    
  5. Select "Trust" to the warning "Trust This Computer?" on your device:

    idevicepair pair
    
  6. Mount the iOS filesystem

    ifuse Mountpoint_Directory/
    

Tested on Ubuntu 16.04 and iPhone 7 with iOS 10.2