Media Transfer Protocol

Last updated

The Media Transfer Protocol (MTP) is an extension to the Picture Transfer Protocol (PTP) communications protocol that allows media files to be transferred automatically to and from portable devices. [1] Whereas PTP was designed for downloading photographs from digital cameras, Media Transfer Protocol allows the transfer of music files on digital audio players and media files on portable media players, as well as personal information on personal digital assistants. MTP is a key part of WMDRM10-PD, [1] a digital rights management (DRM) service for the Windows Media platform. In 2011, it became the standard method to transfer files to and from Android. [2]

Contents

MTP is part of the "Windows Media" framework and thus closely related to Windows Media Player. Versions of the Microsoft Windows operating system from Windows XP SP2 support MTP. Windows XP requires Windows Media Player 10 or higher; [3] later Windows versions have built-in support. Microsoft has made an MTP Porting Kit available for older versions of Windows, back to Windows 98.

The USB Implementers Forum device working group standardized MTP as a full-fledged Universal Serial Bus (USB) device class in May 2008. [4] Since then, MTP is an official extension to PTP and shares the same class code. [5]

Overview

MTP is a high level file transfer protocol, as opposed to a general storage protocol like USB mass storage. That means that the MTP client (computer) does not see an array of byte blocks that makes up a data structure that makes up a file system, but instead speaks in terms of files and folders to the MTP device. This lets the MTP device take part in the high level operations (such as updating its metadata indexes) while keeping the integrity of its file system in its own hands. In particular, dropped transfers (such as by unplugging the USB cable too soon) do not corrupt the device file system. [6] The non-generality of MTP has consequences for how a computer operating system can present the MTP device, both to other programs and to the user.

According to its specification, the main purpose of MTP is to facilitate communication between media devices with transient connection. [5] A secondary purpose being to enable command and control of the connected device. [5] A battery-powered mobile device can report its battery charge level through MTP. [6]

The protocol was originally implemented for use across USB but extended for use across TCP/IP and Bluetooth. Windows Vista supports MTP over TCP/IP. Windows 7 and Windows Vista with the Platform Update for Windows Vista also support MTP over Bluetooth. [7] The host connecting to an MTP device is called an MTP Initiator, whereas the device itself is an MTP Responder. [8]

MTP allows MTP Initiators to identify the specific capabilities of device(s) with respect to file formats and functionality. In particular, MTP Initiators may have to provide passwords and other information to unlock files, or otherwise enable digital rights management. Nothing specific of this nature is in the core standard, but the features are available via vendor extensions. MTPZ, the Zune Extension to MTP, specifically denies access to files until authentication has been processed, which is only possible using Windows Media Player 10 or higher.

Comparison with USB Mass Storage

MTP's advantages are marked with "(+)" while disadvantages are marked with "(-)".

File oriented instead of block oriented protocol

By not exposing the filesystem and metadata index, the integrity of these is in full control of the device.

Performance

Transparency to MTP-unaware software

(-) Windows does not assign drive letters or UNC paths to MTP devices because it does not natively expose them as virtual file systems. Without drive letters or UNC paths, MTP-unaware software cannot access directories or files on these devices. The user has to switch to an MTP-aware application, or else work around by using an MTP-aware application such as Windows Explorer to copy or move the file to a file system that the application can access.

One specific concern is that antivirus software on the host computer may not be aware of MTP devices, making them potentially less secure than mass storage devices (although if files on MTP devices are copied or moved to the host before use, MTP-unaware antivirus software will have a chance to scan them). Antivirus scanning might also be impractical due to blocking regular use of the device.

Drivers know a fixed set of supported devices

(-) Despite identifiability by the PTP/MTP USB device class, libmtp documentation indicates that the vendor and product ID combination plays a functional role in identifying an MTP device, also by Windows drivers. [13] Libmtp includes vast listings of vendor and product ID numbers of devices that it supports, along with workarounds for bugs. [14] [15] This non-generic methodology hinders MTP drivers' forward compatibility with new devices.

