私の携帯電話はUSB経由でコンピュータに接続されています。
デバイス情報を表示するために使用する場合
sudo udevadm info --attribute-walk
製品とベンダーIDが正しく表示されますが、そうではありませんATTR{シリアル番号}。私が使用しているアプリ(Android adb)が正常に機能するためには、デバイスにシリアル番号を報告する必要があります。
たとえば、udevルールを使用してデバイスのシリアル番号を偽造する方法はありますか?
言う:問題はどうするかではありません。得るUSBデバイスのシリアル番号ですが、どのように置くシリアル番号。
USB経由でシリアル番号を報告しないAndroid携帯電話がありますが、adbツールはあまり好きではありません。まだ簡単な解決策はないようです。しかし、今では開発に適したAndroid携帯電話を購入するのは簡単です。
答え1
まず、シリアル番号を報告しないデバイスが実際に問題であることを確認してください。adb devices
そのデバイスにアクセスする権限がない場合、シリアル番号は完全な疑問符で表示されます/dev/bus/usb/
。また、adb はサーバーを起動するため、再調査するにはサーバーをシャットダウンする必要があるかもしれません。
さすがにデバイスの問題だと仮定して、すばやくadbのソースコードを確認してみました。デバイスからシリアル番号を直接読み取るregister_device
と発生します。これを行うための呼び出し(libusbのソースコードの確認)は、sysfsまたはデバイスから直接取得されます。したがって、残念ながら、どのudevトリックも役に立ちません。core/adb/usb_linux.c
core/adb/usb_libusb.c
libusb_get_device_descriptor
あなたのオプションは次のとおりです。
- シリアル番号なしでadbを操作する方法を学びます。パッチされている可能性があります
adb
(オープンソースです)。私はこれがStack Overflowに関する質問に近いと思います。 - adbリクエストへの応答を偽にするためにカーネルusbfsドライバをパッチしました。これは私にパッチするよりはるかに難しいようです。
- adbがlibusbを使用していると仮定し、syfsでシリアル番号の偽造を許可するようにカーネルをパッチしました。
- 損傷したハードウェアを修理してください。
答え2
特定のデバイス (/dev/sdb など) のデバイス ノードがわかっている場合は、次のように検索できます。
udevadm info -a -p $(udevadm info -q path -n /dev/sdb)
通常、/etc/udev/rules.d/51-android.rulesでAndroidデバイスのカスタムルールを作成しようとすると、lsusb
端末に書き込むと次の内容が表示されますBus 002 Device 004: ID 062a:3270 Creative Labs
。 「ID」(この場合)の後の4文字は、062a
そのファイルの特定の文字を表すために使用されます。idVendor
答え3
おそらくシリアルではなくFTDIなので、次のことを試してみてください。
1) シリアル番号の取得
sudo udevadm info --attribute-walk -n /dev/ttyUSB0 | sed -n '/FTDI/,/serial/p'
2)ルールを作成し、XXXXXXXXXを見つけたシリアル番号または偽のシリアル番号に置き換えます。
sudo echo 'SUBSYSTEM=="tty", ATTRS{serial}=="XXXXXXXX", GROUP="users", MODE="0660", SYMLINK+="myusbphone"' | sudo tee /etc/udev/rules.d/99-myusbphone.rules
3) リロードルール
sudo udevadm control --reload-rules
。
そのような場合は、この記事の作成者に連絡してください。記事。