我正在尝试连接一个全新的三星 Galaxy S7电话Android 8.0致我的Kubuntu 14.04 电脑通过USB。
当我连接设备时,它正常显示在设备通知程序上我的电脑。我检查SAMSUNG_Android
-> Open with File Manager
,就像我对旧的 Android 5.0 设备所做的那样(它总是不稳定,但可以工作)。同时,设备上的通知显示Android system: Transferring media files via USB
。
计算机上出现一个对话框No Storages found. Maybe you need to unlock your device?
,显示 ,而设备并未锁定。同时,设备上出现一个对话框,显示Allow access to phone data? The connected device will be able to access data on this phone. DENY/ALLOW
。我检查了一下ALLOW
,但文件管理器只显示一个空文件夹,刷新也无济于事。无论我重复多少次,行为始终相同,并且我从未访问过任何数据。
根据 Android 论坛上的建议,我在手机上启用了Developer options
和,而默认情况下是。USB debugging
USB Configuration
MTP (Media Transfer Protocol)
在计算机上,我尝试安装并使用mtpfs
和jmtpfs
,但没有成功。我的理解是它们都libmtp
在下面使用。我有libmtp 1.1.6
并mtp-detect
说
Unable to open ~/.mtpz-data for reading, MTPZ disabled.libmtp version: 1.1.6
Listing raw device(s)
Device 0 (VID=04e8 and PID=6860) is a Samsung Galaxy models (MTP).
Found 1 device(s):
Samsung: Galaxy models (MTP) (04e8:6860) @ bus 5, dev 8
Attempting to connect device(s)
ignoring libusb_claim_interface() = -6PTP_ERROR_IO: failed to open session, trying again after resetting USB interface
LIBMTP libusb: Attempt to reset device
LIBMTP ERROR: couldnt parse extension samsung.com/devicestatus:1
Error 1: Get Storage information failed.
Error 2: PTP Layer error 02fe: get_handles_recursively(): could not get object handles.
Error 2: Error 02fe: PTP: Protocol error, data expected
USB low-level info:
bcdUSB: 512
bDeviceClass: 0
bDeviceSubClass: 0
bDeviceProtocol: 0
idVendor: 04e8
idProduct: 6860
IN endpoint maxpacket: 512 bytes
OUT endpoint maxpacket: 512 bytes
Raw device info:
Bus location: 5
Device number: 8
Device entry info:
Vendor: Samsung
Vendor id: 0x04e8
Product: Galaxy models (MTP)
Vendor id: 0x6860
Device flags: 0x48000207
随后是一系列附加信息。
我尝试将手机连接到Windows 7 计算机,并且完美运行。
然后我尝试同样的方式Windows 7 虚拟机在我的 Kubuntu 14.04 主机内,但不幸的是没有看到 USB 设备。
然后,我尝试Kubuntu 18.04 虚拟机在同一个 Kubuntu 14.04 主机内。这样可以看到 USB 设备,但在使用文件管理器访问时,计算机上会显示一个对话框,The process for the mtp protocol died unexpectedly
但设备上没有任何内容。在我的 Kubuntu 14.04 计算机上,我的旧 Android 5.0 手机仍然会随机出现这样的消息,但最终它会正常工作;而这里始终失败。mtp-detect
现在显示
libmtp version: 1.1.13
Listing raw device(s)
Device 0 (VID=04e8 and PID=6860) is a Samsung Galaxy models (MTP).
Found 1 device(s):
Samsung: Galaxy models (MTP) (04e8:6860) @ bus 1, dev 4
Attempting to connect device(s)
LIBMTP PANIC: Could not open session! (Return code 8194)
Try to reset the device.
Unable to open raw device 0
OK.
在谷歌上搜索该消息,我找不到任何有用的信息。
最后,我安装最新的libmtp 1.1.15
从我的 Kubuntu 14.04 上的源代码。文件管理器访问没有任何变化,而mtp-detect
同样说
Unable to open ~/.mtpz-data for reading, MTPZ disabled.libmtp version: 1.1.15
Listing raw device(s)
Device 0 (VID=04e8 and PID=6860) is a Samsung Galaxy models (MTP).
Found 1 device(s):
Samsung: Galaxy models (MTP) (04e8:6860) @ bus 5, dev 16
Attempting to connect device(s)
LIBMTP PANIC: Could not open session! (Return code 8194)
Try to reset the device.
Unable to open raw device 0
OK.
设备将显示熟悉的ALLOW/DENY
对话框。
我记得我尝试过另一款三星 Android 手机手机(我认为是 6.0 或 7.0)另一个 Kubuntu 14.04计算机具有相同的No Storages found
行为ALLOW/DENY
,但当时我并不太在意,因为那不是我的手机。
我花了无数个小时尝试其他解决方法,但都没有成功。我无法更改我的操作系统,至少现在不行。它仍然支持六个月,而新系统似乎没有任何改善。我也不能更换手机,但不能通过 USB 传输文件使它变得毫无用处。
这样的东西真的应该可以立即使用,对吧?
答案1
检查/etc/udev/rules.d
名为 的文件xx-android.rules
。我相信我手动创建了我的文件,但那是几年前的事了。可能是在您运行的 14.04 上。我的 android 规则文件名为51-android.rules
。
如果此文件存在,请打开它以确定您的特定设备是否包含在内。我敢打赌它不包含在内。
如果不,
`sudo <your_favorite_editor> /etc/udev/rules.d/xx-android.rules`
并添加以下规则
`ATTR{idVendor}=="04e8", ATTR{idProduct}=="6860", SYMLINK+="libmtp-%k", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"`
如果您没有 xx-android.rules 文件,请告诉我,我会告诉您如何创建一个。
仅针对 GP,这是 Android 规则文件的模板
SUBSYSTEM!="usb", GOTO="android_usb_rules_end"
LABEL="android_usb_rules_begin"
ATTR{idVendor}=="04e8", ATTR{idProduct}=="6860", SYMINK+="libmtp-%k", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
LABEL="android_usb_rules_end"
以下需要 root 权限...将模板放在 /etc/udev/rules.d/ 中。另存为 xx-android.rules,其中 'xx' 是 10 到 99 之间的数字。例如:51-android.rules
注销您的会话并重新登录。我建议重新启动。