The spec knows a fixed set of defined file formats

The MTP specification includes an enumeration of file formats, called object format. [5] The use of this enumeration is in communicating supported file formats, and formats of transferred files. Apart from some uncategorized formats in the beginning, the list of formats is grouped in categories of image, audio, video and document formats, with each category having one "Undefined" format followed by specific formats. There is also a super-generic "Undefined object" format.

Jolla cited lack of WebM support in MTP as one reason not to support the video format in their mobile operating system Sailfish OS. It is unclear if the limitation is in the tools or the spec, other than that WebM is not defined by the MTP 1.1 spec. [16] [ unreliable source? ] [17]

Direct modification and partial transfer features

These features can be used as more efficient alternatives to whole-file transfers and re-uploads:

From the MTP 1.1 spec: [5]

OpcodeOperation NameExplanation
0x9805GetObjectPropListMetadata transfer
0x9806SetObjectPropList
0x1019MoveObjectRename a file or directory
0x101BGetPartialObjectRequest a byte range of a file

Android extensions

According to go-mtpfs: [12]

OpcodeOperation NameExplanation
0x95C1GetPartialObject64Same as GetPartialObject, but with 64 bit offset
0x95C2SendPartialObjectSame as GetPartialObject64, but copying host to device
0x95C3TruncateObjectTruncates file to 64 bit length
0x95C4BeginEditObjectMust be called before using SendPartialObject and TruncateObject
0x95C5EndEditObjectCalled to commit changes made by SendPartialObject and TruncateObject

MTP support

Windows

Adaption in Windows

MTP is supported in Windows XP if Windows Media Player 10 or later versions are installed. Windows Vista and later have MTP support built in. For older versions of Windows, specifically, Windows 2000, Windows 98 and Windows Me, Microsoft has released the MTP Porting Kit. [18] which contains a MTP device driver. Some manufacturers, such as Creative Technology, also provide legacy MTP drivers for some of their players; these usually consist of MTP Porting Kit files with a customized INF file describing their specific players.[ citation needed ]

Support by software

Windows does not assign drive letters or UNC pathnames to devices connected via MTP; instead, they only appear as named devices in MTP-aware applications such as Windows Explorer. Compared to devices that implement USB mass storage, such devices cannot be accessed programmatically by scripts or normal Windows programs that depend on drive letters or UNC paths. Instead, files must be manipulated using Windows Explorer or applications with specially written MTP support.

Under Windows, MTP-compatible devices support a feature called Auto Sync, which lets users configure Windows Media Player to automatically transfer all copied or newly acquired content to devices whenever they are connected - provided that content is compatible with Windows Media Player. Auto Sync is customizable so that the player will transfer only content that meets certain criteria (songs rated four stars or higher, for instance). Changes made to file properties (such as a user rating and file playback counts) on a device can be propagated back to the computer when the device is reconnected.

Copies of files accessed over MTP may remain on the host computer even after reboot,[ citation needed ] where they will be accessible to the user account which accessed them, as well as any other user accounts able to read that user account's files, including any administrative users. Windows 7's sensor platform supports sensors built into MTP-compatible devices. [19]

File move behavior

In the implementation of MTP used by Windows Explorer, files from a selection moved out of a mobile device's storage, perhaps with the goal of freeing up space, are not deleted individually from the source after each file, but instead the entire selection becomes deleted at once from the source only after the transfer has finished.

As a result, file moves aborted untimely, whether manually or unexpectedly, will not have freed up any space on the source device. [20] [21]

Unix-like systems

A free and open-source implementation of the Media Transfer Protocol is available as libmtp. [22] This library incorporates product and device IDs from many sources, [14] and is commonly used in other software for MTP support.

Graphical

GNOME applications like GNOME Files (formerly called Nautilus) and Archive Manager (formerly called File-Roller) use GIO-based GVfs to access files on MTP devices. Proper MTP support was added to GVfs in version 1.15.2 (2013-01-15) [23] by Philip Langdale. [24] [25] Early patches for GVfs to enable Google's direct I/O extensions are available. [26]

