Máy tính bảng android không tên i.onik không được nhận dạng bởi adb - thiết bị adb trống


7

Tôi đã làm theo các hướng dẫn khác nhau và cuối cùng đã có thể kết nối ZTE Blade của tôi với máy tính xách tay Ubuntu để gỡ lỗi USB. Thiết lập tương tự không hoạt động khi tôi trao đổi điện thoại bằng máy tính bảng "không tên" i.onik TP10.1-1500DC của tôi.

Tôi đã thử các loại cáp khác nhau và các cổng USB khác nhau. Tôi có cần một loại cáp đặc biệt để kết nối máy tính bảng để gỡ lỗi USB không?

Đây là những gì tôi nhận được từ một vỏ gốc:

~# adb devices
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
List of devices attached 

~#

(Tôi biết rằng có thể chạy adbdưới dạng không root, nhưng thử nghiệm này là để loại trừ lỗi cấp phép.)

Đầu lsusbra là đặc biệt cho thiết bị này, không có mô tả văn bản được hiển thị. Mục đầu tiên bên dưới là từ một thiết bị khác, mục thứ hai từ máy tính bảng. Tôi đã xác minh điều này bằng cách chạy lsusbcùng và không kèm theo máy tính bảng:

Bus 002 Device 005: ID 10d5:5000 Uni Class Technology Co., Ltd 
Bus 002 Device 009: ID 2207:0010  

Tất nhiên, gỡ lỗi USB được bật trong cài đặt của máy tính bảng và tôi đã khởi động lại nó.

Còn gợi ý nào nữa không?


1
Bạn có thể muốn kiểm tra Định cấu hình ADB cho Nexus 4 trên Ubuntu 11.10 . Có thể bạn đã bỏ qua bước để làm cho thiết bị của bạn được biết đến :)
Izzy

@Izzy: Thêm ID nhà sản xuất vào adb_usb.initệp đã giải quyết vấn đề ngay lập tức. Cảm ơn rất nhiều! Muốn viết một câu trả lời để tôi có thể chấp nhận nó?
krlmlr

Chắc chắn, chỉ cần làm điều đó. Khi chúng tôi có các chi tiết đã có trong câu hỏi được liên kết, tôi giữ nó chung chung hơn. Vui mừng vì nó đã giải quyết điều đó một cách dễ dàng - nhưng mặt khác, đó chỉ là những gì tôi mong đợi :) Hãy tận hưởng! // Btw, để các máy khác dễ dàng thiết lập, bạn cũng có thể quan tâm đến việc có cài đặt ADB tối thiểu không? - đó là điều cuối cùng đã thuyết phục tôi làm điều đó: Chỉ cần sao chép một vài tệp và bạn đã hoàn tất. Không cần toàn bộ SDK nếu bạn không phải là nhà phát triển :)
Izzy

@Izzy: Trong Ubuntu, tôi có thể cài đặt adbbằng apt-get install android-tools-adb. Không cần phải sao chép tập tin hoặc điều chỉnh PATHcài đặt. Gói chính nó rất nhỏ và chỉ chứa adbvà một vài tệp cần thiết.
krlmlr

Tôi biết điều đó (vì tôi cũng đang sử dụng Ubuntu). Nhưng tôi cũng nghe nói nó mang theo một loạt các phụ thuộc - đó là lý do tại sao tôi dùng đến "biến thể sao chép". Ở đây các tệp thực thi được biên dịch tĩnh, do đó luôn hoạt động bất kể phân phối.
Izzy

Câu trả lời:


7

Câu trả lời của Izzy là sai lệch. Hai thứ không liên quan đã được trộn lẫn (danh sách ID nhà cung cấp trong adb ở một bên và thiết lập quyền trong Linux ở phía bên kia).

1) thiết bị được xem xét bởi adb:

Adb có một danh sách mã nhà cung cấp USB được mã hóa cứng mà nó thử. Ví dụ: điện thoại di động HTC sử dụng 0xbb4, được liệt kê ( tệp nguồn usb_vendors.c ), trong khi 0x2207 thì không.

