Für den Dateitransfer zwischen Rechner und Smartphone via USB-Kabel erweist sich MTP als äußerst sinnvolle Erweiterung: Es überträgt Daten aller Art, erleichtert die Bedienung und vermeidet das Risiko eines Datenverlusts.
Ob Smartphone oder Smartwatch, Tablet, Digitalkamera, MP3-Player oder Laptop – überall horten wir alle unsere digitalen Schätze. Sie auf das gerade angesagte Endgerät zu übertragen oder auch von dort wieder in das (hoffentlich zentrale) Multimedia-Backup zu sichern, gerät aufgrund der Menge und Vielfalt der Daten immer aufwendiger und unübersichtlicher.
Die Synchronisation von Daten und der Austausch zwischen den verschiedenen mobilen Geräten und Datenträgern erweist sich seit jeher als ein Drama ohne wirklichen Schlussakt. Als Kernelement beim Sichern und Verteilen von Daten ist die Synchronisation insbesondere dann relevant, wenn Sie viel unterwegs sind und Ihren “Server” mit sich herumtragen [1]. Die meisten Probleme entstehen rund um das Smartphone, das sich zunehmend vom einfachen Telefon hin zum Gerät für alle Lebenslagen entwickelt.
Im Umfeld mobiler Geräte entstanden diverse Mechanismen und Protokolle, um die keineswegs triviale Aufgabe des Datenabgleichs einerseits überhaupt zu ermöglichen und andererseits den Aufwand dafür in überschaubarem Rahmen zu halten. Als Klassiker fungieren hier FTP und dessen verschlüsselte Variante FTPS (“FTP over SSL/TLS”), aber auch die Werkzeuge Secure Copy und Rsync.
Anwender greifen dabei gern zu Programmen wie BareFTP [2], Gftp [3], Grsync [4], Unison [5], Osync [6] und BackupPC [7]. Sie zielen darauf ab, über eine grafische Bedienoberfläche die kleinen Hindernisse beim Transfer und Abgleich von Daten aus dem Weg zu räumen. Dabei bauen sie entweder eine Netzwerkverbindung auf oder setzen voraus, dass das angegebene Dateisystem/Medium exklusiv im System eingebunden ist.
Ein gleichzeitiger, beidseitiger Zugriff gerät mitunter etwas holprig – etwa, wenn Sie mit dem Smartphone Videos aufnehmen und das Material gleichzeitig auf einen anderen Rechner überspielen möchten. Vergessen Sie das Aushängen von Dateisystemen und ziehen einfach das USB-Kabel von einem Gerät ab, sorgt das für Verdruss und inkonsistente Daten.
An dieser kitzligen Stelle kommt das Multimedia Transfer Protocol MTP als Vermittler ins Spiel: Es tritt an, um einerseits für den Benutzer die Situation zu entschärfen und andererseits den Datentransfer zwischen den Datenträgern zu vereinfachen.
Grundlagen
MTP fungiert als Nachfolger des Picture Transfer Protocol (PTP) und dessen Erweiterung Picture Transfer Protocol over Internet Protocol (PTP/IP) [8]. Das im Herbst 2004 von Microsoft und Canon vorgestellte Protokoll zählt zum Fundus des Windows Media Framework, das bis Windows Vista eigenständig gepflegt wurde und seitdem als Bestandteil der Microsoft Media Foundation weiterlebt [9].
Sowohl bei PTP als auch bei PTP/IP handelt es sich um Verbindungsprotokolle, die ausschließlich zum Übertragen von Fotos zwischen Digitalkameras und Rechnern entwickelt wurden. MTP erweitert deren Fähigkeiten um den Austausch von Audiodateien zwischen mobilen Geräten wie Smartphone oder MP3-Playern und dem Rechner – und zwar in beiden Richtungen, inklusive Abspiellisten. Das umfasst die drei Formate M3U [10], PLS [11] und XSPF [12].
Zur Datenübertragung benötigen Sie eine MTP-fähige Software. Rechner und mobiles Endgerät greifen dann über das Protokoll gleichzeitig auf das Verzeichnis zu und halten die Daten damit auf beiden Seiten synchron [13]. Der Kasten “Betriebssystem und Support” erklärt, wo Sie MTP überall benutzen können.
Betriebssystem und Support
Alle gängigen Betriebssysteme unterstützen mittlerweile MTP, neben Microsoft Windows also auch Linux, Android, MacOS, Symbian und die Xbox 360. Unter Linux fassen die Libmtp [18] sowie – ausschließlich für Fotos – die Libgphoto2 [19] die entsprechenden Funktionen zusammen. Programme zum Abspielen von Mediadaten wie Amarok, Clementine, Rhythmbox und MTPSync greifen damit direkt auf die Daten der eingebundenen Hardware zu; für Fotos kommen Sie mithilfe von Gphoto, F-Spot oder Shotwell in denselben Genuss. Die Distributionen verpacken die zugehörigen Werkzeuge in den beiden Paketen mtp-tools und gmtp.
Das Einbinden eines MTP-Geräts in das lokale Filesystem gelingt explizit über das MTP File System MTPFS [20]. Unter Debian und Ubuntu gibt es dafür die beiden Pakete go-mtpfs, das lediglich Android-Geräte als MTP-Geräte einbindet, und jmtpfs. Das (allerdings veraltete) Paket mtpfs stellt MTPFS als Dateisystem im Userspace bereit (FUSE). Es wurde speziell für den Datenaustausch zwischen Linux oder MacOS und Android via USB für genau die Endgeräte entwickelt, die zwar MTP unterstützen, aber dafür kein USB mehr. Das betrifft insbesondere alle Android-Versionen ab der Version 4 [21]. Der Umstieg zu MTP war erforderlich, damit das Betriebssystem jederzeit vollen Zugriff auf die externe Speicherkarte erhält, die auch den installierten Apps als Datenspeicher dient.
Vor der Einführung von MTP lief die Kommunikation zwischen zwei Geräten ausschließlich über den USB-Stack und ein USB-Kabel. Kommt es hier während des Transfers zu einer unabsichtlichen Trennung der Verbindung, gehen Daten verloren. Beim Einsatz von MTP steuert hingegen das jeweilige Gerät das Schreiben und Lesen, was Datenverluste verhindert. Sie können also die Geräte ohne vorheriges Aushängen einfach voneinander trennen.
MTP beseitigt auch das 4-GByte-Limit in Bezug auf die Dateigröße. Bei FullHD-Videos von Action-Cams sind diese Größen keineswegs mehr Zukunftsmusik. Zudem beschränkt die Kopplung zweier Geräte via MTP die Verbindung auf das Übertragen von Multimedia-Daten, auf den Rest der Inhalte kann dabei nicht zugegriffen werden. Würden Sie das Smartphone via USB-Kabel zum Rechner verbinden, wäre es einem Programm auf dem PC theoretisch möglich, auf sämtliche Daten zuzugreifen oder auch die Speicherkarte des Smartphones neu zu formatieren.
Auf Betriebssystemebene agiert MTP als eine Art Vermittler zwischen den unterschiedlichen Dateisystemen der verbundenen Geräte. Es spielt also keine Rolle, ob etwa das Betriebssystem des Rechners das Dateisystem auf dem MP3-Player interpretieren kann. Bei einer USB-Verbindung müssen hingegen beide Geräte die jeweiligen Dateisysteme unterstützen, sonst klappt der Austausch nicht. Während die Hersteller USB-Speicher immer noch mit FAT als kleinstem gemeinsamen Nenner ausliefern, nutzt Android Ext4 und MacOS HFS/HFS+ respektive APFS, während unter Linux neben Ext3/4 auch Btrfs und ZFS vertreten sind.
Im Alltag spielt insbesondere der parallele Zugriff auf die Daten eine große Rolle. Während einer Übertragung stehen auf den Geräten andere Funktionen weiter zur Verfügung – so können Sie beispielsweise mit dem Smartphone während eines Datentransfers weiter telefonieren. Bei einer Kommunikation via USB würde das nicht klappen.
Der Nachteil von MTP: Der Transfer dauert viel länger als über eine reine USB-Verbindung. Zudem können Sie die Daten erst einsehen oder ändern, nachdem Sie sie auf das Zielsystem transferiert haben. Dabei vermag MTP nur einen einzigen Vorgang auf einmal auszuführen, kann also entweder nur lesen, nur schreiben oder nur löschen. Ältere Betriebssystemversionen unterstützen das Format oft nicht nativ und implementieren nicht alle Funktionen und Formate eines Geräts. Das kann zu Fehlern bei der Umwandlung zwischen den Betriebssystemwelten führen.
Testumgebung
Alle Tests zu MTP erfolgten mit einem Rechner unter Debian 8.9 und einem Samsung Galaxy S4 mit Android 5, die wir über ein USB-Kabel miteinander verbanden. Abbildung 1 zeigt das von lsusb erkannte Gerät 6 an Bus 2. Die Wahl der Werkzeuge und Aktionen trafen wir im Hinblick auf den Alltagseinsatz. Neben Tools für die Kommandozeile untersuchten wir auch das grafische Werkzeug Gmtp.

