Mam telefon komórkowy podłączony do mojego komputera przez USB.
Podczas przeglądania informacji o urządzeniu za pomocą
sudo udevadm info --attribute-walk
identyfikator produktu i dostawcy pokazuje się dobrze, ale nie ma ATTR {serial} . Aplikacja, której używam (Android adb) potrzebuje urządzenia do zgłaszania numeru seryjnego, aby działać poprawnie.
Czy jest jakiś sposób na sfałszowanie numeru seryjnego urządzenia, na przykład za pomocą reguły udev?
Wyjaśnienie: Pytanie nie dotyczy tego, jak uzyskać numer seryjny urządzenia USB, ale jak ustawić numer seryjny.
Miałem telefon z Androidem, który nie zgłasza numeru seryjnego przez USB, a narzędziu adb nie podobało się to zbytnio. Jak dotąd wydaje się, że nie ma na to żadnego prostego rozwiązania. Jednak w dzisiejszych czasach bardzo łatwo jest po prostu kupić odpowiedni telefon z Androidem do programowania.
Odpowiedzi:
Po pierwsze, upewnij się, że problem z urządzeniem, który nie zgłasza numeru seryjnego.
adb devices
wyświetli numer seryjny jako wszystkie znaki zapytania, jeśli nie ma uprawnień dostępu do odpowiedniego urządzenia pod/dev/bus/usb/
. Pamiętaj też, że adb uruchamia serwer, być może będziesz musiał go zabić, aby ponownie go sondować.Zakładając, że to naprawdę problem z urządzeniem, szybko sprawdziłem kod źródłowy adb. Pojawia się
register_device
wcore/adb/usb_linux.c
wczytuje numer seryjny prosto z urządzenia.core/adb/usb_libusb.c
wywołań,libusb_get_device_descriptor
aby to zrobić, co (sprawdzenie kodu źródłowego libusb) pobiera go z sysfs lub bezpośrednio z urządzenia. Więc niestety żadne sztuczki udev nie pomogą.Twoje wybory wydają się być:
adb
(jest to oprogramowanie typu open source). To pytanie dotyczy bardziej przepełnienia stosu.źródło
Jeśli znasz węzeł urządzenia określonego urządzenia (np. / Dev / sdb), możesz to sprawdzić za pomocą następującego polecenia:
udevadm info -a -p $(udevadm info -q path -n /dev/sdb)
Zwykle, jeśli próbujesz utworzyć niestandardową regułę w /etc/udev/rules.d/51-android.rules dla urządzeń z Androidem, pisanie
lsusb
w twoim terminalu wyświetli coś podobnegoBus 002 Device 004: ID 062a:3270 Creative Labs
. Cztery znaki po „ID” - w tym przypadku byłoby to062a
- służą do wskazania określonegoidVendor
w tym pliku.źródło
adb start-server
jako root lub używasz sudo), adb będzie w stanie samodzielnie odczytać numer seryjny.Prawdopodobnie nie jest to serial, ale FTDI, więc możesz spróbować w ten sposób:
1) Zdobądź serial
2) Utwórz regułę i zastąp XXXXXXXX znalezionym numerem seryjnym lub numerem seryjnym FAKE
3) Załaduj ponownie zasady
.
W takim przypadku spróbuj skontaktować się z autorem tego artykułu .
źródło