เปิดใช้งานการแก้ไขข้อบกพร่อง USB บนอุปกรณ์
ซึ่งจะดำเนินการในการตั้งค่า> การพัฒนา หากคุณไม่มีรายการนั้นในเมนูการตั้งค่าของคุณให้ไปที่การตั้งค่า› เกี่ยวกับเลื่อนไปที่ "หมายเลขสร้าง" และกดมันเหมือนลิงจนกว่าอุปกรณ์ของคุณจะแสดงความยินดีที่คุณได้เป็นนักพัฒนา กลับไปที่หน้าหลักของเมนูการตั้งค่าและใกล้กับด้านล่างคุณควรเห็นการตั้งค่า "การพัฒนา" (หรือ "นักพัฒนา") ทันที ป้อนและเปิดใช้งานการแก้ไขข้อบกพร่อง USBที่นี่
ระบุอุปกรณ์
ก่อนอื่นเราต้องรู้ว่าอุปกรณ์ระบุบนบัส USB ได้อย่างไร สำหรับการที่มีอุปกรณ์ Android ที่ไม่lsusb
เชื่อมต่อคว้าเปลือกและเรียกใช้คำสั่ง จากนั้นเชื่อมต่ออุปกรณ์และเรียกใช้คำสั่งอีกครั้ง พบจุดใหม่ สำหรับWileyfox Swiftนี่คือ "อุปกรณ์นิรนาม":
Bus 004 Device 003: ID 2970:2282
การตั้งค่ากฎสำหรับ ADB
ตอนนี้เราต้องการตัวเลขที่ท้ายบรรทัดข้างบน: 2970:2282
. เหล่านี้ระบุผู้จัดจำหน่าย (2970) และอุปกรณ์ตัวเอง (2282) มีรายละเอียดเหล่านี้เราต้องการรูทเชลล์บนเครื่องลีนุกซ์ของเราเพื่อแก้ไข (หรือสร้างหากยังไม่มี/etc/udev/rules.d/51-android.rules
ไฟล์) ในนั้นเพิ่มบรรทัดสำหรับอุปกรณ์ของคุณ บรรทัดตัวอย่างต่อไปนี้แสดงให้เห็นว่ามันเป็นอย่างไรสำหรับWileyfox Swift: ¹
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2970", ATTRS{idProduct}=="2282", MODE="0666" GROUP="androiddev", SYMLINK+="android%n"
lsusb
หากคุณมีอุปกรณ์ที่แตกต่างกันแทนที่ผู้ขายและรหัสผลิตภัณฑ์กับสิ่งที่คุณได้พบข้างต้นเมื่อทำงาน คำอธิบายสั้น ๆ ของบรรทัด:
SUBSYSTEMS=="usb"
: เห็นได้ชัดว่ากฎนี้มีไว้สำหรับ USB เท่านั้น;)
ATTRS{idVendor}=="2970"
: รหัสผู้จำหน่ายของอุปกรณ์กฎนี้มีไว้สำหรับ
ATTRS{idProduct}=="2282"
: ID อุปกรณ์
MODE="0666"
: สิทธิ์ที่โหนดอุปกรณ์จะได้รับ 0666
ค่อนข้างหละหลวมให้สิทธิ์ผู้ใช้ทุกคนในระบบของคุณในการอ่านและเขียน - ดังนั้นหากคุณเป็นกังวลคุณอาจลองแทนที่ด้วย0660
(ให้เฉพาะเจ้าของและกลุ่มอ่าน - เขียนและปฏิเสธทุกอย่างให้ผู้อื่น)
GROUP="androiddev"
: กลุ่มอุปกรณ์ที่โหนดควรอยู่ นี่ควรเป็นกลุ่มที่ผู้ใช้ตั้งใจทำงานกับอุปกรณ์ที่เป็นของ
SYMLINK+="android%n"
: เพียงแค่ให้ชื่อที่ดีแก่โหนดเพื่อให้คุณสามารถค้นหาได้ง่ายขึ้น/dev
(ในกรณีของฉันมันจะปรากฏขึ้นที่นั่นในภายหลัง/dev/android5
)
กฎนั้นเข้ามา/etc/udev/rules.d/51-android.rules
เราต้องบอกudev
ให้ใช้มัน วิธีที่ปลอดภัยที่สุด (ถัดจากรีบูต;) กำลังเริ่มudev
บริการใหม่ ทั้งนี้ขึ้นอยู่กับ distro ลินุกซ์ของคุณนี้สามารถทำได้ทั้งผ่านหรือservice udev restart
/etc/init.d/udev restart
เสร็จแล้วปล่อยให้รูทเชลล์ ยกเลิกการเชื่อมต่อและเชื่อมต่ออุปกรณ์ Android ของคุณแล้วลองadb devices
อีกครั้ง อุปกรณ์ส่วนใหญ่ปรากฏตัวขึ้นในขณะนี้ แต่ไม่ใช่Wileyfox Swiftซึ่งเห็นได้ชัดว่าต้องการอุปกรณ์เสริมบางอย่าง หากคุณอยู่ในสถานการณ์นั้นให้เปิด (หรือสร้างหากไม่มี) ไฟล์~/.android/adb_usb.ini
และเพิ่มบรรทัดเดียวโดยตั้งชื่อผู้ขายที่คุณพบด้วยlsusb
ด้านบน สำหรับSwiftที่จะเป็น0x2970
(yupp ที่นี่คุณจะต้องนำหน้าด้วย0x
เพื่อชี้ให้เห็นว่ามันเป็นเลขฐานสิบหก) จากนั้นเริ่มต้นเซิร์ฟเวอร์ ADB adb kill-server && adb start-server
นี้: ตัดการเชื่อมต่อและเชื่อมต่ออุปกรณ์อีกครั้ง ตอนนี้adb devices
ควรเห็นมัน
กำลังเชื่อมต่ออุปกรณ์
คุณอาจสังเกตเห็นบอกคุณสิ่งที่ต้องการadb devices
0123456789ABCDEF unauthorized
ไม่เป็นไรและเพื่อความปลอดภัย (อุปกรณ์): คอมพิวเตอร์ของคุณต้องได้รับอนุญาตก่อนจึงจะสามารถเข้าถึงอุปกรณ์ได้ ดังนั้นเพียงแค่ออกadb shell
ตอนนี้ - ซึ่งจะปิดด้วยerror: device unauthorized. Please check the confirmation dialog on your device.
คำแนะนำการติดตาม (เลือกทำเครื่องหมายที่กล่องกาเครื่องหมายเพื่ออนุญาตคอมพิวเตอร์ของคุณอย่างถาวร) และคุณทำเสร็จแล้ว: คุณสามารถใช้adbเพื่อเข้าถึงอุปกรณ์ของคุณได้แล้ว
ปรับปรุง:
¹โปรดทราบว่าในเวอร์ชัน Linux ในภายหลังไวยากรณ์สำหรับกฎ UDEV นั้นมีการเปลี่ยนแปลงเล็กน้อยเช่นjcomeau_ictxชี้ให้เห็นในความคิดเห็นของเขา สำหรับค่าที่เราพบข้างต้นนั้นจะเป็น:
SUBSYSTEM=="usb", ATTR{idVendor}=="2970", ATTR{idProduct}=="2282", MODE="0666", GROUP="plugdev", SYMLINK+="android%n"
ความแตกต่างสองประการ: เป็นตอนนี้SUBSYSTEM
(ไม่มีพหูพจน์) และกลุ่มได้เปลี่ยนจากandroiddev
เป็นplugdev
(อดีตไม่มีอยู่ในระบบล่าสุดส่วนหลังทำและมักจะได้รับมอบหมายอย่างน้อยให้กับผู้ใช้คนแรก)
นอกจากนี้คุณอาจต้องเพิ่ม VendidID ของคุณ~/.android/adb_usb.ini
(หนึ่ง ID ต่อบรรทัดในรูปแบบเลขฐานสิบหก):
# ANDROID 3RD PARTY USB VENDOR ID LIST
# 1 USB VENDOR ID PER LINE.
0x2970