HID रिपोर्ट डिस्क्रिप्टर, यूसेज पेज लेआउट, बूट बनाम रिपोर्ट प्रोटोकॉल, और रीडिंग पेन के लिए OEM कस्टमाइज़ेशन नियमों की बाइट-स्तरीय विस्तृत व्याख्या।

पोस्ट किया गया: अग. 16, 2024 - 23 व्यूज़

रीडिंग पेन HID रिपोर्ट डिस्क्रिप्टर और यूसेज पेज: OID टैप के लिए बाइट-स्तरीय मैप

दर्शक वर्ग: एम्बेडेड फ़र्मवेयर इंजीनियर, OS ड्राइवर इंटीग्रेटर और OEM प्रोडक्ट मैनेजर जिन्हें यह समझना है कि रीडिंग पेन के HID रिपोर्ट डिस्क्रिप्टर का हर बाइट वास्तव में क्या दर्शाता है, उपयोग पृष्ठ को जेनेरिक डेस्कटॉप पृष्ठ और वेंडर-परिभाषित पृष्ठ में क्यों विभाजित किया गया है, और फ़ील्ड में पहले से तैनात 230+ डिस्ट्रीब्यूटर-ग्रेड ड्राइवर को तोड़े बिना मैप का विस्तार कैसे करें।

HID रिपोर्ट डिस्क्रिप्टर रीडिंग पेन के फ़र्मवेयर का सबसे निर्णायक 80 से 200 बाइट्स होता है। यह पेन के MCU और हर होस्ट ऑपरेटिंग सिस्टम के बीच का अनुबंध है: Windows 10/11, macOS 12/13/14, ChromeOS, Android 9 से 14, iPadOS 15 से 17, और Linux कर्नेल 5.15+। डिस्क्रिप्टर गलत हो जाए, तो पेन गलत अक्षर टाइप करता है, OID टैप को अनदेखा करता है, या इससे भी बुरा, ऑडियो को गलत सिंक पर चुपचाप रूट कर देता है। हमारी 47,000+ शिपमेंट की गई यूनिट्स में, डिस्क्रिप्टर रिग्रेशन ने OCR इंजन को छोड़कर किसी भी अन्य फ़र्मवेयर सबसिस्टम से अधिक डिबगिंग घंटे खर्च किए हैं।

यह लेख TC-057 के कैनोनिकल डिस्क्रिप्टर को लेकर बाइट-दर-बाइट इसकी व्याख्या करता है, बताता है कि प्रत्येक फ़ील्ड जिस तरह सेट है उसका कारण क्या है, और दिखाता है कि ODM ब्रांड मैप का सुरक्षित रूप से विस्तार कहाँ कर सकता है और कहाँ नहीं।

1. HID अनुबंध की तीन परतें

एक HID रिपोर्ट डिस्क्रिप्टर तीन लॉजिकल परतों में पार्स होता है:

परत ग्रैन्युलैरिटी उद्देश्य लंबाई
आइटम शॉर्ट (1 बाइट) या लॉन्ग (3 बाइट) टैग + साइज़ + डेटा वेरिएबल
लोकल प्रति-आइटम परिभाषित Usage, Usage Minimum/Maximum, Designator वेरिएबल
मेन इनपुट/आउटपुट/फ़ीचर की एक श्रृंखला को लपेटता है Collection, End Collection, Input, Output, Feature वेरिएबल

पार्सर स्टेटफुल है। एक Collection एक स्कोप खोलता है, और उस स्कोप के भीतर के Input/Output/Feature आइटम एक रिपोर्ट का वर्णन करते हैं। डिस्क्रिप्टर बाएँ-से-दाएँ प्रोसेस होता है, और हर बाइट वेल-फ़ॉर्म्ड होना चाहिए। एक भी विकृत बाइट होस्ट को पूरा डिस्क्रिप्टर अस्वीकार करने पर मजबूर कर देता है।

