Nach wie vor ziehen Android-User die… Räusper… Arsch-Karte, wenn man ein aktuelles Android-Handy hat, das nur noch via Media Transfer Protocol (MTP) mit dem Rechner sprechen möchte. Betroffen sind Handys wie etwa das Galaxy Nexus oder das Samsung Galaxy SIII, in denen der Hersteller nicht wieder den Massenspeicher-Modus eingebaut hat. Solche Handys lassen sich nicht mehr ordentlich an einen Linux-Rechner anschließen und per USB-Kabel mit Daten beladen. Krücken wie ein FTP- und SSH-Server oder aber auch proprietäre Tools wie AirDroid helfen, doch drahtlos dauert das Übertragen großer Datenmengen meist deutlich länger als über Kabel. Mit go-mtpfs hatte ich schonmal eine Lösung vorgestellt, die via FUSE einen MTP-Androiden ordentlich ins Dateisystem einbindet, jmtpfs ist nun eine weitere Lösung für Macs und Linux-Systeme.

fmtpfs wurde von Jason Ferrara für Macs und Linuxe entwickelt, ich habe das kleine Tool unter einem aktuellen Ubuntu 12.04 getestet. Es sollte aber auch auf anderen Linux-Distributionen laufen, ihr müsst nur die passenden Bibliotheken zum Bauen des Programms installieren. Unter Debian und Ubuntu müsstet ihr euch an folgender Anleitung orientieren können, bei anderen Distros lauten wahrscheinlich die Paketnamen etwas anders. Die Bau-Anleitung ist nicht sonderlich schwer, ihr müsstet das auf jeden Fall hinbekommen.

Mit jmtpfs MTP-Geräte wie das Galaxy Nexus oder das Samsung Galaxy SIII in Ubuntu mounten.

Ich für meinen Teil würde das Programm in /tmp bauen, so bleiben später keine sinnlosen Daten liegen. Öffnet daher das Terminal, geht in den /tmp-Ordner und ladet dort die aktuelle Version des Tarballs herunter. Weil ich eh gerade im Terminal stecke, mache ich das mit wget. Achtet bitte aber darauf auf der Homepage des Entwicklers zu prüfen, ob es nicht auch eine neuere Version als 0.4 gibt. Ändert daher eventuell bitte die URL zum Download. Packt anschließend das Archiv mit dem Quellcode mit tar -xzf aus und fügt euren User noch in die Gruppe fuse ein, bedenkt bitte dass die Gruppen-Zuordnung erst aktiv wird, wenn ihr euch einmal aus und wieder einloggt.

$ cd /tmp
$ wget http://research.jacquette.com/wp-content/uploads/2012/05/jmtpfs-0.4.tar.gz
$ tar -xzf jmtpfs-0.4.tar.gz
$ cd jmtpfs-0.4
$ sudo adduser $USER fuse

Nun geht es ans eigentliche Kompilieren, wobei es noch ein kleines bisschen Vorarbeit zu leisten gibt. Installiert bitte in einem ersten Schritt die nötigen zum Bauen des Pakets nötigen Bibliotheken und Programme, über die Paketverwaltung sollte das recht schnell gegessen sein. Anschließend geht es es ans Kompilieren und Installieren der Anwendung mit configure und make. Die Fragen bei checkinstall könnt ihr alle mit einem Return durchklicken, ihr müsst nichts extra eintippen. Der Vorteil gegenüber einem einfachen make install ist, dass euer selbst-gebautes Programm über die Paketverwaltung installiert wird und ihr es so auch wieder einfach entfernen könnt.

$ sudo apt-get install libmtp-dev libfuse-dev libmagic-dev checkinstall build-essential
$ ./configure
$ make
$ sudo checkinstall

