如何获取MTP设备名称


Answers:


13

我发现这出奇的艰难。我有一个Nexus 5,而KDE(libmtp我认为是使用)将其显示为Nexus5。我的第一个直觉是KDE只是在查看硬件数据库。这会将供应商和产品字符串从USB设备映射到已知名称。这是问题所在:

$ lsusb
Bus 002 Device 011: ID 18d1:4ee1 Google Inc. Nexus 4

我的Nexus 5刚刚降级!因此,KDE不能从那里得到它。

我们可以udevadm用来查询设备。在这种情况下,我们需要将其传递给设备。我将从上方使用总线/设备号(它们需要进行%03d格式化,因此1变成001,20变成020,依此类推):

$ udevadm info --name=/dev/bus/usb/002/011
...
E: ID_MODEL=Nexus_5
E: ID_MODEL_ENC=Nexus\x205
E: ID_MODEL_FROM_DATABASE=Nexus 4
...

那里还有很多其他废话,但这ID_MODEL似乎是我们想要的。如果您需要进一步提取和处理该代码,则可以通过awk(或另一个)运行它来清理它并替换下划线:

$ ... | awk -F'=' '/ID_MODEL=/{gsub("_"," ");print $2}'
Nexus 5

当我从udev / rules脚本中运行它时,$ env {ID_MODEL}就像一个符咒,谢谢您
Andrew Matuk 2014年

啊,甚至更好。
奥利(Oli)

8

您可以解析的输出mtp-detect

首次安装mtp-tools

sudo apt-get install mtp-tools

并运行:

$ mtp-detect 2>/dev/null | grep Model:
    Model: Nexus 7 (2013) Wi-Fi

我一直试图避免的依赖关系,但还是谢谢你
安德鲁Matuk

我也看看mtp-detect,但发现严重的慢。在这里花了40秒完成。
奥利(Oli)

@Oli:仅插入Nexus 7,几乎是瞬间的,很奇怪。但是查看udev也是一个不错的选择:)
Sylvain Pineau 2014年
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.