What is MTP anyway?

MTPĀ is the successor to PTP (Picture Transfer Protocol) that has been used by cameras. Since PTP was geared towards pictures (the first P in PTP), MTP was designed to be a more media-centric solution (and hence the M for media in MTP) and offers More-Than-PTP :).

MTP is an extension to PTP and all PTP protocol semantics are valid in MTP. PTP/MTP uses a command-response style of communication. The roles of the involved parties are very clearly defined as well. There are always two roles - the initiator and the responder. The PC typically is the initiator, and the media device is always the responder. You can also have another non-PC device be an initiator (say a car deck or an X-Box). A device can never be both at the same time.

The initiator 'initiates' communication by sending a commmand to the responder. The responder mulls over the command and sends back an appropriate response. There may be a data-phase associated with the command in which case the direction of data flow must be known before hand and agreed upon by both the initiator and the responder. This is almost a limitation in MTP in that there isn't a descriptive header indicating data flows for new commands.

The responder is actually allowed one way of initiating communication independent of the initiator. It can send events to the initiator. However no data can be sent along with the event. If there is any data that needs to be read as part of the event, the initiator must send an MTP command and the device may then send data in response to the command.

Starting with WMP10 and going forward with WMP11 and Vista, a class driver for MTP devices is available. This allows media devices (that support MTP) to just work. If you're looking for a media device that supports MTP, check out the PlaysForSure website. All new PlaysForSure devices have to support MTP.