คำสั่ง adb devices ไม่ทำงาน


86

ฉันใช้ Ubuntu 10.10 64 บิต ฉันติดตั้ง ia32-libs พร้อมกับ Android Debug Bridge เวอร์ชัน 1.0.26

ปัญหาของฉัน:

  1. adb devices>>> ???????????? ไม่มีสิทธิ์
  2. sudo adb devices >>>> sudo: adb: command not found
  3. adb shell >>> ข้อผิดพลาด: สิทธิ์ไม่เพียงพอสำหรับอุปกรณ์

ฉันเดาว่าสิ่งเหล่านี้เกี่ยวข้องกันทั้งหมด นี่คือข้อมูลที่เกี่ยวข้อง

$ echo $PATH
/home/me/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/opt/android-sdk-linux_x86/tools:/opt/android-sdk-linux_x86/platform-tools

$ which adb
/opt/android-sdk-linux_x86/platform-tools/adb

$ adb devices
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
List of devices attached 
????????????    no permissions

$ sudo adb devices
sudo: adb: command not found

$ adb shell
error: insufficient permissions for device

ฉันได้ผลลัพธ์เดียวกันกับ Moto Droid ที่รูทซึ่งใช้ CM6.1 และ G-Tab ที่รูทซึ่งใช้ ROM ที่ใช้ CM7

ฉันได้ตรวจสอบโพสต์ที่เกี่ยวข้องดังต่อไปนี้:

ฉันลองทำตามคำแนะนำส่วนใหญ่ (ไม่ใช่ทั้งหมด) แล้วและยังไม่สามารถแก้ไขปัญหาได้ สิ่งที่ฉันไม่ได้ลองดูไม่เหมาะสม ฉันจะขอบคุณเคล็ดลับเพิ่มเติมเล็กน้อยและจะแก้ไขปัญหาต่อไป

สิ่งหนึ่งที่ฉันไม่ได้ลองคือแก้ไข /etc/udev/rules.d/70-android.rules นั่นน่าจะเป็นปัญหาหรือไม่? ฉันไม่เห็นว่าจะทำให้เกิด "sudo: adb: command not found" ได้อย่างไร บางทีปัญหาของฉันอาจจะไม่เกี่ยวข้องกันทั้งหมด อย่างไรก็ตาม ณ จุดนี้ฉันคิดว่าฉันต้องการข้อมูลจากคนอื่นเพราะฉันไม่เชื่อว่าฉันมีปัญหาเส้นทางหรือปัญหาทั่วไปอื่น ๆ ที่กล่าวถึงในโพสต์อื่น ๆ

แก้ไข: แก้ไขแล้วขอบคุณ EboMike และ RivieraKid นี่เป็นปัญหาสองประการที่แตกต่างกัน:

  1. รายการ # 2 ด้านบน (sudo: adb: command not found) ได้รับการแก้ไขโดยการสร้าง symlink ดังนี้:

    $ sudo ln -s /opt/android-sdk-linux_x86/platform-tools/adb /usr/local/sbin/adb
    

    นั่นทำให้ฉันสามารถทำตามที่ EboMike แนะนำและใช้วิธีแก้ปัญหานี้ การทำเช่นนั้นจำเป็นสำหรับ Moto Droid ของฉัน (อย่างไรก็ตามการเรียกใช้ adb เนื่องจาก sudo ไม่จำเป็นสำหรับ Viewsonic G-Tablet ของฉัน)

  2. อีกสองรายการของฉันได้รับการแก้ไขโดยใช้กฎ udev ตามที่ RivieraKid แนะนำ (จากลิงค์นี้)



รายการ # 1 ช่วยฉันได้จริงๆ ไม่แน่ใจเกี่ยวกับรายการ # 2
Francisco Quintero

คำตอบ:


87

สิ่งหนึ่งที่ฉันไม่ได้ลองคือแก้ไข /etc/udev/rules.d/70-android.rules นั่นน่าจะเป็นปัญหาหรือไม่?

มีเหตุผลใดเป็นพิเศษที่คุณไม่ทำเช่นนั้น? เพื่อตอบคำถาม - ใช่! กฎ udev คือสิ่งที่แจ้งให้ Ubuntu ทราบว่าอุปกรณ์ของคุณคืออะไรและอนุญาตให้เครื่องมือพื้นที่ผู้ใช้เข้าถึงได้

คุณจะไม่สามารถใช้งานได้อย่างถูกต้องโดยไม่ต้อง adb ต่อไปนี้คำแนะนำ

อย่างไรก็ตามคุณไม่ได้บอกว่าคุณใช้ Ubuntu เวอร์ชันใด แต่ฉันมีปัญหากับ 10.10 - โปรดแจ้งให้เราทราบหากคุณต้องการให้ฉันโพสต์เนื้อหาในไฟล์กฎของฉัน

