Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time
January 11, 2020 20:54
October 24, 2019 08:52
October 24, 2019 08:52


Go-mtpfs is a simple FUSE filesystem for mounting Android devices as a MTP device.

It will expose all storage areas of a device in the mount, and only reads file metadata as needed, making it mount quickly. It uses Android extensions to read/write partial data, so manipulating large files requires no extra space in /tmp.

It has been tested on various flagship devices (Galaxy Nexus, Xoom, Nexus 7). As of Jan. 2013, it uses a pure Go implementation of MTP, which is based on libusb.


  • Install the Go compiler suite; e.g. on Ubuntu:
sudo apt-get install golang-go
  • Install libmtp header files
sudo apt-get install libusb1-devel
  • Then check out go-mtpfs, and run
go build ./

This will leave a binary go-mtpfs


mkdir xoom
go-mtpfs xoom &
cp -a ~/Music/Some-Album xoom/Music/
fusermount -u xoom

After a file is closed (eg. if "cp" completes), it is safe to unplug the device; the filesystem then will continue to function, but generates I/O errors when it reads from or writes to the device.


  • It does not implement rename between directories, because the Android stack does not implement it.

  • It does not implement Event handling, ie. it will not notice changes that the phone makes to the media database while connected.

  • Some Sony Xperia devices claim to implement Android extension, but don't. See issue #104. Symptom:

    AndroidGetPartialObject64 failed: OperationNotSupported

    In this case, disable Android extensions with the flag -android=0


You can send your feedback through the issue tracker at


This is not an official Google product.