हमारा Q6/Q8 डिस्क्रिप्टर 92 बाइट्स का है। F8 डिस्क्रिप्टर 76 बाइट्स का है। T2/Y6 (हेडफ़ोन प्लेबैक के लिए पूर्ण कंज़्यूमर-कंट्रोल समर्थन के साथ) 168 बाइट्स का है। डिस्क्रिप्टर की लंबाई एन्यूमरेशन के समय HID डिस्क्रिप्टर में एन्कोड होती है, और होस्ट इसे कैश करता है। यदि आप किसी भविष्य के फ़र्मवेयर रिवीज़न पर डिस्क्रिप्टर बदलते हैं, तो होस्ट कैश्ड वर्शन का उपयोग जारी रख सकता है, और यही कारण है कि हम फ़र्मवेयर अपडेट पर हमेशा USB बस रीसेट लागू करते हैं (देखें TC-075).

2. रीडिंग पेन द्वारा उपयोग किए जाने वाले आइटम टैग

HID स्पेसिफ़िकेशन एक टैग तालिका परिभाषित करता है; पेन इनमें से केवल 12 का उपयोग करता है:

टैग स्मरक भूमिका Q6/Q8 में प्रयुक्त
0x05 Usage Page पृष्ठ बदलता है हाँ (3 बार)
0x09 Usage एकल Usage चुनता है हाँ (4 बार)
0x15 Logical Minimum इनपुट/आउटपुट को सीमित करता है हाँ (3 बार)
0x25 Logical Maximum इनपुट/आउटपुट को सीमित करता है हाँ (3 बार)
0x75 Report Size प्रति तत्व बिट्स हाँ (3 बार)
0x95 Report Count तत्वों की संख्या हाँ (3 बार)
0xA1 Collection स्कोप खोलता है हाँ (2 बार)
0x81 Input इनपुट रिपोर्ट फ़ील्ड को परिभाषित करता है हाँ (3 बार)
0x91 आउटपुट आउटपुट रिपोर्ट फ़ील्ड को परिभाषित करता है हाँ (1 बार)
0x19 न्यूनतम उपयोग रेंज प्रारंभ हाँ (1 बार)
0x29 अधिकतम उपयोग रेंज समाप्ति हाँ (1 बार)
0xC0 संग्रह समाप्ति स्कोप को बंद करता है हाँ (2 बार)

हम जानबूझकर इस 12-टैग के उप-सेट तक सीमित रहते हैं। HID स्पेक कई और टैग की अनुमति देता है, लेकिन हर अतिरिक्त टैग OS-विशिष्ट विसंगतियों की संभावना बढ़ाता है। उदाहरण के लिए, Padding (0x5A) टैग तकनीकी रूप से वैध है, लेकिन Linux कर्नेल का hid-core.c सस्पेंड/रीज़्यूम के दौरान कुछ Padding क्रमों को अस्वीकार कर देता है।

3. तीन उपयोग पृष्ठ

Q6/Q8 डिस्क्रिप्टर तीन उपयोग पृष्ठों का उपयोग करता है:

उपयोग पृष्ठ हेक्स उद्देश्य
सामान्य डेस्कटॉप 0x01 कीबोर्ड, माउस, सिस्टम नियंत्रण
उपभोक्ता 0x0C वॉल्यूम, प्ले/पॉज़, ट्रैक नेविगेशन
विक्रेता-परिभाषित 0xFF00 OID इवेंट पेलोड (कस्टम ब्रांड एक्सटेंशन)

Generic Desktop पृष्ठ वह कीबोर्ड संग्रह है जिसे हम शिप करते हैं। यह 1-बाइट मॉडिफायर (8 बिट, 1 बाइट रिपोर्ट साइज़, 8 रिपोर्ट काउंट) और 1-बाइट आरक्षित स्थिरांक (8 बिट, 1 रिपोर्ट साइज़, 1 काउंट) घोषित करता है। साथ मिलकर ये बूट कीबोर्ड रिपोर्ट हेड बनाते हैं।

Consumer पृष्ठ हेडफ़ोन प्लेबैक के लिए शिप किया गया वॉल्यूम अप / वॉल्यूम डाउन / प्ले-पॉज़ नियंत्रण है। यह कुल 3 बिट का होता है।

Vendor Defined पृष्ठ 0xFF00 OID इवेंट पेलोड है: प्रति रिपोर्ट 16 बाइट, Report ID रहित, एक Output रिपोर्ट में ताकि होस्ट आवश्यकता पड़ने पर पेन को 16 बाइट संदर्भ भी भेज सके।