Danach ist der Keks eigentlich komplett gegessen. Steckt euer Handy an den Rechner an und prüft ob unter Einstellungen | Speicher | Menü-Button (rechts oben) | USB-Verbindung (PC) ob euer Handy auch wirklich MTP eingestellt ist und nicht das ältere PTP. Legt dann in eurem Home-Verzeichnis einen Mount-Punkt (aka Verzeichnis) an und lasst jmtpfs dort euren Androiden laden.

$ mkdir ~/android
$ jmtpfs ~/android/
Device 0 (VID=04e8 and PID=6860) is a Samsung GT-P7310/P7510/N7000/I9100/Galaxy Tab 7.7/10.1/S2/Nexus/Note.
Android device detected, assigning default bug flags

Danach könnt ihr euren Dateimanager anwerfen und eure Daten auf dem Handy unter ~/android einsehen. Die Performance sollte besser als über WLAN sein, von daher lohnt es sich schon auf jmtpfs oder go-mtpfs zu setzen, wenn man größere Datenmengen kopieren möchte. Um das Handy auszuhängen könnt ihr entweder im Dateimanager auf das kleine „Auswurf-Symbol“ neben dem Eintrag in der Seitenleiste klicken oder auch wieder das Terminal bemühen.

$ fusermount -u ~/android

Der Befehl fusermount -u hängt das Verzeichnis aus, in dem ihr euer MTP-Android-Handy eingebunden hattet. Achtet aber bitte drauf, dass im Vorfeld vorher alle Dateioperationen erfolgreich beendet wurden, sonst droht schnell Datenverlust.

Handys mit USB-Massenspeichermodus von HTC

Solange Bug #972311 nicht behoben wurde, sind jmtpfs oder go-mtpfs daher eine ganz brauchbare Krücke, es wäre aber schön, wenn MTP unter Linux einfach funktionieren würde, immerhin hat das MS auch geschafft 😉 Der Anteil der Smartphone-User mit Android 4.0 steigt beständig, von daher können sich Linuxer nicht vor MTP verschließen, die Technik wird immer wichtiger, gerade weil es immer mehr Geräte mit Android 4.0 ICS gibt, die auf eine zusätzliche Speicherkarte verzichten.

Allerdings gibts es diesbezüglich auch eine gute Nachricht, die ausnahmsweise „für“ ein Hersteller-ROM spricht. HTC baut zum Beispiel wieder den Massenspeicher in seine Geräte der HTC ONE-Serie ein. Beim Anschluss an den Rechner erscheint ganz normal die Frage, ob die Daten als „Festplatte“ freigegeben werden, einen kurzen Moment später meldet die Linux-Desktopumgebung dann ein neues Laufwerk, das geschieht bei meinem Galaxy Nexus leider eben nicht.

HTC hat den Massenspeicher-Modus in seine HTC ONE-Serie wieder eingebaut.

Linuxern, die mit dem Gedanken spielen ein neues – oder ein erstes – Android-Handy zu kaufen, sei daher zum Beispiel das HTC ONE S ans Herz gelegt. Das Handy ist brutal schnell, hat den fast idealen Form-Faktor, ist klasse verarbeitet, hat ein tolles Display und Android 4.0. Man muss zwar mit HTCs eigener Oberfläche „Sense“ leben, hat aber dafür eben wieder den Massenspeichermodus zur Hand.

