MTP Over Various Transports


Introduction

The Media Transfer Protocol (MTP) was originally created as an extension to the Picture Transfer Protocol but today it also supports media transfer, Device Services, command & control, and many other scenarios. MTP supports three transports: USB, IP, and Bluetooth.

One of most common drivers that WPD applications will interact with is the Media Transfer Protocol (MTP) driver. MTP was introduced in Windows XP with an inbox user mode driver allowing for effortless device installation and connectivity. MTP is standardized through the USB Implementer’s Forum (www.usb.org) and also features Windows-specific extensions.

We introduced a MTP driver for USB in Windows XP. In Windows Vista, we added support for MTP over TCP/IP for devices that use WiFi and LAN connections. In Windows 7, we continue the parade of MTP support with the introduction of Bluetooth.


3 transports, one protocol

MTP includes a protocol definition and several transport definitions. As devices and PCs pick and choose which connectivity transports they support, device & application developers can be assured that the MTP protocol and WPD API will be consistent. Three-transport support gives device manufacturers flexibility to choose wired or wireless, high or low power, faster or slower transfer speed, etc. The MTP driver is also the first multi-transport driver in Windows, which means that a device manufacturer can feel free to implement all three and Windows will choose the best. We’ll talk about that more in our next entry Multi-transport Devices in Windows 7.

**

USB

Our first MTP transport driver is also the fastest and most powerful way to connect an MTP-enabled device. Windows XP through Windows 7 support USB 1.1 or higher. The binding of MTP to USB is described in the MTP specification itself (https://www.usb.org/developers/devclass_docs/MTP_1.0.zip) and in the Still Imaging Capture Device Definition specification (https://www.usb.org/developers/devclass_docs/usb_still_img10.zip). Windows XP uses the Microsoft OS Descriptor to identify MTP devices; Windows Vista and Windows 7 can identify MTP devices by either the OS Descriptor or the USB Still Image Class Code (Class 6, Subclass 1, Protocol 1). Much of this is detailed in the Windows Portable Device Enabling Kit.

In Windows 7, we also enabled the USB Selective Suspend for the MTP driver, although this option is not enabled by default to preserve maximum ecosystem compatibility.

USB is great for fast file transfer, media synchronization, and charging the device while you’re using it.

**

IP

In Windows Vista, we implemented MTP over TCP/IP to enable WiFi and networked devices to interact with WPD applications. We used the PTP/IP binding (https://www.cipa.jp/ptp-ip/index_e.html), then used UPnP for pairing and discovery. When devices report their presence on a network via UPnP after the initial pairing, Windows will automatically connect and make the device available to the user.

MTP/IP is ideal for devices with WiFi that can be connected and synchronized anywhere in the home.

**

Bluetooth

In Windows 7, we introduced Bluetooth as the third transport for MTP. We implemented MTP over the L2CAP protocol for fast, efficient, and secure connections. The specification is available in the Windows Portable Device Enabling Kit. PC users can switch the connection on and off through the Devices & Printers folder, or devices themselves can initiate and terminate connections to the PC.

We also implemented an "auto connect" feature in which Windows attempts to connect to your device every few minutes to maintain a low power connection for automatic synchronization and status updates. When you are holding the device near your PC, you’re connected; when you walk away, the connection breaks and waits silently to reconnect when you return and your device gets back into Bluetooth range.

Applications can use the IPortableDeviceConnect interface to issue connect/disconnect requests to an MTP/Bluetooth device. When a connection request is made, the MTP/Bluetooth link is established, the WPD MTP driver stack will load, and the device becomes visible to WPD applications to connect to using the WPD API.

Windows requires Bluetooth 1.2 or higher with the Microsoft Bluetooth stack installed. For maximum security, Windows also requires that the device is paired securely with a pin code.

MTP/BT is great for low power, low speed scenarios like synchronizing PIM data or a quick file transfer.


Operating System Support

The MTP driver is present in Windows XP with Windows Media Player 10 or higher installed, Windows Vista, and Windows 7.

**

MTP Driver Support by Operating System

Windows Version

USB 1.1 or higher

IP

Bluetooth 1.2 or higher

Windows XP

Yes, with Windows Media Player 10 or higher

No

No

Windows Vista

Yes

Yes

No

Windows Vista + Platform Update for Window Vista

Yes

Yes

Yes

Windows 7

Yes

Yes

Yes

 

 

This posting is provided "AS IS" with no warranties and confers no rights.