Dateivorgänge können auf einem über GVFS gemounteten MTP-Gerät nicht ausgeführt werden: "Vorgang nicht unterstützt"

13

Ich verwende Linux Mint 17.1 64-Bit (basierend auf Ubuntu 14.04). Seit dem Upgrade von Linux Mint 14 / Ubuntu 12.10 funktioniert das Python-Skript, mit dem ich Musik mit meinem Walkman synchronisiere, nicht mehr.

Wenn ich meinen Walkman zuvor aktiviert habe, wird er automatisch als Pfad angezeigt /run/user/1000/gvfs/WALKMAN/Storage Mediaund funktioniert wie jedes andere Dateisystem: Ich konnte Tracks in Python kopieren, Tracks daraus löschen usw. Ich kann mich jedoch nicht erinnern, ob ich irgendwelche Änderungen vornehmen musste, um dies zu erreichen.

Seit dem Upgrade auf Linux Mint 17 (und jetzt 17.1) wird der Walkman beim Aktivieren als Pfad angezeigt /run/user/1000/gvfs/mtp:host=%5Busb%3A002%2C007%5D/Storage Media. Wenn ich versuche, dieselben Dateivorgänge auszuführen, schlagen sie jetzt fehl. Ich habe festgestellt, dass dies nicht nur über Python geschieht, sondern auch über die Befehlszeile. Beispielsweise:

david@MILTON:~$ cp '/data/Music/10SecsWhiteNoise.mp3' '/run/user/1000/gvfs/mtp:host=%5Busb%3A002%2C006%5D/Storage Media/MUSIC'
cp: cannot create regular file ‘/run/user/1000/gvfs/mtp:host=%5Busb%3A002%2C006%5D/Storage Media/MUSIC/10SecsWhiteNoise.mp3’: Operation not supported

Ich habe einige Nachforschungen zu diesem Problem angestellt, aber die häufigste Erklärung scheint zu sein, dass es früher durch diese PPA gelöst wurde: https://launchpad.net/~langdalepl/+archive/ubuntu/gvfs-mtp

Aber jetzt enthalten Ubuntu-Versionen seit 13.10 all diese Änderungen, so dass es nicht länger notwendig sein sollte. Warum habe ich immer noch diese Fehler? Ich kann weiterhin Dateivorgänge auf meinem Walkman über einen grafischen Dateimanager (Caja, unter Linux Mint) ausführen, nur nicht über die Befehlszeile.

David Pitchford
quelle
Ich denke, es kann dir helfen: github.com/hanwen/go-mtpfs
PersianGulf
Mein Gerät wird bereits als MTP gemountet ... das ist nicht das Problem.
David Pitchford

Antworten:

14

Eine Vermutung: Sie verwenden jetzt tatsächlich MTP, um auf Ihren Walkman zuzugreifen, und MTP ist zum Kotzen.

Einzelheiten

Der Operation not supportedFehler könnte darauf hinweisen, dass Ihr Walkman eine MTP-Implementierung verwendet, die keinen "direkten" Zugriff unterstützt. Laut http://intr.overt.org/blog/?p=174 ist diese Art des direkten Zugriffs eine Android-spezifische Erweiterung, daher wird sie von Ihrem Walkman wahrscheinlich nicht unterstützt.

Daher können Sie mit MTP nur auf einige ausgewählte Arten auf Dateien auf Ihrem Walkman zugreifen: Ich schätze, dass alles, was Dateien in einem einzigen Vorgang liest oder schreibt, unterstützt wird, während der Zugriff auf ausgewählte Teile einer Datei für diese MTP-Implementierungen nicht unterstützt wird . Und es scheint, dass cpund Python immer die letztere Zugriffsmethode verwenden und daher fehlschlagen.

Mögliche Problemumgehung

Allerdings könnten Sie in der Lage sein, nur zu ersetzen cpdurch gvfs-copy. In meinen Tests mit einem Samsung Android-Handy (das auch eine verkrüppelte MTP-Implementierung hat) gvfs-copykonnte ich Dateien auf das Handy kopieren, bei denen ein Fehler aufgetreten ist cp.

Hintergrund

Ich konnte nicht viele Informationen zu diesen geräteabhängigen MTP-Einschränkungen finden. Hier sind einige Ausschnitte, in denen die Situation etwas erklärt wird:

/ubuntu//a/284831 https://bugs.launchpad.net/ubuntu/+source/gvfs/+bug/1389001/comments/2 https://bugs.launchpad.net/ubuntu/+source / gvfs / + bug / 1157583 / comments / 1

Warum hat es vorher funktioniert?

Der Grund, warum auf Ihren Walkman cpin Mint 14 und nicht in Mint 17 zugegriffen werden konnte, kann in einem internen Wechsel von PTP zu MTP als Zugriffssystem liegen. Zumindest ist mir das beim Samsung-Gerät aufgefallen, als ich von Ubuntu 12.04 auf 14.04 umgestiegen bin. Das Telefon unterstützt sowohl PTP als auch MTP, aber Ubuntu 12.04 unterstützt anscheinend nur PTP. das war es also, was verwendet wurde. Da die neue Ubuntu-Version eine integrierte Unterstützung für MTP bietet, wird diese jetzt stattdessen verwendet.

Tatsächlich ist es sogar möglich, dass auf Ihren Walkman zuvor als USB-Massenspeichergerät zugegriffen wurde, wie es bei USB- Festplatten und Flash-Laufwerken der Fall ist. Vielleicht hat Linux (oder Ihr Walkman) aus irgendeinem Grund entschieden, dass MTP dem Massenspeicherzugriff vorzuziehen ist.

