6 पॉइंट द्वारा GN⁺ 2024-01-02 | 1 टिप्पणियां | WhatsApp पर शेयर करें

Android डेवलपर्स को अब Windows USB ड्राइवर की ज़रूरत क्यों नहीं पड़ती

  • शुरुआती Android प्लेटफ़ॉर्म में डेवलपर्स Linux या Mac OS X पर USB केबल के जरिए डिवाइस कनेक्ट कर सकते थे, लेकिन Windows उपयोगकर्ताओं को ड्राइवर ढूँढकर इंस्टॉल करना पड़ता था।
  • अब ड्राइवर की ज़रूरत नहीं रही।

USB ड्राइवर/OS 101

  • जब किसी USB डिवाइस को पोर्ट में जोड़ा जाता है, तो ऑपरेटिंग सिस्टम USB descriptor hierarchy की जाँच करता है और इंटरफ़ेस के लिए ड्राइवर लोड करना होता है।
  • ज़्यादातर USB डिवाइस बिल्ट-इन 'Device Class' ड्राइवरों के साथ अपने-आप काम करने के लिए ऑपरेटिंग सिस्टम में शामिल होते हैं।
  • Windows तब उपयोगकर्ता द्वारा इंस्टॉल किया गया ड्राइवर लोड करता है, जब वह बिल्ट-इन 'Device Class' ड्राइवर नहीं ढूँढ पाता या उससे बेहतर ड्राइवर उपलब्ध होता है।

पहले यह क्यों काम नहीं करता था

  • अगर ड्राइवर नहीं मिलता, तो Linux usbfs और Mac OS IOKit लोड करते हैं ताकि user-space प्रोग्राम डिवाइस तक पहुँच सकें।
  • Windows त्रुटि दिखाता था और ड्राइवर लोड नहीं करता था, इसलिए Android डिवाइस तक पहुँचना संभव नहीं था।

Android ड्राइवर से यह कैसे काम करता था

  • ड्राइवर इंस्टॉल होने पर क्या होता है, इसे समझने के लिए Google USB ड्राइवर के 'दिमाग' android_winusb.inf की जाँच की गई।
  • WinUSB, Linux के usbfs और Mac OS के IOKit जैसा USB ड्राइवर है, जो user-space प्रोग्रामों को इंटरफ़ेस enumerate करने और endpoint से read/write करने देता है।

Android डिवाइस को अब Windows ड्राइवर की ज़रूरत क्यों नहीं है

  • पुराने तरीके में साफ़ कमी थी। अगर Android डिवाइस का VID/PID सूची में नहीं होता, तो winusb लोड नहीं होता था।
  • Windows 8 ने INF फ़ाइल से बेहतर तरीका अपनाया, जिसमें वह सीधे डिवाइस से पूछता है कि इंटरफ़ेस के लिए कौन-सा ड्राइवर चाहिए।
  • अगर डिवाइस Microsoft OS Descriptors (MOD) के साथ compatible है, तो Windows Extended Compat ID OS Feature Descriptor का अनुरोध करता है।
  • इससे winusb.sys लोड हो जाता है, और user-space executable adb डिवाइस खोलकर इंटरफ़ेस claim कर सकता है, जिसके बाद डेवलपर काम शुरू कर सकता है।

कौन-से डिवाइस Microsoft OS Descriptors को सपोर्ट करते हैं

  • निजी तौर पर इस्तेमाल किए गए Pixel डिवाइसों के आधार पर लगता है कि MOD सपोर्ट Pixel 2 (2017) और Pixel 3a (2019) के बीच शुरू हुआ।

Extended Properties OS Feature Descriptor

  • Pixel 8 जैसे नए डिवाइसों में Extended Properties OS Feature Descriptor होता है, जिसमें GUID, help page, URL, और यहाँ तक कि icon भी शामिल हो सकते हैं।

GN⁺ की राय

  • इस लेख का सबसे महत्वपूर्ण बिंदु यह है कि अब Android डिवाइस Windows पर अलग ड्राइवर इंस्टॉल किए बिना भी डेवलपमेंट के लिए इस्तेमाल किए जा सकते हैं।
  • Microsoft OS Descriptors और Extended Compat ID OS Feature Descriptor के आने से user experience काफ़ी बेहतर हुआ है।
  • यह बदलाव Android डेवलपर्स के लिए सुविधा बढ़ाता है और डेवलपमेंट environment की accessibility को बेहतर बनाने में मदद करता है.

