# Media Transfer Protocol

Das Media Transfer Protocol (MTP) ist ein Netzwerkprotokoll zur Übertragung von Dateien zwischen mobilen Endgeräten (wie z. B. Smartphones) und PCs. Es ist eine Weiterentwicklung des Picture Transfer Protocol.

## Einführung

Vorgestellt wurde MTP im Herbst 2004 von den Unternehmen Microsoft und Canon. Es soll das Picture Transfer Protocol so erweitern, dass die Kommunikation neben den bisher unterstützten Digitalkameras auch mit anderen Geräten möglich wird. So ermöglicht eine spezielle Software für USB-Massenspeicher (UMS), Audiodaten ohne zusätzliche Gerätetreiber auf MTP-fähige MP3-Player zu laden. Mittlerweile wird MTP auch von vielen Smartphones verwendet.

## Übertragung

Zur Datenübertragung mit einem MTP-Gerät wird eine MTP-fähige Software benötigt. Einige MP3-Player lassen sich mit Hilfe einer Firmware-Aktualisierung als UMS-Gerät betreiben; UMS-Geräte werden von allen gängigen Betriebssystemen ohne spezielle Treiber unterstützt.

## Vorteile

* Das Gerät kann ohne vorheriges Abmelden („Auswerfen“) vom System abgezogen werden
* Der Hersteller kann beliebige Dateisysteme auf dem Gerät verwenden
* Mit dem PC können Wiedergabelisten für den Player erstellt werden
* Der Funktionsumfang des Gerätes wird kaum gestört, da das Gerät gleichzeitig mit dem Computer auf denselben Speicher zugreifen kann.

## Nachteile

* Es ist kein direkter Zugriff auf das Dateisystem möglich
* Das Protokoll wird nicht von älteren Betriebssystemen unterstützt.
* Die MTP-Software unterstützt meist nicht alle Funktionen und Formate, die das Gerät bietet, bzw. hat Probleme beim Konvertieren.
* Die Übertragung via MTP ist meist deutlich langsamer als beim USB-Massenspeicher-Zugriff.

## Anwendungen

* Unter Linux (POSIX) wird MTP-Kompatibilität erreicht mit:
** gvfs (Gnome Virtual File System), virtuelles Dateisystem des GIMP-Toolkits. Enthalten in Ubuntu ab Version 13.04, zudem als Backport verfügbar für 12.10 und 12.04.
** libgphoto2, eine Bibliothek die Picture Transfer Protocol (PTP) mit einigen MTP-Erweiterungen unterstützt. Ursprünglich war nur Kameraunterstützung geplant. Die folgende Programme benutzen libgphoto2:
*** gPhoto, das Kommandozeilenprogramm gphoto2
*** gPhotofs kann MTP und PTP Geräte mit Hilfe von FUSE und libgphoto2 ins Dateisystem einhängen
*** F-Spot
** libmtp eine Bibliothek, die extra für MTP entwickelt wurde. Sie enthält ebenfalls Kommandozeilenprogramme. Die folgenden Programme benutzen libmtp:
*** Amarok
*** Banshee
*** Clementine
*** gnomad2
*** JMTPSynchronizer Java basierter MTP-Synchronisierer
*** kio-mtp
*** MTPFS kann MTP-Geräte mit Hilfe von FUSE und libmtp einhängen
*** MTPSync
*** Rhythmbox
* AmigaOS/MorphOS besitzt MTP-Unterstützung über den PTP-Klassentreiber im Poseidon USB Stack V4.0.
* Mac OS X erhält MTP-Unterstützung z. B. durch das Open-Source-Programm XNJB (XNJB benutzt u. a. libmtp) oder das proprietäre Android File Transfer von Google.
* Microsoft Windows unterstützt MTP ab Vista (außer N-Versionen) nativ. XP und Windows Server 2003 unterstützen MTP nur, wenn der Windows Media Player 10 installiert ist; hierbei ist die Unterstützung (zumindest bei einigen portablen Geräten) jedoch auf Bild- und Audio-Dateien beschränkt. Erst mit dem letzten für Windows XP verfügbaren Windows Media Player 11 wird eine vollständige Unterstützung auch von Video-Dateien erreicht. Ältere Windowsversionen haben keinerlei MTP-Unterstützung.
* Symbian OS v9.5 hat native MTP-Unterstützung für Musik, Video und Bilder.
* Xbox 360 hat native Unterstützung.
* Seit Android 3.1 "Honeycomb" bietet das Smartphone-Betriebssystem eine native Unterstützung für MTP.

## Quellen

* ↑ Pressemitteilung zur Einführung des MTP-Standards
* ↑ http://www.webupd8.org/2013/01/upgrade-to-gvfs-with-mtp-support-in.html
* ↑ gphoto.org
* ↑ libmtp.sourceforge.net, auf SourceForge
* ↑ gnomad2.sourceforge.net, auf SourceForge
* ↑ jmtpsynchronizer
* ↑ adebenham.com/mtpfs
* ↑ adebenham.com/mtpsync
* ↑ XNJB, auf wentnet.com
* ↑ Android File Transfer, android.com
* ↑ symbian.com (Memento vom 18. Dezember 2008 im Internet Archive)