4. Q6/Q8 फ़र्मवेयर 3.3.1 के लिए बाइट मानचित्र

नीचे Q6/Q8 प्लेटफ़ॉर्म के लिए कैनोनिकल डिस्क्रिप्टर, बाइट-अनुक्रमित है:

बाइट हेक्स अर्थ क्यों
0 0x05 Usage Page टैग (वैश्विक) पार्सर को बताता है कि हम पृष्ठ बदल रहे हैं
1 0x01 पेज 0x01 (जेनरिक डेस्कटॉप) कीबोर्ड स्कोप खोलता है
2 0x09 Usage टैग (स्थानीय) एक उपयोग का चयन करता है
3 0x06 कीबोर्ड बूट प्रोटोकॉल के लिए आवश्यक
4 0xA1 संग्रह टैग (Main) एप्लिकेशन संग्रह खोलता है
5 0x01 एप्लिकेशन एप्लिकेशन मानक रैपर है
6 0x05 Usage Page टैग
7 0x07 कीर्बोर्ड पेज मॉडिफायर कुंजियाँ यहाँ होती हैं
8 0x19 न्यूनतम उपयोग
9 0xE0 Left Control = 224 मॉडिफायर रेंज 224–231
10 0x29 अधिकतम उपयोग
11 0xE7 Right GUI = 231 मॉडिफायर रेंज बंद करता है
12 0x15 तार्किक न्यूनतम
13 0x00 0 बूलियन false
14 0x25 तार्किक अधिकतम
15 0x01 1 बूलियन true
16 0x75 रिपोर्ट आकार
17 0x01 प्रति तत्व 1 बिट मॉडिफायर एक बिटफील्ड है
18 0x95 रिपोर्ट गणना
19 0x08 8 तत्व प्रति मॉडिफायर एक बिट
20 0x81 इनपुट टैग (Main)
21 0x02 डेटा, वेरिएबल, एब्सोल्यूट स्टैंडर्ड बूट कीबोर्ड मॉडिफायर
22 0x95 रिपोर्ट काउंट
23 0x01 1 एलिमेंट आरक्षित बाइट
24 0x75 रिपोर्ट साइज
25 0x08 8 बिट एक बाइट आरक्षित
26 0x81 इनपुट टैग
27 0x03 कॉन्स्टेंट, वेरिएबल, एब्सोल्यूट OS इस आरक्षित बाइट की अपेक्षा करता है
28 0x05 यूसेज पेज टैग
29 0x0C Consumer पेज मीडिया कुंजियों के लिए
30 0x09 यूसेज
31 0xE9 वॉल्यूम अप
32 0x09 यूसेज
33 0xEA वॉल्यूम डाउन
34 0x09 यूसेज
35 0xCD प्ले/पॉज़
36 0x15 लॉजिकल मिनिमम
37 0x00 0
38 0x25 लॉजिकल मैक्सिमम
39 0x01 1
40 0x75 रिपोर्ट साइज़
41 0x01 1 बिट
42 0x95 रिपोर्ट काउंट
43 0x03 3 एलिमेंट 3 मीडिया बिट
44 0x81 इनपुट टैग
45 0x02 डेटा, वेरिएबल, एब्सोल्यूट
46 0xC0 संग्रह समाप्ति कीबोर्ड ऐप बंद करता है
47 0x06 उपयोग पृष्ठ टैग (विस्तारित) 2-बाइट उपयोग पृष्ठ
48 0xFF, 0x00 पृष्ठ 0xFF00 विक्रेता परिभाषित
49 0x09 उपयोग
50 0x01 OID इवेंट कस्टम उपयोग
51 0xA1 संग्रह
52 0x01 अनुप्रयोग
53 0x15 तार्किक न्यूनतम
54 0x00 0
55 0x26 तार्किक अधिकतम (विस्तारित) 2-बाइट तार्किक अधिकतम
56 0xFF, 0x00 255
57 0x75 Report Size
58 0x08 8 बिट
59 0x95 Report Count
60 0x10 16 एलिमेंट्स 16-बाइट OID पेलोड
61 0x09 Usage
62 0x02 OID पेलोड
63 0x91 Output टैग
64 0x02 Data, Variable, Absolute
65 0xC0 End Collection वेंडर कलेक्शन को बंद करता है।

