# Media Transfer Protocol

Il Media Transfer Protocol (MTP) è un set di estensioni del protocollo di comunicazione PTP (Picture Transfer Protocol) per consentire il trasferimento di dati da lettori MP3, macchine fotografiche digitali e altri dispositivi digitali portatili, solitamente via USB.

## Storia

Il protocollo MTP, è stato introdotto nel 2006 dalla Microsoft con Windows Media Player 11 e con la gamma di lettori multimediali Creative Zen. Il gruppo di lavoro sui dispositivi del USB Implementers Forum ha infine standardizzato l'MTP come una classe di dispositivo USB tutti gli effetti nel maggio 2008. Da allora MTP è un'estensione ufficiale di PTP e condivide lo stesso codice di classe.
Nel 2011 è diventato il protocollo ufficiale per trasferire file da e per i dispositivi mobili utilizzanti Android.

## Descrizione

Lo scopo principale di questo protocollo è consentire il solo trasferimento di file multimediali e metadati associati da e verso dispositivi portatili, una funzione di trasferimento, in entrata o in uscita, alla volta. Non supporta operazioni come l'apertura e la modifica. Un dispositivo mobile alimentato a batteria può segnalare il livello di carica della batteria tramite MTP.
Il protocollo è stato originariamente implementato per l'uso su USB, ma è stato esteso per l'uso su TCP/IP e Bluetooth. Windows Vista supporta MTP su TCP/IP. Windows 7 e Windows Vista con Platform Update per Windows Vista supportano anche MTP tramite Bluetooth. L'host che si connette a un dispositivo MTP è chiamato MTP Initiator mentre il dispositivo stesso è un MTP Responder.
Uno dei motivi principali per utilizzare MTP piuttosto che, ad esempio, la classe di dispositivi di archiviazione di massa USB (MSC) è che quest'ultima opera a livello di blocco di file system in una memoria di massa (di solito, in pratica, un blocco FAT), piuttosto che al livello di file logico. In altre parole, la classe di archiviazione di massa USB è progettata per fornire a un computer host un accesso indifferenziato alla memoria di massa di massa, come compact flash, piuttosto che a un file system, che potrebbe essere condiviso in sicurezza con il dispositivo di destinazione (ad eccezione di file specifici che l'host potrebbe modificare/accedere). In pratica, quindi, quando un computer host USB ha montato una partizione MSC, assume il controllo assoluto dello storage, che poi potrebbe essere modificato in modo non sicuro dal dispositivo col rischio del danneggiamento dei dati. Inoltre, poiché il computer host ha il pieno controllo del dispositivo di archiviazione collegato, esiste il rischio che il computer host possa danneggiare il file system, riformattarlo in un file system non supportato dal dispositivo USB o modificarlo in altro modo in tal modo che il dispositivo USB non potrà capirlo completamente.
MTP e PTP risolvono in modo specifico questo problema trasformando l'unità di archiviazione come gestita a livello di file locale anziché in un'intera unità di archiviazione di massa (possibilmente molto grande) a livello di blocco. In questo modo, MTP funziona come un file system transazionale: l'intero file può solo essere scritto o letto. Il supporto di archiviazione non è interessato da trasferimenti non riusciti.
Laddove il dispositivo mantiene un database/indice del contenuto del disco, MTP consente di risparmiare sul costo della nuova scansione dell'intero disco ogni volta che il contenuto viene modificato. Inoltre, l'MTP consente agli iniziatori MTP di identificare le capacità specifiche dei dispositivi rispetto ai formati e alle funzionalità dei file. In particolare, gli iniziatori MTP potrebbero dover fornire password e altre informazioni per sbloccare file o abilitare in altro modo la gestione dei diritti digitali.

### Confronto con USB Mass Storage

L'utilizzo di MTP al posto del classico protocollo MSC (Mass Storage Class) comporta alcuni vantaggi pratici per gli utenti che utilizzano abitualmente Windows Media Player, ma rende di fatto meno accessibile la periferica rispetto ad un utilizzo col protocollo MSC.
Ad esempio: un lettore MP3 che viene visto tramite MSC come una comune chiave di memoria (e quindi anche in Risorse del Computer si comporta come tale, avente una lettera di unità) è molto più versatile di un lettore MP3 che utilizza il protocollo MTP e che viene visto dalla gestione delle risorse del computer come dispositivo "Hierarchical", cioè come sotto cartella di risorse del computer. Le sottocartelle poi non portano indicazione sulla data e l'ora di creazione dei file contenuti (molto scomodo se il lettore MP3 è dotato di registratore vocale in quanto si perdono la data e l'ora in cui sono stati registrati i dati; infatti una volta trasferiti sul pc acquisteranno la data e l'ora del momento esatto del trasferimento. Altro difetto sta nel fatto che durante un trasferimento non si deve chiudere la cartella del lettore mp3 dalla quale si stanno prelevando i file altrimenti il trasferimento si interrompe.
Il vantaggio di questa modalità apparentemente limitata dal punto di vista del computer si può trovare invece nel lato del dispositivo mobile, in quanto il suo eventuale sistema operativo non percepirà la memoria di massa come "scollegata", dunque non porrà limiti alle operazioni eseguibili mentre è collegato al computer.

## Implementazioni

L'MTP è integrato in molte piattaforme:
* Microsoft Windows lo supporta nativamente da Windows Vista in poi (Windows XP lo supportava nativamente solo se Windows Media Player 11 era installato).
* L'Xbox 360 lo supporta nativamente.
* Linux su alcuni programmi specifici:
** L'ambiente GNOME può trasferire file con GNOME Files grazie a GNOME VFS integrato in tutte le distribuzione GNU/Linux
** L'ambiente KDE può trasferire file con Dolphin grazie al sistema KIO
** Amarok, Audacious, Banshee e Rhythmbox hanno il supporto a MTP attraverso libmtp
* macOS ha bisogno di un programma chiamato XNJB.
* Symbian OS usa MTP per musica, video e immagini.