私の携帯電話は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でシリアル番号の偽造を許可するようにカーネルをパッチしました。
- 損傷したハードウェアを修理してください。