1 टिप्पणियां

 
GN⁺ 2024-01-02
Hacker News की राय
  • ADB(Android Debug Bridge) के लिए प्यार

    • ADB एक बहुत उपयोगी टूल है, और VPN के ज़रिए port rerouting भी कर सकता है.
    • Android developer न होने पर भी यह Swiss Army knife जैसा है, और Android को पसंद करने की बड़ी वजहों में से एक है.
    • work profile के ज़रिए काम से जुड़ी सामग्री और privacy-invading चीज़ों को अलग रखा जा सकता है, इसलिए दूसरे फ़ोन की ज़रूरत नहीं पड़ती.
  • Pixel डिवाइसों में MOD(Modern Operating Devices) सपोर्ट कब शुरू हुआ

    • निजी Pixel collection के आधार पर लगता है कि MOD सपोर्ट Pixel 2(2017) और Pixel 3a(2019) के बीच शुरू हुआ.
    • संभवतः यह Pixel 3 पर भी लागू हुआ होगा, और Android 11 को सपोर्ट करने वाले सभी CTS(Compatibility Test Suite)-अनुपालक डिवाइसों पर लागू होता है.
    • OEM को CTS टेस्ट पास करने के लिए USB HAL में बस एक साधारण मान सेट करना होता है.
  • Windows Precision Touchpad ड्राइवर

    • Bingxing Wang द्वारा Apple MacBook/Magic Trackpad 2 के लिए बनाए गए Windows Precision Touchpad implementation का ज़िक्र.
  • ADB ड्राइवर का विकास

    • पहले Windows को हर नए डिवाइस के लिए .inf ड्राइवर फ़ाइल इंस्टॉल करनी पड़ती थी, लेकिन Windows 8 के बाद के वर्ज़न में डिवाइस Microsoft OS Descriptors के ज़रिए ज़रूरी ड्राइवर बता देता है.
    • इससे user experience बेहतर हुआ, और यह सिर्फ developers के लिए नहीं बल्कि बेहतर Android experience चाहने वाले users के लिए भी महत्वपूर्ण है.
  • Windows के USB ड्राइवर की समस्या

    • Windows में USB ड्राइवर उलझाऊ हैं और कभी-कभी ख़तरनाक भी हो सकते हैं.
    • कुछ छात्रों के मामले देखे गए जिनमें Linux पर सही चलने वाले Arduino clones को Windows पर इस्तेमाल नहीं किया जा सका.
    • Windows कभी-कभी ऐसे ड्राइवर अपने-आप इंस्टॉल कर देता है जो उसे "नकली" लगने वाले डिवाइस को निष्क्रिय कर देते हैं, इसलिए storage device के अलावा किसी चीज़ को Windows मशीन से जोड़ना आख़िरी विकल्प माना जाता है.
  • Microsoft-विशेष USB descriptor जोड़ने पर आलोचना

    • फ़ोन निर्माताओं को Microsoft-विशेष USB descriptors जोड़ने पड़ने की बात की आलोचना.
    • Windows का Linux या macOS की तरह standardized user-space interface अपनाने के बजाय Microsoft-विशेष फीचर की मांग करना तर्कसंगत नहीं है.
  • ADB समस्या सुलझाने का अनुभव

    • हाल ही में Lenovo M7 के साथ magic mirror project करते समय ADB समस्या का सामना करना पड़ा.
    • संबंधित Stack Overflow पोस्ट्स सब ढूँढकर आज़माई गईं, लेकिन सफलता नहीं मिली; इसलिए यह सुनकर हैरानी हुई कि यह समस्या हल हो चुकी है.
  • HID protocol इस्तेमाल करने का अनुभव

    • USB-connected डिवाइसों में raw HID protocol का इस्तेमाल किया गया, और यह Windows के सभी वर्ज़न में अच्छी तरह चला.
    • यह हर आवश्यकता के लिए उपयुक्त नहीं है, लेकिन कुछ मामलों में काफ़ी अच्छी तरह फिट बैठता है.