Abbildung 1: Lsusb zeigt die am USB-Bus verbundenen Geräte an. Das zum Test verwendete Samsung Galaxy S4 taucht hier als Bus 002 Device 006 auf.
Warnung
Einige der vorgestellten Werkzeuge können nachhaltigen Schaden auf dem via MTP verbundenen Gerät anrichten. Wo sich uns nicht eindeutig erschloss, wozu ein Programm oder Feature dient, verzichteten wir auf Experimente, um das Testequipment nicht irreparabel zu beschädigen. Verfügen Sie über Erkenntnisse, die uns verborgen blieben, freuen wir uns über Ihre Tipps und Anmerkungen für einen Folgeartikel.
Werkzeuge
Das Paket mtp-tools enthält derzeit knapp zwei Dutzend Kommandozeilenwerkzeuge. Die Dokumentation dazu fällt allerdings äußerst knapp aus. Eine Manpage [14] existiert zwar, hilft aber nicht weiter. Auch eine intensive Internet-Recherche förderte nicht viel Substanzielles zutage. Als hilfreich erwiesen sich immerhin die entsprechenden Seiten in den Wikis von Debian [15], Ubuntu [16] und Arch Linux [17], die sich gegenseitig ergänzen. Bei vielen Programmen lässt sich deren Funktion wenigstens aus dem Namen herleiten (siehe Tabelle “Werkzeugliste”).
|
Funktionsbereich |
Programme |
|---|---|
|
Geräte finden |
|
|
Ordner/Dateien auflisten |
|
|
Abspiellisten erhalten |
|
|
Verbindung herstellen |
|
|
Alben und Cover finden |
|
|
Tracks eines Albums |
|
|
Verzeichnis anlegen |
|
|
Prüfen, ob Track existiert |
|
|
Datei übertragen |
|
|
Datei löschen |
|
|
Vorschaubild erhalten |
|
|
Track senden |
|
|
Abspielliste anlegen |
|
|
Gerät formatieren |
|
Verbindungsaufnahme
Zunächst einmal gilt es, angeschlossene Geräte zu finden, die MTP unterstützen. Dabei hilft das Kommando mtp-detect für die Geräte, die mittels USB-Kabel miteinander verbunden sind.
Die Ausgabe in Listing 1 führt das in Abbildung 1 schon gezeigte Smartphone auf, wobei es neben den USB-Informationen ausführliche Geräteinformationen liefert, wie etwa den Hersteller, das Modell, die Seriennummer und weitere Eigenschaften. Damit klären Sie vor der Datenübertragung eindeutig, mit welchem verbundenen Gerät eine Kommunikation stattfindet.
Listing 1
$ mtp-detect
...
Listing raw device(s)
Found 1 device(s):
Samsung: Galaxy models (MTP) (04e8:6860) @ bus 2, dev 6
...
$
Im Alltag ebenso relevant sind die unterstützten Operationen und Dateiformate für Video, Audio, Bild und Abspiellisten. Listing 2 zeigt die ermittelten Informationen.
Listing 2
... libmtp supported (playable) filetypes: ISO MPEG-1 Audio Layer 3 Microsoft Windows Media Audio Microsoft Windows Media Video JPEG file Folder Abstract Playlist file GIF bitmap file BMP bitmap file Portable Network Graphics Audio Video Interleave MPEG video stream Microsoft Advanced Systems Format MPEG-4 Part 14 Container Format (Audio+Video Emphasis) Undefined video file Abstract Album file Ogg container format Free Lossless Audio Codec (FLAC) ...
In der Regel genügt es, das MTP-fähige Gerät via USB-Kabel an den Rechner anzustecken. Es wird zumeist automatisch erkannt und eingebunden. Sofern der verwendete Kernel keine automatische Erkennung unterstützt, nehmen Sie eine solche manuell vor, etwa mit dem Werkzeug mtp-connect.
Als verantwortungsbewusster Nutzer haben Sie auf dem Smartphone oder Tablet eine Zugangssperre eingerichtet. Erst nach einer expliziten Freigabe am Gerät darf der Rechner auf die nun via MTP bereitstehenden Verzeichnisinhalte zugreifen (Abbildung 2). Das Einbinden erfolgt dann über den Pfad mtp://USB-Device-ID. Abbildung 3 zeigt das für unser Smartphone im XFCE-Dateimanager Thunar. Einschränkungen zum Lesen bestimmter Verzeichnisse kennt zumindest Android 5 nicht.
Ordner und Dateien
Jeder Eintrag in einem MTP-Dateisystem besitzt eine ID, die Sie benötigen, um später Aktionen im MTP-Dateisystem vorzunehmen. Als Werkzeuge zum Lesen der bestehenden Einträge stehen Ihnen mtp-folders, mtp-files und mtp-filetree zur Verfügung. Ersteres liefert die Namen der Verzeichnisse, das zweite die enthaltenen Dateien und das dritte den gesamten Verzeichnisbaum. Listing 3 zeigt einen Ausschnitt der gefundenen Verzeichnisse mit deren Namen und IDs. Unterverzeichnisse erscheinen dabei entsprechend mit Leerzeichen eingerückt.
Listing 3
$ mtp-folders
...
mtp-folders: Successfully connected
Storage: Phone
1 Music
2 Podcasts
3 Ringtones
4 Alarms
5 Notifications
6 Pictures
119 Screenshots
7 Movies
8 Download
95 MyScriptDownload
9 DCIM
85 Camera
...
Das Kommando mtp-files erzeugt eine Liste sämtlicher Dateien auf dem via MTP eingebundenen Speichermedium beziehungsweise Gerät. Jeder Eintrag hat dabei die in Listing 4 gezeigte Form. Die Metadaten umfassen den Dateinamen, die Dateigröße, die Parent ID, die Storage ID und den Dateityp. Bei der Parent ID handelt es sich um die ID des Verzeichnisses, in dem die Datei liegt – aus Listing 3 ersehen Sie, dass es sich hier um das Verzeichnis namens Screenshots handelt. Laut Android-Entwicklerreferenz bezeichnet die Storage ID den Speicherbereich, in dem die Datei abgelegt ist.
Listing 4
$ mtp-files
...
File ID: 384
Filename: Screenshot_2017-10-14-22-24-55.png
File size 126012 (0x000000000001EC3C) bytes
Parent ID: 119
Storage ID: 0x00010001
Filetype: Portable Network Graphics
...
$
Der Befehl mtp-filetree erzeugt einen kompletten Dateibaum und sammelt die Namen der Verzeichnisse sowie der darin enthaltenen Dateien. Die Ausgabeform entspricht der von Mtp-folders. Listing 5 zeigt einen Ausschnitt der Ausgabe.
Listing 5
$ mtp-filetree
...
5 Notifications
6 Pictures
119 Screenshots
384 Screenshot_2017-10-14-22-24-55.png
7 Movies
...
$
Verzeichnis anlegen
Neue Ordner legen Sie mithilfe von mtp-newfolder an, das drei Parameter erwartet: den Namen des neuen Verzeichnisses, den Namen des Elternverzeichnisses (0 steht hier für das Root-Verzeichnis) sowie den Speicherbereich in Form einer Storage ID. Ein Wert von 0 benutzt den primären Speicher.
Listing 6 zeigt das Erzeugen eines neuen Verzeichnisses namens mtptest/ im Verzeichnis mit der Parent ID 22, was auf dem Gerät Eigene Dateien/Dokumente entspricht. Nach dem erfolgreichen Anlegen gibt Mtp-newfolder dessen neue ID aus, die im Listing 100288 lautet.
Listing 6
$ mtp-newfolder mtptest 22 0
Unable to open ~/.mtpz-data for reading, MTPZ disabled.
libmtp version: 1.1.8
Device 0 (VID=04e8 and PID=6860) is a Samsung Galaxy models (MTP).
ignoring libusb_claim_interface() = -6PTP_ERROR_IO: failed to open session, trying again after resetting USB interface
LIBMTP libusb: Attempt to reset device
New folder created with ID: 100288
Daten hin- und herschieben
Nun schieben wir Daten in das neue Verzeichnis. Dafür gibt es die Kommandos mtp-sendfile und mtp-getfile. Listing 7 zeigt den Aufruf, um die lokale Datei hackerfunk-037.mp3 ins zuvor erzeugte Verzeichnis mtptest/ mit der ID 100288 zu übertragen. Im Test dauerte der Transfer der rund 90 MByte großen Audiodatei rund 5 Sekunden.
Listing 7
$ mtp-sendfile hackerfunk-037.mp3 100288
Unable to open ~/.mtpz-data for reading, MTPZ disabled.
libmtp version: 1.1.8
Device 0 (VID=04e8 and PID=6860) is a Samsung Galaxy models (MTP).
Sending hackerfunk-037.mp3 to 100288
type: mp3, 2
Sending file...
Progress: 90752739 of 90752739 (100%)
New file ID: 100287
$
Um die Datei stattdessen im bereits existierenden Ordner Podcasts/ abzulegen, gilt es zunächst, dessen ID herauszufinden. Dazu kombinieren Sie das bereits oben erklärte Kommando mtp-folders mit dem Veteran Grep. Listing 8 zeigt, wie das aussieht. Das eigentliche Hochladen der Datei erfolgt dann analog zu Listing 7.
Listing 8
$ mtp-folders | grep Podcasts
Unable to open ~/.mtpz-data for reading, MTPZ disabled.
Device 0 (VID=04e8 and PID=6860) is a Samsung Galaxy models (MTP).
2 Podcasts
$
Um eine Datei vom Smartphone auf den Rechner zu ziehen, setzen Sie das Kommando mtp-getfile ein. Das hilft beispielsweise beim Backup von Fotos, Kontaktdaten, Chat-Protokollen oder GPX-Tracks, wenn Sie keine automatisierte Cloud-Spiegelung via Google Drive oder Dropbox aktiviert haben oder die Verbindung zu einem solchen Dienst gerade nicht zur Verfügung steht.
Mtp-getfile erwartet dabei zwei Parameter – zuerst die ID der Datei auf dem Smartphone, dann den Namen der Zieldatei. Die ID der Datei erhalten Sie über die Kombination von Mtp-filetree und Grep. Für den Screenshot aus Listing 5 lautet die ID 384; das Kommando aus Listing 9 kopiert ihn auf den Rechner.
Listing 9
$ mtp-getfile 384 Screenshot_2017-10-14-22-24-55.png
Unable to open ~/.mtpz-data for reading, MTPZ disabled.
libmtp version: 1.1.8
Device 0 (VID=04e8 and PID=6860) is a Samsung Galaxy models (MTP).
ignoring libusb_claim_interface() = -6PTP_ERROR_IO: failed to open session, trying again after resetting USB interface
LIBMTP libusb: Attempt to reset device
Getting file/track 384 to local file Screenshot_2017-10-14-22-24-55.png
Progress: 126028 of 126028 (100%)
Dateien löschen
Auch beim Löschen identifizieren Sie die fragliche Datei über deren ID. Im Beispiel aus Listing 10 muss dazu wieder der Screenshot mit der ID 384 herhalten. Als Kommando kommt mtp-delfile mit dem Schalter -n und der Datei-ID zum Einsatz. Es führt den Auftrag ohne weitere Rückfragen aus – gelöscht ist gelöscht.
Listing 10
$ mtp-delfile -n 384
Unable to open ~/.mtpz-data for reading, MTPZ disabled.
libmtp version: 1.1.8
Device 0 (VID=04e8 and PID=6860) is a Samsung Galaxy models (MTP).
Deleting 384
$
Musik, Playlists, Bilder
Speziell für Musikdaten gibt es die Kommandos mtp-albumart, mtp-albums, mtp-getplaylist, mtp-newplaylist, mtp-playlists, mtp-sendtr, mtp-tracks und mtp-trexists (siehe Tabelle “Werkzeugliste”). Vorschaubilder aus digitalen Inhalten erhalten Sie über mtp-thumb.
Gmtp
Recht handlich zeigt sich das Programm Gmtp, das alle gängigen Distributionen in ihren Repositories führen. Es setzt auf dem GTK-Framework auf und unterstützt nicht nur das Transferieren, Löschen, Umbenennen und Verschieben von Dateien, sondern auch den Umgang mit Verzeichnissen. Abbildung 4 zeigt die Bedienoberfläche von Gmtp mit diversen Podcasts-Audios.

