如何获取 MTP 设备名称

如何获取 MTP 设备名称

... 我尝试搜索,但搜索结果显示大量“如何连接 MTP 设备”

我只是想知道如何获取连接的设备名称(如Nexus 10 或 Galaxy S5),我可以在 Nautilus 设备列表中看到。

答案1

我发现这出乎意料地困难。我有一台 Nexus 5,KDE(libmtp我想是使用)将其显示为 Nexus 5。我的第一直觉是 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

答案2

您可以解析的输出mtp-detect

首次安装mtp-tools

sudo apt-get install mtp-tools

然后运行:

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

相关内容