Tidak dapat melakukan operasi file pada perangkat MTP yang dipasang melalui GVFS: "Operasi tidak didukung"

13

Saya menjalankan Linux Mint 17.1 64-bit (berdasarkan Ubuntu 14.04). Sejak memutakhirkan dari Linux Mint 14 / Ubuntu 12.10, skrip Python yang saya gunakan untuk menyinkronkan musik ke Walkman saya telah berhenti berfungsi.

Sebelumnya, ketika saya memasang Walkman saya, itu akan secara otomatis muncul sebagai path /run/user/1000/gvfs/WALKMAN/Storage Mediadan akan bekerja seperti sistem file lainnya: Saya dapat menyalin trek ke sana, menghapus trek dari sana, dll, semua melalui Python. Namun, saya tidak ingat apakah saya harus melakukan perubahan untuk mewujudkannya.

Sejak memutakhirkan ke Linux Mint 17 (dan sekarang 17.1), ketika saya memasang Walkman, itu muncul sebagai path /run/user/1000/gvfs/mtp:host=%5Busb%3A002%2C007%5D/Storage Media. Lebih jauh, ketika saya mencoba menjalankan operasi file yang sama, mereka sekarang gagal. Saya telah menemukan bahwa ini terjadi tidak hanya melalui Python, tetapi pada baris perintah juga. Sebagai contoh:

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

Saya telah melakukan beberapa penelitian tentang masalah ini, tetapi penjelasan yang paling umum tampaknya adalah bahwa sebelumnya diselesaikan oleh PPA ini: https://launchpad.net/~langdalepl/+archive/ubuntu/gvfs-mtp

Tetapi sekarang, versi Ubuntu sejak 13.10 mengandung semua perubahan ini sehingga tidak perlu lagi diperlukan. Jadi mengapa saya masih mengalami kesalahan ini? Saya masih dapat melakukan operasi file di Walkman saya melalui file manager grafis (Caja, di Linux Mint), hanya saja tidak melalui baris perintah.

David Pitchford
sumber
Saya pikir ini dapat membantu Anda: github.com/hanwen/go-mtpfs
PersianGulf
Perangkat saya sudah terpasang sebagai MTP ... bukan itu masalahnya.
David Pitchford

Jawaban:

14

Tebakan: Anda sekarang benar-benar menggunakan MTP untuk mengakses Walkman Anda, dan MTP menyebalkan.

Detail

The Operation not supportedkesalahan bisa menunjukkan bahwa Walkman Anda menggunakan sebuah implementasi MTP yang tidak mendukung akses "langsung". Menurut http://intr.overt.org/blog/?p=174 akses langsung semacam ini adalah ekstensi khusus Android, jadi itu mungkin tidak didukung oleh Walkman Anda.

Sebagai hasilnya, Anda hanya dapat menggunakan beberapa cara yang dipilih untuk mengakses file di Walkman Anda menggunakan MTP: Saya kira semua yang membaca atau menulis file dalam satu operasi didukung, sementara akses ke bagian tertentu dari file tidak didukung untuk implementasi MTP ini. . Dan tampaknya itu cpdan Python selalu menggunakan metode akses yang terakhir dan karenanya gagal.

Kemungkinan Solusi

Namun, Anda mungkin bisa langsung mengganti cpdengan gvfs-copy. Dalam pengujian saya dengan ponsel Android Samsung (yang memiliki implementasi MTP lumpuh juga) gvfs-copydapat menyalin file ke telepon di mana cpgagal.

Latar Belakang

Saya tidak dapat menemukan banyak info tentang batasan MTP yang bergantung pada perangkat ini; berikut beberapa cuplikan tempat situasinya dijelaskan:

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

Mengapa itu berhasil sebelumnya?

Mengenai mengapa Walkman Anda dapat diakses dengan cpdi Mint 14 tetapi tidak di Mint 17, ini mungkin disebabkan oleh peralihan internal dari PTP ke MTP sebagai sistem akses. Setidaknya itulah yang saya perhatikan untuk perangkat Samsung saat beralih dari Ubuntu 12.04 ke 14.04. Ponsel ini mendukung PTP dan MTP, tetapi Ubuntu 12.04 tampaknya hanya mendukung PTP; jadi itulah yang digunakan. Karena versi Ubuntu baru memiliki dukungan bawaan untuk MTP, ini sekarang digunakan sebagai gantinya.

Sebenarnya itu mungkin bahkan kasus Walkman Anda sebelumnya diakses sebagai USB Mass Storage Device , yang digunakan oleh hard disk USB dan flash drive. Mungkin karena alasan tertentu Linux (atau Walkman Anda) memutuskan bahwa MTP lebih disukai daripada akses Mass Storage.

