Index: README |
diff --git a/README b/README |
index 6fe143e759c619798c4ada616112457ffe1cadb1..f67e3611619b4aa4c356417895af4ebd816381b6 100644 |
--- a/README |
+++ b/README |
@@ -14,15 +14,10 @@ controller interface, using libusb to access the host |
controller. |
If you're more interested in the MTP responders, gadgets like |
-MP3 players, mobile phones etc, look into: |
-- MeeGo:s Buteo Sync: |
- https://github.com/nemomobile/buteo-mtp |
- https://wiki.merproject.org/wiki/Buteo/MTP |
-- Android has an MTP responder implementation: |
- https://android.googlesource.com/platform/frameworks/base/+/master/media/jni/ |
-- Ubuntu/Ricardo Salveti has mtp-server and libmtp-server going: |
- https://code.launchpad.net/~phablet-team/mtp/trunk |
- http://bazaar.launchpad.net/~phablet-team/mtp/trunk/files |
+MP3 players, mobile phones etc, look into MeeGo:s Buteo Sync: |
+http://wiki.meego.com/Buteo - these guys are creating a fully |
+open source MTP responder. |
+ |
Heritage |
-------- |
@@ -143,25 +138,6 @@ Some MTP devices have strange pecularities. We try to work around |
these whenever we can, sometimes we cannot work around it or we |
cannot test your solution. |
-* Android locked screen: some devices just report zero files |
- and no storages when the device screen is locked, it looks like |
- so: |
- |
- mtp-detect |
- Device 0 (VID=04e8 and PID=6860) is a Samsung Galaxy models (MTP). |
- Attempting to connect device(s) |
- Error 1: Get Storage information failed. |
- Device: SHV-E210K |
- LIBMTP_Get_Storage(): No data available |
- OK. |
- |
- This is probably so as not to allow the MTP access to be used |
- as a "backdoor" into the device. Unlock the device before listing |
- files, set the autolock to some large value or disabled if it |
- disturbs you, you are causing this to yourself, or should we say |
- that your vendor is prioritizing security and privacy over |
- ease-of-use. (You may talk to your vendor about this.) |
- |
* mtp-* tools doesn't work because someone else is already hogging |
the device |
@@ -174,12 +150,10 @@ cannot test your solution. |
Then re-attach the device. |
- Sometimes some gvfs daemons are running on the |
- system and hogging the device, try stopping them |
- with something like these commands: |
+ Sometimes the "gvfs-gphoto2-volume-monitor" is running on the |
+ system and hogging the device, try something like: |
- killall gvfs-mtp-volume-monitor |
- killall gvfs-gphoto2-volume-monitor |
+ pkill gfvs-gphoto2-volume-monitor |
Then plug in the device and issue "mtp-detect" to figure out if |
this may be the case. |
@@ -231,6 +205,13 @@ cannot test your solution. |
manufacturer and ask them to test their product with some libmtp |
program. |
+* Android locked screen: some devices just report zero files |
+ and no storages when the device is locked, probably so as not |
+ to allow the MTP access to be used as a "backdoor" into the |
+ device. Unlock the device before listing files, set the autolock |
+ to some large value or disabled if it disturbs you, you are |
+ causing this to yourself. |
+ |
* Samsung Android 2.3.x devices: these have a special MTP stack |
with some specific bugs that we have maybe nailed down now. |
It suffers from an "immediate connect" syndrome, i.e. you have |
@@ -598,30 +579,19 @@ Here is what some people do: |
6. Once mtp-detect gives you an "Ok", open either Rhythmbox or Gnomad2, |
everything should work. |
-Linux: Try this, if you have a recent Linux kernel, |
-add the file (as root): |
- |
-/etc/modprobe.d/no-usb-storage.conf |
- |
-With the contents: |
- |
-options usb-storage quirks=1234:4321:i |
- |
-This will tell usb-storage to ignore this device when it's inserted |
-so it is not hogged by the mass storage interfaces. Remove and re-insert |
-the device and see if it works. Usually this does the trick. |
- |
-For older systems, or as a bigger hammer, run (as root) something |
-like: |
+Linux: Try this, if you have a recent 2.6.x Linux kernel, |
+run (as root) something like: |
> rmmod usb_storage ; mtp-detect |
You can run most any command or a client like gnomad2 or |
Amarok immediately after the rmmod command. This works |
-sometimes. Another even more brutal approach is this: |
+sometimes. Another way: |
* Edit /etc/modprobe.d/blacklist |
+ |
* Add the line "blacklist usb-storage" |
+ |
* Reboot. |
Now none of you USB disks, flash memory sticks etc will be |
@@ -1028,45 +998,18 @@ builders summit, might come to recycle this: |
- Protocol overview |
- Transactional filesystem - no corruption due to unplugged cables! |
- - The host and the device can access the files simultaneously, the |
- device will always "own" the physical file system and proxy the |
- host (MTP initiator). |
- libmtp interface |
- relation to libgphoto2 |
- User expectations fall short: |
- Not really a mountable filesystem. |
- Streaming does not work. (Size needs to be known beforehand due to |
transactional nature.) |
- - GVFS MTP backend to the rescue. |
- Device sins |
- - Using the same VID/PID for several modes, some of which are not MTP. |
- HTC Zopo, HD2, Bird (0x0bb4/0x0c02). Thanks for that, now we cannot |
- detect the protocol from just VID+PID but have to examine the interfaces. |
- Android bugs |
- Samsungs special Android MTP stack |
- SonyEricsson Aricent stack for Xperia Androids pre 4.0, broken headers! |
- Flat access model vs hierarchical, how Android uses MTP as an hierachical |
file system while it was previously a flat database. |
- - Old paradigm: scan the entire non-hierarchical storage for all content, |
- build a cache to speed up the (USB 1.1!) link. Usually all files were |
- stored in the root folder or a single folder named "/Music" or similar. |
- - Android introduced deeply nested folder hierarchies, not seen before |
- on MTP devices. |
- - Microsoft not using the complete metadata dump feature of the MTP |
- protocol (once introduced by creative) instead they walk directories |
- separately. |
- - So caching a big device will take long time and/or timeout. |
- - Go-MTPFS (FUSE) and GVFS MTP - doing the partial directory walk rather |
- than caching all files. |
- - Especially Android devices nowadays assume that |
- you want to index a folder at the time, whereas older MTP devices (such |
- as those from Creative) would assume that you wanted to index the entire |
- device as it was plugged in, and device firmware is now ever more tailored |
- toward per-folder filetree walking. This makes it harder for the library |
- to provide the right abstractions: do we provide an API for indexing the |
- whole device which is unacceptably slow on new devices, or do we provide |
- an API for indexing a directory at the time which will somehow work on |
- older devices too? Shall we deprecate the older API? |
- Detecting from vendor extension, can fix in newer extensions! |
- Autoprobing on Linux |
- Color devices do not like autoprobing |
@@ -1075,8 +1018,7 @@ builders summit, might come to recycle this: |
- Multimode USB - one PID for each mode due to Windows limitations not |
applicable to Linux, SONY devices have ~5 different PIDs for a single |
device. |
- - Mode switch devices? Maybe we do this wrong. |
-- MTPZ, came and went. Apparently deprecated by Microsoft with Windows |
- Phone 8. |
+ - Mode switch devices? |
+- MTPZ |
- Ideas?? |