某些Ubuntu 13.04应用程序无法访问安装MTP的系统上的文件。为什么?


14

Ubuntu 13.04附带MTP支持,可在较新的Android设备上访问文件。我的Nexus 10工作正常:插入电源后,我可以使用Nautilus访问N10文件,并且可以在设备上进行复制。Evince将直接从设备打开PDF文件,但是某些应用程序无法直接从设备打开文件,例如gedit或libreoffice。Gedit表示:

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

我猜想MTP是在gvfs级别集成的,所以不是所有启用gvfs的应用程序都能够访问MTP设备吗?为什么要看而不是gedit?

我知道MTP可以安装保险丝,但如果它可以与Nautilus的常规应用程序一起使用,如sftp://或smb://,那将是很好的。


使用vmware虚拟机时出现此问题。可能与usb直通上的延迟有关,或者与一个或多个设备/子设备有关,而没有完全通过纯粹的推测
RobotHumans 2013年

Answers:


29

MTP规范不支持在Linux上实现常规文件访问所需的基本打开/读取/写入/关闭操作-它仅提供文件的上载/下载,而这正是MTP后端所实现的。

Nautilus可以很好地复制文件,但是当您尝试使用未明确说明受限操作集的应用程序时,会出现错误。evince是确实支持该应用程序的示例(它将文件复制到/ tmp然后打开它)。

所以,这就是13.04中发生的事情。

现在,碰巧的情况是Google在Android中实现了一组MTP扩展,这些扩展提供了打开/读取/写入/关闭的功能,并且可以通过这些扩展提供正常的文件访问。我已经在gvfs开发分支中完成了这项工作,但是它错过了1.16版本窗口,因此它最早要到13.10才会在Ubuntu中显示。14.04仍然不存在

同时,您可以使用我的ppa在向后移植此工作的位置安装构建。

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

最后,请务必注意,这些扩展仅存在于Google的MTP堆栈中。您拥有Nexus 10,因此可以在运行Android的情况下正常运行-但使用Samsung设备或其他制造商的设备的人将没有这些扩展名,并且可能不支持正常的文件I / O。


但是,Windows 7似乎具有这些额外的功能或解决方法,它非常有用。这将是很好,如果这些“额外”是在Ubuntu的执行过于
阿尔瓦罗

1
作为一种解决方法,读操作可以只是下载到/ tmp并从中读取,Nautilus可以自动执行该操作,以使用户对读操作有印象。而类似的事情,你可以发出写(下载到/ tmp,修改并上传到设备)
阿尔瓦罗

2
我从不对隐式下载/上传行为感到满意-对于用户来说这可能是一个非常不愉快的惊喜,我也不想介绍它。考虑一下如果您要观看的千兆字节电影在那里发生了什么情况,那么双击它,然后突然开始将其下载到您的/ tmp中,这确实是一个tmpfs ...,或者您想编辑一些文档,该怎么办?然后打开,做一些工作,然后保存,但是在fs可以将其上传回之前,您的计算机崩溃了,并且中间文件存储在/ tmp(这是一个tmpfs)中,因此重新启动时丢失了。不友好!
langdalepl

@ÁlvaroJust FYI,MTP规范由Microsoft开发。MTP的许多功能似乎可以很好地与Window设备一起使用,但在其他地方则没有那么多。
罗马2014年

0

我无法从Fujifilm FinePix S1500上获取照片。错误信息:

Operation not supported by backend

我通过卸下相机并使用gphoto2从命令行复制文件来解决此问题。


1
如果您能确切解释应如何使用该命令,那就gphoto2
太好了
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.