Difference between revisions of "Media Transfer Protocol (简体中文)"

From ArchWiki
Jump to: navigation, search
(Unable to enumerate USB device)
m (不能列举USB设备)
Line 156: Line 156:
 
   usb usb4-port2: unable to enumerate USB device
 
   usb usb4-port2: unable to enumerate USB device
  
你能够尝试下面的临时[https://bbs.archlinux.org/viewtopic.php?pid=1087323#p1087323 workaround]
+
你能够尝试下面的临时[https://bbs.archlinux.org/viewtopic.php?pid=1087323#p1087323 解决方案]
  
 
   # modprobe -vr uhci_hcd
 
   # modprobe -vr uhci_hcd

Revision as of 03:02, 3 May 2015

翻译状态: 本文是英文页面 MTP翻译,最后翻译时间:2014-04-24,点击这里可以查看翻译后英文页面的改动。

MTP 是 "Media Transfer Protocol" (媒体传输协议)的缩写,一些媒体播放器(例如 Creative Zen)和手机(例如 Android 3+ 的设备)会使用此协议.此协议也是 "Windows Media" 框架的一部分,且和 Windows Media Player 有异常紧密的联系.

安装

功能

libmtp 提供了 Linux 下的 MTP 支持,可以从 official repositories 直接安装 libmtp。仅安装 libmtp 就已经可以正确的访问设备。为了添加与文件管理器的集成或者是提高传输和访问的速度,还可以安装以下的软件包:

These packages to choose from all implement a Wikipedia:Filesystem in Userspace:

以上的这些都旨在提供比 libmtp 更好的使用体验。因为 USB 设备实在是太多,所以你可能需要先研究一下哪个更加适合于你的设备。

Tip: 建议在安装 MTP 软件包后重启电脑。

文件管理器集成

为了能够直接在文件管理器中通过 MTP 查看 Android 设备,需要安装以下插件:

  • 如果文件管理器使用 GVFSGNOME Files, Xfce 的 Thunar),安装 gvfs-mtp 提供 MTP 支持或者是安装 gvfs-gphoto2 提供 PTP 支持。
  • 如果文件管理器使用 KIO (KDE 的 Dolphin),安装 kio-mtp (自带 PTP 支持)。

当所需要的软件包已经安装,就可以通过链接访问设备了。比如 mtp://[usb:002,013]/

用法

在使用之前,可能需要先建立一个挂载点用于设备的挂载,本例中的挂载目录为 ~/mnt。还有,在连接电脑之前需要解锁手机屏幕。

libmtp

检测设备

# mtp-detect

来查看 MTP 设备是否检测到,如果出错,查看 troubleshooting libmtp

Note: 需要将当前用户添加到 uucp 用户组。

使用以下指令连接到设备:

# mtp-connect

同样,你也可以使用以下的独立命令来访问您的 MTP 设备:

 mtp-albumart        mtp-emptyfolders    mtp-getplaylist     mtp-reset           mtp-trexist
 mtp-albums          mtp-files           mtp-hotplug         mtp-sendfile
 mtp-connect         mtp-folders         mtp-newfolder       mtp-sendtr
 mtp-delfile         mtp-format          mtp-newplaylist     mtp-thumb
 mtp-detect          mtp-getfile         mtp-playlists       mtp-tracks
警告: 部分指令可能会损坏您的设备!!!


mtpfs

警告: 以下的操作可能不能正常的工作,你必须求助于 gphoto2 或者是其他基于 gvfs 的文件管理器(如PCManFM

首先编辑 /etc/fuse.conf 注释掉以下行:

user_allow_other

将设备挂载到 ~/mnt

$ mtpfs -o allow_other ~/mnt

~/mnt 卸载设备:

$ fusermount -u ~/mnt

jmtpfs

使用此命令挂载设备(需要确保挂载点可用):

$ jmtpfs ~/mtp

使用此命令卸载设备

$ fusermount -u ~/mtp

go-mtpfs

Note: Go-mtpfs 相较于 mtpfs/jmtpfs ,对某些设备的文件写入更加的高效. 您的设备的写入速度太慢可以尝试下这个.

If the above instructions don't show any positive results one should try go-mtpfs-gitAUR from the AUR. The following has been tested on a Samsung Galaxy Nexus GSM, Asus/Google Nexus 7 (2012 1st gen model) and Samsung Galaxy S 3 mini. (This is the only mtp software which worked for me on nexus 4. Settings are usb debugging enabled, connected as media device.)

If you want do it simpler, install go, libmtp and git from the official repositories. After that install go-mtpfs-gitAUR from the AUR.


As in the section above install android-udev which will provide you with "/usr/lib/udev/rules.d/51-android.rules" edit it to apply to your vendorID and productID, which you can see after running mtp-detect. To the end of the line add with a comma OWNER="yourusername". Save the file.

  • 将用户添加到 "fuse" 组:
gpasswd -a [user] fuse
  • 如果该组不存在,请用以下的命令创建:
groupadd fuse

注销用户或者重启计算机以使得更改生效.

  • 建立名为 "Android" 的挂载点:
mkdir Android
  • 挂载设备:
go-mtpfs Android
  • 卸载设备:
fusermount -u Android

您可以在 .bashrc 为这个命令设置一个别名,来让它更加的符合你的口味.

simple-mtpfs

这是MTP设备的另外一个用户空间文件系统。 你可能会觉得它比mtpfs更加可靠。你能通过AUR安装或者从源代码编译simple-mtpfsAUR。记住 不要 用root运行下面的命令。

  • 查看MTP设备,运行:
 simple-mtpfs --list-devices
  • 挂在一个MTP设备 (in this example device 0),运行:
simple-mtpfs /path/to/your/mount/point
  • 卸载,运行
 fusermount -u /path/to/your/mount/point

使用媒体播放器

您也可以在音乐播放器中使用 MTP 设备,例如 Amarok 等. 但是您也许要做以下的操作:编辑 /etc/udev/rules.d/51-android.rules [ MTP 设备使用示例如下(以 Galaxy Nexus 为例)]: 执行命令:

$ lsusb

查看您的设备信息,他们一般看起来像:

Bus 003 Device 011: ID 04e8:6860 Samsung Electronics Co., Ltd GT-I9100 Phone [Galaxy S II], GT-P7500 [Galaxy Tab 10.1]

在这种情况下,条目将是:

SUBSYSTEM=="usb", ATTR{idVendor}=="04e8", ATTR{idProduct}=="6860", MODE="0666", OWNER="[username]"

然后重新载入 udev 规则:

# udevadm control --reload
Note: 安装了 MTP 后您需要重启设备以使其生效

Troubleshooting

libmtp

Unknown device

如果你看到像这样的信息:

Device 0 (VID=XXXX and PID=XXXX) is UNKNOWN.
Please report this VID/PID and the device model to the libmtp development team

你应该核对你的设备是否列在supported devices list上。如果没有,那么你应该像开发团队报告,而且,可能你的 libmtp 稍稍有点过时。 允许你的设备能通过libmtp适当地使用,你应该添加你的设备到:

/etc/udev/rules.d/69-libmtp.rules

不能列举USB设备

Merge-arrows-2.pngThis article or section is a candidate for merging with [[]].Merge-arrows-2.png

Notes: Unrelated to MTP, perhaps suited for USB storage devices (Discuss in Talk:Media Transfer Protocol (简体中文)#)

如果你在系统日志中看到像这样的信息(journalctl)

 usb usb4-port2: unable to enumerate USB device

你能够尝试下面的临时解决方案

 # modprobe -vr uhci_hcd
 # modprobe -va ohci_hcd
 # modprobe -va uhci_hcd

如果它工作,你应该创建/etc/modprobe.d/usb_hci_order.conf和下面的内容。

 # create a dependency on ohci for uhci, which fixes problems
 # with external usb devices not showing up
 #
 softdep uhci_hcd pre: ohci_hcd

gvfs-mtp

Merge-arrows-2.pngThis article or section is a candidate for merging with udev.Merge-arrows-2.png

Notes: please use the second argument of the template to provide more detailed indications. (Discuss in Talk:Media Transfer Protocol (简体中文)#)

If you have installed the gvfs-mtp package, and your device doesn't show up in the file manager, you might need to reboot or write a udev rule in order to auto-mount the device.

Plug your device and get the vendor-id and product-id,respectively:

$ lsusb
Bus 001 Device 007: ID 0421:0661 Nokia Mobile Phones Lumia 920
(...)

The two numbers after ID are vendorId : productID

Then make a udev rule, e.g.

# nano /etc/udev/rules.d/51-android.rules

and type this rule:

ATTR{idVendor}=="YOUR VENDOR ID HERE", ATTR{idProduct}=="YOUR PRODUCT ID HERE", SYMLINK+="libmtp",  MODE="660", ENV{ID_MTP_DEVICE}="1"

Reload the udev rules.

# udevadm control --reload

And reboot the system. Now file managers (like Thunar) should be able to automount the MTP Device. [1]

kio-mtp

If you are not able to use the action "Open with File Manager", you may work around this problem by editing the file /usr/share/apps/solid/actions/solid_mtp.desktop.

Change the line

Exec=kioclient exec mtp:udi=%i/

To

Exec=dolphin "mtp:/"