The KDE Project develops the MTP KIO Slave with a similar level of integration as GVfs.

Not related to GNOME or KDE is the *NIX graphical MTP-capable media player, gMTP.

Virtual file system

Several tools provide a FUSE based file system for mounting MTP devices within the Unix filesystem hierarchy, making it accessible to any program that operates on files and directories.

macOS

macOS has built-in support for MTP (through the application "Image Capture" [27] ) but no (third-party) drivers to mount MTP devices as drives. Also several third-party file transfer applications are available for Mac OS X v10.5 and later:

  • Android File Transfer is a simple MTP client. [28]
  • Android File Transfer For Linux (and Mac OS X), Open Source, License GPL Version 3, Graphical UI, Command line tool, FUSE wrapper - mounting your device, [29]
  • OpenMTP - Open Source MTP client. Advanced Android File Transfer Application for macOS. Graphical UI. Faster transfer speeds than Android File Transfer. [30]
  • XNJB also offers syncing of iTunes playlists. [31]
  • SyncMate Expert claims to also support MTP besides other synchronization tasks. The support can't be tested in the free version. [32]
  • Commander One PRO Pack - file manager that allows mounting MTP devices to Mac and managing their content. [33]

Other operating systems

Later versions of several operating systems, including AmigaOS, Android, AROS, MorphOS, and Symbian OS support MTP, sometimes with additional drivers or software.

A disadvantage of MTP devices on Android as compared to USB mass storage is that although file timestamps are preserved when copying files from the Android device to one's computer, when copying in the other direction, the file modification timestamps are replaced with the time the copy was done. [34] [35]

Other manufacturers

Companies, including Creative Technology, Intel, iriver, and Samsung Electronics, that manufacture devices based on Microsoft's "Portable Media Center specification", have widely adopted MTP. Supporting devices were introduced at the 2004 Consumer Electronics Show.

After an initial period of uncertain reactions, several large media player producers such as Creative Technology and iriver adopted the MTP protocol in place of their own protocols.

Many devices and audio software applications support MTP.

Alternatives

See also

Related Research Articles

<span class="mw-page-title-main">USB</span> Standard for computer data connections

Universal Serial Bus (USB) is an industry standard that allows data exchange and delivery of power between many types of electronics. It specifies its architecture, in particular its physical interface, and communication protocols for data transfer and power delivery to and from hosts, such as personal computers, to and from peripheral devices, e.g. displays, keyboards, and mass storage devices, and to and from intermediate hubs, which multiply the number of a host's ports.

<span class="mw-page-title-main">Live CD</span> Complete, bootable computer installation that runs directly from a CD-ROM

A live CD is a complete bootable computer installation including operating system which runs directly from a CD-ROM or similar storage device into a computer's memory, rather than loading from a hard disk drive. A live CD allows users to run an operating system for any purpose without installing it or making any changes to the computer's configuration. Live CDs can run on a computer without secondary storage, such as a hard disk drive, or with a corrupted hard disk drive or file system, allowing data recovery.

<span class="mw-page-title-main">Virtual file system</span> Abstract layer on top of a more concrete file system

A virtual file system (VFS) or virtual filesystem switch is an abstract layer on top of a more concrete file system. The purpose of a VFS is to allow client applications to access different types of concrete file systems in a uniform way. A VFS can, for example, be used to access local and network storage devices transparently without the client application noticing the difference. It can be used to bridge the differences in Windows, classic Mac OS/macOS and Unix filesystems, so that applications can access files on local file systems of those types without having to know what type of file system they are accessing.

<span class="mw-page-title-main">USB flash drive</span> Data storage device

