FORUMS
Remove All Ads from XDA
H10 Turbo

[GUIDE] How to transfer files in Linux

357 posts
Thanks Meter: 97
 
By bcmobile, Senior Member on 13th May 2011, 03:40 PM
Post Reply Email Thread
Now works on 32bit and 64bit Linux

Just a quick guide on how to configure Linux for file transfers using MTP. I wrote the instructions and config for Ubuntu Natty 32bit and 64bit, though the same process will work on other platforms - the only real difference being the package manager commands and possibly the config file locations.

The attached files are for the Galaxy Tab 10.1v but should work for the 10.1g / 10.1 as well. See the end of the post to learn how to modify this config to work for other devices.

How to configure for gMTP and other Media Sync tools

1) Install aptitude
Code:
sudo apt-get install aptitude
2) Install mtp-tools and mtpfs
Code:
sudo aptitude install mtpfs mtp-tools
3) Download the attached file ( 98-gtab.zip for 32bit Linux or 98-gtab.rules-AMD64.zip for 64bit Linux ) to your desktop.
4) Extract the 98-gtab.rules file to your desktop
5) Copy the rules file to /etc/udev/rules.d/
Code:
sudo cp ~/Desktop/98-gtab.rules /etc/udev/rules.d
6) Reboot
7) Connect your Tab
8) Run the following command to confirm it is working:
Code:
ls /dev | grep gtab
...which should return "gtab" if successful. If not, follow the "Modifying" guide below.
9) Download / install gMTP
Code:
sudo apt-get install gmtp
10) Open gMTP and select "connect" from the menu
11) Hit the thanks button
12) Go nuts!

Setting up for Automount (Optional, but recommended)

***You must have completed Steps 1-8 above before proceeding***
1) Edit your fstab file to add your gtab:
Code:
sudo gedit /etc/fstab
2) Add this to the end of the file:
Code:
#gtab
mtpfs     /media/gtab     fuse     user,noauto,allow_other      0      0
3) Save and exit
4) Open fuse.conf for editing:
Code:
sudo gedit /etc/fuse.conf
5) Find the following line and remove the #
Code:
#user_allow_other
6) Save and exit
7) Open and edit the groups file:
Code:
sudo gedit /etc/group
8) Find the details for the group 'fuse' and append your username to the end of the line eg.
Code:
fuse:x:104:<YOUR USER NAME>
9) Save and exit
10) Create the folder to mount your Tab:
Code:
sudo mkdir /media/gtab
11) Take ownership of the folder:
Code:
sudo chown <YOUR USER NAME>:users /media/gtab
12) Reboot
13) Plug in your Tab.
14) Click on the Places menu and click gtab.
15) You're in business!


Modifying for other devices

If the above doesn't work immediately on the 10.1g / 10.1 (I have only tested on the 10.1v), you can easily edit the rules file to support your device.

1) Install lsusb
Code:
sudo apt-get install lsusb
2) Run lsusb
Code:
lsusb
3) Check the output of this command to find your device. The 10.1v is shown like this:
Code:
Bus 001 Device 010: ID 04e8:6860 Samsung Electronics Co., Ltd
4) Make a note of the Vendor and Product IDs. In the example above, the vendor ID is 04e8 and device ID is 6860 (note 04e8:6860 in the output).
5) Open the rules file for editing (if it's not already in /etc/udev/rules.d, copy it there now)
Code:
sudo gedit /etc/udev/rules.d/98-gtab.rules
6) Find this line:
Code:
ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="6860", MODE="0666" SYMLINK+="gtab"
7) Replace the Vendor ID (04e8) and Product ID (6860) with the ones that you got from step 3 above.
8) Save and exit
9) Reboot
10) Follow step 7 onward in the first guide above
11) Hit the thanks button


If you modify it for a particular device, please post the contents of your new 'rules' file here.


32bit RULES FILE:
Code:
ACTION!="add", GOTO="gtab_rules_end"
SUBSYSTEM!="usb|usb_device", GOTO="gtab_usb_end"

ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="6860", MODE="0666" SYMLINK+="gtab"

LABEL="gtab_usb_end"

LABEL="gtab_rules_end"
64bit RULES FILE:
Code:
ACTION!="add", GOTO="gtab_rules_end"
SUBSYSTEM!="usb|usb_device", GOTO="gtab_usb_end"

ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="6860", MODE="0777" SYMLINK+="gtab"

LABEL="gtab_usb_end"

LABEL="gtab_rules_end"
The Following 17 Users Say Thank You to bcmobile For This Useful Post: [ View ] Gift bcmobile Ad-Free
 
 
13th May 2011, 10:01 PM |#2  
Chandelure's Avatar
Senior Member
Thanks Meter: 8
 
