web-dev-qa-db-fra.com

Comment obtenir le nom du périphérique MTP

... j'ai essayé la recherche mais cela donne une tonne de "comment connecter des périphériques MTP"

Je veux juste savoir comment obtenir le nom d'un périphérique connecté tel que (Nexus 10 ou Galaxy S5), que je peux voir dans la liste des périphériques Nautilus.

11
Andrew Matuk

J'ai trouvé cela étonnamment difficile. J'ai un Nexus 5 et KDE (en utilisant libmtp, je pense) l'affiche en tant que Nexus 5. Mon premier instinct a été que KDE ne faisait que regarder la base de données matérielle. Ceci mappe les chaînes de fournisseur et de produit des périphériques USB vers des noms connus. Voici le problème:

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

Mon Nexus 5 vient d'avoir un déclassement! Donc, KDE ne l'obtient pas de là.

Nous pouvons utiliser udevadm pour interroger des périphériques. Dans ce cas, nous devons lui transmettre une référence à l'appareil. Je vais utiliser les numéros de bus/périphérique ci-dessus (ils doivent être au format %03d, donc 1 devient 001, 20 devient 020, etc.):

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

Il y a beaucoup d'autres conneries, mais ID_MODEL semble être ce que nous voulons. Si vous avez besoin d'extraire et de traiter cela plus avant, vous pouvez l'exécuter à travers awk (ou un autre) pour le nettoyer et remplacer le trait de soulignement:

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

Vous pouvez analyser la sortie de mtp-detect.

Première installation mtp-tools:

Sudo apt-get install mtp-tools

Et courir:

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