Thursday, 4 December 2014

How to mount Moto-G/Moto-E on Ubuntu

How to mount Moto-G/Moto-E on Ubuntu and Debug through Eclipse

Moto G is an Android smartphone that does not have a microSD slot. So, the storage of the smartphone cannot be extended. If you want to transfer files between your Ubuntu computer and the Moto G, there are 3 possible ways to do that: FTP over wireless, PTP over USB and MTP over USB.

If your Ubuntu computer has wireless, I highly recommend using FTP over wireless. It is convenient (no wires!), offers good transfer speed and the entire /sdcard contents are available for read and write.

If your Ubuntu computer does not have wireless, then your next option is to use a micro-USB-to-USB cable. The choices here are PTP and MTP. You can enable and switch between the two after you connect Moto G to your computer using a USB cable. If you enable PTP, then Moto G is automatically mounted as a partition in Nautilus. However, you will only be able to see the /sdcard/DCIM and /sdcard/Pictures directories. If you are transferring photos, then this option offers good transfer speed.

If your Ubuntu computer does not have wireless and you still want to read and write to the contents of /sdcard then the option left to you is MTP.

There are many solutions offered online to mount the contents of /sdcard using MTP.
Install the MTP packages:
$ sudo apt-get install mtp-tools mtpfs

Connect Moto G using a USB cable to your computer. Make sure MTP is selected, and not PTP.
Find out the vendor ID and product ID of Moto G using mtp-detect.

$ sudo mtp-detect

You need to press Ctrl+C to stop the command. For the Moto G, you can see that the vendor ID is 22b8 and product ID is 2e82.
Open a new file /etc/udev/rules.d/51-android.rules using sudo and add this line:
SUBSYSTEM=="usb", ATTR{idVendor}=="22b8", ATTR{idProduct}=="2e82", MODE="0666"

Restart the USB service and create a directory to mount the Moto G:
$ sudo service udev restart
$ sudo mkdir /media/motog
$ sudo chmod a+rwx /media/motog
$ sudo adduser your-user-name fuse

Open the /etc/fuse.conf file as sudo and uncomment the line for user_allow_other
Restart your computer. Connect back the Moto G to the computer.
You can now mount the /sdcard of your Moto G using this command:
$ mtpfs -o allow_other /media/motog/

Note that the mounting operation is slow and might take about a minute.

You can find all the directories and files in /sdcard of Moto G in /media/motog. You can read and write to these directories.
To unmount use this command:

$ fusermount -u /media/motog/


  1. Thank you very much for this.

  2. I have tried above steps but failed to connect the Moto G5 Plus on my Ubuntu MATE 15.10 (Linux lintop 4.2.0-42-generic #49-Ubuntu SMP Tue Jun 28 21:26:26 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux). Please see below for the errors.

    ABC@XYZ:~$ mtpfs -o allow_other /media/Moto/
    Listing raw device(s)
    Device 0 (VID=22b8 and PID=2e82) is a Motorola Moto G (ID2).
    Found 1 device(s):
    Motorola: Moto G (ID2) (22b8:2e82) @ bus 2, dev 7
    Attempting to connect device
    ignoring libusb_claim_interface() = -6PTP_ERROR_IO: failed to open session, trying again after resetting USB interface
    LIBMTP libusb: Attempt to reset device
    Android device detected, assigning default bug flags
    Error 1: Get Storage information failed.
    Error 2: PTP Layer error 02fe: get_handles_recursively(): could not get object handles.
    Error 2: Error 02fe: PTP: Protocol error, data expected
    Listing File Information on Device with name: (NULL)
    LIBMTP_Get_Storage() failed:-1