ไม่ต้องกังวลกับการเรียกใช้ adb ผ่าน sudo คุณไม่จำเป็นต้องใช้ MODE="0666"จากการปกครองของ udev ช่วยให้คุณสามารถเข้าถึงอุปกรณ์ที่เป็นผู้ใช้ใด ๆ


แก้ไข:

อย่าลืมโหลดกฎใหม่:

sudo udevadm control --reload-rules

แก้ไข # 2:

ดังที่ @Jesse Glick ชี้ให้เห็นอย่างถูกต้องหาก adb ทำงานในโหมด daemon อยู่แล้วคุณจะต้องรีสตาร์ทเพื่อให้สิ่งนี้ทำงานได้:

sudo adb kill-server

ฉันเคยใช้ sudo ที่นี่เนื่องจากจะรับประกันได้ว่า adb จะถูกฆ่าและเป็นวิธีการที่ได้รับการสนับสนุนอย่างเป็นทางการในการหยุดเซิร์ฟเวอร์ มันจะเริ่มต้นใหม่โดยอัตโนมัติในครั้งถัดไปที่ใช้ adb แต่คราวนี้มีสภาพแวดล้อมที่ถูกต้อง


1
ขอบคุณสำหรับการเชื่อมโยง ไม่แน่ใจว่าฉันพลาดความจริงที่ว่าคำแนะนำเหล่านั้นเป็นทางการได้อย่างไร ฉันคิดว่าผู้คนกำลังทำสิ่งนั้นเพื่อเป็นการแก้ปัญหา ฉันพบรหัสผู้ขายสำหรับ Viewsonic GTablet ของฉันและเพิ่มกฎ udev และตอนนี้ก็ใช้งานได้แล้ว! ขอบคุณ.
MountainX

1
ด้วยเหตุผลบางประการฉันไม่สามารถทำให้ Motorola Droid แสดงกับอุปกรณ์ adb ได้ ตอนนี้ฉันสามารถรับ GTab และโปรแกรมจำลองเพื่อแสดงได้ แต่ไม่ใช่ Droid
MountainX

ดูด้านบน. การเรียกใช้ adb ในฐานะ root ทำให้ Moto Droid แสดงขึ้น
MountainX

$ cat /etc/udev/rules.d/51-android.rules SUBSYSTEM == "usb", SYSFS {idVendor} == "22b8", MODE = "0666" SUBSYSTEM == "usb", SYSFS {idVendor} = = "0955", MODE = "0666"
MountainX

1
…และคุณต้องรีสตาร์ทadbdaemon ถ้ามันทำงานมาก่อน
Jesse Glick

22

คุณต้องรีสตาร์ทเซิร์ฟเวอร์ adb เป็นรูท ดูที่นี่ .


ไม่ได้ผล รายละเอียด: me@desktop:/opt/android-sdk-linux_x86/platform-tools$ sudo adb kill-server sudo: adb: command not found me@desktop:/opt/android-sdk-linux_x86/platform-tools$ adb kill-server me@desktop:/opt/android-sdk-linux_x86/platform-tools$ sudo adb start-server sudo: adb: command not found
MountainX

adbไม่ได้อยู่ในเส้นทางของ superuser ของคุณ ป้อนwhich adbเพื่อดูว่ามันอยู่ในเส้นทางใดจากนั้นเพิ่มในเส้นทางของรูท
EboMike

หวังว่าคุณจะอ่านสิ่งนี้ได้ (ฉันไม่รู้วิธีจัดรูปแบบความคิดเห็นเพื่อรวมขึ้นบรรทัดใหม่) adb IS ในเส้นทางของผู้ใช้รูทของฉัน ฉันวางคำสั่ง adb ในโพสต์เดิมของฉัน เส้นทางคือ / opt / android-sdk-linux_x86 / platform-tools / adb $ sudo -s root @ desktop: # echo $ PATH / usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin: / usr / X11R6 / bin: / opt / android-sdk-linux_x86 / tools: / opt / android-sdk-linux_x86 / platform-tools
MountainX

1
นี่เป็นเรื่องแปลก ฉันได้ผลลัพธ์ที่แตกต่างจาก "ซึ่ง adb" ขึ้นอยู่กับว่าฉันเรียกใช้ในฐานะรูทหรือเรียกใช้ด้วย sudo นี่คือผลลัพธ์ $ sudo ซึ่ง adb $
MountainX

ระบุเส้นทางแบบเต็มจากนั้นเมื่อคุณเรียกใช้ adb เป็น root
EboMike

13

ในระบบ Gentoo / Funtoo linux ของฉันฉันมีปัญหาที่คล้ายกัน:

ฉันเข้าใจคำอธิบายอุปกรณ์ที่ไม่ถูกต้องเสมอและสิทธิ์ไม่เพียงพอ:

# sudo ./adb devices
List of devices attached 
????????????    no permissions
# ./adb usb
error: insufficient permissions for device

