OLD | NEW |
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 |
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
146 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 |
147 way. Counter it like this: | 147 way. Counter it like this: |
148 | 148 |
149 gvfs-mount -s gphoto2 | 149 gvfs-mount -s gphoto2 |
150 | 150 |
151 Then re-attach the device. | 151 Then re-attach the device. |
152 | 152 |
153 Sometimes the "gvfs-gphoto2-volume-monitor" is running on the | 153 Sometimes the "gvfs-gphoto2-volume-monitor" is running on the |
154 system and hogging the device, try something like: | 154 system and hogging the device, try something like: |
155 | 155 |
156 pkill gfvs-gphoto2-volume-monitor && mtp-detect | 156 pkill gfvs-gphoto2-volume-monitor |
157 | 157 |
158 to figure out if this may be the case. | 158 Then plug in the device and issue "mtp-detect" to figure out if |
| 159 this may be the case. |
159 | 160 |
160 * Generic MTP/PTP disconnect misbehaviour: we have noticed that | 161 * Generic MTP/PTP disconnect misbehaviour: we have noticed that |
161 Windows Media Player apparently never close the session to an MTP | 162 Windows Media Player apparently never close the session to an MTP |
162 device. There is a daemon in Windows that "hooks" the device | 163 device. There is a daemon in Windows that "hooks" the device |
163 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 |
164 plugged in. This daemon proxies any subsequent transactions | 165 plugged in. This daemon proxies any subsequent transactions |
165 to/from the device and will never close the session, thus | 166 to/from the device and will never close the session, thus |
166 Windows simply does not close sessions at all. | 167 Windows simply does not close sessions at all. |
167 | 168 |
168 For example this means that a device may work the first time | 169 For example this means that a device may work the first time |
(...skipping 584 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
753 ------------------------------------ | 754 ------------------------------------ |
754 | 755 |
755 PTP/MTP devices does not actually contain "files", they contain | 756 PTP/MTP devices does not actually contain "files", they contain |
756 objects. These objects have file names, but that is actually | 757 objects. These objects have file names, but that is actually |
757 just a name tag on the object. | 758 just a name tag on the object. |
758 | 759 |
759 Folders/directories aren't really such entities: they are just | 760 Folders/directories aren't really such entities: they are just |
760 objects too, albeit objects that can act as parent to other | 761 objects too, albeit objects that can act as parent to other |
761 objects. They are called "associations" and are created in atomic | 762 objects. They are called "associations" and are created in atomic |
762 fashion and even though there is an MTP command to get all the | 763 fashion and even though there is an MTP command to get all the |
763 associations of a certain association, this command is optional | 764 associations of a certain object, this command is optional |
764 so it is perfectly possible (and most common, actually) to create | 765 so it is perfectly possible (and most common, actually) to create |
765 devices where the "folders" (which are actually associations) have | 766 devices where the "folders" (which are actually associations) have |
766 no idea whatsoever of what files they are associated as parents to | 767 no idea whatsoever of what files they are associated as parents to |
767 (i.e. which files they contain). This is very easy for device | 768 (i.e. which files they contain). This is very easy for device |
768 manufacturers to implement, all the association (i.e. finding out | 769 manufacturers to implement, all the association (i.e. finding out |
769 which files are in a certain folder) has to be done by the MTP | 770 which files are in a certain folder) has to be done by the MTP |
770 Initiator / host computer. | 771 Initiator / host computer. |
771 | 772 |
772 Moving a file to a new folder is for example very simple in a | 773 Moving a file to a new folder is for example very simple in a |
773 "real" file system. In PTP/MTP devices it is often not even possible, | 774 "real" file system. In PTP/MTP devices it is often not even possible, |
774 some devices *may* be able to do that. But actually the only | 775 some devices *may* be able to do that, if they support command |
775 reliable way of doing that is to upload the file to the host, | 776 0x1019 "Move Object", but actually the only reliable way of executing |
776 download it with the new parent, then delete the old file. | 777 file movement is to upload the file to the host, download it with |
777 We have played with the idea of implementing this time consuming | 778 the new parent, then delete the old file. We have played with the |
778 function, perhaps we will. | 779 idea of implementing this time consuming function as a fallback |
| 780 in case the device does not support command 0x1019, perhaps one day |
| 781 we will do that. (Some devices also support command 0x101a |
| 782 "Copy Object".) |
779 | 783 |
780 Then the issue that in PTP/MTP it is legal for two files to have | 784 Then the issue that in PTP/MTP it is legal for two files to have |
781 exactly the same path as long as their object IDs differ. A | 785 exactly the same path as long as their object IDs differ. A |
782 folder/association can contain two files with the exact same name. | 786 folder/association can contain two files with the exact same name. |
783 (And on the Creative devices this even works, too, though most devices | 787 (And on the Creative devices this even works, too, though most devices |
784 implicitly fail at this.) Perhaps one could add some custom hook for | 788 implicitly fail at this.) Perhaps one could add some custom hook for |
785 handling that, so they become /Foo.mp3 and /Foo.mp3(1) or something | 789 handling that, so they become /Foo.mp3 and /Foo.mp3(1) or something |
786 similar, but it's really a bit kludgy. | 790 similar, but it's really a bit kludgy. |
787 | 791 |
788 Playlists and albums aren't really files, thinking about | 792 Playlists and albums aren't really files, thinking about |
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
986 G_CALLBACK(uevent_cb), | 990 G_CALLBACK(uevent_cb), |
987 NULL, 0); | 991 NULL, 0); |
988 | 992 |
989 SKETCH OF AN OVERVIEW | 993 SKETCH OF AN OVERVIEW |
990 --------------------- | 994 --------------------- |
991 | 995 |
992 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 |
993 builders summit, might come to recycle this: | 997 builders summit, might come to recycle this: |
994 | 998 |
995 - Protocol overview | 999 - Protocol overview |
| 1000 - Transactional filesystem - no corruption due to unplugged cables! |
996 - libmtp interface | 1001 - libmtp interface |
997 - relation to libgphoto2 | 1002 - relation to libgphoto2 |
| 1003 - User expectations fall short: |
| 1004 - Not really a mountable filesystem. |
| 1005 - Streaming does not work. (Size needs to be known beforehand due to |
| 1006 transactional nature.) |
998 - Device sins | 1007 - Device sins |
999 - Android bugs | 1008 - Android bugs |
1000 - Samsungs special Android MTP stack | 1009 - Samsungs special Android MTP stack |
1001 - SonyEricsson Aricent stack for Xperia Androids pre 4.0, broken headers! | 1010 - SonyEricsson Aricent stack for Xperia Androids pre 4.0, broken headers! |
| 1011 - Flat access model vs hierarchical, how Android uses MTP as an hierachical |
| 1012 file system while it was previously a flat database. |
1002 - Detecting from vendor extension, can fix in newer extensions! | 1013 - Detecting from vendor extension, can fix in newer extensions! |
1003 - Autoprobing on Linux | 1014 - Autoprobing on Linux |
1004 - Color devices do not like autoprobing | 1015 - Color devices do not like autoprobing |
| 1016 - Devices need different PIDs for every alternative interface due to |
| 1017 the Windows USB stack. |
| 1018 - Multimode USB - one PID for each mode due to Windows limitations not |
| 1019 applicable to Linux, SONY devices have ~5 different PIDs for a single |
| 1020 device. |
| 1021 - Mode switch devices? |
| 1022 - MTPZ |
1005 - Ideas?? | 1023 - Ideas?? |
1006 - Mode switch devices? | 1024 |
1007 - MTPZ | |
OLD | NEW |