A flash drive is a data storage device that includes flash memory with an integrated USB interface. A typical USB drive is removable, rewritable, and smaller than an optical disc, and usually weighs less than 30 g (1 oz). Since first offered for sale in late 2000, the storage capacities of USB drives range from 8 megabytes to 256 gigabytes (GB), 512 GB and 1 terabyte (TB). As of 2023, 2 TB flash drives were the largest currently in production. Some allow up to 100,000 write/erase cycles, depending on the exact type of memory chip used, and are thought to physically last between 10 and 100 years under normal circumstances.

<span class="mw-page-title-main">Network-attached storage</span> Computer data storage server

Network-attached storage (NAS) is a file-level computer data storage server connected to a computer network providing data access to a heterogeneous group of clients. The term "NAS" can refer to both the technology and systems involved, or a specialized device built for such functionality.

<span class="mw-page-title-main">File system</span> Computer filing system

In computing, a file system or filesystem governs file organization and access. A local file system is a capability of an operating system that services the applications running on the same computer. A distributed file system is a protocol that provides file access between networked computers.

Picture Transfer Protocol (PTP) is a protocol originally developed by the Photographic and Imaging Manufacturers Association (PIMA) to allow the transfer of images from digital cameras to computers and other peripheral devices without the need for additional device drivers. The protocol was standardized by the ISO in 2005. The current version of the standard is ISO 15740:2013.

Filesystem in Userspace (FUSE) is a software interface for Unix and Unix-like computer operating systems that lets non-privileged users create their own file systems without editing kernel code. This is achieved by running file system code in user space while the FUSE module provides only a bridge to the actual kernel interfaces.

<span class="mw-page-title-main">USB mass storage device class</span> USB device class for drives

The USB mass storage device class is a set of computing communications protocols, specifically a USB Device Class, defined by the USB Implementers Forum that makes a USB device accessible to a host computing device and enables file transfers between the host and the USB device. To a host, the USB device acts as an external hard drive; the protocol set interfaces with a number of storage devices.

gPhoto Software

gPhoto is a set of software applications and libraries for use in digital photography. gPhoto supports not just retrieving of images from camera devices, but also upload and remote controlled configuration and capture, depending on whether the camera supports those features.

<span class="mw-page-title-main">Live USB</span> USB drive with a full bootable operating system

A live USB is a portable USB-attached external data storage device containing a full operating system that can be booted from. The term is reminiscent of USB flash drives but may encompass an external hard disk drive or solid-state drive, though they may be referred to as "live HDD" and "live SSD" respectively. They are the evolutionary next step after live CDs, but with the added benefit of writable storage, allowing customizations to the booted operating system. Live USBs can be used in embedded systems for system administration, data recovery, or test driving, and can persistently save settings and install software packages on the USB device.

<span class="mw-page-title-main">Time Machine (macOS)</span> Backup software application developed by Apple and distributed as part of macOS

Time Machine is the backup mechanism of macOS, the desktop operating system developed by Apple. The software is designed to work with both local storage devices and network-attached disks, and is commonly used with external disk drives connected using either USB or Thunderbolt. It was first introduced in Mac OS X 10.5 Leopard, which was released in October 2007 and incrementally refined in subsequent releases of macOS. Time Machine was revamped in macOS 11 Big Sur to support APFS, thereby enabling "faster, more compact, and more reliable backups" than were possible previously.

<span class="mw-page-title-main">Sansa e200 series</span> SanDisk portable media player

The Sansa e200 series is a portable media player developed by SanDisk and released on January 5, 2006. The device is available in four capacities of Flash memory: 2 GB (e250), 4 GB (e260), 6 GB (e270), and 8 GB (e280). All players have a 1.8-inch, TFT LCD display with a resolution of 176 by 220 pixels. Certain files, if not in a format accepted by the player's original firmware, must first be converted with the Sansa Media Converter Windows software. This will convert images to bitmap format (.bmp) and videos to MJPEG, for v1 models. On v2 players it will convert videos to DivX and simply resize images. It is not possible to simply copy videos to the device, even if they seem to be in the correct format; trying to access them displays an error message.