Anda dapat melihat metode akses yang digunakan dengan melihat URL untuk Walkman (di Nautilus, buka folder Walkman, tekan Ctrl + L dan lihat bilah alamat): untuk MTP perangkat ditemukan di bawah mis. mtp://[usb:001,004]/sedangkan untuk PTP itu seperti gphoto2://[usb:001,004]/store_00010001. Untuk akses Mass Storage URL hanya berupa jalur normal /media/WALKMAN.

Saya tidak tahu apakah MTP memiliki keunggulan aktual dibandingkan PTP atau Mass Storage, atau apakah mungkin untuk beralih kembali ke PTP atau Mass Storage. Di Linux, implementasi MTP dan PTP memiliki set bug sendiri, jadi itu tergantung pada kasus penggunaan Anda mana yang lebih baik. AFAIK Mass Storage adalah opsi yang paling diinginkan untuk pengguna tetapi dukungan perangkat di ponsel berkurang.

oliver
sumber
2
Terima kasih telah memperkenalkan saya pada gvfs-copy. Namun, ini sangat mengecewakan karena tidak menyalin direktori secara rekursif. Apakah ada lagi yang bisa saya lakukan secara rekursif?
TuxForLife
1
juga gvfs-copytidak bekerja untuk saya lebih baik dari biasanya cp. Dan dalam kasus saya, telepon yang sama berfungsi di masa lalu melalui MTP. Beberapa telepon berfungsi dan beberapa tidak sekarang. Seluruh MTP (seperti yang saya pilih opsi koneksi MTP di menu telepon). pembaruan: menemukan masalah. Sedang berusaha menyalin dari kartu ke penyimpanan ponsel. Saya harus menyalin ke sistem file lokal terlebih dahulu (misalnya / tmp) kemudian salin ke penyimpanan telepon. Sepertinya salinan langsung mtp-> mtp tidak berfungsi (belum).
akostadinov
Baik gvfs-copy atau gvfs-move tidak bekerja untuk saya. Menggunakan Caja 1.8.2, saya bisa memindahkan mereka menggunakan antarmuka grafis dan kemudian menghapus file.
Julien Lamarche
2

Untuk mengakses ponsel saya, saya harus menginstal mtp-server melalui Synaptic Package Manager di Linux Mint 17.1 Mate saya. Linux Mint 17 Mate saya sebelumnya tidak mengharuskan saya untuk menginstal mtp-server, ponsel saya dikenali secara otomatis setelah terhubung melalui port usb. Mungkin info ini akan membantu.

Scott
sumber
Apakah maksud Anda melalui baris perintah? Seperti yang saya katakan, saya masih dapat mengaksesnya melalui pengelola file GUI.
David Pitchford
Caja menjawab kebutuhan saya, jadi saya tidak dapat membantu Anda dengan baris perintah.
Scott
Scott terima kasih. Jawaban Anda membantu saya menyelesaikan pesan kesalahan ini: 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.Dan perangkat Adroid saya tidak terhubung melalui MTP pada instalasi Mint 17 saya. Mungkin setelah peningkatan 17.1. apt-get install mtp-servermenyelesaikan masalah saya. Ini untuk pencari lain dengan masalah ini dapat membantu mereka karena itu membantu saya.
2

Saya mengalami masalah ini pada Ubuntu 16.04 dan Samsung Galaxy SIII terhubung dalam mode MTP.

Menggunakan saran Oliver untuk menggunakan gvfs-copy, menyalin langsung dari NAS saya ke ponsel tidak berfungsi: (Nautilus juga tidak). Ini adalah putaran untuk kemungkinan bug di 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

Format jalur alternatif juga tidak disarankan oleh halaman manual:

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

Namun, menyalin file ke folder lokal berhasil. {Terima kasih akostadinov} (dan Nautilus)

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

Di Debian Jessie, gvfs-copydari paket gvfs-binbekerja untuk saya.

$ 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
pengguna1338062
sumber
0

Anda dapat mencoba menggunakan rsync untuk menyinkronkan ke perangkat Anda, meskipun dengan transfer MTP Anda biasanya tidak dapat mengatur cap waktu dan tanggal untuk setiap file. Untuk membuat transfer lebih cepat, Anda harus menggunakan opsi --size-only untuk rsync dan bukan opsi -t. Saya merasa paling mudah untuk mengubah direktori menjadi direktori mtp, seperti / run / user / 1000 / gvfs / mtp: host = blahblah / blah / blah, lalu jalankan:

rsync -n -vlr --size-only --delete /source/of/files/ ./

Opsi -n adalah menjalankan lari kering. Hapus saja opsi itu jika Anda puas dengan hasilnya.

Eric Sokolowsky
sumber