Attend XDA's Second Annual Developer Conference, XDA:DevCon 2014!
5,728,773 Members 51,682 Now Online
XDA Developers Android and Mobile Development Forum

HOWTO: Linux and MTP

Tip us?
 
Lloir
Old
(Last edited by Lloir; 29th January 2013 at 05:43 PM.)
#1  
Recognized Contributor / Recognized Developer - OP
Thanks Meter 6526
Posts: 5,066
Join Date: Mar 2009

 
DONATE TO ME
Default HOWTO: Linux and MTP

This is a quick how to get MTP working on Linux, the guide is for distro's based on Debian (mint\debian\ubuntu) OpenSuse, Fedora AND Gentoo. If there's any missing for major distro's let me know, or add them to a separate post and i'll put them up here


***Debian based distros**

Code:
sudo apt-get install mtpfs
sudo mkdir /media/onex
sudo chmod 775 /media/onex
sudo mtpfs -o allow_other /media/onex
gedit /etc/udev/rules.d/51-android.rules
and add the following line:
SUBSYSTEM=="usb", SYSFS{idVendor}=="0bb4", MODE="0666"
and then:
sudo service udev restart
***Arch Linux***
Code:
pacman -S libmtp

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

mtp-detect

and add the following line:
SUBSYSTEM=="usb", SYSFS{idVendor}=="0bb4", MODE="0666"
and then reload udev rules:
udevadm control --reload
Arch Linux guide is from the ArchLinux wiki

**Redhat\Fedora16**
First of all, I using my computer with other people, who can come over the network, so the 0666 mode bits not a right choice for me. I make it all on a fedora 16, but the distro is really not important.

