如何获取MTP设备名称

And*_*iuk 11 command-line mtp

...我试过搜索,但它提供了大量的“如何连接 MTP 设备”

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

Oli*_*Oli 13

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

$ lsusb
Bus 002 Device 011: ID 18d1:4ee1 Google Inc. Nexus 4
Run Code Online (Sandbox Code Playgroud)

我的 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
...
Run Code Online (Sandbox Code Playgroud)

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

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


Syl*_*eau 8

您可以解析mtp-detect.

首先安装mtp-tools

sudo apt-get install mtp-tools
Run Code Online (Sandbox Code Playgroud)

并运行:

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