मुझे लिनक्स पर ADB द्वारा पता लगाया गया मेरा डिवाइस कैसे मिलेगा?


18

मुझे अभी-अभी मेरी चमकदार नई विलेफ़ॉक्स स्विफ्ट मिली है - और इसे इस्तेमाल करने से पहले मैं चाहता हूँ oem unlockऔर इसे रूट करने के लिए (जैसा कि मैं आमतौर पर नए उपकरणों के साथ करता हूं;) परेशानी है, हालांकि डिवाइस पर सक्षम है, और /etc/udev/rules.d/51-android.rulesमौजूद इसी लाइन , डिवाइस द्वारा नहीं देखा जाता है adb devices

मुझे पता है कि इस साइट के आसपास कई उत्तर बिखरे हुए हैं, लेकिन वे या तो खोजने में कठिन हैं, बस एक विशिष्ट उपकरण को कवर करते हैं, या अंत में मुझे आवश्यक सभी चरणों को कवर नहीं करते हैं। इसलिए मैं इसे एक विहित, उपकरण-स्वतंत्र प्रश्न के लिए एक अवसर के रूप में लेता हूं और इसे नीचे एक विस्तृत उत्तर देता हूं:

मैं अपने एंड्रॉइड डिवाइस adbको लिनक्स पर कैसे देख और उपयोग कर सकता हूं ?


मैं हमेशा आलोचकों के लिए खुला हूँ - लेकिन व्याख्या के बिना एक गिरावट व्याख्या करना मुश्किल है। तो क्या डाउनवॉटर कृपया बताएं कि प्रश्न पर क्या सुधार होना चाहिए? मैं :) सजा के लिए मेरी आधुनिक शक्तियों का दुरुपयोग करने के लिए नहीं वादा
इज़ी

3
मुझे लगता है कि मतदाता को यह एहसास नहीं था कि आपने इस प्रश्न का उत्तर स्वयं देने के लिए पोस्ट किया है (उत्तर में आपको ध्यान नहीं दिया होगा)। चूँकि इस प्रश्न या टिप्पणियों में कोई संकेत नहीं है कि इसे स्वयं-उत्तर देने के उद्देश्य से पोस्ट किया गया था, मतदाता ने दूसरे से अंतिम पैराग्राफ पर आपत्ति जताई हो सकती है (यदि किसी सामान्य उपयोगकर्ता और उनके प्रश्न के संदर्भ में पढ़ा जाए तो आलस्य दिखता है)। मैं अब तक किसी अन्य कारण के बारे में नहीं सोच सकता।
Firelord

1
@ फ़िरलॉर्ड आश्वस्त लगता है (अतिरिक्त विफल-चरणों को रोकने के लिए प्रश्न को थोड़ा संपादित करें)। लेकिन फिर, उस उपयोगकर्ता को उत्तर को रद्द कर देना चाहिए था। या मुझे वहां भी कुछ याद आया? ;)
इज़ी

जवाबों:


24

डिवाइस पर USB डीबगिंग सक्षम करें

यह सेटिंग> डेवलपमेंट में किया जाता है । यदि आपके पास आपके सेटिंग मेनू में वह प्रविष्टि नहीं है, तो सेटिंग> अबाउट , "बिल्ड नंबर" पर स्क्रॉल करें, और इसे बंदर की तरह हथौड़ा करें जब तक कि आपका डिवाइस आपको डेवलपर बनने के लिए बधाई नहीं देता। सेटिंग्स मेनू के मुख्य पृष्ठ पर वापस जाएं , और नीचे के करीब आपको "विकास" (या "डेवलपर्स") सेटिंग्स अब देखना चाहिए। इसे दर्ज करें, और सक्षम करें यहां USB डीबगिंग करें।

डिवाइस को पहचानें

पहले हमें यह जानना होगा कि डिवाइस यूएसबी बस में कैसे पहचान करता है। उसके लिए, एंड्रॉइड डिवाइस कनेक्ट नहीं होने के साथ , एक शेल को पकड़ो और कमांड चलाएं lsusb। फिर डिवाइस को कनेक्ट करें और फिर से कमांड चलाएं। नई लाइन हाजिर करें। के लिए Wileyfox स्विफ्ट यह एक "बेनाम डिवाइस" है:

Bus 004 Device 003: ID 2970:2282

एडीबी के लिए नियम स्थापित करना