More
Tested, walked through the steps to my friend (Skype ). Works 100% on Linux Mint too
14th May 2011, 02:28 AM |#3  
Junior Member
Thanks Meter: 1
 
More
Everything worked for me up to the GMTP part - I can grep through /dev and I can see the "gtab" device there. But GMTP insists "Detect: No raw devices found."

I'm still running Maverick, but I added the maverick-backports repo, which has gmtp, so I would think it would work.

This is a Samsung Galaxy Tab 10.1v (from Google I/O). Any ideas?

EDIT: I also tried the automounting option with FUSE. Attempts to cd into it with bash or open it from the Places menu in GNOME both give the message "Transport endpoint is not connected".

EDIT again:

OK, I disabled USB Debugging and now have a different set of problems. mtp-detect sees the device now, but the message upon running it is:

Code:
libmtp version: 1.0.3

Listing raw device(s)
Device 0 (VID=04e8 and PID=6860) is UNKNOWN.
Please report this VID/PID and the device model to the libmtp development team
   Found 1 device(s):
   04e8:6860 @ bus 2, dev 26
Attempting to connect device(s)
ignoring usb_claim_interface = -16ignoring usb_claim_interface = -22PTP_ERROR_IO: Trying again after re-initializing USB interface
inep: usb_get_endpoint_status(): Device or resource busy
outep: usb_get_endpoint_status(): Device or resource busy
usb_clear_halt() on IN endpoint: Device or resource busy
usb_clear_halt() on OUT endpoint: Device or resource busy
usb_clear_halt() on INTERRUPT endpoint: Device or resource busy
LIBMTP PANIC: Could not open session! (Return code 767)
  Try to reset the device.
Unable to open raw device 0
OK.
14th May 2011, 02:57 AM |#4  
bcmobile's Avatar
OP Senior Member
Flag Sydney
Thanks Meter: 97
 
Donate to Me
More
Quote:
Originally Posted by Konklone

Everything worked for me up to the GMTP part - I can grep through /dev and I can see the "gtab" device there. But GMTP insists "Detect: No raw devices found."

I'm still running Maverick, but I added the maverick-backports repo, which has gmtp, so I would think it would work.

This is a Samsung Galaxy Tab 10.1v (from Google I/O). Any ideas?

EDIT: I also tried the automounting option with FUSE. Attempts to cd into it with bash or open it from the Places menu in GNOME both give the message "Transport endpoint is not connected".

Can you post the output from 'lsusb' ?

re the "Transport endpoint is not connected" - I just got this same error on 64bit Natty. Will try and see if I can find out why..
The Following User Says Thank You to bcmobile For This Useful Post: [ View ] Gift bcmobile Ad-Free
14th May 2011, 03:04 AM |#5  
Junior Member
Thanks Meter: 1
 
More
Ah, just saw your reply. I edited my post up above, but the gist is - you can't do this while USB Debugging is enabled. The Tab has to be running its "MTP Application".

Now I'm getting the stranger errors above. I'm going to try mounting it with FUSE now to see if that helps for some reason.

EDIT: For the record, I'm using the correct vendor and product IDs in my rules file:

Code:
ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="6860", MODE="0666" SYMLINK+="gtab"
14th May 2011, 03:13 AM |#6  
bcmobile's Avatar
OP Senior Member
Flag Sydney
Thanks Meter: 97
 
Donate to Me
More
Quote:
Originally Posted by Konklone

I edited my post up above, but the gist is - you can't do this while USB Debugging is enabled.

You may be right. When I wrote this guide, I was using a VM. It is possible that the fact that I was using both MTP and ADB at the same time has something to do with how VMWare presents the devices to the guest OS.

Now I am using 'bare metal' Natty 64 bit and have the same problem as you.

I have to go out for a while but will look at it again when I get back.

EDIT: Just tried mtp-detect and it is finding the device. I suspect USB Debug is not the issue, but I'll leave it in your capable hands - really got to go now

EDIT2: See here http://www.usb.org/developers/devclass_docs/MTP_1.0.zip OK - Im really REALLY going now. Back online in a few hours
The Following 3 Users Say Thank You to bcmobile For This Useful Post: [ View ] Gift bcmobile Ad-Free
14th May 2011, 03:50 AM |#7  
Junior Member
Thanks Meter: 1
 
More
I couldn't get anywhere until I turned off USB debugging. When USB debugging is enabled, I *can* use adb to get into the shell, see files, install apps, etc. I can even transfer files over adb, through the command line! Can you get MTP to detect it with USB debugging enabled?

