Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(582)

Side by Side Diff: README

Issue 2364793002: Revert "Uprev libmtp to 1.1.12" (Closed) Base URL: https://chromium.googlesource.com/chromium/deps/libmtp@master
Patch Set: Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « Makefile.in ('k') | README.windows.txt » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 Building and Installing 1 Building and Installing
2 ----------------------- 2 -----------------------
3 3
4 See the "INSTALL" file. 4 See the "INSTALL" file.
5 5
6 6
7 Initiator and Responder 7 Initiator and Responder
8 ----------------------- 8 -----------------------
9 9
10 libmtp implements an MTP initiator, which means it initiate 10 libmtp implements an MTP initiator, which means it initiate
11 MTP sessions with devices. The devices responding are known 11 MTP sessions with devices. The devices responding are known
12 as MTP responders. libmtp runs on something with a USB host 12 as MTP responders. libmtp runs on something with a USB host
13 controller interface, using libusb to access the host 13 controller interface, using libusb to access the host
14 controller. 14 controller.
15 15
16 If you're more interested in the MTP responders, gadgets like 16 If you're more interested in the MTP responders, gadgets like
17 MP3 players, mobile phones etc, look into: 17 MP3 players, mobile phones etc, look into MeeGo:s Buteo Sync:
18 - MeeGo:s Buteo Sync: 18 http://wiki.meego.com/Buteo - these guys are creating a fully
19 https://github.com/nemomobile/buteo-mtp 19 open source MTP responder.
20 https://wiki.merproject.org/wiki/Buteo/MTP 20
21 - Android has an MTP responder implementation:
22 https://android.googlesource.com/platform/frameworks/base/+/master/media/jni/
23 - Ubuntu/Ricardo Salveti has mtp-server and libmtp-server going:
24 https://code.launchpad.net/~phablet-team/mtp/trunk
25 http://bazaar.launchpad.net/~phablet-team/mtp/trunk/files
26 21
27 Heritage 22 Heritage
28 -------- 23 --------
29 24
30 libmtp is based on several ancestors: 25 libmtp is based on several ancestors:
31 26
32 * libptp2 by Mariusz Woloszyn was the starting point used 27 * libptp2 by Mariusz Woloszyn was the starting point used
33 by Richard A. Low for the initial starter port. You can 28 by Richard A. Low for the initial starter port. You can
34 find it at http://libptp.sourceforge.net/ 29 find it at http://libptp.sourceforge.net/
35 30
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
136 please volunteer. 131 please volunteer.
137 132
138 133
139 FAQ: Common Problems 134 FAQ: Common Problems
140 -------------------- 135 --------------------
141 136
142 Some MTP devices have strange pecularities. We try to work around 137 Some MTP devices have strange pecularities. We try to work around
143 these whenever we can, sometimes we cannot work around it or we 138 these whenever we can, sometimes we cannot work around it or we
144 cannot test your solution. 139 cannot test your solution.
145 140
146 * Android locked screen: some devices just report zero files
147 and no storages when the device screen is locked, it looks like
148 so:
149
150 mtp-detect
151 Device 0 (VID=04e8 and PID=6860) is a Samsung Galaxy models (MTP).
152 Attempting to connect device(s)
153 Error 1: Get Storage information failed.
154 Device: SHV-E210K
155 LIBMTP_Get_Storage(): No data available
156 OK.
157
158 This is probably so as not to allow the MTP access to be used
159 as a "backdoor" into the device. Unlock the device before listing
160 files, set the autolock to some large value or disabled if it
161 disturbs you, you are causing this to yourself, or should we say
162 that your vendor is prioritizing security and privacy over
163 ease-of-use. (You may talk to your vendor about this.)
164
165 * mtp-* tools doesn't work because someone else is already hogging 141 * mtp-* tools doesn't work because someone else is already hogging
166 the device 142 the device
167 143
168 This is a common problem, the most common case could be that 144 This is a common problem, the most common case could be that
169 gphoto2 (which can also talk PTP/MTP) is taking over the device 145 gphoto2 (which can also talk PTP/MTP) is taking over the device
170 as soon as it's plugged in. Some distributions are configured that 146 as soon as it's plugged in. Some distributions are configured that
171 way. Counter it like this: 147 way. Counter it like this:
172 148
173 gvfs-mount -s gphoto2 149 gvfs-mount -s gphoto2
174 150
175 Then re-attach the device. 151 Then re-attach the device.
176 152
177 Sometimes some gvfs daemons are running on the 153 Sometimes the "gvfs-gphoto2-volume-monitor" is running on the
178 system and hogging the device, try stopping them 154 system and hogging the device, try something like:
179 with something like these commands:
180 155
181 killall gvfs-mtp-volume-monitor 156 pkill gfvs-gphoto2-volume-monitor
182 killall gvfs-gphoto2-volume-monitor
183 157
184 Then plug in the device and issue "mtp-detect" to figure out if 158 Then plug in the device and issue "mtp-detect" to figure out if
185 this may be the case. 159 this may be the case.
186 160
187 * Generic MTP/PTP disconnect misbehaviour: we have noticed that 161 * Generic MTP/PTP disconnect misbehaviour: we have noticed that
188 Windows Media Player apparently never close the session to an MTP 162 Windows Media Player apparently never close the session to an MTP
189 device. There is a daemon in Windows that "hooks" the device 163 device. There is a daemon in Windows that "hooks" the device
190 by opening a PTP session to any MTP device, whenever it is 164 by opening a PTP session to any MTP device, whenever it is
191 plugged in. This daemon proxies any subsequent transactions 165 plugged in. This daemon proxies any subsequent transactions
192 to/from the device and will never close the session, thus 166 to/from the device and will never close the session, thus
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
224 such devices and you cannot expect to have command line tools 198 such devices and you cannot expect to have command line tools
225 like the mtp examples work with them. You could implement new 199 like the mtp examples work with them. You could implement new
226 example programs that just call to a mediating daemon like the 200 example programs that just call to a mediating daemon like the
227 Windows MTP stack does. (And change all programs using libmtp 201 Windows MTP stack does. (And change all programs using libmtp
228 directly today.) 202 directly today.)
229 203
230 If this bug in your device annoys you, contact your device 204 If this bug in your device annoys you, contact your device
231 manufacturer and ask them to test their product with some libmtp 205 manufacturer and ask them to test their product with some libmtp
232 program. 206 program.
233 207
208 * Android locked screen: some devices just report zero files
209 and no storages when the device is locked, probably so as not
210 to allow the MTP access to be used as a "backdoor" into the
211 device. Unlock the device before listing files, set the autolock
212 to some large value or disabled if it disturbs you, you are
213 causing this to yourself.
214
234 * Samsung Android 2.3.x devices: these have a special MTP stack 215 * Samsung Android 2.3.x devices: these have a special MTP stack
235 with some specific bugs that we have maybe nailed down now. 216 with some specific bugs that we have maybe nailed down now.
236 It suffers from an "immediate connect" syndrome, i.e. you have 217 It suffers from an "immediate connect" syndrome, i.e. you have
237 to connect to the device within 7 seconds of plugging in, or it 218 to connect to the device within 7 seconds of plugging in, or it
238 will go numb. This also goes for command-line activity with 219 will go numb. This also goes for command-line activity with
239 the example programs, so this device is better used with a 220 the example programs, so this device is better used with a
240 GUI tool like Rhythmbox, gnomad2... 221 GUI tool like Rhythmbox, gnomad2...
241 222
242 * Generic USB misbehaviour: some devices behave badly under MTP 223 * Generic USB misbehaviour: some devices behave badly under MTP
243 and USB mass storage alike, even down to the lowest layers 224 and USB mass storage alike, even down to the lowest layers
(...skipping 347 matching lines...) Expand 10 before | Expand all | Expand 10 after
591 572
592 1. Plug in the device. 573 1. Plug in the device.
593 2. USB-mass storage folder will open automatically. 574 2. USB-mass storage folder will open automatically.
594 3. Unmount the device. 575 3. Unmount the device.
595 4. Run mtp-detect. It will most likely fail the first time. 576 4. Run mtp-detect. It will most likely fail the first time.
596 5. Run mtp-detect again, it might work this time, or fail. Keep running 577 5. Run mtp-detect again, it might work this time, or fail. Keep running
597 till it works. 99% it works by the third try. 578 till it works. 99% it works by the third try.
598 6. Once mtp-detect gives you an "Ok", open either Rhythmbox or Gnomad2, 579 6. Once mtp-detect gives you an "Ok", open either Rhythmbox or Gnomad2,
599 everything should work. 580 everything should work.
600 581
601 Linux: Try this, if you have a recent Linux kernel, 582 Linux: Try this, if you have a recent 2.6.x Linux kernel,
602 add the file (as root): 583 run (as root) something like:
603
604 /etc/modprobe.d/no-usb-storage.conf
605
606 With the contents:
607
608 options usb-storage quirks=1234:4321:i
609
610 This will tell usb-storage to ignore this device when it's inserted
611 so it is not hogged by the mass storage interfaces. Remove and re-insert
612 the device and see if it works. Usually this does the trick.
613
614 For older systems, or as a bigger hammer, run (as root) something
615 like:
616 584
617 > rmmod usb_storage ; mtp-detect 585 > rmmod usb_storage ; mtp-detect
618 586
619 You can run most any command or a client like gnomad2 or 587 You can run most any command or a client like gnomad2 or
620 Amarok immediately after the rmmod command. This works 588 Amarok immediately after the rmmod command. This works
621 sometimes. Another even more brutal approach is this: 589 sometimes. Another way:
622 590
623 * Edit /etc/modprobe.d/blacklist 591 * Edit /etc/modprobe.d/blacklist
592
624 * Add the line "blacklist usb-storage" 593 * Add the line "blacklist usb-storage"
594
625 * Reboot. 595 * Reboot.
626 596
627 Now none of you USB disks, flash memory sticks etc will be 597 Now none of you USB disks, flash memory sticks etc will be
628 working (you just disabled them all). However you *can* try 598 working (you just disabled them all). However you *can* try
629 your device, and it might have started working because there 599 your device, and it might have started working because there
630 is no longer a USB mass storage driver that tries to hook onto 600 is no longer a USB mass storage driver that tries to hook onto
631 the mass storage interface of your device. 601 the mass storage interface of your device.
632 602
633 If not even blacklisting works (check with 603 If not even blacklisting works (check with
634 "lsmod | grep usb-storage"), there is some problem with 604 "lsmod | grep usb-storage"), there is some problem with
(...skipping 386 matching lines...) Expand 10 before | Expand all | Expand 10 after
1021 NULL, 0); 991 NULL, 0);
1022 992
1023 SKETCH OF AN OVERVIEW 993 SKETCH OF AN OVERVIEW
1024 --------------------- 994 ---------------------
1025 995
1026 Draft agenda for a talk on MTP devices submitted for the Android 996 Draft agenda for a talk on MTP devices submitted for the Android
1027 builders summit, might come to recycle this: 997 builders summit, might come to recycle this:
1028 998
1029 - Protocol overview 999 - Protocol overview
1030 - Transactional filesystem - no corruption due to unplugged cables! 1000 - Transactional filesystem - no corruption due to unplugged cables!
1031 - The host and the device can access the files simultaneously, the
1032 device will always "own" the physical file system and proxy the
1033 host (MTP initiator).
1034 - libmtp interface 1001 - libmtp interface
1035 - relation to libgphoto2 1002 - relation to libgphoto2
1036 - User expectations fall short: 1003 - User expectations fall short:
1037 - Not really a mountable filesystem. 1004 - Not really a mountable filesystem.
1038 - Streaming does not work. (Size needs to be known beforehand due to 1005 - Streaming does not work. (Size needs to be known beforehand due to
1039 transactional nature.) 1006 transactional nature.)
1040 - GVFS MTP backend to the rescue.
1041 - Device sins 1007 - Device sins
1042 - Using the same VID/PID for several modes, some of which are not MTP.
1043 HTC Zopo, HD2, Bird (0x0bb4/0x0c02). Thanks for that, now we cannot
1044 detect the protocol from just VID+PID but have to examine the interfaces.
1045 - Android bugs 1008 - Android bugs
1046 - Samsungs special Android MTP stack 1009 - Samsungs special Android MTP stack
1047 - SonyEricsson Aricent stack for Xperia Androids pre 4.0, broken headers! 1010 - SonyEricsson Aricent stack for Xperia Androids pre 4.0, broken headers!
1048 - Flat access model vs hierarchical, how Android uses MTP as an hierachical 1011 - Flat access model vs hierarchical, how Android uses MTP as an hierachical
1049 file system while it was previously a flat database. 1012 file system while it was previously a flat database.
1050 - Old paradigm: scan the entire non-hierarchical storage for all content,
1051 build a cache to speed up the (USB 1.1!) link. Usually all files were
1052 stored in the root folder or a single folder named "/Music" or similar.
1053 - Android introduced deeply nested folder hierarchies, not seen before
1054 on MTP devices.
1055 - Microsoft not using the complete metadata dump feature of the MTP
1056 protocol (once introduced by creative) instead they walk directories
1057 separately.
1058 - So caching a big device will take long time and/or timeout.
1059 - Go-MTPFS (FUSE) and GVFS MTP - doing the partial directory walk rather
1060 than caching all files.
1061 - Especially Android devices nowadays assume that
1062 you want to index a folder at the time, whereas older MTP devices (such
1063 as those from Creative) would assume that you wanted to index the entire
1064 device as it was plugged in, and device firmware is now ever more tailored
1065 toward per-folder filetree walking. This makes it harder for the library
1066 to provide the right abstractions: do we provide an API for indexing the
1067 whole device which is unacceptably slow on new devices, or do we provide
1068 an API for indexing a directory at the time which will somehow work on
1069 older devices too? Shall we deprecate the older API?
1070 - Detecting from vendor extension, can fix in newer extensions! 1013 - Detecting from vendor extension, can fix in newer extensions!
1071 - Autoprobing on Linux 1014 - Autoprobing on Linux
1072 - Color devices do not like autoprobing 1015 - Color devices do not like autoprobing
1073 - Devices need different PIDs for every alternative interface due to 1016 - Devices need different PIDs for every alternative interface due to
1074 the Windows USB stack. 1017 the Windows USB stack.
1075 - Multimode USB - one PID for each mode due to Windows limitations not 1018 - Multimode USB - one PID for each mode due to Windows limitations not
1076 applicable to Linux, SONY devices have ~5 different PIDs for a single 1019 applicable to Linux, SONY devices have ~5 different PIDs for a single
1077 device. 1020 device.
1078 - Mode switch devices? Maybe we do this wrong. 1021 - Mode switch devices?
1079 - MTPZ, came and went. Apparently deprecated by Microsoft with Windows 1022 - MTPZ
1080 Phone 8.
1081 - Ideas?? 1023 - Ideas??
1082 1024
OLDNEW
« no previous file with comments | « Makefile.in ('k') | README.windows.txt » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698