Câu trả lời:
Hãy thử sử dụng sudo $(which fastboot)
ví dụ sudo $(which fastboot) devices
cũng thế sudo $(which fastboot) oem unlock
Tìm thấy một giải pháp tốt hơn ở đây:
https://stackoverflow.com/a/28127944/1621927
Dưới đây là nhận xét:
Thay vì buộc cấp quyền qua sudo
mỗi lần bạn cần chạy fastboot
, bạn có thể khắc phục sự cố vĩnh viễn:
lsusb
để xác định thiết bị USB VendorID của bạnudev
để đặt quyền thích hợp khi thiết bị của bạn được cắmNhư một phần thưởng - nó sẽ được cố định cho adb
quá.
Ví dụ: trong trường hợp của tôi (đối với 'Megafon SP-A20i'):
$ fastboot devices
no permissions fastboot
$ sudo fastboot devices
[sudo] password for kaa:
MedfieldA9055F28 fastboot
$
Hãy sửa chữa:
Đầu tiên, chúng ta cần xác định thiết bị:
a) tìm số bus USB (hack: Tôi biết thiết bị này dựa trên Intel)
$ fastboot -l devices
no permissions fastboot usb:1-1.2
$ lsusb |grep 001 |grep -i intel
Bus 001 Device 044: ID 8087:09ef Intel Corp.
Bus 001 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
$
b) tìm kiếm các thiết bị Intel khác:
$ lsusb |grep 8087
Bus 002 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 044: ID 8087:09ef Intel Corp.
Bus 001 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
$
Các trung tâm không phải là điện thoại thông minh chắc chắn, vì vậy - nhà cung cấp USB mà chúng tôi cần là "8087".
Thứ hai, cấu hình udev
(bạn phải thay thế giá trị "idVendor" bằng giá trị của bạn):
$ sudo sh -c "echo '# Megafon SP-A20i' >> /etc/udev/rules.d/51-android.rules"
$ sudo sh -c "echo 'SUBSYSTEM==\"usb\", ATTR{idVendor}==\"8087\", MODE=\"0666\", GROUP=\"plugdev\"' >> /etc/udev/rules.d/51-android.rules"
$ sudo service udev restart
udev stop/waiting
udev start/running, process 1821
$
Thứ ba, cắm lại thiết bị của bạn để cho phép udev
thực hiện điều đó thật kỳ diệu.
Kiểm tra lần cuối:
$ fastboot -l devices
MedfieldA9055F28 fastboot usb:1-1.2
$ adb devices
List of devices attached
$ fastboot reboot
rebooting...
finished. total time: 0.253s
$ sleep 90
$ adb devices
List of devices attached
MedfieldA9055F28 device
$
Voila!
sudo udevadm trigger
.
sudo
không phải là một giải pháp.
Nhờ elichai2 và liên kết và danh sách này, tôi đã có thể giải quyết vấn đề cấp phép fastboot của mình.
Tôi có Google Nexus 6P vì vậy tôi đã sử dụng thông tin sau cho ID nhà cung cấp của mình:
Google - 18d1
Nếu bạn sử dụng lệnh sau:
sudo sh -c "echo 'SUBSYSTEM==\"usb\", ATTR{idVendor}==\"8087\" ..."
sao chép chính xác Tôi đã root và cố gắng sao chép chỉ phần echo mang lại cho tôi kết quả không mong muốn. Về cơ bản, nó đặt \ "trong tệp .rules thay vì diễn giải dấu gạch chéo là ký tự thoát.
Tôi đề nghị sử dụng cách sau nếu bạn đã root tạo tệp .rules (Sử dụng ID nhà cung cấp của bạn).
echo 'SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODE="0666", GROUP="plugdev"' >> /etc/udev/rules.d/51-android.rules
Tôi đã tải lại các quy tắc udev và sau đó ban hành lệnh kích hoạt. Tôi cũng rút phích cắm và cắm usb cho biện pháp tốt.
udevadm control --reload
udevadm trigger
Là một người dùng không có đặc quyền, sau đó tôi chạy:
fastboot devices
và nó đã làm việc như mong muốn. Tôi hy vọng điều này có thể được sử dụng hoặc giúp đỡ cho bất kỳ ai gặp rắc rối với vấn đề quyền.
Khi tôi cần gửi một số lệnh bằng fastboot (ví dụ như chương trình cơ sở flash trên thiết bị htc) tôi sẽ cài đặt fastboot bằng apt
sudo apt install android-tools-fastboot
sau đó khi tôi bắt đầu sử dụng thì lệnh đầu tiên là
sudo -s
sau đó tất cả các lệnh trong thiết bị đầu cuối này sẽ chạy như các lệnh gửi gốc như
fastboot devices
fastboot reboot-bootloader
fastboot oem rebootRUU
fastboot flash zip xxxx.zip
không cần sửa chữa hay gì đó đơn giản chỉ cần thêm một lệnh trước khi khởi động nó
Hoặc bạn có thể thêm tất cả các quy tắc udev: Toàn bộ quy tắc ID nhà cung cấp USB của Android cho Linux https://gist.github.com/jdamcd/6054951#file-51-android-rules
Đầu tiên cài đặt fastboot từ apt:
sudo apt install android-tools-fastboot
Tiếp theo thực hiện fastboot với sudo:
sudo fastboot
Nó làm việc cho tôi.