Cách duy nhất để thêm vào danh sách này (không vá nguồn) là đặt ID nhà cung cấp trong tệp $HOME/.android/adb_usb.ini, từng dòng một. (TRANG CHỦ được thiết lập phải không?)

Không cần cáp đặc biệt.

2) thiết lập quyền cho truy cập không root:

Vấn đề khó khăn là cho phép người dùng truy cập vào eg / dev / bus / usb / 002/009 (thay đổi số xe buýt / số thiết bị; xem lsusbcác giá trị hiện tại).

Các chi tiết về điều này không liên quan đến câu hỏi của người đăng ban đầu, vì anh ta đã chạy adb với quyền root.


3

Như được mô tả trong Cấu hình ADB cho Nexus 4 trên Ubuntu 11.10 , trong Linux, điều quan trọng là phải được liệt kê trong ~/.android/adb_usb.ini(dựa trên người dùng) hoặc /etc/udev/rules.d/51-android.rules. Cú pháp cho cả hai tệp khác nhau: trong trường hợp đầu tiên, chỉ cần thêm id nhà cung cấp ( echo 0x18d1 >> ~/.android/adb_usb.inicho Nexus 4), mục nhập cho quy tắc UDEV phức tạp hơn một chút. Chi tiết có thể được tìm thấy trong câu hỏi liên kết (hay đúng hơn là câu trả lời của nó).

Trong trường hợp của tôi, đó không phải là "hoặc là", nhưng dường như cả hai phần đều cần thiết (tôi chưa bao giờ có điều đó trước đây và thậm chí tôi chưa bao giờ sử dụng adb_usb.ini- nhưng điều đó không có nghĩa là không có ngoại lệ như vậy). Bằng cách thêm thiết bị ở cả hai nơi (dù sao cũng không thể làm tổn thương), cuối cùng thiết bị cũng xuất hiện.

Hai lưu ý bổ sung: Sau khi thay đổi quy tắc UDEV, dịch vụ UDEV cần được khởi động lại để chấp nhận các thay đổi. Trên Ubuntu, điều này có thể được thực hiện thông qua sudo service udev restart(cách khác, bạn chỉ cần buộc UDEV tải lại các quy tắc của nó bằng cách sử dụng udevadm control --reload-rules). Nếu thiết bị của bạn vẫn không được phát hiện, rất có thể nó đã được cắm trong khi bạn thực hiện các thay đổi; bạn cần ngắt kết nối và kết nối lại cáp USB. Tất nhiên, phải gỡ lỗi USB trong thiết bị của bạn :)

Thí dụ

bởi krlmlr

Dựa trên đầu ra sau đây lsusbcho thiết bị Android được đề cập:

Bus 002 Device 009: ID 2207:0010  

nó là cần thiết để tạo /etc/udev/rules.d/51-android.rulesnhư rootvới các nội dung sau đây:

SUBSYSTEM=="usb", ATTR{idVendor}=="2207", ATTR{idProduct}=="0010", MODE="0660", GROUP="plugdev"

để tạo ~/.android/adb_usb.inivới các nội dung sau:

0x2207

Đầu tiên là cần thiết để cho phép người dùng thường xuyên (thuộc nhóm plugdev) truy cập thiết bị. Lưu ý mặt nạ cấp phép 0660thay vì mặt thường thấy 0666yếu hơn từ quan điểm bảo mật (cái sau cho phép truy cập "thế giới", trong khi cái trước chỉ cho phép truy cập "người dùng và nhóm"). Thứ hai là cần thiết để adbcố gắng nói chuyện với thiết bị ở nơi đầu tiên. Sau đó:

sudo chmod a+r /etc/udev/rules.d/51-android.rules
sudo udevadm control --reload-rules
adb kill-server

và rút phích cắm + cắm thiết bị Android của bạn. Sau đó,

adb devices

cuối cùng đã cho thấy thiết bị Android.

Ghi chú của Izzy:

Đối với LG Optimus 4X HD của tôi , việc thêm một dòng vào /etc/udev/rules.d/51-android.rules:

