Niewidoczne urządzenie ADB, mimo włączonego debugowania USB

Hej,

Dzisiejszym postem odbiegnę nieco od security... ale post i tak będzie ciekawy :)
Post będzie dotyczyć systemu Android oraz ADB (Android Debug Bridge).

Wiele osób ma problemy z ADB, ponieważ często zdarza się że ich tablet czy smartfon nie jest widoczny z poziomu ADB, co przekłada się na problemy z debugowaniem aplikacji w Eclipse, Mono czy Unity 3D.

Jest na to ratunek - i to banalny. Wystarczy stworzyć lub zedytować pewien plik (jeżeli istnieje) dodając w nim jedną linijkę tekstu. Okej więc do dzieła.

Na warsztat idzie mój tablet, który miał z debugowaniem USB problemy. Mowa o U30GT Mini, który z wersją oprogramowania 1.05 (Android 4.1.1) zaczął mieć problemy z debugowaniem USB. Urządzenie było widoczne w systemie. Zainstalowałem nawet sterowniki ADB - lecz mimo tego, wpisywanie komendy "adb devices" zwracało pustą listę urządzeń.


Szukałem dość długo rozwiązania i wpadłem na to, żeby poszperać w kodzie adb. Znalazłem tam cały mechanizm odpowiadający za ADB. Otóż adb.exe ma w sobie wbudowaną listę identyfikatorów urządzeń USB (vendor ID). Chciałem już tą listę binarnie edytować, ale dostrzegłem że ładowany jest plik adb_usb.ini, jeżeli istnieje ( upraszczając, jest to plik: %UserProfile%\.android\adb_usb.ini ). Jeżeli tego pliku tam nie ma, to wchodzimy do katalogu "%UserProfile%\.android" przez polecenie Uruchom i tworzymy plik notatnikiem, dbając by rozszerzenie było poprawne. Plik musi nazywać się adb_usb.ini.

Co dodać do pliku, by adb widział tablet ?
Jak już wcześniej wspomniałem należy dodać vendor ID. By zdobyć vendor ID wchodzimy we właściwości urządzenia w menedżerze urządzeń.


Vendor ID to numerek po ciągu znaków "VID_" do znaku "&", czyli w tym przypadku 2207. Oczywiście jest to numer heksadecymalny, więc do pliku adb_usb.ini dopisać musimy "0x2207". Pamiętajmy, by wszystkie wpisy z identyfikatorami były w nowych liniach.

Teraz należy wpisać "adb kill-server" w konsolę no i podłączyć ponownie urządzenie. Polecenie "adb devices" zwróci nam id naszego urządzenia, a my będziemy mogli skorzystać z innych komend - na przykład przejść do powłoki :)


W przypadku gdy urządzenie widnieje w menedżerze urządzeń jako np. SAMSUNG_ANDROID a włączone jest debugowanie USB, to wystarczy zainstalować na siłę sterownik ADB od Google'a.

Miłej zabawy :)

