Как получить имя устройства MTP

11

... Я пробовал поиск, но он дает массу "как подключить устройства MTP"

Я просто хочу узнать, как получить имя подключенного устройства, например (Nexus 10 или Galaxy S5), которое я вижу в списке устройств Nautilus.

Андрей Матюк
источник

Ответы:

13

Я нашел это на удивление жестким. У меня 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
Оли
источник
поскольку я запускаю его из сценария udev / rules, $ env {ID_MODEL} работает как обаяние, спасибо
Эндрю Матук,
Ах, даже лучше.
Оли
8

Вы можете проанализировать вывод mtp-detect.

Первая установка mtp-tools:

sudo apt-get install mtp-tools

И запустить:

$ mtp-detect 2>/dev/null | grep Model:
    Model: Nexus 7 (2013) Wi-Fi
Сильвен Пино
источник
Я пытался избежать зависимостей, но все равно спасибо
Эндрю Матук,
Я посмотрел, mtp-detectно нашел это серьезно медленно. Это заняло 40 секунд.
Оли
@Oli: Просто подключив Nexus 7, это почти мгновенно, странно. Но смотреть на udev тоже хороший выбор :)
Сильвен Пино