यह कैसे काम करता है
दिखाता है कि कोई USB डिवाइस जुड़ते ही अपने बारे में क्या घोषित करता है। डिवाइस डिस्क्रिप्टर में USB-IF द्वारा दिया गया विक्रेता आईडी, निर्माता द्वारा चुना गया उत्पाद आईडी, वह USB विनिर्देश संस्करण जिसका पालन करने का वह दावा करता है, स्वयं उत्पाद का संस्करण और, यदि डिवाइस उन्हें उपलब्ध कराता है, निर्माता, उत्पाद तथा सीरियल नंबर के पाठ होते हैं।
नीचे पूरा वृक्ष दिखता है: हर कॉन्फ़िगरेशन अपने इंटरफ़ेस के साथ, हर इंटरफ़ेस अपनी क्लास, सबक्लास और प्रोटोकॉल की तिकड़ी के साथ जो USB-IF के आधिकारिक नाम में बदली जाती है, और हर एंडपॉइंट अपने पते, दिशा, ट्रांसफ़र प्रकार तथा अधिकतम पैकेट आकार के साथ। कई वैकल्पिक सेटिंग वाले इंटरफ़ेस —कैमरों और ऑडियो कार्डों में आम— अलग से सूचीबद्ध होते हैं।
यह टूल केवल डिस्क्रिप्टर पढ़ता है: डिवाइस के साथ कभी सत्र नहीं खोलता, कभी कोई इंटरफ़ेस नहीं लेता और उसे कभी एक बाइट भी नहीं भेजता, इसलिए उसे इस्तेमाल कर रहे ड्राइवर में कोई बाधा नहीं डालता। पूरा वृक्ष JSON में निर्यात किया जा सकता है ताकि उसे किसी रिपोर्ट के साथ लगाया जाए या दूसरे कंप्यूटर के वृक्ष से तुलना की जाए।
उदाहरण
046D:C52B0x00 / 0x00 / 0x00 → 3 × HID (0x03)कीबोर्ड और माउस का वायरलेस रिसीवर डिवाइस स्तर पर क्लास 0x00 घोषित करता है, इसलिए असली प्रकार हर इंटरफ़ेस में तय होता है: यहाँ तीन HID इंटरफ़ेस हैं, हर एक में एक इंटरप्ट इनपुट एंडपॉइंट।0x08 / 0x06 / 0x50Mass Storage · SCSI transparent command set · Bulk-Only Transportपेन ड्राइव या बाहरी डिस्क की सामान्य तिकड़ी: दो बल्क एंडपॉइंट, एक इनपुट और एक आउटपुट, जिन पर SCSI कमांड चलते हैं।0x02 / 0x02 / 0x01Communications and CDC Control · Abstract Control Model · AT Commands (ITU-T V.250)यह किसी डेवलपमेंट बोर्ड या मॉडेम का वर्चुअल सीरियल पोर्ट है: एक इंटरप्ट एंडपॉइंट वाला कंट्रोल इंटरफ़ेस और डेटा ले जाने वाले दो बल्क एंडपॉइंट वाला CDC-Data इंटरफ़ेस।उपयोग के मामले
- ड्राइवर खोजने या Linux पर udev नियम लिखने के लिए किसी डिवाइस का सटीक विक्रेता आईडी और उत्पाद आईडी पता करना।
- जब ऑपरेटिंग सिस्टम सीधे न दिखाए तब पेन ड्राइव, रीडर या अडैप्टर का सीरियल नंबर देखना।
- फ़र्मवेयर विकास के दौरान यह पुष्टि करना कि डिवाइस अपेक्षित इंटरफ़ेस, विकल्प और एंडपॉइंट सही क्लास के साथ प्रकाशित करता है।
- किसी डिवाइस के लिए प्रोग्राम लिखने से पहले यह जानना कि किस एंडपॉइंट पर और किस ट्रांसफ़र प्रकार से उससे बात करनी है।
- देखने में एक जैसे दो डिवाइसों को उनके संस्करण, इंटरफ़ेस और पैकेट आकार की तुलना करके अलग पहचानना।
- पूरा वृक्ष JSON में निर्यात करके किसी कंप्यूटर की USB संरचना का दस्तावेज़ बनाना।
अक्सर पूछे जाने वाले प्रश्न
मेरे iPhone और Firefox में यह क्यों नहीं चलता?
WebUSB API, Chromium पर आधारित ब्राउज़रों —Chrome, Edge और Opera— में Windows, macOS, Linux, ChromeOS तथा Android के लिए लागू है। Firefox और Safari इसे लागू नहीं करते, और iOS पर सभी ब्राउज़र सिस्टम के इंजन का उपयोग करते हैं, इसलिए वहाँ भी यह उपलब्ध नहीं है। साथ ही HTTPS ज़रूरी है और पेज किसी दूसरी साइट के भीतर एम्बेड नहीं होना चाहिए।
डिवाइस जुड़ा है पर चयन विंडो में नहीं दिखता।
हो सकता है चुना गया फ़िल्टर बहुत संकीर्ण हो: सभी डिवाइस दिखाने वाला विकल्प आज़माएँ। फिर भी न दिखे तो संभवतः वह ब्राउज़र की ब्लॉक सूची में है, जो सुरक्षा कारणों से कुछ उत्पादों को —जिनमें FIDO सुरक्षा कुंजियाँ भी हैं— बाहर रखती है ताकि कोई वेब पेज उन्हें छू न सके। Linux पर डिवाइस नोड की सिस्टम अनुमति भी न हो सकती है।
डिवाइस क्लास 0x00 क्यों बताता है?
डिवाइस डिस्क्रिप्टर में क्लास 0x00 का अर्थ है «इंटरफ़ेस देखिए»। लगभग सभी संयुक्त डिवाइस इसका उपयोग करते हैं, जो एक ही केबल पर अलग-अलग काम जोड़ते हैं: अंतर्निर्मित हब वाला कीबोर्ड, माइक्रोफ़ोन भी देने वाला कैमरा या मल्टीफ़ंक्शन प्रिंटर। ऐसे मामलों में हर कार्य का असली प्रकार डिवाइस की नहीं, बल्कि हर इंटरफ़ेस की क्लास में होता है।
एंडपॉइंट क्या है और 0x81 जैसे पते का क्या अर्थ है?
एंडपॉइंट वे डाकपेटियाँ हैं जिनसे किसी इंटरफ़ेस में डेटा आता या जाता है। पते के निचले सात बिट एंडपॉइंट संख्या हैं और सबसे ऊपरी बिट दिशा बताता है, इसलिए 0x81 इनपुट का एंडपॉइंट 1 है —डिवाइस से कंप्यूटर की ओर— और 0x01 आउटपुट का एंडपॉइंट 1 होता। ट्रांसफ़र प्रकार तय करता है कि उसके साथ कैसा बर्ताव होगा: बिना समयसीमा वाले बड़े डेटा के लिए बल्क, कुंजी दबाने जैसी छोटी और बार-बार होने वाली घटनाओं के लिए इंटरप्ट, और ऑडियो-वीडियो के लिए आइसोक्रोनस, जो देर से पहुँचने के बजाय एक पैकेट खोना पसंद करते हैं।
क्या यह टूल डिवाइस में कुछ बदल या बिगाड़ सकता है?
नहीं। यह केवल वे डिस्क्रिप्टर पढ़ता है जो ब्राउज़र डिवाइस की गणना के समय पहले ही ले चुका होता है; न कभी सत्र खोलता है, न कोई इंटरफ़ेस लेता है, न कुछ लिखता है। इसीलिए आप ऐसा कीबोर्ड या पेन ड्राइव भी जाँच सकते हैं जिसे ऑपरेटिंग सिस्टम उसी समय इस्तेमाल कर रहा हो, भले ही किसी वेब पेज को उनसे संवाद की अनुमति न हो।
निर्माता या उत्पाद खाली क्यों दिखते हैं?
ये पाठ वैकल्पिक डिस्क्रिप्टर हैं: कई सस्ते डिवाइस इन्हें लिखते ही नहीं, और कुछ ऑपरेटिंग सिस्टम इन्हें ब्राउज़र को नहीं सौंपते। ऐसे मामलों में टूल विक्रेता आईडी और उत्पाद आईडी को Linux USB परियोजना की usb.ids सूची में खोजता है, जिसमें निर्माता का आधिकारिक नाम और अक्सर उत्पाद का नाम भी दर्ज होता है।
क्या डिवाइस का डेटा मेरे कंप्यूटर से बाहर जाता है?
डिस्क्रिप्टर आपके ब्राउज़र में पढ़े जाते हैं और किसी सर्वर को नहीं भेजे जाते। एकमात्र अपवाद usb.ids सूची में की जाने वाली खोज है, जो विक्रेता आईडी और उत्पाद आईडी पूछती है —ये दो संख्याएँ मॉडल की पहचान हैं, आपके कंप्यूटर या आपकी इकाई की नहीं— और जिसे आप डिवाइस चुनने से पहले बंद कर सकते हैं। सीरियल नंबर कभी नहीं भेजा जाता।
किसी इंटरफ़ेस की वैकल्पिक सेटिंग क्या होती हैं?
एक ही इंटरफ़ेस एंडपॉइंट के कई समूह घोषित कर सकता है और उनमें से केवल एक को सक्रिय रख सकता है। कैमरे और ऑडियो कार्ड इनका उपयोग रिज़ॉल्यूशन या गुणवत्ता के अलग-अलग संयोजन देने के लिए करते हैं: हर विकल्प बस पर अलग बैंडविड्थ आरक्षित करता है, और ऑपरेटिंग सिस्टम प्रसारण शुरू करते समय उपयुक्त विकल्प चुनता है। जब तक डिवाइस निष्क्रिय रहता है, विकल्प 0 ही सक्रिय रहता है।