Media Transfer Protocol

From ArchWiki
Revision as of 00:17, 24 September 2012 by Evilandi666 (talk | contribs) (go-mtpfs: Added note that go-mtpfs is much faster than mtpfs and jmtfps while copying files. Dunno why, but I tested them all and the speed is very much higher with go-mtpfs)
Jump to navigation Jump to search

MTP is the "Media Transfer Protocol" and is used by many MP3 players such as the Creative Zen and some Walkmans. In addition, Android phones and tablets use it since version 3.0. It is part of the "Windows Media" Framework and has close relationship with Windows Media Player.


MTP support is provided by the libmtp package, to install:

pacman -S libmtp


After installation, you have several mtp tools available. Upon connecting your MTP device, you use:


to see if your MTP device is detected.

To connect to your MTP device, you use:


If connection is successful, you will be given several switch options in conjunction with mtp-connect to access data on the device.

There are also several stand alone commands you can use to access your MTP device such as,

Note: Some commands may be harmful to your MTP device!!!
 mtp-albumart        mtp-emptyfolders    mtp-getplaylist     mtp-reset           mtp-trexist
 mtp-albums          mtp-files           mtp-hotplug         mtp-sendfile
 mtp-connect         mtp-folders         mtp-newfolder       mtp-sendtr
 mtp-delfile         mtp-format          mtp-newplaylist     mtp-thumb
 mtp-detect          mtp-getfile         mtp-playlists       mtp-tracks

Using media players

You can also use your mtp device in music players such as Amarok. To do this you may have to edit "/etc/udev/rules.d/51-android.rules" (The MTP device used in the following example is a Galaxy Nexus): To do this run:

$ lsusb

and look for your device, it will be something like:

Bus 003 Device 011: ID 04e8:6860 Samsung Electronics Co., Ltd GT-I9100 Phone [Galaxy S II], GT-P7500 [Galaxy Tab 10.1]

in which case the entry would be:

SUBSYSTEM=="usb", ATTR{idVendor}=="04e8", ATTR{idProduct}=="6860", MODE="0666"

Then, reload udev rules:

# udevadm control --reload
Note: After installing MTP you may have to reboot for your device to be recognised


Mtpfs is FUSE filesystem that supports reading and writing from any MTP device. Basically it allows you to mount your device as an external drive.
It's available in the community repository.

  • First edit your /etc/fuse.conf and uncomment the following line:
  • To mount your device
# mtpfs -o allow_other /media/YOURMOUNTPOINT
  • To unmount your device
$ umount /media/YOURMOUNTPOINT

Also, you can put them into your ~/.bashrc:

alias android-connect="mtpfs -o allow_other /media/YOURMOUNTPOINT"
alias android-disconnect="sudo umount /media/YOURMOUNTPOINT"
Note: if you want not be asked for password when using sudo, please refer to USB Storage Devices#Mounting USB devices


Note: Go-mtpfs gives a better performance while writing files to some devices than mtpfs/jmtpfs. Try it if you have slow speeds.

If the above instructions don't show any positiv results one should try go-mtpfs-git from the AUR. The following has been tested on a Samsung Galaxy Nexus GSM.

As in the section above install android-udev which will provide you with "/etc/udev/rules.d/51-android.rules" edit it to apply to your vendorID and productID, which you can see after running mtp-detect. To the end of the line add with a comma OWNER="yourusername". Save the file.

  • Add yourself to the "fuse" group:
gpasswd -a [user] fuse
  • If the group "fuse" doesn't exist create it with:
groupadd fuse

Logout or reboot to apply these changes.

  • To create a mount point called "Android" issue the following commands:
mkdir Android
  • To mount your phone use:
go-mtpfs Android
  • To unmount your phone:
fusermount -u Android

You can create a .bashrc alias as in the example above for easier use.


Philip Langdale is working on native MTP support for gvfs. Currently gvfs uses gphoto2 for mounting MTP volumes. The weaknesses of gphoto2 and mtpfs are listed in his blog post.

  • You can test his native mtp implementation for gvfs before it gets upstream with the AUR package gvfs-mtp-git.
  • Devices will have gvfs paths like this
gvfs-ls mtp://[usb:002,013]/