Sie können die verwendete Zugriffsmethode sehen, indem Sie die URL für den Walkman anzeigen (in Nautilus gehen Sie zum Walkman-Ordner, drücken Sie Strg + L und sehen Sie sich die Adressleiste an): Für MTP befindet sich das Gerät unter z. mtp://[usb:001,004]/während für PTP ist es so etwas wie gphoto2://[usb:001,004]/store_00010001. Für den Massenspeicherzugriff ist die URL nur ein normaler Pfad /media/WALKMAN.

Ich weiß nicht, ob MTP irgendwelche tatsächlichen Vorteile gegenüber PTP oder Massenspeicher hat oder ob es möglich ist, zurück zu PTP oder Massenspeicher zu wechseln. Unter Linux haben sowohl MTP- als auch PTP-Implementierungen ihre eigenen Fehler, sodass es von Ihrem Anwendungsfall abhängen kann, welcher besser ist. AFAIK-Massenspeicher ist die wünschenswerteste Option für den Benutzer, aber die Geräteunterstützung für Telefone lässt nach.

oliver
quelle
2
Vielen Dank, dass Sie mir gvfs-copy vorgestellt haben. Es ist jedoch ein Riesenschwindel, dass Verzeichnisse nicht rekursiv kopiert werden. Gibt es eine andere, die ich rekursiv machen kann?
TuxForLife
1
ebenfalls gvfs-copyfunktioniert bei mir nicht besser als normal cp. Und in meinem Fall hat dasselbe Telefon in der Vergangenheit über MTP funktioniert. Einige Telefone funktionieren und andere nicht. Überall über MTP (wenn ich die Option MTP-Verbindung im Telefonmenü auswähle). Update: das Problem gefunden. Ich habe versucht, von der Karte in den Telefonspeicher zu kopieren. Ich musste zuerst in das lokale Dateisystem (z. B. / tmp) kopieren und dann in den Telefonspeicher kopieren. Scheint so, als würde mtp-> mtp direct copy (noch) nicht funktionieren.
Akostadinov
Weder gvfs-copy noch gvfs-moved haben bei mir funktioniert. Mit Caja 1.8.2 konnte ich sie über die grafische Oberfläche verschieben und anschließend die Dateien löschen.
Julien Lamarche
2

Um auf mein Handy zugreifen zu können, musste ich mtp-server über den Synaptic Package Manager auf meinem Linux Mint 17.1 Mate installieren. Bei meinem vorherigen Linux Mint 17 Mate musste ich keinen MTP-Server installieren. Mein Handy wurde beim Herstellen einer Verbindung über den USB-Port automatisch erkannt. Vielleicht helfen diese Informationen.

Scott
quelle
Meinst du über die Kommandozeile? Wie gesagt, ich kann immer noch über den GUI-Dateimanager darauf zugreifen.
David Pitchford
Caja geht auf meine Bedürfnisse ein, daher kann ich Ihnen bei der Befehlszeile nicht helfen.
Scott
Vielen Dank, Scott. Ihre Antwort hat mir geholfen, diese Fehlermeldung zu beheben: Kon 'mtp://[usb:003,029]/' niet weergeven. Fout: The name :1.1813 was not provided by any .service files Kies een andere weergavemethode en probeer het opnieuw.Und mein Adroid-Gerät hat bei meiner Mint 17-Installation keine Verbindung über MTP hergestellt. Wahrscheinlich nach einem 17.1-Upgrade. apt-get install mtp-servermein problem gelöst. Dies ist für andere Sucher mit diesem Problem hilfreich, da es mir geholfen hat.
2

Ich bin auf Ubuntu 16.04 und Samsung Galaxy SIII, die im MTP-Modus verbunden sind, auf genau dieses Problem gestoßen.

Mit Olivers Vorschlag, gvfs-copy zu verwenden, funktioniert das Kopieren direkt von meinem NAS auf das Telefon nicht: (Nautilus auch nicht). Dies ist eine Abhilfemaßnahme für einen möglichen Fehler in gvfs-copy.

gvfs-copy '/run/user/1000/gvfs/smb-share:server=n2100,share=public/Music/The Story of Funk-1.mp2' '/run/user/1000/gvfs/mtp:host=%5Busb%3A001%2C005%5D/Card/Music/Radio/'
Error copying file /run/user/1000/gvfs/smb-share:server=n2100,share=public/Music/The Story of Funk-1.mp2: Operation unsupported

Das alternative Pfadformat, das von der Manpage vorgeschlagen wurde, war ebenfalls nicht:

gvfs-copy 'smb://n2100/public/Music/The Story of Funk-1.mp2' 'mtp://[usb:001,005]/Card/Music/Radio'
Error copying file smb://n2100/public/Music/The Story of Funk-1.mp2: Operation unsupported

Das Kopieren der Datei in einen lokalen Ordner funktionierte jedoch zuerst. {Danke akostadinov} (und Nautilus auch).

gvfs-copy '/home/nigel/The Story of Funk-1.mp2' 'mtp://[usb:001,005]/Card/Music/Radio'
Nigel Winterbottom
quelle
1

Auf Debian funktioniert Jessie gvfs-copyaus Paket gvfs-binfür mich.

$ dpkg -S $(which gvfs-copy)
gvfs-bin: /usr/bin/gvfs-copy
$ dpkg -l gvfs-bin |tail -1
ii  gvfs-bin       1.22.2-1     amd64        userspace virtual filesystem - binaries
user1338062
quelle