Windows Rally is a set of technologies from Microsoft intended to simplify the setup and maintenance of wired and wireless network-connected devices. They aim to increase reliability and security of connectivity for users who connect the devices to the Internet or to computers running Microsoft Windows. These technologies provide control of network quality of service (QoS) and diagnostics for data sharing, communications, and entertainment. Windows Rally technologies provide provisioning for the following devices:

<span class="mw-page-title-main">Samsung SCH-U470</span> Mobile phone

The Samsung SCH-u470, or Juke and Verizon Wireless Juke, is a mobile phone offered exclusively by Verizon Wireless. It was announced on 2 October 2007, and released that same year on Q4 in three colors: red, teal, and navy (blue). The phone is a music player when closed, and can be swiveled for use of the mobile phone. It also has a VGA-resolution camera with a special "night shot" mode for taking photos in low-light conditions.

GVfs is GNOME's userspace virtual filesystem designed to work with the I/O abstraction of GIO, a library available in GLib since version 2.15.1. It installs several modules that are automatically used by applications using the APIs of libgio. There is also FUSE support that allows applications not using GIO to access the GVfs filesystems.

<span class="mw-page-title-main">Samsung Kies</span> Application developed by Samsung

Samsung Kies is a freeware software application used to communicate between Windows or Macintosh operating systems, and Samsung mobile phone and tablet computer devices, usually using a USB connection. Samsung has released new software to replace Kies, named Samsung Smart Switch, which is mainly directed at migrating customers onto new Samsung devices. The name K.I.E.S. originated as an acronym for "Key Intuitive Easy System". After version 2.0, the name was shortened to "Kies".

<span class="mw-page-title-main">Sansa c200 series</span> Portable Media Player

The Sansa c200 series is a line of portable media players developed by SanDisk. The line consists of two models: the c240, 1 GB, the c250, 2 GB. Both models feature a microSD card slot, a 1.4-inch LCD display, a built-in microphone, and an FM radio. c200 series players are available in four colors: black, red, pink, and blue.

Sideloading describes the process of transferring files between two local devices, in particular between a personal computer and a mobile device such as a mobile phone, smartphone, PDA, tablet, portable media player or e-reader.

<span class="mw-page-title-main">Commander One</span> File manager for macOS

Commander One is a dual-pane file manager designed for macOS. Developed by Electronic Team, Inc., the software is created entirely in Swift and aims to provide users with a tool to navigate, manage, and manipulate files and folders on their Mac computers. The application offers a wide range of features for both casual and professional users.