Q6/Q8 पर शेष बाइट्स (66 से 91) बाइट अलाइनमेंट के लिए पैडिंग और ब्रांड ID के लिए एक Feature रिपोर्ट हैं। F8 पर, बाइट 47 से आगे हटा दिए जाते हैं और डिस्क्रिप्टर बाइट 46 पर रुक जाता है।

5. बूट प्रोटोकॉल बनाम रिपोर्ट प्रोटोकॉल

रीडिंग पेन एक Protocol Mode कैरेक्टरिस्टिक (BLE पर UUID 0x2A4E, USB पर bInterfaceProtocol बाइट) एक्सपोज़ करता है। दो प्रोटोकॉल मान्य हैं:

प्रोटोकॉल रिपोर्ट लेआउट कब उपयोग होता है
बूट 8-बाइट फिक्स्ड (मॉडिफायर + रिज़र्व्ड + 6 कीकोड्स)। BIOS, रिकवरी, अर्ली बूट
रिपोर्ट डिस्क्रिप्टर-डिफ़ाइंड सामान्य OS उपयोग

Q6/Q8 फ़र्मवेयर 3.3.1 पर, डिफ़ॉल्ट रिपोर्ट प्रोटोकॉल है। होस्ट Protocol Mode कैरेक्टरिस्टिक पर 0x00 लिखकर बूट प्रोटोकॉल का अनुरोध कर सकता है, जिसे हमारा फ़र्मवेयर 16-बाइट OID रिपोर्ट को 8-बाइट बूट फ़ॉर्मेट में समेटकर पूरा करता है। हम कोई डेटा नहीं खोते; OID पेज ID और कोड बस कीकोड बाइट्स में फोल्ड हो जाते हैं।

12,000-यूनिट स्कूल प्रोग्राम के लिए, हमने बूट प्रोटोकॉल को डिफ़ॉल्ट रूप से सक्षम करने की सिफ़ारिश की क्योंकि स्कूल के लैपटॉप एक लॉक्ड-डाउन Windows इमेज पर चलते हैं जहाँ मानक HID ड्राइवर स्टैक 1.4 सेकंड में लोड होता है, जबकि पूरे रिपोर्ट प्रोटोकॉल पार्सर के लिए 4.8 सेकंड लगते हैं। जब क्लास की शुरुआत में 30 बच्चे कोल्ड-बूट करते हैं तो लेटेंसी बचत मायने रखती है।

6. वेंडर-डिफ़ाइंड पेज 0xFF00: हमने इसे आरक्षित क्यों किया

हमने 2022 में USB-IF वेंडर सूची में 0xFF00 आरक्षित किया था। यह आरक्षण हमें उस पेज पर 0x01 से 0xFFFF तक के किसी भी उपयोग ID को परिभाषित करने का कानूनी अधिकार देता है, और कोई भी तीसरा पक्ष जो हमारे पेन के साथ इंटरऑपरेट करना चाहता है, उसे हमसे उपयोग-ID रेंज पर बातचीत करनी होगी। ODM कस्टमर को उनके ब्रांड ID के लिए 32-उपयोग की उप-रेंज आवंटित की जाती है। उन 32 में से पहले 8 हमारे आंतरिक उपयोग के लिए आरक्षित हैं, ब्रांड के लिए 24 उपयोग शेष रहते हैं।

यह है कि कैसे वही Q6/Q8 फ़र्मवेयर 230+ डिस्ट्रीब्यूटर्स के लिए शिप होता है बिना उनके ऐप के किसी अन्य डिस्ट्रीब्यूटर के पेन से गलती से बात किए।

7. OID रिपोर्ट लेआउट

16-बाइट OID पेलोड रिपोर्ट इस प्रकार लेआउट की गई है:

बाइट फ़ील्ड एनकोडिंग रेंज
0–3 पेज ID uint32 LE 0 to 4,294,967,295
4–7 OID कोड uint32 LE 0 to 4,294,967,295
8 भाषा uint8 0–255 (भाषा पैक देखें)
9–10 अनुक्रम uint16 LE 0–65,535
11–12 ड्वेल (ms) uint16 LE 0–65,535
13 फ़्लैग्स uint8 बिटमास्क बिट 0 = रिपीट, बिट 1 = ऑडियो बिज़ी
14–15 रिज़र्व्ड uint16 LE 0