अब हमें उपरोक्त पंक्ति के अंत में संख्याओं की आवश्यकता है 2970:2282:। ये विक्रेता (2970) और डिवाइस को स्वयं (2282) निर्दिष्ट करते हैं। उन विवरणों को रखने के बाद, हमें फ़ाइल को संपादित करने (या बनाने के लिए, अगर यह अभी तक मौजूद नहीं है) फाइल के लिए हमारे लिनक्स मशीन पर एक रूट शेल की आवश्यकता है /etc/udev/rules.d/51-android.rules। वहां, अपने डिवाइस के लिए एक पंक्ति जोड़ें। निम्न उदाहरण लाइन से पता चलता है कि यह कैसे विलेफ़ॉक्स स्विफ्ट के लिए दिखता है : it

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": डिवाइस आईडी
  • MODE="0666": डिवाइस नोड को अनुमति मिल जाएगी। 0666काफी लचर है, जो आपके सिस्टम पर हर उपयोगकर्ता को पढ़ने और लिखने की अनुमति देता है - इसलिए यदि आप चिंतित हैं, तो आप इसे बदलने की कोशिश कर सकते हैं 0660(केवल स्वामी और समूह रीड-राइट दे रहे हैं, और दूसरों को सब कुछ अस्वीकार करते हैं)।
  • GROUP="androiddev": डिवाइस नोड किस समूह से संबंधित होना चाहिए। यह एक ऐसा समूह होना चाहिए, जिसका इरादा डिवाइस के साथ काम करने वाले उपयोगकर्ताओं का हो।
  • SYMLINK+="android%n": बस नोड को एक अच्छा नाम देना है, ताकि आप इसे आसानी से पा सकें /dev(मेरे मामले में, यह बाद में वहां दिखा /dev/android5)

उस नियम में प्रवेश किया /etc/udev/rules.d/51-android.rules, हमें udevइसका उपयोग करने के लिए कहना चाहिए । सबसे सुरक्षित तरीका (एक रिबूट के बगल में;) udevसेवा को पुनरारंभ कर रहा है। आपके लिनक्स डिस्ट्रो के आधार पर, यह service udev restartया तो के माध्यम से किया जा सकता है/etc/init.d/udev restart

हो गया, जड़ खोल के छोड़ो। अपने Android डिवाइस को डिस्कनेक्ट और पुन: कनेक्ट करें, पुन: प्रयास adb devicesकरें। अधिकांश उपकरणों ने अब दिखाया, लेकिन विलेफ़ॉक्स स्विफ्ट नहीं - जो स्पष्ट रूप से कुछ अतिरिक्त cuddles चाहता है। यदि आप उस स्थिति में हैं, तो फ़ाइल खोलें (या बनाएं यदि वह मौजूद नहीं है) फ़ाइल ~/.android/adb_usb.iniऔर इसमें एक पंक्ति जोड़ें, lsusbऊपर दिए गए विक्रेता का नामकरण ; के लिए स्विफ्ट कि हो सकता है 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.सलाह के साथ छोड़ दिया जाएगा (वैकल्पिक रूप से अपने कंप्यूटर को स्थायी रूप से अधिकृत करने के लिए चेक-बॉक्स को चिह्नित करें), और आपका काम हो गया: अब आप अपने डिवाइस को एक्सेस करने के लिए का उपयोग कर सकते हैं ।


अपडेट:

¹ ध्यान दें कि बाद के लिनक्स संस्करणों में, UDEV नियमों के लिए वाक्यविन्यास थोड़ा बदल गया है, जैसे कि jcomeau_ictx ने अपनी टिप्पणी में बताया है। उन मूल्यों के लिए जो हमें ऊपर मिले:

SUBSYSTEM=="usb", ATTR{idVendor}=="2970", ATTR{idProduct}=="2282", MODE="0666", GROUP="plugdev", SYMLINK+="android%n"

दो अंतर: यह अब SUBSYSTEM(कोई बहुवचन) नहीं है, और समूह से बदल गया androiddevहै plugdev(पूर्व हाल के सिस्टम पर मौजूद नहीं है, बाद वाला करता है और आमतौर पर कम से कम पहले उपयोगकर्ता को सौंपा जाता है)।

इसके अतिरिक्त, आपको अपने वेंडर को ~/.android/adb_usb.ini(एक आईडी प्रति लाइन, हेक्स नोटेशन में) जोड़ना होगा :

# ANDROID 3RD PARTY USB VENDOR ID LIST
# 1 USB VENDOR ID PER LINE.
0x2970

1
udv नियम का प्रारूप मेरे जेसी सिस्टम पर अलग था: jcomeau@aspire:~$ tail -n 1 /etc/udev/rules.d/99-android.rules SUBSYSTEM=="usb", ATTR{idVendor}=="0e8d", ATTR{idProduct}=="201d", MODE="0666", GROUP="plugdev", SYMLINK+="android%n" jcomeau@aspire:~$ cat ~/.android/adb_usb.ini # ANDROID 3RD PARTY USB VENDOR ID LIST -- DO NOT EDIT. # USE 'android update adb' TO GENERATE. # 1 USB VENDOR ID PER LINE. 0x0e8d मुझे android update adbआपके द्वारा बताए गए अनुसार इसे चलाने और दर्ज करने की सलाह को अनदेखा करना था ।
jcomeau_ictx

