Некоторые приложения Ubuntu 13.04 не могут получить доступ к файлам в системах, установленных на MTP. Почему?

14

Ubuntu 13.04 поставляется с поддержкой MTP для доступа к файлам на новых устройствах Android. Мой Nexus 10 работает нормально: после подключения, я могу получить доступ к файлам N10 с помощью Nautilus, и я могу копировать с и на устройство. Evince будет открывать PDF-файлы прямо с устройства, но некоторые приложения не могут открывать файлы непосредственно с устройства, такие как gedit или libreoffice. Гедит говорит что-то вроде:

Cannot open file mtp://[usb:001,009]/65537/5823/5824

Я предполагаю, что MTP интегрирован на уровне gvfs, поэтому не должны ли все приложения с поддержкой gvfs иметь доступ к устройству MTP? Зачем доказывать, а не гедить?

Я знаю, что MTP можно монтировать с помощью fuse, но было бы неплохо, если бы он работал с обычными приложениями из Nautilus, такими как sftp: // или smb: //.

jjchico
источник
У меня была эта проблема при использовании виртуальной машины VMware. Может быть связано с задержкой при прохождении через usb или представлением как более одного устройства / подустройства, а также с тем, что он полностью не прошел через чистую спекуляцию
RobotHumans

Ответы:

29

Спецификация MTP не поддерживает базовые операции открытия / чтения / записи / закрытия, которые требуются для реализации нормального доступа к файлам в Linux - она ​​обеспечивает только загрузку / выгрузку файлов, и это то, что реализует бэкэнд MTP.

Nautilus прекрасно скопирует файлы, но как только вы попытаетесь использовать приложение, которое явно не учитывает ограниченный набор операций, вы получите ошибку. evince - это пример приложения, которое его поддерживает (оно копирует файл в / tmp и открывает его).

Итак, вот что происходит в 13.04.

Теперь, случается, что Google реализовал набор расширений MTP в Android, которые предлагают открывать / читать / писать / закрывать, и с их помощью можно обеспечить нормальный доступ к файлам. Я проделал эту работу в ветке разработки gvfs, но она пропустила окно выпуска 1.16, поэтому он не появится в Ubuntu до 13.10 в ближайшее время. 14.04 и до сих пор не там

Тем временем вы можете использовать мой ppa для установки сборок, в которых я перенес эту работу.

https://launchpad.net/~langdalepl/+archive/gvfs-mtp

Наконец, важно отметить, что эти расширения существуют только в стеке MTP Google. У вас есть Nexus 10, так что он будет работать так же, как и на Android, но у кого-то, использующего устройство Samsung или устройства других производителей, не будет этих расширений, и он может не поддерживать нормальный файловый ввод-вывод.

langdalepl
источник
Однако кажется, что Windows 7 имеет эти дополнительные возможности или обходной путь, и это довольно полезно. Было бы хорошо, если бы эти «дополнения» были реализованы и в Ubuntu
Альваро
1
В качестве обходного пути операция чтения может быть просто загрузкой в ​​/ tmp и чтением из нее, которую Nautilus может выполнить автоматически, чтобы у пользователя было впечатление операции чтения. И с подобными вещами вы можете написать (загрузить в / tmp, изменить и загрузить на устройство)
Álvaro
2
Мне никогда не нравилось скрытое поведение загрузки / выгрузки - это может быть очень неприятным сюрпризом для пользователя, и я не хотел его представлять. Подумайте, что произойдет, если у вас есть мультигигабайтный фильм, который вы хотите посмотреть, поэтому вы дважды щелкаете по нему, а затем он неожиданно начинает загрузку в ваш / tmp, который действительно является tmpfs ... Или вы хотите отредактировать какой-то документ и вы открываете, выполняете некоторую работу и затем сохраняете, но ваш компьютер падает, прежде чем fs сможет загрузить его обратно, и промежуточный файл был сохранен в / tmp, который является tmpfs, поэтому он теряется при перезагрузке. Unfriendly!
langdalepl
@ Álvaro Just FYI, спецификация MTP была разработана Microsoft. Похоже, что многие из возможностей MTP отлично работают с оконными устройствами, но не так сильно в других местах.
RomaH
0

У меня были проблемы с получением фотографий с моего Fujifilm FinePix S1500. Сообщение об ошибке:

Operation not supported by backend

Я решил это, размонтировав камеру и скопировав файлы из командной строки, используя gphoto2.

утес
источник
1
Было бы хорошо, если бы вы могли объяснить, как именно вы должны использовать такую ​​команду, какgphoto2
Amith KK