SUBSYSTEMS=="usb", ATTRS{idVendor}=="1004", ATTRS{idProduct}=="61a6", MODE="0666" GROUP="androiddev", SYMLINK+="android%n"

Có lẽ SYMLINKtùy chọn tạo ra sự khác biệt mà tôi không cần thêm mục nhập ~/.android/adb_usb.ini.


Lưu ý rằng tôi đã thêm máy tính bảng của mình vào một tệp rules.d. Theo hiểu biết của tôi, tôi đã phải thực hiện cả hai: Cài đặt trong .initệp là bắt buộc đối với các thiết bị "không tên" mà adbkhông biết rằng chúng chạy Android, trong khi rules.dcài đặt là bắt buộc để truy cập thiết bị mà không có rootđặc quyền.
krlmlr

Tôi chưa bao giờ thêm một thiết bị vào tệp ini đó, luôn luôn chỉ vào tệp quy tắc UDEV. Có lẽ bạn đã bỏ lỡ điều gì khi làm điều đó? Theo hiểu biết của tôi, một trong hai biến thể là đủ. Trong trường hợp của tôi, phần UDEV hoạt động tốt và tôi đã đọc nhiều báo cáo trong đó biến thể Ini-file đã làm điều đó mà không có bất kỳ điều chỉnh UDEV đặc biệt nào.
Izzy

Không, sau khi nhận xét của bạn, điều duy nhất tôi đã làm là vá .initệp và nó hoạt động mà không cần phải khởi động lại udev, như người dùng thông thường. (Tuy nhiên, tôi phải khởi động lại adbmáy chủ.) Tôi đã thêm thiết bị vào các quy tắc mà không có kết quả. Thông tin đặc biệt về .initệp này rất khó tìm, hãy tạo một Hỏi & Đáp cuối cùng sắp xếp mọi thứ :-)
krlmlr

Hãy thử xóa (hoặc nhận xét) các thay đổi đối với UDEV, khởi động lại dịch vụ UDEV và bạn sẽ thấy nó vẫn hoạt động. Và tôi đồng ý với bạn: Tôi cũng rất ngạc nhiên khi đọc về giải pháp tập tin Ini. Đối với đề xuất Hỏi & Đáp của bạn: chỉ cần kiểm tra thẻ ADB-wiki :)
Izzy

Không, nó không. Tôi cần cả các quy tắc và .ini. Có thật không. Tôi vừa kiểm tra tất cả các kết hợp. Hơn nữa, như bạn đã nêu chính xác, .iniphải sống trong nhà của người sử dụng tương ứng - vì vậy, nếu bạn có ý định chạy adbnhư root, bạn phải thêm nó vào root's .androidthư mục.
krlmlr

0

Hãy thử chỉnh sửa adb_usb.ini và thêm id thiết bị của bạn, bạn có thể tìm thấy nó bằng cách vào trình quản lý thiết bị tìm thấy "Giao diện ADB của Android", nhấp vào tab chi tiết và trên menu thả xuống "Thuộc tính", chọn "Phần cứng Id "trên hộp bên dưới có nhãn" Giá trị "Bạn sẽ thấy một cái gì đó như" USB \ VID_2207 & PID_0010 & MI_01 "Các số có thể khác nhau dựa trên id nhà cung cấp thiết bị của bạn, ví dụ: id nhà cung cấp của tôi là" 2207 "Không mở adb_usb.ini trên thư mục bên dưới và thêm id thiết bị của bạn ở định dạng hex

ví dụ: id thiết bị của tôi là "2207" Tôi sẽ đặt nó ở đó là "0x2207"

Nó thường nằm ở

  1. XP: \ Tài liệu và Cài đặt.android \
  2. Windows 7: \ Users.android \
  3. Windows 7: \ Users.android \

Nhưng nếu thư mục không tồn tại, hãy thử tạo nó bằng cách sử dụng cmd. Và nếu tệp adb_usb.ini cũng không tồn tại, bạn có thể tạo tệp bằng notepad và chỉ dán id thiết bị của bạn và lưu nó vào thư mục .android.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.