फ़्लैग बाइट ही एकमात्र ऐसा है जिसे कस्टमर ब्रांड को फिर से परिभाषित करने की अनुमति है। हम बिट 2–7 को ब्रांड-विशिष्ट फ़्लैग्स के लिए आवंटित करते हैं (जैसे, "टेस्ट मोड," "डायग्नोस्टिक," "फ़ैक्ट्री फ़्लोर QA")। बिट 0–1 हमारे फ़र्मवेयर के लिए आरक्षित हैं।

8. फ़ीचर रिपोर्ट (ब्रांड ID)

डिस्क्रिप्टर के अंत में एक 4-बाइट की फ़ीचर रिपोर्ट ब्रांड ID रखती है। फ़ीचर रिपोर्ट होस्ट से रीड-ओनली है और फ़ैक्ट्री प्रोविज़निंग के दौरान सेट की जाती है। यह दो उद्देश्यों को पूरा करती है:

  1. कंपैनियन ऐप कौन सी कंटेंट कैटलॉग लोड करनी है, यह तय करने के लिए ब्रांड ID पढ़ता है।
  2. QA स्टेशन फ़र्मवेयर लोड अखंडता को सत्यापित करने के लिए ब्रांड ID पढ़ता है।
0x09, 0x03,        // Usage (Brand ID)
0x15, 0x00,        // Logical Minimum 0
0x26, 0xFF, 0x00,  // Logical Maximum 255
0x75, 0x08,        // Report Size 8
0x95, 0x04,        // Report Count 4
0xB1, 0x02,        // Feature (Data, Variable, Absolute)

पहला बाइट ब्रांड इंडेक्स है (हमारे पास वर्तमान में 38 ब्रांड इंडेक्स असाइंड हैं), दूसरा एक रीजन कोड है (1=EU, 2=US, 3=APAC, 4=MENA, 5=LATAM, 6=SSA), तीसरा एक कंटेंट रिविज़न है (0–255), और चौथा पहले तीन पर एक CRC है।

9. डिस्क्रिप्टर GATT से कैसे मैप होता है

जब पेन BLE पर होता है, तो वही डिस्क्रिप्टर बाइट्स कैरेक्टरिस्टिक 0x2A4B (रिपोर्ट डिस्क्रिप्टर) द्वारा सर्व की जाती हैं। रिपोर्ट स्वयं कैरेक्टरिस्टिक 0x2A4D पर नोटिफ़िकेशन के माध्यम से भेजी जाती है। Protocol Mode 0x2A4E पर है। ब्रांड ID फ़ीचर रिपोर्ट उसी HID सर्विस पर वेंडर-डिफ़ाइंड कैरेक्टरिस्टिक 0x9F01 (रीड-ओनली) पर एक्सपोज़ की जाती है।

USB HID आइटम GATT कैरेक्टरिस्टिक UUID प्रॉपर्टीज़
रिपोर्ट डिस्क्रिप्टर 0x2A4B रीड
रिपोर्ट 0x2A4D नोटिफ़ाई, राइट, राइट विदाउट रिस्पॉन्स
प्रोटोकॉल मोड 0x2A4E रीड, राइट
ब्रांड ID 0x9F01 (कस्टम) रीड
HID जानकारी 0x2A4A रीड

यह TC-060 में प्रलेखित GATT टेबल है।

10. हम हर डिस्क्रिप्टर बिल्ड पर जो वैलिडेशन सूट चलाते हैं

एक डिस्क्रिप्टर शिप होने से पहले, उसे ये पास करना होगा:

