How can I mount my iPhone 6s on Ubuntu 16.04?
Solution 1
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+.
Solution 2
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
Solution 3
It seems that with iOS 10.2 Apple has broken it again. To fix:
Download from GitHub latest versions of:
libplist
,libusbmuxd
,libimobiledevice
,ifuse
andusbmuxd
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 calledlibssl-dev
when required). Please note that last command 'sudo make install' should put compiled libraries in/usr/local/lib
.-
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
-
Connected your iOS 10.2 device to your computer:
idevicepair pair
-
Select "Trust" to the warning "Trust This Computer?" on your device:
idevicepair pair
-
Mount the iOS filesystem
ifuse Mountpoint_Directory/
Tested on Ubuntu 16.04 and iPhone 7 with iOS 10.2
Solution 4
After having built new versions of libplist, libusbmuxd, libimobiledevice, ifuse and usbmuxd under /usr/local/lib, those versions have to be taken into use when calling the commands to connect the iPhone (instead of using the old library versions, which is done by default). So I did the following in a bash-shell (make sure to unlock (enter your code or use your fingerprint) your iPhone before each action):
sudo LD_LIBRARY_PATH=/usr/local/lib usbmuxd export LD_LIBRARY_PATH=/usr/local/lib idevicepair pair ifuse /media/iPhone
(comment originated from user639768 and was posted as a question, but has since been deleted.)
Related videos on Youtube
Rizio A.
Updated on September 18, 2022Comments
-
Rizio A. over 1 year
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.
-
Rizio A. over 7 years[ 1461.760447] ipheth 1-2:4.2 enp0s20u2c4i2: renamed from eth0 stream13@stream13-HP-Stream-Notebook-PC-13:~$ mkdir /media/iPhone mkdir: cannot create directory ‘/media/iPhone’: Permission denied I don't know what to do mate...
-
fakedad over 7 years@RizioA.Sorry, that should have been
sudo mkdir /media/iPhone
-
fakedad over 7 years@RizioA.Same with
sudo chmod 777 /media/iPhone
-
zgoda over 7 yearsThis does not work for iOS 10: "GnuTLS error: Error in the pull function. Failed to connect to lockdownd service on the device. Try again. If it still fails try rebooting your device."
-
fakedad over 7 years@zgoda I have updated the answer to have instructions for getting this to work for iOS 9+. I tested it twice on fresh installations of Ubuntu, once with an iPhone 6S with iOS 9.3.3, and once with an iPhone 6 with iOS 10.0.2.
-
Aleksandr Dubinsky over 7 yearsUse iosTransferGUI to easily transfer files to and from apps. Requires
python2.7
,python-fuse
, and maybe something else. -
Déjà vu over 7 yearsThat was a bit lengthy to do (maybe someone has a script), but worth it! Golden post! (and fyi my iPhone is not even jailbroken)
-
fakedad over 7 years@ringø A script is a good idea. I've added a bash script which does steps 1, 3, and 4. I'm not very experienced with bash scripting, so it's a bit messy, though. Thanks for the feedback.
-
stryder9k over 7 yearsStep#6 is not working for me, but file explorer worked, thanks a lot
-
Chloe over 7 yearsI already had the latest libplist, libusbmuxd, libimobiledevice, usbmuxd, and ifuse from
apt
. I kept getting the same error zgoda got. After I edited thefuse.conf
file, it still gave the error on the command line, but it started working in the file explorer after I unmounted and clicked oniPhone
again! -
Chloe about 7 yearsThis is back to broken.
-
fakedad about 7 years@Chloe I will work later this weekend on creating a fix for the issues people seem to be having with iOS 10. Based on a test I did just a couple of days ago, this is still working with iOS 9.
-
Greg Bell almost 7 yearsOn my stock Ubuntu 16.04 system, the phone doesn't even show up in lsusb. Would this library set fix that so that I can get iTunes working within VirtualBox?
-
bytepan almost 7 yearsSeveral months have passed and I honestly don't remember perfectly, but I think that my iPhone was detected in lsusb even before applying the new libraries, so I don't know if they can fix the issue you're talking about.
-
wayneeusa almost 7 years@fakedad Perfect, golden. Tested fine with IOS 10.2.1 on an iPhone 6s with Ubuntu 16.04 using the the script and steps 2,5,6 ie. usbmuxd; idevicepair pair; ifuse /media/iPhone. My iPhone is not jailbroken. I downloaded my photos using dolphin (KDE desktop).
-
APE over 6 yearsI used the manual process on Ubuntu 16.04 LTS and iPhone 7 on iOS 10.3.3 not jailbroken, worked fantastically well
-
sequoia over 6 years@APE I encountered an error at the end of the manual process with iOS 10.3.3 and Ubuntu 16.04LTS
GnuTLS error: Error in pull function.
Did you encounter this? Everything else went very smoothly. It is an iphone 6s. -
APE over 6 years@sequoia Nope I didn't get that issue, sorry :( However if you google that message there's plenty of suggestions. Some say it's a network issue, and you can add more logs to investigate. Others mentioned library issues and suggested other things to install. Good luck!
-
Louis Gagnon over 6 yearsI followed these instructions on Ubuntu 16.04 LTS with an Iphone SE with IOS 11.2.2 and get this error message when attempting step 6, even after rebooting the iphone:
Failed to connect to lockdownd service on the device. Try again. If it still fails try rebooting your device.
-
fakedad over 6 years@LouisGagnon I have not been able to recreate the problem, but I am using an iPhone 6s with iOS 9.3.3. Unfortunately, I do not have the iPhone I once used to test different versions of iOS, but I may test this out when I have access to it again. I imagine the problem is that
imobiledevice
has not been updated for 11.2.2 (since it is very recent), but I don't know for sure. -
fakedad over 6 years@LouisGagnon Evidently some people have had success with the fix suggested in the community wiki answer and bytepan's answer (basically an extra step before Step 5 here). I have never been able to catch this error and verify that the fix works, so I haven't incorporated it into my answer, but it might solve the issue if the problem is that
idevicepair
is using outdated versions of some of the tools built. -
Louis Gagnon about 6 yearsThanks, this solved my issue on Ubuntu 16.04 and I can finally access my photos. One small note: it would be more appropriate to use this command:
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
in the two substeps of n. 3. This way your current LD_LIBRARY_PATH, if any, gets preserved. Thanks again for sharing! -
Louis Gagnon about 6 years@fakedad I took a while to convince myself to download and compile all these github repositories, but the solution you pointed out did work. Thanks.
-
fakedad about 6 years@LouisGagnon What was your concern with downloading and compiling the code from the GitHub repositories?
-
Louis Gagnon about 6 years@fakedad time was the concern (but I was positively surprised to see that compilation was very straightforward and quick)
-
Zangar about 6 yearsI continually will get a message when I try to mount with
:~$ ifuse /media/iPhone
saying:There was an error accessing the mount point: Input/output error
Does anyone else have this problem and is there a solution? -
Abe Voelker over 5 yearsThis worked great for accessing my iPhone 7 Plus's photos on 18.04 and is way simpler than the other answers. Thanks!
-
shantiq over 5 yearsThanx Abe for saying it works on 7 since all I have is a 4S .... good to know for other folks or if I ever fork out for a more recent toy :] no need as yet as 4S still marvelous although from 2011 !
-
shantiq over 4 yearsNow tested it on iPhone SE and fine there too
-
applemonkey496 almost 4 years** As of 2020, this answer seems to be no longer working