สำหรับฉันช่วยทำhowtoจาก Google ในกรณีของฉันฉันต้องเพิ่มกฎ udev:

# cat /etc/udev/rules.d/51-android.rules 
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODE="0666", GROUP="plugdev" 

และตั้งค่าสิทธิ์ระบบไฟล์

# chmod a+r /etc/udev/rules.d/51-android.rules

หลังจากเปลี่ยนสมาร์ทโฟนของฉันแล้วการเข้าถึงโทรศัพท์ก็สำเร็จแล้วตอนนี้ก็ปรากฏในตัวเลือกอุปกรณ์ Android ของ Eclipse:

# sudo ./adb devices
List of devices attached 
3XXXXXXXXXXXXXC device
# sudo ./adb usb
restarting in USB mode

คุณต้องตรวจสอบการเป็นสมาชิกของผู้ใช้ของคุณในplugdev -group


3

ทุกคำตอบที่ฉันอ่านระบุว่าSUBSYSTEM=="usb". อย่างไรก็ตาม udev (อาจจะโบราณ) ของฉันต้องการให้เปลี่ยนเป็นDRIVER=="usb"ไฟล์. ในที่สุดฉันสามารถเรียกใช้เซิร์ฟเวอร์ adb ในฐานะผู้ใช้ที่ไม่ใช่รูท ... เย้

สามารถให้คำแนะนำในการดูผลลัพธ์ของ udevmonitor --env ตามด้วยเอาต์พุตของ

udevinfo -a -p <DEVICE_PATH_AS_REPORTED_BY-udevmonitor>

หากudevmonitorและudevinfoไม่มีอยู่ในเครื่องของคุณให้ใช้udevadm monitorและudevadm info -a -p ...แทน
เถ้า

2

โปรดทราบว่า IDE เช่นIntelliJ IDEAมักจะเริ่มเซิร์ฟเวอร์ adb ของตนเอง

แม้แต่การฆ่าเซิร์ฟเวอร์ด้วยตนเองและเรียกใช้อินสแตนซ์ใหม่ด้วย sudo ก็ไม่ช่วยที่นี่จนกว่าคุณจะทำให้ IDE ของคุณฆ่าเซิร์ฟเวอร์เอง


2

การรีสตาร์ทเซิร์ฟเวอร์ adb เนื่องจากรูทใช้งานได้สำหรับฉัน ดู:

derek@zoe:~/Downloads$ adb sideload angler-ota-mtc20f-5a1e93e9.zip 
loading: 'angler-ota-mtc20f-5a1e93e9.zip'
error: insufficient permissions for device
derek@zoe:~/Downloads$ adb devices
List of devices attached
XXXXXXXXXXXXXXXX    no permissions

derek@zoe:~/Downloads$ adb kill-server
derek@zoe:~/Downloads$ sudo adb start-server
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
derek@zoe:~/Downloads$ adb devices
List of devices attached
XXXXXXXXXXXXXXXX    sideload

ฉันด้วย: Linux Mint Serena 18.1 พร้อม HTC Sensation Noob alert: ฉันรู้สึกไม่สบายใจมา 2 วันแล้วดังนั้นสิ่งต่างๆจึงเกือบจะเป็นที่น่ารังเกียจ
Aethelbald

1

ฉันแก้ไขปัญหานี้ในระบบเดเบียน GNU / Linux ของฉันโดยการเอาชนะกฎของระบบด้วยวิธีนี้:

mv  /etc/udev/rules.d/51-android.rules /etc/udev/rules.d/99-android.rules

ฉันใช้เนื้อหาจากไฟล์ที่เชื่อมโยงที่: http://rootzwiki.com/topic/258-udev-rules-for-any-device-no-more-starting-adb-with-sudo/



0

HTC One m7 ใช้ Cyanogenmod 11

โทรศัพท์เชื่อมต่อ USB และเชื่อมต่ออินเทอร์เน็ตผ่านมือถือของฉัน

จากนั้นฉันก็ประหลาดใจ:

cinder@ultrabook:~/temp/htc_m7/2015-11-11$ adb shell
error: insufficient permissions for device

cinder@ultrabook:~/temp/htc_m7/2015-11-11$ adb devices
List of devices attached
????????????    no permissions

วิธีแก้ไข: ปิดการเชื่อมต่ออินเทอร์เน็ตผ่านมือถือ

cinder@ultrabook:~/temp/htc_m7/2015-11-11$ adb devices
List of devices attached
HT36AW908858    device

-3

ฉันเพิ่งมีสถานการณ์เดียวกันการรีเซ็ตข้อมูลเป็นค่าเริ่มต้นทำงานได้ดีสำหรับฉัน


นี่คือความคิดเห็นแน่นอน?
Matthew Taylor

ความผิดฉันเอง. ฉันอยากจะบอกว่าการรีเซ็ตอุปกรณ์และข้อมูลการทำความสะอาดได้ผลดีสำหรับฉัน
Andrii Krokhin
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.