जाँच टूल पास मानदंड
पार्स अनुरूपता USB-IF HID डिस्क्रिप्टर व्यूअर 0 एरर्स, 0 वार्निंग्स
बूट प्रोटोकॉल बूटेबिलिटी USBlyzer बूट रिपोर्ट को सफलतापूर्वक मॉडिफ़ाई करता है
OS एन्युमरेशन Windows 10/11 डिवाइस मैनेजर HID कीबोर्ड + HID वेंडर डिवाइस के रूप में सूचीबद्ध
iPadOS पेयरिंग iPad 9th जनरेशन, iPadOS 17 पेयर होता है और डिस्क्रिप्टर पढ़ता है
ChromeOS एन्यूमरेशन Lenovo Chromebook 14 इनपुट डिवाइस के रूप में सूचीबद्ध
macOS एन्यूमरेशन MacBook Air M1 System Information सभी 3 इंटरफेस सूचीबद्ध करता है
Android एन्यूमरेशन Pixel 7a, Android 14 InputDeviceManager कीबोर्ड + वेंडर की रिपोर्ट करता है

यदि इनमें से कोई भी विफल होता है, तो डिस्क्रिप्टर अस्वीकृत कर दिया जाता है और फ़र्मवेयर बिल्ड रोक दिया जाता है। 2023 के बाद से 86 फ़र्मवेयर रिलीज़ में से 6 इस गेट पर अस्वीकृत किए गए और रोल बैक किए गए हैं। सबसे सामान्य कारण गलत एक्सटेंडेड-लेंथ एन्कोडिंग वाला Usage Page टैग है, जो macOS जाँच को विफल कर देता है लेकिन Windows पर पास हो जाता है।

11. ग्राहकों द्वारा आमतौर पर की जाने वाली गलतियाँ

जब कोई ODM ग्राहक अपना स्वयं का डिस्क्रिप्टर ड्राफ़्ट लाता है, तो अस्वीकृति का ~80% केवल तीन गलतियों के कारण होता है:

  1. मॉडिफायर के बाद के रिज़र्व्ड बाइट को छोड़ देना। macOS बूट कीबोर्ड रिपोर्ट में बिल्कुल 9 बाइट्स की अपेक्षा करता है (8 मॉडिफायर + 1 रिज़र्व्ड + 6 कीकोड)। ग्राहक अक्सर इसे 8 बाइट्स तक संपीड़ित कर देते हैं, जो Mac पर बूट प्रोटोकॉल को तोड़ देता है।
  2. एक्सटेंडेड टैग (0x26) के बिना Logical Maximum 0x00FF का उपयोग करना। शॉर्ट फ़ॉर्म 0x25 0xFF 127 तक के मानों के लिए काम करता है। 255 तक के मानों के लिए, एक्सटेंडेड टैग अनिवार्य है। ग्राहक भूल जाते हैं और डिस्क्रिप्टर Linux पर चुपचाप ट्रंकेट हो जाता है।
  3. Output कलेक्शन के अंदर Input रिपोर्ट घोषित करना। HID पार्सर सख्ती से केवल Output कलेक्शन लागू नहीं करता, लेकिन कुछ OS ड्राइवर करते हैं। हम सममिति को स्पष्ट बनाने के लिए OID कलेक्शन में हमेशा Output घोषित करते हैं।

12. परफ़ॉर्मेंस बजट

होस्ट साइड पर, डिस्क्रिप्टर को एन्यूमरेशन के समय एक बार पार्स किया जाता है। डिवाइस साइड पर, हर रिपोर्ट असेंबली डिस्क्रिप्टर मैप को छूती है। Q6/Q8 फ़र्मवेयर 3.3.1 पर हमारा आंतरिक बेंचमार्क:

ऑपरेशन साइकिल 64 MHz पर समय
Usage Page देखें 8 125 ns
Usage ID देखें 12 188 ns
16-बाइट OID रिपोर्ट असेंबल करें 240 3.75 µs
USB EP1 IN पर रिपोर्ट भेजें 320 5.0 µs
BLE 0x2A4D पर रिपोर्ट भेजें 1,840 28.75 µs
प्रति टैप कुल (USB) 580 9.1 µs
प्रति टैप कुल (BLE) 2,100 32.8 µs

9.1 µs USB आँकड़ा ही 6.4 ms एंड-टू-एंड लेटेंसी को संभव बनाता है। BLE आँकड़ा 32 ms BLE लेटेंसी का प्रमुख घटक है।

Descriptor Build Time (ms)

13. बड़ा परिप्रेक्ष्य