Abbildung 4: Das GTK-basierte Gmtp stellt eine übersichtliche Bedienoberfläche für MTP-Aktionen bereit.
Für Audioformate wie MP3, WMA, OGG und FLAC erzeugt Gmtp nicht nur Abspiellisten im M3U-Format, sondern stellt zudem sicher, dass alle Metadaten korrekt eingetragen sind. Abbildung 5 zeigt das Dialogfenster beim Erstellen einer Abspielliste.
Fazit
Für den Datentransfer zwischen Rechner und Smartphone via USB-Kabel erweist sich MTP als äußerst sinnvolle Erweiterung. Es erleichtert die Bedienung, umgeht die Risiken einer reinen USB-Übertragung und funktioniert anstandslos mit akzeptabler Datenrate. Grafische Werkzeuge wie Gmtp machen den Einsatz von MTP vollends breitenfähig.
Kommunizieren die verbundenen Geräte über andere Schnittstellen, wie etwa (W)LAN, Bluetooth oder IR, dann kann es von Vorteil sein, diese direkt mit den entsprechenden Kommandos zu nutzen. Behalten Sie dabei jedoch die Sicherheit im Hinterkopf: Insbesondere bei der drahtlosen Kommunikation können Dritte das Gesendete aufzeichnen und auswerten. Dagegen lässt sich die Kommunikation über ein USB-Kabel nicht so leicht abhören und macht den Transfer vom Netzwerk/Internet unabhängig.
Danksagung
Die Autoren bedanken sich bei Gerold Rupprecht und Werner Heuser für deren Anregungen und Kritik im Vorfeld dieses Beitrags.
Die Autoren
Frank Hofmann arbeitet von unterwegs, bevorzugt in Berlin, Genf und Kapstadt, als Entwickler, Trainer und Autor. Er ist Koautor des Debian-Paketmanagement-Buchs (http://www.dpmb.org/). Mandy Neumeyer arbeitet im Tourismus, lebt seit neun Jahren in Südafrika, und baut zurzeit ein zusätzliches Einkommen als digitaler Nomade auf.
Infos
-
Kollaborative Anwendungen: Frank Hofmann, Mandy Neumeyer, “Luftnummern”, LU 11/2017, S. 38, https://www.linux-community.de/39860
-
BareFTP: http://www.bareftp.org
-
Gftp: https://www.gftp.org
-
Osync: http://www.netpower.fr/osync
-
BackupPC: http://backuppc.sourceforge.net
-
PTP: https://de.wikipedia.org/wiki/Picture_Transfer_Protocol
-
Microsoft Media Foundation: https://msdn.microsoft.com/de-de/library/windows/desktop/ms694197(v=vs.85).aspx
-
XSPF: https://de.wikipedia.org/wiki/XML_Shareable_Playlist_Format
-
“Android USB Connections Explained”: https://www.howtogeek.com/192732/android-usb-connections-explained-mtp-ptp-and-usb-mass-storage/
-
Manpage zu Mtp-tools: https://manpages.debian.org/jessie/mtp-tools/mtp-connect.1.en.html
-
MTP im Debian-Wiki: https://wiki.debian.org/mtp
-
MTP im Ubuntu-Wiki: https://wiki.ubuntuusers.de/MTP/
-
Mtp-tools im Arch-Linux Wiki: https://wiki.archlinux.de/title/MTP
-
Libmtp: http://libmtp.sourceforge.net
-
Libgphoto2, http://gphoto.org/proj/libgphoto2/
-
MTPFS: https://github.com/cjd/mtpfs
-
“Geräte mit Android 3.0 oder 4.0 via MTP in Ubuntu Linux einbinden”: https://linuxundich.de/gnu-linux/gerate-mit-android-3-0-oder-4-0-via-mtp-in-ubuntu-linux-einbinden/








