Bật gỡ lỗi USB trên thiết bị
Điều này được thực hiện trong Cài đặt Phát triển . Nếu bạn không có mục đó trong menu cài đặt, hãy đi tới Cài đặt Giới thiệu , cuộn đến "Số xây dựng" và đập nó như một con khỉ cho đến khi thiết bị của bạn chúc mừng bạn đã trở thành nhà phát triển. Quay trở lại trang chính của menu Cài đặt và gần phía dưới, bạn sẽ thấy cài đặt "Phát triển" (hoặc "Nhà phát triển") ngay bây giờ. Nhập nó và bật gỡ lỗi USB ở đây.
Xác định thiết bị
Đầu tiên chúng ta cần biết cách xác định thiết bị trên bus USB. Vì thế, với thiết bị Android KHÔNG được kết nối, hãy lấy một trình bao và chạy lệnh lsusb
. Sau đó kết nối thiết bị và chạy lại lệnh. Phát hiện dòng mới. Đối với Wileyfox Swift, đây là một "thiết bị không tên":
Bus 004 Device 003: ID 2970:2282
Thiết lập các quy tắc cho ADB
Bây giờ chúng ta cần các số ở cuối dòng trên : 2970:2282
. Chúng chỉ định nhà cung cấp (2970) và chính thiết bị (2282). Có những chi tiết đó, chúng tôi cần một vỏ gốc trên máy Linux của chúng tôi để chỉnh sửa (hoặc tạo, nếu nó chưa tồn tại) /etc/udev/rules.d/51-android.rules
tệp. Trong đó, thêm một dòng cho thiết bị của bạn. Dòng ví dụ sau đây cho thấy nó trông như thế nào đối với Wileyfox Swift:
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2970", ATTRS{idProduct}=="2282", MODE="0666" GROUP="androiddev", SYMLINK+="android%n"
Nếu bạn có một thiết bị khác, hãy thay thế ID nhà cung cấp và sản phẩm bằng những gì bạn đã tìm thấy ở trên khi chạy lsusb
. Một lời giải thích ngắn của dòng:
SUBSYSTEMS=="usb"
: rõ ràng quy tắc này chỉ dành cho USB;)
ATTRS{idVendor}=="2970"
: ID nhà cung cấp của thiết bị quy tắc này dành cho
ATTRS{idProduct}=="2282"
: ID thiết bị
MODE="0666"
: cho phép nút thiết bị sẽ nhận được. 0666
khá lỏng lẻo, cho phép mọi người dùng trên hệ thống của bạn đọc và viết quyền - vì vậy nếu bạn quan tâm, bạn có thể thử thay thế bằng một 0660
(chỉ cho chủ sở hữu và nhóm đọc-ghi và từ chối mọi thứ cho người khác).
GROUP="androiddev"
: nhóm nút thiết bị nào sẽ thuộc về. Đây phải là một nhóm người dùng dự định làm việc với thiết bị.
SYMLINK+="android%n"
: chỉ để cung cấp cho nút một tên đẹp, vì vậy bạn có thể tìm thấy nó dễ dàng hơn /dev
(trong trường hợp của tôi, sau này nó xuất hiện ở đó như /dev/android5
)
Quy tắc đó được đưa vào /etc/udev/rules.d/51-android.rules
, chúng ta phải nói udev
để sử dụng nó. Cách an toàn nhất (bên cạnh khởi động lại;) là khởi động lại udev
dịch vụ. Tùy thuộc vào bản phân phối Linux của bạn, điều này có thể được thực hiện thông qua service udev restart
hoặc /etc/init.d/udev restart
.
Xong việc đó, để lại vỏ gốc. Ngắt kết nối và kết nối lại thiết bị Android của bạn, thử adb devices
lại. Hầu hết các thiết bị xuất hiện bây giờ, nhưng không phải Wileyfox Swift - mà rõ ràng muốn có thêm một số âu yếm. Nếu bạn ở trong tình huống đó, hãy mở (hoặc tạo nếu nó không tồn tại) tệp ~/.android/adb_usb.ini
và thêm một dòng vào đó, đặt tên cho nhà cung cấp mà bạn đã tìm thấy lsusb
ở trên; đối với Swift sẽ là 0x2970
(yupp, ở đây bạn cần thêm tiền tố vào đó 0x
để chỉ ra đó là số thập lục phân). Sau đó khởi động lại máy chủ ADB : adb kill-server && adb start-server
. Ngắt kết nối và kết nối lại thiết bị một lần nữa. Bây giờ adb devices
nên xem nó.
Kết nối thiết bị
Bạn có thể đã nhận thấy adb devices
nói với bạn một cái gì đó như 0123456789ABCDEF unauthorized
. Điều đó ổn và vì sự an toàn (thiết bị) của bạn: trước tiên máy tính của bạn phải được cấp phép để có thể truy cập thiết bị. Vì vậy, chỉ cần phát hành adb shell
ngay bây giờ - sẽ thoát khỏi error: device unauthorized. Please check the confirmation dialog on your device.
lời khuyên đó (tùy chọn đánh dấu vào hộp kiểm để ủy quyền vĩnh viễn cho máy tính của bạn) và bạn đã hoàn tất: Bây giờ bạn có thể sử dụng adb để truy cập thiết bị của mình.
Cập nhật:
Lưu ý rằng trong các phiên bản Linux sau này, cú pháp cho các quy tắc UDEV đã thay đổi một chút, ví dụ như jcomeau_ictx đã chỉ ra trong nhận xét của mình. Đối với các giá trị chúng tôi tìm thấy ở trên sẽ là:
SUBSYSTEM=="usb", ATTR{idVendor}=="2970", ATTR{idProduct}=="2282", MODE="0666", GROUP="plugdev", SYMLINK+="android%n"
Hai sự khác biệt: nó bây giờ SUBSYSTEM
(không nhiều), và nhóm đã thay đổi từ androiddev
đến plugdev
(cựu không tồn tại trên hệ thống gần đây, sau này không và thường được gán ít nhất cho người sử dụng đầu tiên).
Ngoài ra, bạn có thể cần thêm ID nhà cung cấp vào ~/.android/adb_usb.ini
(một ID trên mỗi dòng, theo ký hiệu hex):
# ANDROID 3RD PARTY USB VENDOR ID LIST
# 1 USB VENDOR ID PER LINE.
0x2970