यदि आप ऐसी पेन का मूल्यांकन कर रहे हैं जो अपना HID रिपोर्ट डिस्क्रिप्टर खुलकर प्रकाशित नहीं करती, तो यही पहली चीज़ है जो आपको माँगनी चाहिए। जो वेंडर डिस्क्रिप्टर साझा करने से मना करता है, वह या तो गैर-अनुपालन छिपा रहा है, या ऐसे नॉन-HID स्टैक पर निर्माण कर रहा है जिसके लिए आपकी ओर से ड्राइवर कार्य की आवश्यकता होगी। Q6/Q8 फ़र्मवेयर 3.3.1 के लिए हमारा डिस्क्रिप्टर 92 बाइट्स का है और हम इसे अनुरोध पर योग्य ODM ग्राहकों को NDA के तहत प्रकाशित करते हैं।

15. संबंधित रीडिंग


कोटेशन का अनुरोध करें — तेज़ फ़ैक्ट्री जवाब पाएँ

Frequently Asked Questions

क्या हम Usage Page 0xFF00 को अपने पेज नंबर से बदल सकते हैं?
हाँ, लेकिन आपको USB-IF के साथ एक बार की $2,000 फीस और 6 सप्ताह की लीड टाइम पर वेंडरियर यूसेज पेज रजिस्टर कराना होगा। हम 0xFF00 के साथ शिप करते हैं क्योंकि यह पहले से हमारे नाम पर रजिस्टर है। 0xFF00 का उपयोग करने वाले ब्रांड्स उस कॉन्ट्रैक्ट को इनहेरिट कर लेते हैं जो हमारी मौजूदा 230+ डिस्ट्रीब्यूटर ऐप्स पहले से समझती हैं।
Q6/Q8 पर डिस्क्रिप्टर 92 बाइट्स और F8 पर 76 बाइट्स क्यों होता है?
Q6/Q8 में Brand ID के लिए 4-बाइट Feature रिपोर्ट और OID पेलोड के लिए 12-बाइट Output कलेक्शन जोड़ा जाता है, जिससे डिस्क्रिप्टर 92 बाइट्स का हो जाता है। F8 केवल BLE है और Brand ID Feature रिपोर्ट के बिना शिप होता है, इसलिए इसका डिस्क्रिप्टर 76 बाइट्स है।
क्या फर्मवेयर रिवीज़न के बीच डिस्क्रिप्टर बदलता है?
नहीं, डिस्क्रिप्टर प्लेटफ़ॉर्म की जीवन-अवधि के लिए फ्रोज़न रहता है। 2023 के बाद से 86 फर्मवेयर रिलीज़ में Q6/Q8 का डिस्क्रिप्टर नहीं बदला है। यदि कोई नया फ़ील्ड चाहिए, तो हम इसके बजाय एक नया प्लेटफ़ॉर्म (जैसे T2/Y6) शिप करते हैं।
अगर होस्ट पुराना डिस्क्रिप्टर कैश कर ले तो क्या होगा?
Windows पर कैश रजिस्ट्री में HIDClass के अंतर्गत रहता है और USB बस रीसेट से अमान्य हो जाता है। हम हर फर्मवेयर अपडेट पर 2-सेकंड के USB सस्पेंड/रिज़्यूम साइकल के ज़रिए बस रीसेट को फ़ोर्स करते हैं, जो होस्ट कैश को साफ़ कर देता है।
क्या हमारा ब्रांड ऐप OID पेलोड को 16 बाइट्स से आगे बढ़ा सकता है?
कॉन्ट्रैक्ट तोड़े बिना नहीं। 16-बाइट लेआउट लॉक है। यदि आपको अधिक चाहिए, तो हम Report ID 2 के साथ दूसरा वेंडरियर कलेक्शन शिप करते हैं जिसमें 32-बाइट का एक्सटेंडेड पेलोड होता है, लेकिन इसके लिए ऐप SDK अपग्रेड आवश्यक है और यह प्रीमियम ब्रांड टियर्स के लिए आरक्षित है।
आपका कार्ट
इस साइट पर आपका अनुभव कुकीज़ की अनुमति देने से बेहतर होगा। कुकी पॉलिसी
Chat on WhatsApp