So the steps:
- add a user to the "disk" group (or whatever You want)
- make a mount point (the media doesn't work for me, across the init removes the content)
- add this mount point to the fstab, with some parameter
- create udevd rules
- restart udevd
- install fuse-mtpfs
- (re)login user
- try it

My common experience is that, the mtpfs is very very very very slow. Really slow, so I can use it only with CLI, any GUI has been coming back with time out

And the "code":
Code:
usermod -a -G disk $LOGINUSER
Code:
sudo mkdir /mnt/sgs2 ; sudo chgrp disk /mnt/sgs2; sudo chmod 0770 /mnt/sgs2
Code:
sudo echo "mtpfs /mnt/sgs2 fuse users,noauto 0 0" >> /etc/fstab
Code:
cat > /etc/udev/rules.d/51-android.rules <<EOF
SUBSYSTEM!="usb_device", GOTO="label_end"
ACTION!="add", GOTO="label_end"

# ATRRS{idVendor}== ertekei:
#Acer	0502
SUBSYSTEM=="usb",ATTRS{idVendor}=="0502",MODE="0660",GROUP="disk"
#ASUS	0b05
SUBSYSTEM=="usb",ATTRS{idVendor}=="0b05",MODE="0660",GROUP="disk"
#Dell	413c
SUBSYSTEM=="usb",ATTRS{idVendor}=="413c",MODE="0660",GROUP="disk"
#Foxconn	0489
SUBSYSTEM=="usb",ATTRS{idVendor}=="0489",MODE="0660",GROUP="disk"
#Fujitsu	04c5
SUBSYSTEM=="usb",ATTRS{idVendor}=="04c5",MODE="0660",GROUP="disk"
#Fujitsu Toshiba	04c5
SUBSYSTEM=="usb",ATTRS{idVendor}=="04c5",MODE="0660",GROUP="disk"
#Garmin-Asus	091e
SUBSYSTEM=="usb",ATTRS{idVendor}=="091e",MODE="0660",GROUP="disk"
#Google	18d1
SUBSYSTEM=="usb",ATTRS{idVendor}=="18d1",ATTRS{idProduct}=="4ee1",MODE="0660",GROUP="disk"
#Hisense	109b
SUBSYSTEM=="usb",ATTRS{idVendor}=="109b",MODE="0660",GROUP="disk"
#HTC	0bb4
SUBSYSTEM=="usb",ATTRS{idVendor}=="0bb4",MODE="0660",GROUP="disk"
#Huawei	12d1
SUBSYSTEM=="usb",ATTRS{idVendor}=="12d1",MODE="0660",GROUP="disk"
#K-Touch	24e3
SUBSYSTEM=="usb",ATTRS{idVendor}=="24e3",MODE="0660",GROUP="disk"
#KT Tech	2116
SUBSYSTEM=="usb",ATTRS{idVendor}=="2116",MODE="0660",GROUP="disk"
#Kyocera	0482
SUBSYSTEM=="usb",ATTRS{idVendor}=="0482",MODE="0660",GROUP="disk"
#Lenovo	17ef
SUBSYSTEM=="usb",ATTRS{idVendor}=="17ef",MODE="0660",GROUP="disk"
#LG	1004
SUBSYSTEM=="usb",ATTRS{idVendor}=="1004",MODE="0660",GROUP="disk"
#Motorola	22b8
SUBSYSTEM=="usb",ATTRS{idVendor}=="22b8",MODE="0660",GROUP="disk"
#NEC	0409
SUBSYSTEM=="usb",ATTRS{idVendor}=="0409",MODE="0660",GROUP="disk"
#Nook	2080
SUBSYSTEM=="usb",ATTRS{idVendor}=="2080",MODE="0660",GROUP="disk"
#Nvidia	0955
SUBSYSTEM=="usb",ATTRS{idVendor}=="0955",MODE="0660",GROUP="disk"
#OTGV	2257
SUBSYSTEM=="usb",ATTRS{idVendor}=="2257",MODE="0660",GROUP="disk"
#Pantech	10a9
SUBSYSTEM=="usb",ATTRS{idVendor}=="10a9",MODE="0660",GROUP="disk"
#Pegatron	1d4d
SUBSYSTEM=="usb",ATTRS{idVendor}=="1d4d",MODE="0660",GROUP="disk"
#Philips	0471
SUBSYSTEM=="usb",ATTRS{idVendor}=="0471",MODE="0660",GROUP="disk"
#PMC-Sierra	04da
SUBSYSTEM=="usb",ATTRS{idVendor}=="04da",MODE="0660",GROUP="disk"
#Qualcomm	05c6
SUBSYSTEM=="usb",ATTRS{idVendor}=="05c6",MODE="0660",GROUP="disk"
#SK Telesys	1f53
SUBSYSTEM=="usb",ATTRS{idVendor}=="1f53",MODE="0660",GROUP="disk"
#Samsung	04e8
SUBSYSTEM=="usb",ATTRS{idVendor}=="04e8",ATTRS{idProduct}=="6860",MODE="0660",GROUP="disk"
#Sharp	04dd
SUBSYSTEM=="usb",ATTRS{idVendor}=="04dd",MODE="0660",GROUP="disk"
#Sony	054c
SUBSYSTEM=="usb",ATTRS{idVendor}=="054c",MODE="0660",GROUP="disk"
#Sony Ericsson	0fce
SUBSYSTEM=="usb",ATTRS{idVendor}=="0fce",MODE="0660",GROUP="disk"
#Teleepoch	2340
SUBSYSTEM=="usb",ATTRS{idVendor}=="2340",MODE="0660",GROUP="disk"
#Toshiba	0930
SUBSYSTEM=="usb",ATTRS{idVendor}=="0930",MODE="0660",GROUP="disk"
#ZTE	19d2
SUBSYSTEM=="usb",ATTRS{idVendor}=="19d2",MODE="0660",GROUP="disk"

LABEL="label_end"
Code:
udevadm control --reload-rules
Code:
yum/apt-get/pacman/etc install mtpfs
Logout-login, for get in to the disk group, connect the device via usb, and try
Code:
mptfs
without any parameter, and it must write out some information:
[CODE]$LOGINUSER@mir:~$ mtpfs
Listing raw device(s)
Device 0 (VID=04e8 and PID=6860) is a Samsung Galaxy models (MTP).
Found 1 device(s):
Samsung: Galaxy models (MTP) (04e8:6860) @ bus 2, dev 4
Attempting to connect device
Android device detected, assigning default bug flags
Listing File Information on Device with name: (NULL)
fuse: missing mountpoint parameter

And finally mount /it must be working now with user account/:
Code:
mount /mnt/sgs2
or dismount:
Code:
umount /mnt/sgs2
**OpenSuse 12.2**

this method will work for music and photos access only,

Code:
sudo zypper addrepo -f http://packman.inode.at/suse/12.2/ packman
sudo zypper ref (type a to always accept the packman repo)
sudo zypper in mtpfs
sudo vim /lib/udev/rules.d/69-libmtp.rules and add the following line (replace vim with gedit if you want a gui editor)
# HTC One X+
ATTR{idVendor}=="0bb4", ATTR{idProduct}=="0dfc", SYMLINK+="libmtp-%k", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"

sudo cp /lib/udev/rules.d/69-libmtp.rules /etc/udev/rules.d/.
reboot

When you plug in the phone you will see android phone icon on the desktop click on it to browse your files.
*note
disable any media players from trying to read the device...

** Gentoo **

Code:
Prerequisites

If your device is not recognized by libmtp, try upgrading to latest (or even git) version.
User needs to be in group plugdev to mount device.
MTPFS

You need to add option: user_allow_other in /etc/fuse.conf
$ mkdir ~/AndroidDevice
$ mtpfs -o allow_other ~/AndroidDevice
NOTE: this can take really long time, up to several minutes. As an indication of successful mount the mtpfs will go to background.
To unmount:
$ /usr/bin/fusermount -u ~/AndroidDevice

If mtpfs doesn't work for you try updating to latest version first.
Go-MTPFS

Seems to be more stable
$ emerge -a go
$ mkdir ~/go
$ export GOPATH=/home/$USER/go
$ go get github.com/hanwen/go-mtpfs

To mount:
$ ~/go/bin/go-mtpfs ~/AndroidDevice

To unmount:
$ /usr/bin/fusermount -u ~/AndroidDevice
Troubleshooting

Sometimes (e.g. on HTC One X) USB debugging automatically turns on when device is connected to PC. You need to turn debugging off, otherwise libmtp can't recognise device.
Make sure your Android device is not going to sleep and the screen is not getting locked. Set screen timeout to very long values, or enable in Development section flag "Do not turn off the screen".
Thanks to ihavoc and Fonya1 for the opensuse and redhat\fedora tutorials
The Following 32 Users Say Thank You to Lloir For This Useful Post: [ Click to Expand ]
 
Th!baut
Old
#2  
Junior Member
Thanks Meter 0
Posts: 7
Join Date: Dec 2012
thank you a lot for your help.

when i try to acces to the /media/onex direcory i have this :

ls: cannot access onex: Transport endpoint is not connected
 
somemadcaaant
Old
#3  
somemadcaaant's Avatar
Senior Member
Thanks Meter 302
Posts: 863
Join Date: Apr 2010
After making changes reboot your session or pc and it will probably mount correctly which you've probably done by now.

Sent from my HTC One X+ using xda premium
 
Th!baut
Old
#4  
Junior Member
Thanks Meter 0
Posts: 7
Join Date: Dec 2012
Quote:
Originally Posted by somemadcaaant View Post
After making changes reboot your session or pc and it will probably mount correctly which you've probably done by now.

Sent from my HTC One X+ using xda premium
excuse me to ask many question but i am really noob. when all this done what would i see in /media/onex ? actualy after mounting the folder is empty

the only thing i need to do is copy files from/to my HOX+
 
HQRaja
Old
#5  
HQRaja's Avatar
Retired News Writer
Thanks Meter 431
Posts: 490
Join Date: Jan 2008
Location: Islamabad
Can anyone please confirm if this is exclusive to the HTC One X+, or would it work for other similar HTC devices such as One X, One S etc. as well?
Regards,
Haroon Q. Raja.

Entrepreneur | Writer | Math Teacher | Web Developer | Technology Enthusiast
Retired News Writer at XDA Portal | Senior Editor at AddictiveTips | Founding Editor at HQTech
Visit my Website | Subscribe on Facebook | Follow on Twitter | Add me on Google+
 
Th!baut
Old
#6  
Junior Member
Thanks Meter 0
Posts: 7
Join Date: Dec 2012
It still dont work, i have tryed so many things these days to mount my HTC Ox+ as a USB Mass Storage and everything failed.

I tried tou manualy mount a MTP folder on my Ubuntu like Lloir explained here.

I tried to flash a TeamWorkRecovery and a ClockWorkRecovery to access the "Mount USB" option in the menu

my Device is seen by ubuntu but i am unable to read or write anything, for example if I copy a music album, the copy operation starts, takes a very long time an then end whith an error lik "error unable to copy xxxx.mp3 file does not exist"

actualy i am almost convicted that using an MTP device as an usb mass storage under Ubuntu is purely and simply IMPOSSIBLE !
 
Lloir
Old
#7  
Recognized Contributor / Recognized Developer - OP
Thanks Meter 6526
Posts: 5,066
Join Date: Mar 2009

 
DONATE TO ME
Quote:
Originally Posted by HQRaja View Post
Can anyone please confirm if this is exclusive to the HTC One X+, or would it work for other similar HTC devices such as One X, One S etc. as well?
works for ALL MTP devices
The Following 2 Users Say Thank You to Lloir For This Useful Post: [ Click to Expand ]
 
HQRaja
Old
#8  
HQRaja's Avatar
Retired News Writer
Thanks Meter 431
Posts: 490
Join Date: Jan 2008
Location: Islamabad
Thanks a bunch. This should come pretty handy. =)
Regards,
Haroon Q. Raja.

Entrepreneur | Writer | Math Teacher | Web Developer | Technology Enthusiast
Retired News Writer at XDA Portal | Senior Editor at AddictiveTips | Founding Editor at HQTech
Visit my Website | Subscribe on Facebook | Follow on Twitter | Add me on Google+
 
Th!baut
Old
#9  
Junior Member
Thanks Meter 0
Posts: 7
Join Date: Dec 2012
Quote:
Originally Posted by Lloir View Post
works for ALL MTP devices
does it works for you ?
how do you copy your files from/to your phone ?
 
spdrosin
Old
#10  
spdrosin's Avatar
Senior Member
Thanks Meter 27
Posts: 517
Join Date: Jan 2011
Location: Volos
Waiting for Ubuntu instructions (maybe)?
Device: LG NEXUS 5
ROM: SlimKat 6.0
Kernel: Slim

Device 2: Sony Ericsson Xperia Mini
ROM: CyanogenMod 10 - FXP (20131224)

The Following User Says Thank You to spdrosin For This Useful Post: [ Click to Expand ]
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes