Linux und Ich

Blog über Ubuntu, Linux, Android und IT

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

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

| 50 Kommentare

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.

(Die mit einem Asterisk (*) markierten Links sind Affiliate-Links zum Partnerprogramm von Amazon. Die dadurch generierten Einnahmen tragen zum Erhalt dieser Seite bei.)

Autor: Christoph Langner

Hallo, ich bin Christoph -- Linux-User, Blogger und pragmatischer Fan freier Software. Wie Ihr ohne Zweifel bemerkt haben solltet schreibe ich hier über Linux im Allgemeinen, Ubuntu im Speziellen, sowie Android und andere Internet-Themen. Wenn du Freude an meinen Artikel gefunden haben solltest, dann kannst du mir über Facebook, Google+ oder Twitter oder natürlich dem Blog folgen.

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

    • Ehrlich gesagt habe ich schneller mein Handy per Kabel angeschlossen als “via” AirdDroid.

      Grüße
      Christoph

    • 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.

  2. sudo apt-get install mtpfs; sudo mtpfs /mnt

    Ich finde das einfacher als die Compiliererei da oben ;)!

    • ausprobiert hast du das aber nicht?
      beim aktuellen Ubuntu zB geht das einfach nicht. mounten an sich ja, zugreifen nein …

      • @ 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

  3. Pingback: Galaxy Nexus unter Ubuntu mounten - Android-Hilfe.de

  4. 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.

  5. 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.

  6. Ä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

  7. 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.

  8. Hallo,

    vielleicht ist es ja nur ein temporäres Problem, aber wget kann keine Verbindung zu research.jacquette.com aufbauen. Auch http://www.google.com/url?sa=D&q=http://research.jacquette.com/jmtpfs-exchanging-files-between-android-devices-and-linux/&usg=AFQjCNFFcDLiwccOPGyE_ybqYBgkUp3Q5g ist im Browser nicht erreichbar. Gibt es das Archiv noch woanders?

    Schöne Grüße
    Christoph

  9. 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?

  10. 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.

  11. Zumindest in eine Richtung funktioniert der Dateitransfer über PTP.

    Ne Krücke, aber immerhin. Dann heißts wohl warten auf neue Pakete.

  12. 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?

  13. Gibt es ein 1,9 GB file limit? Bei dieser größe bricht der download immer ab :-(

  14. 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…

  15. @Chris

    http://www.file-upload.net/download-4764313/jmtpfs_0.4-1_amd64.deb.html

    Läst sich nur mit “dpkg -i jmtpfs_0.4-1_amd64.deb” installieren.

  16. Gibt es große Unterschiede zu gomtpfs?

    Oder ist das nur alternativ einsetzbar?

    Gruß Andy

    • Die Unterschiede sind nicht riesig, da ja FUSE als Unterbau dient.

    • 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ß.

  17. 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

  18. 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

  19. Pingback: Link Cloud #1 » cloudlog.de

  20. Pingback: Galaxy S3 without UMS (USB Mass Storage Mode)! Howto mount under Linux with MTP? | Galaxy S3 and Linux Blog

  21. 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.

  22. 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

  23. Pingback: Eumel blogt | Nexus 7 unter Ubuntu mounten

  24. 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

  25. Unter Debian Wheezy müssen noch folgende Einträge in jmtpfs.cpp gemacht werden, um es erfolgreich zu kompilieren:

    #include <unistd.h>
    #include <sys/types.h>

  26. 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.

  27. 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

  28. Pingback: Тупичок мыслей » Blog Archive » Скрещиваем Samsung Galaxy S3/Galaxy Note2 с Ubuntu 12.10: боремся с дубовым mtp.

  29. 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

  30. 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?

  31. Pingback: GVFS-Update ermöglicht unter Ubuntu/Linux endlich den bequemen Zugriff auf Android-Geräte via MTP | Linux und Ich

  32. 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ß)

  33. 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

  34. 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?

Hinterlasse eine Antwort

Auf Linux und Ich darf anonym kommentiert werden. Die Felder für Name und E-Mail-Adresse dürfen beim Eintragen eures Kommentars leer bleiben. Ich freue mich aber über jeden Kommentar, zu dem der Autor mit seinem Namen steht.