Komentarze

  1. Że też soft nie może tego sam zrobić :-)

    OdpowiedzUsuń
    Odpowiedzi
    1. Zrobienie tego w sposób uniwersalny mogłoby być kłopotliwe. Wszyscy musieliby się umówić na przedstawianie się jakimś jednym identyfikatorem gdy urządzenie działa w trybie ADB.

      Usuń
  2. u mnie to nie pomogło wpisałem w pliku adb_usb.ini: 0x04E8 i nic nadal nie wykrywa urządzenia

    OdpowiedzUsuń
    Odpowiedzi
    1. Urządzenie musi mieć włączony tryb debugowania USB a samo adb należy zrestartować na komputerze (np. wyłączając je komendą adb kill-server)

      Usuń
    2. mi też nie pomogło ;(

      Usuń
  3. Przejrzałam wcześniej dziesiątki stron (jeśli nie setki), spędziłam nad tym dobre 3-4 dni i nic. Najpierw miałam problem ze sterownikiem, później z adb. Ciągle nie widział mi urządzenia. Bardzo pomocny post. Dzięki wielkie!

    OdpowiedzUsuń
  4. W przypadku tabletu Modecom pomogło... Wielkie dzięki

    OdpowiedzUsuń
  5. To jest najlepsza solucja, jaką znalazłem w sieci. Pomogła w przypadku Kruger&Matz 0793 i masy innych chińskich tabletów. WIELKIE WIELKIE DZIĘKI !!!

    OdpowiedzUsuń
  6. Jesteś Wielki . Pomogło na Goclever R974.2

    OdpowiedzUsuń
  7. w HTC Desire X (4.1.1) przy zablokowanym ekranie (wzorem lub PINem) nie działa tryb debugowania - po podłączeniu kabla ikonka z robocikiem pojawia się tylko na ułamek sekundy i znika. Po wpisaniu "adb devices" - brak dostępnych urządzeń. Da się to ominąć?

    OdpowiedzUsuń
  8. Dzieki wielkie :) pomogło z GoClever R76.2

    OdpowiedzUsuń
  9. Dzięki wielkie :) Kupiłem wczoraj tablet Carrfour CT820 (we Francji Touch Tablet 8 Neo 2) i przeczesałem chyba na wszystkie sposoby internet w poszukiwaniu rozwiązania, dopiero Twoje zadziałało. Teraz mogę testować moje gierki na tym budżetowym cudzie :)

    OdpowiedzUsuń
  10. "Nazwa 'adb' nie jest rozpoznawana jako polecenie wewnętrzne lub zewnętrzne"... Dziękuję, to by było na tyle... :(

    OdpowiedzUsuń
  11. Damn, mi także pomogło przy tablecie Modecom. Gościu, jesteś wielki :) !

    OdpowiedzUsuń
  12. dzięki dzięki i jeszcze raz dzięki jesteś wielki męczę się z tym od dwóch tygodni po parę godzin dziennie :)

    OdpowiedzUsuń
  13. Sprawdziłem Twoją metodę, bo ja również miałem problem z wykryciem mojego tableta (NavRoad NEXO 7), i niestety nie rozwiązało to problemu. Dopiero użycie ADB Drivera załatwiło sprawę. Piszę to dla tych, którzy też mają tego typu problem i sposób podany w poście nie zadziałał :).

    OdpowiedzUsuń
  14. Ja ten opis nie pomógł w przypadku zenithink C94. W menadżerze urządzeń wyświetlał mi się żółty znaczek przy:
    SAMSUNG Android Phone -> Android ADB Interface
    Na komputerze kolegi u którego poprawnie wykrywało to urządzenie wyświetlało się:
    SAMSUNG Android Phone -> Android Composite ADB Interface
    Na podstawie tego wygooglałem ten post:
    http://stackoverflow.com/questions/24583354/adb-doesnt-recognize-samsung-gear-live-or-lg-g-watch
    Generalnie chodzi o to, że należy zaktualizować sterownik i samemu wybrać jakie to jest urządzenie. W moim przypadku wybrałem USB Composite Device i to zadziałało. Od tej pory poprawnie wykrywa tablet w adb devices.
    Mam nadzieję, że komuś to pomoże :)

    OdpowiedzUsuń
  15. czy mogę poprosić jaśniej o stworzeniu tego pliku dla urządzenia, po kilku dniowych walkach nadal nie widzi S3 Neo root+rom+cwm,

    OdpowiedzUsuń
  16. wyskakuje że znalazło urządzenie o numerze .... a dalej napis unauthorized(nieupoważniony) więc nic dalej nie zrobię, jakieś pomysły?

    OdpowiedzUsuń
  17. Odpowiedzi
    1. Niestety Twój sposób nie działa pod żadnym systemem. Na pewno robię wszystko prawidłowo.

      Usuń
  18. Ciekawie napisane. Pozdrawiam

    OdpowiedzUsuń

Prześlij komentarz