MTPデバイス名を取得する方法


11

...検索を試しましたが、「MTPデバイスを接続する方法」がたくさんあります

Nautilusデバイスリストに表示される(Nexus 10またはGalaxy S5)などの接続デバイス名を取得する方法を知りたいだけです。

回答:


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のからそれを実行しているとして/あなたに感謝し、スクリプトの$ ENV {ID_MODEL}が魔法のように動作ルール
アンドリューMatuk

ああ、さらに良い。
オリ

8

の出力を解析できますmtp-detect

最初のインストールmtp-tools

sudo apt-get install mtp-tools

そして実行:

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

私は依存関係を回避しようとしましたが、それでもあなたに感謝します
アンドリューMatuk 14

私は見ていたが、非常遅いmtp-detectことがわかった。ここで完了するのに40秒かかりました。
オリ

@Oli:Nexus 7を接続するだけで、ほとんど瞬時に変になります。しかし、udevを見るのも良い選択です:)
シルヴァンピノー14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.