Connecting Android 4 (Ice Cream Sandwich / Jelly Bean / KitKat) phone

Solution 1:

Update: The GVFS-MTP module is included in the default installation since 13.04. For troubleshooting see this anwser.


There have been several projects to bring MTP support to Linux during the recent months. Here is a quick overview:

GVFS

The best solution would be to use GVFS via the recently released GVFS-MTP-backend to mount your Android phone. There are two PPAs with a newer GVFS version.

  1. ppa:langdalepl/gvfs-mtp

        sudo add-apt-repository ppa:langdalepl/gvfs-mtp
        sudo apt-get update && sudo apt-get dist-upgrade
    
  2. ppa:webupd8team/gvfs-libmtp

        sudo add-apt-repository ppa:webupd8team/gvfs-libmtp
        sudo apt-get update && sudo apt-get dist-upgrade
    

Source:

  • https://linuxundich.de/de/ubuntu/gvfs-update-ermoglicht-unter-ubuntulinux-endlich-den-bequemen-zugriff-auf-android-gerate-via-mtp/
  • http://www.webupd8.org/2013/01/upgrade-to-gvfs-with-mtp-support-in.html

go-mtpfs

You could use go-mtpfs to mount your Android phone.

go-mtpfs screenshot

Install needed packages and get the source:

sudo apt-get install golang-go libmtp-dev
sudo go get github.com/hanwen/go-mtpfs
sudo ln /usr/lib/go/bin/go-mtpfs /usr/local/bin/

Add yourself to the group fuse (after that log out and log in again):

sudo adduser $USER fuse

Create a folder for your Android phone and mount it with go-mtpfs into that folder:

mkdir android
go-mtpfs android

Unmout your Android phone (wait for the end of file operations):

fusermount -u android

Source: https://linuxundich.de/de/android/mit-go-mtpfs-unter-linux-auf-android-handys-via-mtp-zugreifen/


jmtpfs

You could use jmtpfs to mount your Android phone.

jmtpfs screenshot

Download jmtpfs, unpack and change into directory:

cd /tmp
wget http://research.jacquette.com/wp-content/uploads/2012/05/jmtpfs-0.4.tar.gz
tar -xzf jmtpfs-0.4.tar.gz
cd jmtpfs-0.4

Add yourself to the group fuse (after that log out and log in again):

sudo adduser $USER fuse

Install needed packages, compile and install (for checkinstall questions hit enter) jmtpfs:

sudo apt-get install libmtp-dev libfuse-dev libmagic-dev checkinstall build-essential
./configure
make
sudo checkinstall

Create a folder for your Android phone and mount it with jmtpfs into that folder:

mkdir ~/android
jmtpfs ~/android/

Unmout your Android phone (wait for the end of file operations):

fusermount -u ~/android

Source: https://linuxundich.de/de/ubuntu/mit-jmtpfs-mtp-gerate-wie-das-galaxy-nexus-oder-das-samsung-galaxy-siii-in-ubuntu-mounten/

Solution 2:

It's not worth it. Use something like SSHDroid and then connect over ssh. There are also FTP servers and even Droid NAS that gives CIFS access. MTP does not work well, and likely will continue to not work well for the near future.

If you really want to get MTP working then make sure you set your Nexus to NEVER lock the screen or power off the screen. Locking the screen with "lock" the MTP protocol as well, causing all manor of data loss and connection issues. Powering off the screen in the stock kernel (might even be hardware) will turn the CPU down as much as it can and enable tons of other strong power saving features, that will result in horrid (but still working) transfers.

Solution 3:

MTP is a Microsoft technology and is not officially supported on Linux. I've tried Mtp-Tools many times too, without success. If you consider an alternate method though, I've two recommendations:

  • Using FTP, instantiating an FTP server on your tablet via Software Data Cable or other software.
  • Using adb, which is a tool of Android SDK, to push and pull files from tablets and phones, through USB Debug Mode. To use adb, get it working and run adb push /source/path /destination/path. Better explanation : http://log.amitshah.net/2012/05/using-adb-to-copy-files-to-from-your-android-device/

Solution 4:

This indicates that for Ice Cream Sandwich, Ubuntu file transfer is as simple as ticking the PTP checkbox. In a few seconds you are browsing the filesystem in Nautilus.

Select connection type

Enable PTP connection

Open phone in Nautilus

Pictures taken directly from: Source

Solution 5:

As Dan mentioned, a wireless file transfer app like AirDroid is a good solution.

These apps fall into two subcategories:

  1. ones where you access your files through the browser (AirDroid), and
  2. ones where you FTP into your phone using a FTP client like FileZilla (and FTP Server).

Such an app is fine for small files but for transferring HD movies, you would need hours or days. Max transfer speed on Ubuntu is about up to 260KB/s (for some reason) while on Windows 7 it's about up to 1MB/s.

There's gMTP which is available in the app store, but chances are it won't work for your Galaxy S3 - it doesn't work on mine, most of the time. (You have to wait out the app hanging; it looks like it crashes whenever you interact with the app but if it recovers, then you know it works.)

If you need speed, the best solution is the one posted by BuZZ-dEE, although the original source is English:

http://research.jacquette.com/jmtpfs-exchanging-files-between-android-devices-and-linux/

You'll need to be comfortable with the terminal, compiling programs from source code and editing source code, though. If anyone needs a walkthrough, let me know.