With USB debugging off, I have once in a great while (only twice in all my attempts) while gotten mtp-detect to connect to the device and print sane output describing the device. Even when those happened, running the command immediately again didn't connect correctly, and gave me the same error messages I was getting before. Both times I got it to connect, it was soon after plugging in the cable, but it doesn't happen every time.

Intermittent heisenbugs are the worst, yet I don't think I have a busted cable, given that adb works perfectly consistently.

Maybe I should try this again after updating to Natty...I'd been meaning to do it anyhow...

EDIT: One thing I notice is that on the Tab, when the "MTP Application" is running after plugging in, the 5-dot "in progress" animation is extremely choppy, as if the device were very very busy. If the device were very very busy for some reason, this could explain why a successful connection can happen only once in a great while. I'll try rebooting the device, I guess.

EDIT2: I rebooted the device, and I removed the USB extension cord I was using, but neither helped, still getting the same intermittent success. (I got mtp-detect to connect to it a few more times - all soon after plugging in the cable, and none were repeatable without unplugging and replugging it in.) The animation actually wasn't choppy before, that's just how it looks - 5 discrete animation frames, one for each dot.

Something interesting though: this time I had the Tab resting on my knee, and I felt a haptic buzz after running mtp-detect on one occasion. I looked down and saw the MTP Application restart itself. Then I ran mtp-detect again and I felt 3 haptic buzzes in quick succession, followed by a successful detection and output. But when running mtp-detect *again*, no dice.

This is messed up.
14th May 2011, 08:59 AM |#8  
bcmobile's Avatar
OP Senior Member
Flag Sydney
Thanks Meter: 97
 
Donate to Me
More
Messed up indeed.

Quote:
Originally Posted by Konklone

Can you get MTP to detect it with USB debugging enabled?

Yes, both work simultaneously on 32bit Natty

Note that you have to unmount the gtab for mtp-detect to work. I compared the output from mtp-detect on the 32bit working VM and the 64bit non-working 'bare metal' machine and the output was identical. I suspect this means that mtpfs is not where the problem is

Re the strange problem with haptic feedback - I have had mine power off all by itself when testing some different parameters in the rules file.
The Following User Says Thank You to bcmobile For This Useful Post: [ View ] Gift bcmobile Ad-Free
14th May 2011, 09:59 AM |#9  
bcmobile's Avatar
OP Senior Member
Flag Sydney
Thanks Meter: 97
 
Donate to Me
More
[64bit working]
OK. Problem solved... kind of. There seems to be some kind of bug in fuse which requires the filesystem to mount with higher permissions to run properly (at least on Natty AMD64)

If you use the new 64bit rules file I have attached, it should work. Basically it uses 777 permissions instead of 666. Not great, but working nonetheless.

New rules file for 64bit:
Code:
ACTION!="add", GOTO="gtab_rules_end"
SUBSYSTEM!="usb|usb_device", GOTO="gtab_usb_end"

ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="6860", MODE="0777" SYMLINK+="gtab"

LABEL="gtab_usb_end"

LABEL="gtab_rules_end"
EDIT: If someone wants to experiment with lesser permissions and see what the minimum is and post back, that would be helpful for all.
The Following User Says Thank You to bcmobile For This Useful Post: [ View ] Gift bcmobile Ad-Free
15th May 2011, 06:22 AM |#10  
Junior Member
Thanks Meter: 1
 
More
Sigh, thank you for taking so much time to help me so far, but I wonder if I'm a lost cause.

I spent a bunch of today finishing my upgrade to Natty, including a full wipe and reinstall. (I have a 32-bit machine, btw.) Now I can't even get it to detect my MTP device at all (mtp-detect says "No raw devices found."), with or without debugging enabled.

One possibly important topic - it's really surprising to me that yours works either way, because lsusb shows that a different product ID is exposed to the host, depending on whether debugging is on or not. With debugging disabled, it's 6860, like your example. With debugging enabled, it's 685e. When I run lsusb, only one of those will show up, never both. So if yours is the same device, I have no idea how your rules file could be agnostic to debugging being enabled. If yours is not, then that might explain our different experiences.

Anyway, I've Thanks'd all your posts in this thread, solved or not. I appreciate your help.
15th May 2011, 06:56 AM |#11  
bcmobile's Avatar
OP Senior Member
Flag Sydney
Thanks Meter: 97
 
Donate to Me
More
Quote:
Originally Posted by Konklone

With debugging enabled, it's 685e. When I run lsusb, only one of those will show up, never both

You're more than welcome.

I noticed that in Windows, both devices appear in device manager. That is a very strange problem you have discovered.

I just posted instructions and files to give you root access! Might take your mind off the MTP issues for a while

Who knows... the problem might just go away
Post Reply Subscribe to Thread

Guest Quick Reply (no urls or BBcode)
Message:
Previous Thread Next Thread
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes