Jak uzyskać nazwę urządzenia MTP

11

... Próbowałem wyszukać, ale daje mnóstwo „jak podłączyć urządzenia MTP”

Chcę tylko wiedzieć, jak uzyskać nazwę podłączonego urządzenia, takiego jak (Nexus 10 lub Galaxy S5), które widzę na liście urządzeń Nautilus.

Andrew Matuk
źródło

Odpowiedzi:

13

Zaskoczyło mnie to. Mam Nexusa 5 i KDE ( libmtpmyślę, że go używa ) wyświetla go jako Nexusa 5. Mój pierwszy instynkt polegał na tym, że KDE po prostu patrzyło na sprzętową bazę danych. Odwzorowuje ciągi znaków dostawców i produktów z urządzeń USB na znane nazwy. Oto problem:

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

Mój Nexus 5 właśnie został obniżony! Więc KDE nie otrzymuje tego stamtąd.

Możemy użyć udevadmdo zapytania urządzeń. W takim przypadku musimy przekazać mu odniesienie do urządzenia. Będę używał numerów magistrali / urządzeń z góry (muszą być %03dsformatowane, więc 1 zmienia się na 001, 20 zmienia się na 020 itd.):

$ 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
...

Jest tam wiele innych bzdur, ale ID_MODELwydaje się, że tego chcemy. Jeśli potrzebujesz go wyodrębnić i przetworzyć, możesz go uruchomić awk(lub inny), aby go wyczyścić i zastąpić podkreślenie:

$ ... | awk -F'=' '/ID_MODEL=/{gsub("_"," ");print $2}'
Nexus 5
Oli
źródło
ponieważ uruchamiam go ze skryptu udev / rules $ env {ID_MODEL} działa jak urok, dziękuję
Andrew Matuk
Ach, nawet lepiej.
Oli
8

Możesz przeanalizować dane wyjściowe z mtp-detect.

Pierwsza instalacja mtp-tools:

sudo apt-get install mtp-tools

I biegnij:

$ mtp-detect 2>/dev/null | grep Model:
    Model: Nexus 7 (2013) Wi-Fi
Sylvain Pineau
źródło
Starałem się unikać zależności, ale wciąż dziękuję
Andrew Matuk,
Zrobiłem przyjrzeć się mtp-detect, ale okazało się, że poważnie powoli. Wykonanie tutaj zajęło 40 sekund.
Oli
@Oli: Po podłączeniu tylko mojego Nexusa 7 jest to niemal natychmiastowe, dziwne. Ale patrzenie na udev jest również dobrym wyborem :)
Sylvain Pineau