References

  1. 1 2 "Media Transfer Protocol Implementation Details". MTP defined in slide 3. Archived from the original on December 14, 2005.{{cite web}}: CS1 maint: unfit URL (link)
  2. "Ice Cream Sandwich supports USB mass storage after all, Galaxy Nexus does not". Engadget. November 25, 2011. Archived from the original on February 5, 2020. Retrieved January 5, 2020.
  3. "Final Availability of Windows Media Player 10 Brings More Music and More Choices to Music Fans" (Press release). Microsoft. September 2, 2004. Archived from the original on October 18, 2019. Retrieved October 18, 2019.
  4. "MTP, Portable Player Standard? Microsoft's McLauchlan Sets Us Straight". July 31, 2006. Archived from the original on August 4, 2016. Retrieved June 1, 2016.
  5. 1 2 3 4 5 "Media Transfer Protocol v.1.1 Spec and MTP v.1.1 Adopters Agreement". April 6, 2011. Archived from the original on September 29, 2018. Retrieved September 29, 2018.
  6. 1 2 "Fear and Loathing in the Media Transfer Protocol" (PDF). eLinux. PTP/MTP basics. Archived (PDF) from the original on February 7, 2021. Retrieved February 7, 2021.
  7. "MTP Over Various Transports". August 29, 2009. Archived from the original on May 1, 2019. Retrieved June 1, 2016.
  8. "MTP Specification". Archived from the original on June 4, 2011.
  9. "Google Issue Tracker". issuetracker.google.com. Retrieved April 2, 2022.
  10. "usb - Why does MTP show wrong directory location?". Android Enthusiasts Stack Exchange. Retrieved April 2, 2022.
  11. "Normal file read/write support with the GVFS MTP backend!". February 18, 2013. Archived from the original on April 14, 2016. Retrieved June 1, 2016.
  12. 1 2 "hanwen/go-mtpfs". GitHub . Archived from the original on October 7, 2018. Retrieved June 1, 2016.
  13. "libmtp README". July 8, 2017. Archived from the original on August 10, 2016. Retrieved July 9, 2017. Devices need different PIDs for every alternative interface due to the Windows USB stack.
  14. 1 2 "libmtp source code: music_players.h". Archived from the original on November 18, 2015. Retrieved November 26, 2015.
  15. "libmtp source code: ptp.h". Archived from the original on March 8, 2021. Retrieved July 9, 2017.
  16. "Webm (VP8, VP9, Opus) support for Sailfish - together.jolla.com". Archived from the original on March 4, 2016. Retrieved June 1, 2016.
  17. "Unable to use MTP using USB cable". Sailfishos.org. April 13, 2021. Retrieved April 13, 2021.
  18. "Media Transfer Protocol Porting Kit". Microsoft. Archived from the original on June 8, 2016. Retrieved June 1, 2016.
  19. "Sensors and Windows". Windows Portable Devices Team Blog. December 17, 2009. Archived from the original on October 18, 2019. Retrieved October 18, 2019.
  20. guenni (August 30, 2017). "Windows 10 has an MTP problem with Android devices | Born's Tech and Windows World". borncity.com. Archived from the original on October 27, 2020. Retrieved October 27, 2020.
  21. Leonhard, Woody (August 31, 2017). "Don't use Windows 10 to move data on your Android phone". Computerworld. Archived from the original on October 27, 2020. Retrieved October 27, 2020.
  22. "libmtp". Libmtp.sourceforge.net. Archived from the original on March 2, 2014. Retrieved March 15, 2014.
  23. "gvfs-1.15.2.changes". ftp.gnome.org. January 15, 2013. Archived from the original on March 29, 2021. Retrieved June 6, 2013.
  24. "Native gvfs backend for MTP devices". August 7, 2010. Archived from the original on April 14, 2016. Retrieved June 1, 2016.
  25. "gvfs - Virtual filesystem implementation for GIO". January 15, 2013. git commit adding MTP back-end to GVfs. Archived from the original on October 18, 2019. Retrieved June 1, 2016.
  26. "Bug 695984 – Add support for Android direct I/O extensions". Archived from the original on December 23, 2014. Retrieved June 1, 2016.
  27. "Transfer Photos from Android to Mac OS X". Osxdaily.com. February 8, 2013. Retrieved February 8, 2013.
  28. "Android File Transfer". Android.com. Archived from the original on March 29, 2021. Retrieved March 15, 2014.
  29. "Android File Transfer Linux Mac OS X". whoozle. Archived from the original on February 22, 2017. Retrieved December 2, 2016.
  30. "OpenMTP". GitHub.
  31. "XNJB". Richard Low. Archived from the original on January 25, 2021. Retrieved June 15, 2014.
  32. "SyncMate". ELTIMA software. Archived from the original on June 19, 2014. Retrieved June 15, 2014.
  33. "Commander One PRO Pack". IvanK_Eltima. Archived from the original on April 9, 2017. Retrieved April 20, 2017.
  34. "Issue 57065 - android - Writing files via MTP set date and time for pictures and files to current, does not preserve timestamp. - Android Open Source Project - Issue Tracker - Google Project Hosting". code.google.com. August 30, 2016. Archived from the original on October 11, 2016. Retrieved September 2, 2016.
  35. "Issue 18624 - android - setLastModified() always fails on Xoom unless running as root - Android Open Source Project - Issue Tracker - Google Project Hosting". code.google.com. August 30, 2016. Archived from the original on August 18, 2016. Retrieved September 2, 2016.