@jcomeau_ictx प्रतिक्रिया के लिए धन्यवाद! जहां तक ​​मैं आपकी टिप्पणी से देख सकता हूं, यह सिर्फ एक अलग उपयोगकर्ता समूह ( plugdevइसके बजाय androiddev) का उपयोग कर रहा है। सत्यापित नहीं है, लेकिन मैं कहूंगा कि यहाँ महत्वपूर्ण हिस्सा यह है कि यह एक समूह है जो आपका उपयोगकर्ता है (जिसे आप USB का उपयोग करना चाहते हैं) भी है।
इज़ी

1
भी SUBSYSTEMकी बजाय SUBSYSTEMS, ATTRके बजाय ATTRS, अल्पविराम के बाद MODE="0666" यकीन नहीं करता है, तो उन सभी परिवर्तन आवश्यक थे, लेकिन उस के काम क्या।
jcomeau_ictx

ओह - धन्यवाद, उन छोटे लोगों को याद किया, @jcomeau_ictx - अच्छी बात!
इज़ी

लिनक्स गैर सेवी लोगों के लिए यहांsudo wget -O /etc/udev/rules.d/51-android.rules से मेरे लिए मेरे Xiaomi Mi A1 के लिए काम किया। बेशक यह सीखना बेहतर है लेकिन आलसी होना अच्छा है :)
beeshyams

0

एक नए लिनक्स वितरण से कुछ टिप्पणियां। फेडोरा 29 एक नेक्सस 5X या नोकिया 7.1 (एंड्रॉइड वन) फोन के साथ।

पहले कनेक्ट होने पर, पहले फोन को डिस्कनेक्ट करें।

  1. Android- उपकरण स्थापित करें जो ADB की आपूर्ति करेगा (sudo dnf install android-tools )
  2. Udev नियम कॉपी करें (sudo cp /usr/share/doc/android-tools/51-android.rules /etc/udev/rules.d )
  3. रीलोड udv नियम (sudo udevadm control --reload-rules )
  4. सुनिश्चित करने के लिए ADB को पुनरारंभ करें ( sudo systemctl restart adb)

अब फोन को कनेक्ट करें और adb devicesकमांड लाइन से चलाएं । आप शायद "कोई अनुमति नहीं" के साथ सूचीबद्ध डिवाइस देखेंगे। यह ठीक है।
यदि यह सूचीबद्ध नहीं है, तो आपको अपने डिवाइस को udev रूल्स फ़ाइल में जोड़ना होगा, लेकिन मेरे लिए, परीक्षण किए गए उपकरणों ने पूर्व-निर्धारित नियमों के साथ काम किया।

भागो adb shellऔर उम्मीद है कि आपको फोन पर एक सुरक्षा सूचना मिलेगी, यदि आप कंप्यूटर पर भरोसा करना चाहते हैं, तो हाँ का चयन करें।
अगर इसके बजाय आपका कंप्यूटर "त्रुटि: डिवाइस के लिए अपर्याप्त अनुमति" कहता है, तो आपको यह सुनिश्चित करने की आवश्यकता है कि फोन पर आपने अपने यूएसबी पोर्ट को "फाइल ट्रांसफर" मोड पर सेट किया है, न कि "इस डिवाइस को चार्ज करें"। एंड्रॉइड 8.1 पर यह "कनेक्टेड डिवाइस"> "यूएसबी" के तहत सेटिंग्स में स्थित है।

मैंने देखा है कि भले ही आपके पास आज काम करने वाला सब कुछ है, लेकिन कल यह अचानक बिना किसी स्पष्ट कारण के टूट सकता है। यदि ऐसा होता है, तो पहले डिवाइस पर USB पोर्ट सेटिंग की जांच करें, जो शायद चार्जिंग मोड में वापस आ गया है, और यदि वह विफल हो जाता है, तो डिवाइस पर USB डिबगिंग प्राधिकरणों को रद्द करें (डेवलपर विकल्पों के तहत सेटिंग्स में), और आपको उम्मीद है कि पॉप मिलना चाहिए -फिर दौड़ने पर वापस कर दें adb shell

इसके साथ, मैं एंड्रॉइड स्टूडियो को चलाने और कनेक्टेड डिवाइस पर चलाने में सक्षम हूं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.