Dav*_*ord 17 linux-mint gvfs mtp
我正在运行 Linux Mint 17.1 64 位(基于 Ubuntu 14.04)。自从从 Linux Mint 14/Ubuntu 12.10 升级后,我用来将音乐同步到我的随身听的 Python 脚本已经停止工作。
以前,当我安装 Walkman 时,它会自动显示为路径,/run/user/1000/gvfs/WALKMAN/Storage Media并且可以像任何其他文件系统一样工作:我可以通过 Python 将曲目复制到它,从中删除曲目等。但是,我不记得是否必须进行任何更改才能实现此目的。
自从升级到 Linux Mint 17(现在是 17.1)后,当我安装 Walkman 时,它显示为 path /run/user/1000/gvfs/mtp:host=%5Busb%3A002%2C007%5D/Storage Media。此外,当我尝试运行相同的文件操作时,它们现在失败了。我发现这不仅通过 Python 发生,也发生在命令行上。例如:
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
Run Code Online (Sandbox Code Playgroud)
我对这个问题做了一些研究,但最常见的解释似乎是它以前是由这个 PPA 解决的: https://launchpad.net/~langdalepl/+archive/ubuntu/gvfs-mtp
但是现在,自 13.10 以来的 Ubuntu 版本包含所有这些更改,因此不再需要它。那么为什么我仍然有这些错误?我仍然可以通过图形文件管理器(Caja,在 Linux Mint 上)在我的随身听上进行文件操作,而不是通过命令行。
小智 17
猜测:您现在实际上是在使用 MTP 来访问您的随身听,而 MTP 很糟糕。
该Operation not supported错误可能表明您的 Walkman 使用了不支持“直接”访问的 MTP 实现。根据http://intr.overt.org/blog/?p=174,这种直接访问是 Android 特定的扩展程序,因此您的随身听可能不支持它。
因此,您只能使用几种选定的方式来使用 MTP 访问 Walkman 上的文件:我想支持在单个操作中读取或写入文件的所有内容,而这些 MTP 实现不支持访问文件的选定部分. 并且似乎cp和 Python 总是使用后一种访问方法,因此失败。
但是,您也许可以仅替换cp为gvfs-copy。在我对三星 Android 手机(也有一个残缺的 MTP 实现)gvfs-copy进行的测试中,它能够将文件复制到cp失败的手机上。
我找不到关于这些与设备相关的 MTP 限制的太多信息;这里有一些片段,其中的情况有所解释:
https://askubuntu.com/a/284831 https://bugs.launchpad.net/ubuntu/+source/gvfs/+bug/1389001/comments/2 https://bugs.launchpad.net/ubuntu/+source /gvfs/+bug/1157583/comments/1
至于为什么cp在 Mint 14 中可以访问您的 Walkman而在 Mint 17 中不能访问,这可能是由内部从PTP切换到MTP作为访问系统造成的。至少这是我在从 Ubuntu 12.04 切换到 14.04 时注意到的三星设备。手机同时支持PTP和MTP,但Ubuntu 12.04显然只支持PTP;所以这就是使用的。由于新的 Ubuntu 版本内置了对 MTP 的支持,现在改为使用它。
实际上,甚至可能是您的 Walkman 以前作为USB Mass Storage Device访问过,这是 USB 硬盘和闪存驱动器使用的。也许出于某种原因,Linux(或您的随身听)决定 MTP 优于大容量存储访问。
您可以通过查看 Walkman 的 URL 来查看所使用的访问方法(在 Nautilus 中,转到 Walkman 文件夹,按 Ctrl+L 并查看地址栏):对于 MTP,设备位于例如下。mtp://[usb:001,004]/而对于 PTP,它类似于gphoto2://[usb:001,004]/store_00010001. 对于大容量存储访问,URL 只是一个普通路径,如/media/WALKMAN.
我不知道 MTP 是否比 PTP 或大容量存储有任何实际优势,或者是否可以切换回 PTP 或大容量存储。在 Linux 下,MTP 和 PTP 实现都有自己的一组错误,因此可能取决于您的用例哪个更好。AFAIK 大容量存储是用户最理想的选择,但手机中的设备支持正在减弱。
| 归档时间: |
|
| 查看次数: |
21507 次 |
| 最近记录: |