50 Kommentare

  1. Die Frage ist halt, wers braucht in Zeiten von Airdroid… 😉

    Wenn überhaupt dann ist das ja eher was für große Datenmengen und Leute die Movies auf dem Handy mit sich rumschleppen

    • Airdroid ist ja ganz nett, wenn man mal kein Kabel zur Hand hat, z.B. an einem fremden Rechner. Aber am eigenen Rechner finde ich die Einbindung ins eigene Dateisystem doch sehr zu bevorzugen, seis nun per SSH oder Kabel.

      Ich mache es per SSH: Einmal in Nautilus bookmarken und Ruhe. Da bin ich auch mit Kabel nicht schneller und spare mir darüberhinaus beim Mount/Unmount Probleme mit meinem Cyanogenmod.

      Übrigens sieht Airdroid aus wie eine schlecht gemachte Herstellersoftware von 2003 und ist insgesamt irgendwie unandroidisch.

      • @ Nik, thx, ein guter Tipp mit apt-get install mtpfs !

        Im Galxy S 2 unter dem Menu-Punkt „USB-Verbindung“ den Massenspeichermodus aktivieren und das USB-Kabel ranfummeln.

        Anschließend zeigt mir die Geräteüberwachung von KDE ein neues Device an. Ein Klick und schon ist das neue Device gemountet und per Dolphin sind die Daten manipulierbar.

        OS: Ich nutze aptosid und SGS2 mit Anroid 4.0.3

  2. Und was ist mit Cyanogenmod? Wenn das HTC-ROM in der Lage ist, alternativ als mass storage zu verbinden, sollte Cyanogenmod diese Alternative doch auch anbieten können? Schon mal jemand probiert?

    • Zumindest am Galaxy S2 ist Cyanogenmod 9 standardmäßig auf mass storage gestellt. Wie das bei Geräten ist, die keinen Kartenslot haben, weiß ich nicht.

      Allerdings gibt es bei einigen CM-Nutzern (inklusive mir) einen Bug, der beim Einsatz als mass storage durch das mounten/unmounten regelmäßig die Mediendatenbank zerstört.

  3. Grundsätzlich gebe ich dir recht, bei dem was du über das HTC One S sagst. Hab das selbst im Einsatz und es ist ein würdiger Nachfolger für mein Desire.
    Aber: HTC hat still und heimlich die Hardware geändert. Statt dem neuen Snapdragon S4 kommt jetzt der ältere S3 zum Einsatz. Das wird lediglich durch den Zusatz „Neue Hardware“ bzw. „C2“ gekennzeichnet. Der Preis ist gleich!
    Also aufpassen, wenn sich jemand so ein Teil zulegen möchte.

  4. Ähm,
    ich habe mein frisch erworbenes Galaxy Nexus (Android 4.04) eben via USB an mein Ubuntu 12.04 angeschlossen.
    Ich kann auf das Nexus via Nautilus zugreifen, und ich habe zum Test eine mp3-Datei und einen mp4-Movie (ca. 100MB) drauf kopiert. Es scheint alles (inzwischen) problemlos zu funktionieren.
    Oder habe ich da jetzt was falsch verstanden? :-/

    • Ja, du hast was falsch verstanden 🙂 MTP funktioniert, so lange nur wenige Daten auf dem Gerät liegen, beim Zugriff wird allerdings regelmässig ein kompletter Index übertragen, was dann bei einer bestimmten Datenmenge eben abbricht. Details dazu stehen in dem verlinkten Launchpad-Bug. Entweder lässt du also dein Nexus jungfräuchlich, oder du bekommst — wie wir alle — auch noch das Problem 😉

      Grüße
      Christoph

  5. Ah, alles klar. Ich habe mir schon gedacht dass da noch ein Haken sein muss, da die Kommentare ja absolut aktuell sind. Danke fúr die schnelle Antwort.

  6. Mit meinem frischen Nexus 7 bekomm ich leider keine Verbindung hin.

    jmtpfs ~/android/
    No mtp devices found.

    Das bauen hat tadellos funktioniert. Das Nexus 7 ist eingesteckt und MTP ist als USB-Verbindungstyp ausgewählt. Hab ich was übersehen?

  7. Mit meinem S3 funktioniert es auch nicht. Das Nexus 7 und das S3 sind noch zu neu und zumindest das S3 wird erst in der Entwicklerversion von libmtp unterstützt, die in Ubuntu noch nicht enthalten ist. Du kannst dir zwar auch von libmtp eigene Pakete bauen, aber ich warte lieber auf native Ubuntu-Pakete. Solange benutze ich Airdroid.

  8. Bei meinem Nexus 7 läuft es:

    $ jmtpfs ~/android/
    Device 0 (VID=18d1 and PID=4e41) is UNKNOWN.
    Please report this VID/PID and the device model to the libmtp development team
    Android device detected, assigning default bug flags
    

    Wie erstelle ich eine udev rule die mein Nexus 7 automatisch unte /mnt/Nexus mounted?

  9. Du hast das Paket nach Christophs Anleitung gebaut? Mein Lubuntu will nicht. Kannst du das Paket irgendwo hochladen? Vielleicht braucht es außer mir sonst noch jemand…

    • Was jmptfs genau macht weiß ich nicht, aber go-mtpfs cached die übertragenen Dateien in einem Verzeichnis in /tmp. Somit geht das Ganze zumindest nach dem ersten Zugriff deutlich schneller. Wenn man auch mehrere Video-Dateien drauf hat ist es auch hilfreich, wenn man die Anzeige von Miniaturbildern ausschaltet. Die müssen sonst nämlich auch erst vom Gerät geholt werden, und bei etlichen Videos je 300mb ist das kein Spaß.

  10. Vielen Dank für die Anleitung.
    Bekomme zwar ebenfalls beim Nexus 7 die Meldung, das das Gerät unbekannt ist, aber z.B. hochladen von Musik funktioniert einwandfrei.
    Grüße
    Thomas

  11. Installation ging klaglos, allein mein XPeria S weigert sich gemountet zu werden 🙁

    „Device 0 (VID=0fce and PID=0169) is a SONY Xperia S.
    LIBMTP PANIC: Unable to read device information on device 4 on bus 1…“

    Schade, ich persönlich bevorzuge auch das Kabel vor den Air – Alternativen.

    Ralf

  12. Hallo,
    funktioniert hier die Funktion mit dem Starter anlegen auch? Bei go-mtpfs ist ein Kommentar dazu hinterlegt. Ich komme nur nicht mit dem Dateipfad bei jmtpfs klar. Kann ich hierzu Hilfe haben.

    Bei mir ist es unter usr/local/bin hinterlegt. Ich habe foldenen Dateipfad im Starter hinterlegt.

    usr/local/bin/jmtpfs ~/android

    Ist das nicht korrekt?
    Danke

    PS: Bei mir funktioniert auf dem LG P880 die Version besser. Bei go-mtp habe ich immer Abstürze.

  13. Hallo,
    habe bei mir jetzt erfolgreich jmtpfs laufen. Ich möchte aber einen Starter anlegen. Welchen Pfad gebe ich vor.

    Bei mir liegt das Programm und usr/local/bin

    Danke
    Frank

  14. Bei mir funktioniert schon das installieren nicht. Ubuntu 12.10 Gnome:

    jmtpfs.cpp: In Funktion »int main(int, char**)«:
    jmtpfs.cpp:454:90: Fehler: »getuid« wurde in diesem Gültigkeitsbereich nicht definiert
    jmtpfs.cpp:454:100: Fehler: »getgid« wurde in diesem Gültigkeitsbereich nicht definiert
    make[1]: *** [jmtpfs-jmtpfs.o] Fehler 1
    make[1]: Verlasse Verzeichnis '/tmp/jmtpfs-0.4/src'
    make: *** [all-recursive] Fehler 1
    

    der Befehlaufruf funktioniert daher auch nicht:

    a@ha:/tmp/jmtpfs-0.4$ jmtpfs ~/android
    Der Befehl »jmtpfs« wurde nicht gefunden, meinten Sie vielleicht:
     Befehl »mtpfs« aus dem Paket »mtpfs« (universe)
    jmtpfs: Befehl nicht gefunden.
    
    • Klar, wenn das Bauen nicht klappt, dann wird letztendlich auch das Binary nicht installiert und der Aufruf schlägt fehlt. Wenn sich jmtpfs unter 12.10 nicht mehr bauen lässt, dann kannst du es ja auch mal mit go-mtpfs probieren. Das Tool wird vom Entwickler von gvfsd-mtp empfohlen, das — hoffentlich — in baldiger bälde das manuelle mounten unnötig macht.

      Grüße
      Christoph

  15. Danke für die Anleitung, gomtpfs hatte ich nicht installiert bekommen (da hat der git-befehl nicht funktioniert).
    Warum eine kleine Hinterhoffirma wie Google das allerdings nicht auf android.com/filetransfer als Pakete bereit stellen kann, bleibt wohl deren Geheimnis.

  16. Danke für die Anleitung, leider erhalte ich (Ubuntu 12.04, Samsung GT-N7000 mit Android 4.03) nach erfolgreicher Installation nur

    PTP_ERROR_IO: failed to open session, trying again after resetting USB interface
    LIBMTP libusb: Attempt to reset device
    LIBMTP PANIC: failed to open session on second attempt
    terminate called after throwing an instance of ‚MtpErrorCantOpenDevice‘
    what(): Can’t open device

  17. Also das mit dem HTC stimmt leider auch nur solange man kein Update auf Android 4.1.1 macht. Danach is Feierabend. Zumindest ist das der Stand auf dem ich mich gerade befinde.
    Falls es da Neuerungen geben sollte wäre ich froh über einen post.

    Hawk

  18. Hm, ich hab da jetzt ein Problem. Kompilieren hat geklappt, Erkannt wurde mein Samsung-Smartphone zunächst auch unter home/android. Dann ist der Dateibrowser allerdings abgestürzt. Jetzt Bekomme ich keinen Zugriff mehr auf meine /home, da für /home/android ein Ein- und Ausgabefehler gemeldet wird. Wie bekomme ich das Verzeichnis bzw. den Mountpoint wieder restlos gelöscht?

  19. Hat super funktioniert!!! DANKE
    Mint 13 Maya 3.2.1-23 x86/64
    Samsung Galaxy S3
    Datenübertragung zwischen 2,5 bis 5 Mb/s.

    Habe nur noch das Problem, dass mehrere Programme (vergeblich) versuchen das S3 einzubinden (das kommt von den Vorversuchen), wenn ich den USB-Stecker reinsteck. Wie kann man denn heraus bekommen, welche das sind?
    (LINUX-Neuling, der zu DOS-Zeiten schon am Rechner saß)

  20. Hallo Christoph,

    danke für die o.g. Anleitung. Hat bei mir wunderbar funktioniert. Eine Frage am Rande. Ich möchte mein Galaxy Nexus auf ein aktuelles cyanogenmod rooten. Alle Anleitungen die ich gefunden habe verwenden ein Windows System um die Dateien auf das Nexus aufzuspielen. Ich habe in einem Blog Eintrag von dir gelesen, dass du ebenfalls auf deinem Galaxy Nexus ein CM verwendest. Frage: Hast du eine Anleitung dazu? Seit Ubuntu 6.04 verwende ich kein Windows mehr.

    Danke und Gruß
    Paulo

  21. ich versuche gerade mein brandneues Samsung XCover mit meinem Linux versöhnlich zu stimmen. Irgendwie habe ich ohne irgendwelche Installationen Musik drauf bekommen, kann sie nun aber nicht mehr auslesen. mit go-mtpfs bekomme ich beim mounten einen Timeout – vermutlich wegen zu großer Datenmenge (über 10 GB).
    Nun versuche ich es mit jmtpfs, bei dem Befehl „$ tar -xzf jmtpfs-0.4.tar.gz“ bekomme ich aber die Rückmeldung
    „gzip: stdin: not in gzip format
    tar: Child returned status 1
    tar: Error is not recoverable: exiting now“
    und danach geht’s nicht weiter. Vielleicht hatte noch wer das Problem und kann zur Lösung beitragen?
    Ich nutze ubuntu 12.04. Wie steht es um das die Kommunikation zwischen den Androids und dem 13er? Bietet das einen echten Vorteil oder sind die Pakete, die ich hier installiere nur einfach schon drin?

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein