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
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
**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
Code:
mptfs
[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
Code:
umount /mnt/sgs2
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.
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".
No comments:
Post a Comment
Post your comment here. If you want to say something about programming problems, scripts, software etc, please try to be as descriptive as possible.