Android 13 या इसके बाद के वर्शन पर काम करने वाले डिवाइसों के लिए, Android, वाई-फ़ाई 7 (IEEE 802.11be) स्टैंडर्ड के साथ काम करता है. इस पेज पर, Android में Wi-Fi 7 की सुविधाओं के बारे में बताया गया है. इनमें बेसलाइन और मल्टी-लिंक ऑपरेशन (एमएलओ) शामिल हैं.
वाई-फ़ाई 7 की बुनियादी सुविधाएं
इस सेक्शन में, Android 13 और इसके बाद के वर्शन में शामिल Wi-Fi 7 की बुनियादी सुविधाओं के बारे में बताया गया है.
डिवाइस पर Wi-Fi 7 की सुविधा काम करती है
Android फ़्रेमवर्क में WifiManager#isWifiStandardSupported(int standard) एपीआई शामिल है. ऐप्लिकेशन, ScanResults.WIFI_STANDARD_11BE आर्ग्युमेंट के साथ इस एपीआई को कॉल कर सकते हैं. इससे यह पता चलता है कि कोई डिवाइस Wi-Fi 7 के साथ काम करता है या नहीं.
इस एपीआई को कॉल करने पर, Wi-Fi मॉड्यूल यह जांच करता है कि config_wifi11beSupportOverride कॉन्फ़िगरेशन ओवरले का इस्तेमाल ओवरराइड के तौर पर किया गया है या नहीं. इसके बाद, यह मॉड्यूल ये काम करता है:
- अगर ओवरले को
trueपर सेट किया गया है, तो यह माना जाता है कि डिवाइस पर Wi-Fi 7 काम करता है. भले ही, nl80211 से कोई भी जवाब मिला हो. यह ओवरराइड सिर्फ़ उन डिवाइस मैन्युफ़ैक्चरर के लिए काम का है जिनके पास ऐसे ड्राइवर नहीं हैं जो Wi-Fi 7 के साथ काम करते हैं. - अगर ओवरले को
false(डिफ़ॉल्ट वैल्यू) पर सेट किया जाता है, तो वाई-फ़ाई मॉड्यूल, nl80211 से मिली जानकारी का इस्तेमाल करता है. वाई-फ़ाई मॉड्यूल, wificond से जानकारी का अनुरोध करता है. इसके बाद, wificond, nl80211 कमांडNL80211_CMD_GET_WIPHYको कॉल करता है. अगर ड्राइवर से मिले रिस्पॉन्स मेंNL80211_BAND_IFTYPE_ATTR_EHT_CAP_PHYएट्रिब्यूट मौजूद है, तो माना जाता है कि डिवाइस में वाई-फ़ाई 7 की सुविधा काम करती है.
स्कैन किए गए एपी वाई-फ़ाई 7 की सुविधा
Android फ़्रेमवर्क में int ScanResult#getWifiStandard() एपीआई शामिल है. ऐप्लिकेशन इस एपीआई को कॉल करके यह पता लगा सकते हैं कि स्कैन किया गया ऐक्सेस पॉइंट (एपी) Wi-Fi 7 के साथ काम करता है या नहीं. अगर एपी, Wi-Fi 7 के साथ काम करता है, तो एपीआई ScanResults.WIFI_STANDARD_11BE दिखाता है.
इस एपीआई का इस्तेमाल करने के लिए, यह ज़रूरी नहीं है कि डिवाइस में वाई-फ़ाई 7 की सुविधा हो.
इस एपीआई को कॉल करने पर, वाई-फ़ाई मॉड्यूल यह जांच करता है कि कनेक्टिविटी स्कैन के नतीजों में EHT Capability IE मौजूद है या नहीं. अगर स्कैन किए गए नतीजों में EHT Capability IE मौजूद है, तो इसका मतलब है कि स्कैन किया गया एपी, वाई-फ़ाई 7 के साथ काम करता है.
ज़्यादा जानकारी वाले मोड में चलने पर, AOSP WifiTracker क्लास, सहायता से जुड़ी इस जानकारी को यूज़र इंटरफ़ेस में दिखाती है.
एसटीए कनेक्शन मोड
Android फ़्रेमवर्क में int WifiInfo#getWifiStandard() एपीआई शामिल है. ऐप्लिकेशन इस एपीआई को कॉल करके यह पता लगा सकते हैं कि मौजूदा स्टेशन (एसटीए) कनेक्शन मोड, वाई-फ़ाई 7 है या नहीं. अगर डिवाइस और कनेक्ट किया गया एपी, दोनों वाई-फ़ाई 7 के साथ काम करते हैं, तो एसटीए कनेक्शन मोड वाई-फ़ाई 7 होता है. अगर कनेक्शन मोड Wi-Fi 7 है, तो API ScanResults.WIFI_STANDARD_11BE दिखाता है.
getWifiStandard को कॉल करने पर, वाई-फ़ाई मॉड्यूल ISupplicantStaIface#getConnectionCapabilities() HAL API को कॉल करके मोड का पता लगाता है. wpa_supplicant AIDL लेयर में इस HAL API को लागू करने से यह पता चलता है कि कनेक्शन सेटअप के दौरान, EHT Capability IE, AssocReq और AssocRsp, दोनों में है या नहीं.
नेटवर्क चुनना
Android 13 में, नेटवर्क चुनने के लिए कई पैरामीटर का इस्तेमाल किया जाता है. इससे यह तय किया जाता है कि किस एपी से कनेक्ट करना है. इनमें से एक पैरामीटर, एपी की अनुमानित थ्रूपुट है. इसका अनुमान ThroughputPredictor ब्लॉक का इस्तेमाल करके लगाया जाता है. ThroughputPredictor ब्लॉक, डिवाइस और स्कैन किए गए एपी, दोनों के फ़िज़िकल लेयर (पीएचवाई) पैरामीटर का इस्तेमाल करता है.
Android 13 में, ThroughputPredictor अपनी कैलकुलेशन में एपीएस की इन सुविधाओं का इस्तेमाल करता है:
- वाई-फ़ाई 7 (802.11be) के साथ काम करता है
- 320 मेगाहर्ट्ज़ चैनल की चौड़ाई के साथ काम करने की सुविधा
ThroughputPredictor के लॉजिक में इन सुविधाओं को शामिल करने से, वाई-फ़ाई 7 की सुविधा वाले एपी को चुनने की संभावना बढ़ जाती है. ऐसा तब होता है, जब डिवाइस इन सुविधाओं का इस्तेमाल कर सकता है.
वाई-फ़ाई आरटीटी पर आधारित रेंजिंग
Android, Wi-Fi RTT के लिए, EHT प्रीऐंबल और 320 मेगाहर्ट्ज़ चैनल की चौड़ाई के लिए एपीआई की सुविधा देता है. इससे आरटीटी रेंजिंग में वाई-फ़ाई 7 से जुड़ी सुविधाओं का इस्तेमाल किया जा सकता है. हालांकि, ऐसा तभी होगा, जब चिप में वाई-फ़ाई 7 की सुविधा काम करती हो.
HAL API
आरटीटी पर आधारित रेंजिंग के लिए, Wi-Fi 7 की सुविधाओं के साथ ये HAL API काम करते हैं:
EHT:enum RttPreambleऔरenum WifiRatePreambleमें एक जैसा हैWIDTH_320:enum WifiChannelWidthInMhzमें कॉन्स्टेंटBW_320MHz:enum RttBwमें कॉन्स्टेंट
API
ऐप्लिकेशन, वाई-फ़ाई 7 आरटीटी पर आधारित रेंजिंग के लिए इन एपीआई का इस्तेमाल कर सकते हैं:
ScanResult#PREAMBLE_EHTResponderConfig#PREAMBLE_EHT(SystemApi)
सॉफ़्ट एपी
Android में, सॉफ़्ट एपी में Wi-Fi 7 काम करता है. साथ ही, इसमें ये सुविधाएं मिलती हैं.
सॉफ़्ट एपी चालू करें
Android में, वाई-फ़ाई 7 मोड में सॉफ़्ट एपी चालू करने की सुविधा काम करती है.
यह config_wifiSoftapIeee80211beSupported ओवरले कॉन्फ़िगरेशन से नियंत्रित होता है.
वाई-फ़ाई मॉड्यूल, ओवरले config_wifiSoftapIeee80211beSupported का इस्तेमाल करके, IHostApd#addAccessPoint() एपीआई कॉल में बूलियन HwModeParams#enable80211BE सेट करता है. hostapd AIDL लेयर में, इस वैल्यू का इस्तेमाल hostapd.conf पैरामीटर सेट करने के लिए किया जाता है.
HAL API
hostapd HAL में HwModeParams में मौजूद enable80211BE बूलियन, Wi-Fi 7 मोड में सॉफ़्ट एपी शुरू करने की सुविधा के साथ काम करता है.
सॉफ़्ट एपी की जानकारी रिपोर्ट करना
Android में एपीआई की सुविधा उपलब्ध है. इसकी मदद से, रिपोर्ट किए गए सॉफ़्ट एपी की जानकारी में, वाई-फ़ाई 7 और 320 मेगाहर्ट्ज़ चैनल की चौड़ाई की जानकारी शामिल की जा सकती है.
HAL API
hostapd HAL में Generation.aidl AIDL इंटरफ़ेस में मौजूद WIFI_STANDARD_11BE कॉन्स्टेंट का इस्तेमाल, IHostapdCallback#onApInstanceInfoChanged() कॉलबैक में रिपोर्ट किए गए ApInfo में किया जाता है. यह Soft AP की जानकारी रिपोर्ट करने की सुविधा देता है.
API
ऐप्लिकेशन, सॉफ्ट एपी की जानकारी देने के लिए SoftApInfo में, सिस्टम एपीआई के इन तरीकों का इस्तेमाल कर सकते हैं.
SoftApInfo#getWifiStandard(): अगर Soft AP को Wi-Fi 7 मोड में शुरू किया जाता है, तो यहScanResults.WIFI_STANDARD_11BEवैल्यू दिखाता है.SoftApInfo#getBandwidth(): अगर 320 मेगाहर्ट्ज़ चैनल की चौड़ाई का इस्तेमाल किया जाता है, तोSoftApInfo#CHANNEL_WIDTH_320MHZवैल्यू दिखाता है.
MLO Wi-Fi 7 की सुविधाएं
मल्टी-लिंक ऑपरेशन (एमएलओ), वाई-फ़ाई 7 (802.11be) स्पेसिफ़िकेशन की मुख्य सुविधा है. एमएलओ, वाई-फ़ाई 7 पर काम करने वाले मल्टी-लिंक डिवाइसों (एमएलडी) के लिए ज़रूरी है. भले ही, यह सुविधा एक साथ काम करे या न करे.
पहली इमेज. एमएलओ डायग्राम.
जैसा कि पहले फ़िगर में दिखाया गया है, AP-MLD और STA-MLD, दोनों में हर लिंक पर कई AP या STA इंस्टेंस चल रहे हैं. हर लिंक का अपना अलग एपी या एसटीए मैक पता होता है. डिवाइस की पहचान करने के लिए, एपी या एसटीए के पास भी एमएलडी मैक पता होता है.
MLO लिंक दिखाने का तरीका
android.net.wifi.MloLink क्लास, एमएलओ लिंक को दिखाती है. इस क्लास में ये पैरामीटर शामिल हैं:
int getLinkId(): एपी एमएलडी के ज़रिए दिखाए गए विज्ञापन में मौजूद लिंक आईडी.MacAddress getApMacAddress(): एपी का एमएसी पता. उस लिंक के लिए, एपी इंस्टेंस का BSSID.MacAddress getStaMacAddress(): एसटीए का मैक पता. लिंक पर मौजूद STA इंस्टेंस के लिए, स्थानीय तौर पर असाइन किया गया मैक पता.int getChannel(): चैनल लिंक करें. लिंक किए गए चैनल का नंबर.int getBand(): बैंड लिंक करें. लिंक का बैंड.int getState(): लिंक का स्टेटस. इनमें से कोई एक स्थिति हो सकती है:MLO_LINK_STATE_INVALID: अमान्य. इस कुकी का इस्तेमाल, शुरू करने और गड़बड़ी के मामलों के लिए किया जाता है.MLO_LINK_STATE_UNASSOCIATED: खाते से लिंक नहीं है. लिंक, किसी एपी से नहीं जुड़ा है.MLO_LINK_STATE_IDLE: कुछ समय से इस्तेमाल में नहीं है. लिंक जुड़ा हुआ है, लेकिन चालू नहीं है. लिंक से कोई ट्रैफ़िक आइडेंटिफ़ायर (टीआईडी) मैप नहीं किया गया है.MLO_LINK_STATE_ACTIVE: चालू है. लिंक जुड़ा हुआ और चालू हो. साथ ही, कम से कम एक टीआईडी लिंक से मैप किया गया हो. चालू लिंक, बैटरी सेवर मोड में हो सकता है. ऐसा इसलिए, क्योंकि फ़्रेमवर्क लिंक की बैटरी की स्थिति पर नज़र नहीं रखता.
स्कैन किए गए वाई-फ़ाई 7 एपी एमएलओ की जानकारी
ऐप्लिकेशन, वाई-फ़ाई 7 एपी एमएलडी के लिए एमएलओ पैरामीटर तब पा सकते हैं, जब वाई-फ़ाई मॉड्यूल को एपी-एमएलडी से ScanResult ऑब्जेक्ट मिलता है. AOSP WifiTracker, वर्बोस मोड में चलने पर MLO पैरामीटर दिखाता है.
वाई-फ़ाई मॉड्यूल, एमएलओ की जानकारी इस तरह इकट्ठा करता है:
- यह फ़ंक्शन, बीकन या जांच के जवाब में शामिल मल्टी-लिंक इन्फ़ॉर्मेशन एलिमेंट (आईई) को पार्स करता है. इससे एपी एमएलडी का मैक पता और मौजूदा लिंक आईडी पढ़ा जा सकता है.
- यह कुकी, बीकन या जांच के जवाब में शामिल RNR IE को पार्स करती है, ताकि अफ़िलिएट लिंक की जानकारी की सूची पढ़ी जा सके.
API
स्कैन किए गए एपी एमएलओ की जानकारी पाने के लिए, ऐप्लिकेशन इन एपीआई का इस्तेमाल कर सकते हैं:
ScanResult#BSSID: एपी इंस्टेंस का एमएसी पता (उस लिंक के लिए जिस पर स्कैन का नतीजा मिला है)MacAddress ScanResult#getApMldMacAddress(): यह एपी का एमएलडी मैक पता दिखाता है.int ScanResult#getApMloLinkId(): यह उस लिंक का लिंक आईडी दिखाता है जिस पर ScanResult मिला था.List<MloLink> ScanResult#getAffiliatedMloLinks(): यह AP-MLD से दिखाए गए सभी लिंक के लिए,MloLinkऑब्जेक्ट की सूची दिखाता है. इसमें वह लिंक भी शामिल होता है जिस पर ScanResult मिला था.
कनेक्ट किए गए वाई-फ़ाई 7 एपी एमएलओ की जानकारी
जब कोई डिवाइस Wi-Fi 7 AP-MLD से कनेक्ट होता है, तो फ़्रेमवर्क WifiInfo ऑब्जेक्ट से कनेक्शन के MLO पैरामीटर इकट्ठा करता है. ज़्यादा जानकारी वाले मोड में चलने पर, AOSP
WifiTracker ऑब्जेक्ट यह जानकारी दिखाता है.
जब डिवाइस AP-MLD से कनेक्ट होता है, तब वाई-फ़ाई मॉड्यूल, AP से मिले ScanResult ऑब्जेक्ट से MLO की जानकारी कॉपी करता है. इसके बाद, मॉड्यूल ISupplicantStaIface#getConnectionMloLinksInfo() HAL API को कॉल करता है, ताकि एपी और एसटीए, दोनों के लिए हर लिंक के एमएसी पते पढ़े जा सकें. साथ ही, इससे जुड़े लिंक की स्थिति को अपडेट किया जा सके.
API
एमएलओ कनेक्शन की जानकारी पाने के लिए, ऐप्लिकेशन इन एपीआई का इस्तेमाल कर सकते हैं:
WifiInfo#getBSSID(): यह डिवाइस से जुड़े लिंक के लिए, एपी इंस्टेंस का मैक पता दिखाता है.MacAddress WifiInfo#getApMldMacAddress(): यह एपी का एमएलडी मैक पता दिखाता है.int WifiInfo#getApMloLinkId(): यह उस लिंक का आईडी दिखाता है जिस पर एसटीए, एपी से जुड़ा है.List<MloLink> WifiInfo#getAffiliatedMloLinks(): यह एपी-एमएलडी के ज़रिए दिखाए गए सभी विज्ञापनों के लिए,MloLinkऑब्जेक्ट की सूची दिखाता है. इसमें उससे जुड़ा लिंक भी शामिल होता है. हरMloLinkऑब्जेक्ट पर, एपी और एसटीए, दोनों के मैक पतों के बारे में क्वेरी की जा सकती है.
एपी-एमएलडी स्कैनिंग
वेंडर सॉफ़्टवेयर, वाई-फ़ाई फ़्रेमवर्क को स्कैन के नतीजे देता है. ये नतीजे, उसे मिले हर बीकन या जांच के जवाब के लिए होते हैं. इसका मतलब है कि वाई-फ़ाई फ़्रेमवर्क:
- एक ही AP-MLD से कई
ScanResultsऑब्जेक्ट मिल सकते हैं, क्योंकि AP में कई बीकनिंग लिंक हो सकते हैं. - ऐसा हो सकता है कि एपी-एमएलडी के एपी लिंक के लिए, स्कैन के नतीजे का सिर्फ़ कुछ हिस्सा मिले. ऐसा इसलिए, क्योंकि हो सकता है कि फ़र्मवेयर को लिंक के कुछ सिग्नल न मिले हों.
वेंडर का सॉफ़्टवेयर, सिर्फ़ एयरवेव के ज़रिए मिले स्कैन के नतीजों की रिपोर्ट करता है. साथ ही, उसे AP-MLD के दिखाए गए विज्ञापनों के लिंक के आधार पर, स्कैन के नतीजे नहीं बनाने चाहिए.
वेंडर के सॉफ़्टवेयर में, स्कैन के नतीजों की रिपोर्ट में शामिल एपी इंस्टेंस से मिले, बुनियादी वैरिएंट वाले मल्टी-लिंक और RNR IE शामिल होने चाहिए. अगर स्कैन के नतीजों में, अफ़िलिएटेड एपी की जानकारी मौजूद नहीं है, तो वेंडर सॉफ़्टवेयर, एक से ज़्यादा लिंक वाले जांच के अनुरोध भेज सकता है. जांच के अनुरोध वाले फ़्रेम में, एक से ज़्यादा लिंक वाले जांच के अनुरोध का एलिमेंट शामिल होता है. इससे, टारगेट किए गए एपी-एमएलडी के साथ एपी की क्षमताओं, पैरामीटर, और ऑपरेशन एलिमेंट का पूरा या कुछ हिस्सा शामिल किया जा सकता है.
अगर ज़रूरी हो, तो वेंडर सॉफ़्टवेयर, एमएल-प्रोबिंग को ट्रिगर कर सकता है. इसके लिए, वह जांच के अनुरोध वाले फ़्रेम में एमएल आईई के जांच के अनुरोध वाले वैरिएंट का इस्तेमाल करता है.
AP-MLD नेटवर्क असोसिएशन
जब कोई डिवाइस AP-MLD नेटवर्क से जुड़ता है, तो वेंडर सॉफ़्टवेयर, सिग्नल भेजने के लिए चुने गए AP लिंक (जुड़ा हुआ लिंक) का इस्तेमाल करता है. वेंडर का सॉफ़्टवेयर, डिवाइस के साथ काम करने वाले सभी या कुछ लिंक से जुड़ सकता है.
सफल तरीके से जुड़ने के बाद, ड्राइवर AP-MLD के लिए लिंक के BSSID के साथ ISupplicantStaIfaceCallback#onStateChanged() रिपोर्ट करता है. इसके बाद, ड्राइवर AP-MLD का लिंक चुनता है. हालांकि, इसके लिए यह ज़रूरी है कि उस लिंक के स्कैन के नतीजे, फ़्रेमवर्क को भेजे गए हों.
नेटवर्क स्कोरिंग
Android 14 या इसके बाद के वर्शन पर काम करने वाले डिवाइसों के लिए, Android Wi-Fi Network Selection, Wi-Fi 7 MLO के साथ काम करता है. इसका मतलब है कि Android, डिवाइस के लिए सबसे अच्छा वाई-फ़ाई नेटवर्क चुनता है. यह नेटवर्क, MLO के लिए उपलब्ध लिंक की संख्या के आधार पर चुना जाता है.
एमएलओ की सुविधा के लिए, नेटवर्क चुनने वाला एल्गोरिदम, वाई-फ़ाई चिप की इन एमएलओ क्षमताओं का इस्तेमाल करता है:
- एसटीआर लिंक की ज़्यादा से ज़्यादा संख्या
- लिंक किए गए खातों की ज़्यादा से ज़्यादा संख्या
- एक साथ कई बैंड कॉम्बिनेशन
दूसरी इमेज. MLO नेटवर्क चुनने की सुविधा.
एसटीआर लिंक की ज़्यादा से ज़्यादा संख्या
एक साथ डेटा भेजने और पाने की सुविधा (एसटीआर), मल्टी-लिंक ऑपरेशन के लिए वाई-फ़ाई मीडियम कंटेंशन स्कीम है. अलग-अलग लिंक के बीच सिग्नल आइसोलेशन इतना होता है कि लिंक स्वतंत्र रूप से काम कर सकते हैं. साथ ही, अलग-अलग लिंक में एक साथ ट्रांसमिट और रिसीव कर सकते हैं. एसटीआर, लेगसी सिंगल लिंक (एसएल) एसटीए और लेगसी ड्यूअल बैंड ड्यूअल कॉन्करेंट (डीबीडीसी) एसटीए से अलग है. एसटीए एमएलडी से जुड़े एसटीए, ट्रांसमीटर के एक ही क्रम संख्या (एसएन) और डेटा ट्रांसमिशन के लिए एक ही स्पेस को शेयर करते हैं. यह स्पेस, अलग-अलग लिंक को तब असाइन किया जाता है, जब एक से ज़्यादा लिंक ट्रांसमिशन में एक ही ऐक्सेस कैटगरी (एसी) होती है.
इस्तेमाल किए गए एसटीआर लिंक की ज़्यादा से ज़्यादा संख्या, चिप के साथ काम करने वाले रेडियो की ज़्यादा से ज़्यादा संख्या से अलग हो सकती है. इमेज 2 में दिए गए उदाहरण में, STR लिंक की ज़्यादा से ज़्यादा संख्या 2 है.
नीचे दिए गए AIDL HAL इंटरफ़ेस, ज़्यादा से ज़्यादा STR लिंक और ज़्यादा से ज़्यादा असोसिएशन लिंक की संख्या से जुड़ी सुविधाओं के साथ काम करते हैं:
hardware/interfaces/wifi/aidl/android/hardware/wifi/IWifiChip.aidlhardware/interfaces/wifi/aidl/android/hardware/wifi/WifiChipCapabilities.aidl
लिंक किए गए खातों की ज़्यादा से ज़्यादा संख्या
एक ही रेडियो पर एक से ज़्यादा लिंक काम कर सकते हैं. इसके लिए, कंटेंशन स्कीम, बेहतर मल्टी-लिंक सिंगल रेडियो (ईएमएलएसआर) का इस्तेमाल किया जाता है. अगर मल्टी-लिंक डिवाइस, कुछ बुनियादी कंट्रोल फ़्रेम पा सकता है और लिंक के सेट पर एक साथ क्लियर चैनल असेसमेंट (सीसीए) कर सकता है, तो वह लिंक के सेट पर eMLSR का इस्तेमाल करता है. हालांकि, एमएलडी एक बार में सिर्फ़ एक लिंक पर डेटा ट्रांसमिट या रिसीव करता है. यह लिंक, हर ट्रांसमिट ऑपर्च्यूनिटी (टीएक्सओपी) अवधि में डाइनैमिक तरीके से चुना जाता है.
अगर चिप में STR और eMLSR, दोनों को एक साथ इस्तेमाल करने की सुविधा है, तो MLD स्टेशन, एसोसिएशन लिंक की संख्या को ज़्यादा से ज़्यादा कर सकता है. इससे बेहतर विश्वसनीयता, बेहतर थ्रूपुट, और कम इंतज़ार का समय मिलता है. यह सुविधा, एक लिंक वाले लेगसी स्टेशन की तुलना में बेहतर होती है. दूसरे डायग्राम में, असोसिएशन लिंक की ज़्यादा से ज़्यादा संख्या 3 है.
एआईडीएल एचएएल के ये इंटरफ़ेस, ज़्यादा से ज़्यादा असोसिएशन लिंक करने की सुविधा के साथ काम करते हैं:
hardware/interfaces/wifi/aidl/android/hardware/wifi/IWifiChip.aidlhardware/interfaces/wifi/aidl/android/hardware/wifi/WifiChipCapabilities.aidl
एक साथ कई बैंड कॉम्बिनेशन
फ़्रेमवर्क, चिप से उन रेडियो कॉम्बिनेशन के बारे में पूछता है जिन्हें एक साथ इस्तेमाल किया जा सकता है. इसके लिए, वह IWifiChip.aidl AIDL इंटरफ़ेस का इस्तेमाल करता है. इस जानकारी से, फ़्रेमवर्क एक साथ इस्तेमाल किए जा सकने वाले बैंड के कॉम्बिनेशन का पता लगाता है. यहां एक साथ इस्तेमाल किए जा सकने वाले बैंड कॉम्बिनेशन (गीगाहर्ट्ज़) की उदाहरण सूची दी गई है:
- 2.4
- 5
- 6
- 2.4 x 5
- 2.4 x 6
- 5 x 6
नीचे दिया गया एआईडीएल एचएएल इंटरफ़ेस, एक साथ कई रेडियो कॉम्बिनेशन के साथ काम करता है:
hardware/interfaces/wifi/aidl/android/hardware/wifi/IWifiChip.aidl
नेटवर्क चुनना
नेटवर्क चुनने की प्रोसेस (एमएलओ) के दौरान, उम्मीदवार डिवाइसों की सूची को उन सदस्यों के हिसाब से ग्रुप किया जाता है जिनके पास एक ही एमएलडी मैक पते वाला डिवाइस है. हर ग्रुप के लिए, मल्टी-लिंक थ्रूपुट का अनुमानित स्कोर ज़्यादा से ज़्यादा होता है. यह स्कोर, ज़्यादा से ज़्यादा एसटीआर लिंक की संख्या और चिप के साथ काम करने वाले बैंड के कॉम्बिनेशन के आधार पर तय किया जाता है. अगर कैंडिडेट में मल्टी-लिंक की सुविधा है और चिप STR के साथ काम करता है, तो अनुमानित थ्रूपुट स्कोर की जगह मल्टी-लिंक के अनुमानित थ्रूपुट स्कोर का इस्तेमाल किया जाता है. इससे नेटवर्क चुनने के दौरान, एमएलओ कैंडिडेट को बढ़ावा मिलता है.
AP-MLD नेटवर्क से जुड़ते समय, फ़्रेमवर्क ScanResults ऑब्जेक्ट में मिली जानकारी के आधार पर एसएसआईडी चुनता है. यह जानकारी, वेंडर के सॉफ़्टवेयर से मिलती है. फ़्रेमवर्क के ज़रिए एसएसआईडी चुने जाने के बाद, वेंडर सॉफ़्टवेयर की यह ज़िम्मेदारी होती है कि वह सबसे अच्छे एपी (या एपी लिंक) के लिए बीएसएसआईडी चुने, ताकि उसे असोसिएशन के लिए इस्तेमाल किया जा सके.
डिवाइस के STA MAC पते को मैनेज करना
इस सेक्शन में, डिवाइस के STA मैक पतों (एमएलडी मैक पते और हर लिंक के हिसाब से STA मैक पते) को मैनेज करने का तरीका बताया गया है.
एमएलडी मैक पता
वाई-फ़ाई फ़्रेमवर्क, डिवाइस के एमएलडी मैक पते को मैनेज करता है. एमएलडी डिवाइस के मैक पते को उसी तरह मैनेज किया जाता है जिस तरह कोई नॉन-एमएलडी डिवाइस अपने मैक पते को मैनेज करता है.
उपयोगकर्ता की पसंद के आधार पर, एमएसी पता बिना किसी तय नियम के चुना गया एमएसी पता या हार्डवेयर के लिए उपलब्ध कराया गया एमएसी पता हो सकता है. एमएलडी का एमएसी (मैक) पता, फ़्रेमवर्क सेट करता है. इसके लिए, वह IWifiStaIface#setMacAddress() HAL API का इस्तेमाल करता है.
हर लिंक के लिए STA का मैक पता
वेंडर का सॉफ़्टवेयर, हर लिंक के लिए इंस्टेंस STA मैक पतों को मैनेज करता है. जब कोई डिवाइस किसी एपी से जुड़ता है, तो वेंडर सॉफ़्टवेयर, हर लिंक के लिए एक इंस्टेंस एमएसी पता असाइन करता है.
वेंडर सॉफ़्टवेयर, अपने एल्गोरिदम के आधार पर हर लिंक को एमएसी पते असाइन करता है. एल्गोरिदम को दोहराया जा सकता हो और यह इन पर आधारित हो:
- यह वाई-फ़ाई फ़्रेमवर्क की ओर से सेट किया गया STA-MLD MAC पता होता है.
- लिंक आईडी (एपी से मिला)
इसका मतलब है कि अगर फ़्रेमवर्क एक ही एमएलडी एमएसी पते का फिर से इस्तेमाल करता है, तो वेंडर को हर इंस्टेंस के लिए उससे जुड़े एमएसी पतों का फिर से इस्तेमाल करना होगा. साथ ही, अगर वेंडर हर इंस्टेंस के लिए एमएसी पतों का फिर से इस्तेमाल करता है, तो फ़्रेमवर्क को एक ही एमएलडी एमएसी पते का फिर से इस्तेमाल करना होगा. इससे यह पुष्टि होती है कि जब फ़्रेमवर्क से जनरेट किया गया STA-MLD पता किसी एसएसआईडी के लिए लगातार बना रहता है, तो हर STA के एमएसी पते भी लगातार बने रहते हैं.
यहां हर लिंक के लिए, STA के मैक पते असाइन करने का एक उदाहरण एल्गोरिदम दिया गया है (वेंडर, एल्गोरिदम से जुड़ी शर्तों को पूरा करने वाला कोई भी एल्गोरिदम लागू कर सकते हैं):
- ऑक्टेट 0: पक्का करें कि स्थानीय तौर पर मैनेज किया गया बिट सेट हो
- ऑक्टेट 1-4: STA-MLD के मैक पते के जैसा ही होता है
- ऑक्टेट 5: Per-STA = (STA-MLD + लिंक आईडी + 1) MOD (256)
एक से ज़्यादा लिंक हैंडल करना
वेंडर फ़र्मवेयर, लिंक स्विच करने और लिंक को चालू या बंद करने के लिए, पावर सेव मोड को मैनेज कर सकता है. इसके लिए, उसे वाई-फ़ाई फ़्रेमवर्क से इनपुट लेने की ज़रूरत नहीं होती.
लिंक की स्थिति बदलने पर, वाई-फ़ाई फ़्रेमवर्क को सूचना नहीं मिलती है.
बैटरी सेव करने की स्थिति को मैनेज करना
वाई-फ़ाई फ़्रेमवर्क पर, पावर सेव मोड डिफ़ॉल्ट रूप से चालू होता है. पावर सेव मोड में, वेंडर फ़र्मवेयर, ट्रैफ़िक पैटर्न और लिंक चालू या बंद करने के फ़ैसलों के आधार पर, अलग-अलग लिंक के पावर सेव मोड को मैनेज करता है.
हालांकि, वाई-फ़ाई फ़्रेमवर्क, ISupplicantStaIface::setPowerSave(false) एचएएल एपीआई को कॉल करके, बैटरी सेव करने की सुविधा को बंद कर सकता है. अगर फ़्रेमवर्क, पावर सेव मोड को बंद कर देता है, तो वेंडर फ़र्मवेयर को कम से कम एक लिंक चालू रखना होगा (पावर सेव मोड बंद होना चाहिए). इस स्थिति में, फ़र्मवेयर लागू करने वाला यह तय करता है कि कौनसे लिंक को सेट किया जाए.
डेटा पाथ
इससे, वेंडर के फ़र्मवेयर को लागू करने के बारे में पता चलता है. इसका इस्तेमाल, अपलिंक और डाउनलोड ट्रैफ़िक को मैनेज करने के लिए किया जाता है.
अपलिंक ट्रैफ़िक
फ़र्मवेयर, अपलिंक ट्रैफ़िक को एक या उससे ज़्यादा लिंक पर रूट करता है. यह रूटिंग, फ़र्मवेयर के इंटरनल इम्प्लीमेंटेशन पर आधारित होती है. वेंडर फ़र्मवेयर, ट्रैफ़िक के पैटर्न के आधार पर यह तय करता है कि लोड बैलेंसिंग, डुप्लीकेशन या ट्रैफ़िक का एग्रीगेशन कब करना है. हमारा सुझाव है कि इन मामलों में, फ़र्मवेयर के डुप्लीकेट ट्रैफ़िक को एक से ज़्यादा लिंक पर रीडायरेक्ट करें:
- जब
IWifiChip#setLatencyMode()HAL API के ज़रिए लो-लेटेंसी मोड सेट किया जाता है. - जब उपयोगकर्ता की प्राथमिकता 6 और 7 के साथ ट्रैफ़िक होता है.
डाउनलिंक ट्रैफ़िक
फ़र्मवेयर को MAC हेडर के (डेस्टिनेशन) पर-एसटीए MAC पते को MLD-STA MAC पते से और MAC हेडर के (सोर्स) पर-एपी MAC पते को MLD-AP MAC पते से बदलना होगा. फ़र्मवेयर को, एमएसी पते को बदलने की यह प्रोसेस, एपीएफ़ फ़िल्टर से गुज़रने से पहले करनी होगी. ऐसा इसलिए, क्योंकि एपीएफ़ फ़िल्टर कमांड में, एमएलडी एमएसी पतों के आधार पर फ़िल्टर होते हैं. एपी-एमएलडी के सभी लिंक के लिए, एक ही एपीएफ़ फ़िल्टर होता है.
कॉनकरंसी
एक ही इंटरफ़ेस के लिंक के लिए कई रेडियो इस्तेमाल करने के बजाय, एक साथ कई काम करने के लिए रेडियो का इस्तेमाल करना ज़्यादा ज़रूरी है. कॉन्करेंसी के उदाहरणों को भी एमएलओ से ज़्यादा प्राथमिकता दी जानी चाहिए. भले ही, इनमें से कोई भी पहले आया हो. एक इंटरफ़ेस के लिए एक से ज़्यादा लिंक का इस्तेमाल तब किया जाता है, जब:
- लोड बैलेंसिंग, एग्रीगेशन या डुप्लीकेशन के लिए फ़र्मवेयर के फ़ैसले के आधार पर, MLO ज़रूरी है.
- एमएलओ उपलब्ध है. इसका मतलब है कि किसी दूसरे इंटरफ़ेस को रेडियो की ज़रूरत नहीं है.
टीआईडी से लिंक की मैपिंग
Android 14 या इसके बाद के वर्शन पर काम करने वाले डिवाइसों के लिए, जब Wi-Fi 7 AP, बीकन, प्रोब रिस्पॉन्स, और असोसिएशन रिस्पॉन्स फ़्रेम में भेजे गए टीआईडी-टू-लिंक मैपिंग एलिमेंट के ज़रिए किसी लिंक को कुछ समय के लिए बंद करने का एलान करता है, तब Wi-Fi 7 स्टेशन, सेट अप किए गए बाकी लिंक का इस्तेमाल करके AP से कनेक्शन जारी रखता है. इसके लिए, उसे दूसरा असोसिएशन नहीं करना पड़ता.
Android 13 या इससे पहले के वर्शन पर काम करने वाले डिवाइसों के लिए, वाई-फ़ाई फ़्रेमवर्क, लिंक की स्थिति में बदलाव होने पर सूचनाएं पाने की सुविधा के साथ काम नहीं करता. ऐसा टीआईडी से लिंक की मैपिंग की वजह से होता है. भले ही, लिंक किए गए लिंक को टीआईडी से लिंक न किया गया हो.
एआईडीएल एचएएल
वाई-फ़ाई सप्लीकेंट, इन AIDL इंटरफ़ेस के ज़रिए वाई-फ़ाई फ़्रेमवर्क को टीआईडी से लिंक करने की मैपिंग में हुए बदलावों के बारे में सूचना देता है:
hardware/interfaces/wifi/supplicant/aidl/android/hardware/wifi/supplicant/ISupplicantStaIfaceCallback.aidlhardware/interfaces/wifi/supplicant/aidl/android/hardware/wifi/supplicant/ISupplicantStaIface.aidlhardware/interfaces/wifi/supplicant/aidl/android/hardware/wifi/supplicant/MloLinksInfo.aidl
API
ऐप्लिकेशन, टीआईडी से लिंक करने की मैपिंग में हुए बदलावों के बारे में जानकारी पा सकते हैं. इसके लिए, वे इन एपीआई का इस्तेमाल कर सकते हैं:
ConnectivityManager.NetworkCallback.onCapabilitiesChanged(): यह नेटवर्क कॉलबैक, फ़्रेमवर्क तब ट्रिगर करता है, जब टीआईडी से लिंक करने की मैपिंग में बदलाव होता है.WifiInfo#getAssociatedMloLinks(): यह इससे जुड़े एमएलओ लिंक दिखाता है.MloLink#getState(): यह लिंक की स्थिति दिखाता है,MLO_LINK_STATE_ACTIVEयाMLO_LINK_STATE_IDLE.
टीआईडी से लिंक की मैपिंग के लिए बातचीत करने की सुविधाएं
Android 14 या इसके बाद के वर्शन पर काम करने वाले डिवाइसों के लिए, स्टेशन और एपी के लिए टीआईडी-टू-लिंक मैप नेगोशिएशन की सुविधाएं पाने के लिए, ये एपीआई उपलब्ध हैं.
चिप की क्षमता
नीचे दिए गए इंटरफ़ेस, टीआईडी से लिंक करने के लिए चिप की सुविधा के साथ काम करते हैं.
AIDL HAL
टीआईडी को लिंक करने के लिए मैपिंग की बातचीत के लिए, AIDL इंटरफ़ेस FeatureSetMask में है.hardware/interfaces/wifi/aidl/android/hardware/wifi/IWifiChip.aidl T2LM_NEGOTIATION = 1 << 8 सुविधा से पता चलता है कि चिप, टीआईडी से लिंक मैपिंग की सुविधा के साथ काम करता है.
एपीआई
WifiManager.isTidToLinkMappingNegotiationSupported(): यह उस चिप को दिखाता है जो टीआईडी से लिंक मैपिंग नेगोशिएशन के साथ काम करती है.
एपी की सुविधा
टीआईडी से लिंक करने के लिए, टीआईडी-टू-लिंक मैपिंग की बातचीत के लिए, एपी की सुविधा इन इंटरफ़ेस पर काम करती है.
AIDL HAL
फ़्रेमवर्क, अनुरोध करने वाले डिवाइस से एपी की सुविधा के बारे में पूछता है. साथ ही, मौजूदा कनेक्शन की सुविधा के बारे में भी पूछता है.
apTidToLinkMapNegotiationSupported: इससे यह पता चलता है कि कोई एपी, टीआईडी से लिंक किए गए मैप की बातचीत करने की सुविधा के साथ काम करता है या नहीं.
एपीआई
WifiInfo.isApTidToLinkMappingNegotiationSupported(): इससे पता चलता है कि एपी, टीआईडी से लिंक मैपिंग नेगोशिएशन की सुविधा के साथ काम करता है या नहीं.
लिंक लेयर के आंकड़े
लिंक लेयर के आंकड़ों में, वाई-फ़ाई लिंक से जुड़ी जानकारी शामिल होती है. जैसे, आरएसएसआई, अलग-अलग टीएक्स और आरएक्स पैकेट काउंटर, और रेडियो के आंकड़े. वाई-फ़ाई फ़्रेमवर्क, सबसे अच्छा नेटवर्क चुनने या कनेक्ट किए गए नेटवर्क की क्वालिटी का आकलन करने के लिए, लिंक लेयर के आंकड़ों और आरएसएसआई को समय-समय पर पोल करता है. Android 14 या इसके बाद के वर्शन पर काम करने वाले डिवाइसों के लिए, लिंक लेयर के आंकड़ों में मल्टी-लिंक सपोर्ट शामिल होता है. Android में Wi-Fi 7 के लिए, लिंक लेयर के आंकड़ों और सिग्नल पोलिंग, दोनों में MLO की सुविधा काम करती है.
लिंक से जुड़े आंकड़े, लिंक लेयर के इन AIDL इंटरफ़ेस में मिलते हैं:
hardware/interfaces/wifi/aidl/android/hardware/wifi/StaLinkLayerIfaceStats.aidlhardware/interfaces/wifi/aidl/android/hardware/wifi/StaLinkLayerLinkStats.aidl
android.net.wifi.WifiManager#addOnWifiUsabilityStatsListener() सिस्टम एपीआई, लिंक लेयर के सभी आंकड़ों को सुनता है. फ़्रेमवर्क, वाई-फ़ाई के इस्तेमाल से जुड़े आंकड़ों को अपडेट करने के लिए, समय-समय पर इस एपीआई को कॉल करता है.
android.net.wifi.WifiUsabilityStatsEntry में, लिंक से जुड़े ये एपीआई उपलब्ध हैं.
int getRssi(int linkId)
int getLinkState(int linkId)
int getRadioId(int linkId)
int getTxLinkSpeedMbps(int linkId)
long getTotalTxSuccess(int linkId)
long getTotalTxRetries(int linkId)
long getTotalTxBad(int linkId)
long getTotalRxSuccess(int linkId)
long getTotalBeaconRx(int linkId)
int getRxLinkSpeedMbps(int linkId)
int getTimeSliceDutyCycleInPercent(int linkId)
ContentionTimeStats getContentionTimeStats(int linkId, @WmeAccessCategory int ac)
List<RateStats> getRateStats(int linkId)
उपलब्ध लिंक आईडी के बारे में क्वेरी करने के लिए, ऐप्लिकेशन android.net.wifi.WifiUsabilityStatsEntry#getLinkIds() तरीके को कॉल कर सकते हैं.
एक लिंक (एमएलओ नहीं) के लिए android.net.wifi.WifiUsabilityStatsEntry में मौजूद एपीआई, एमएलओ कनेक्शन के लिए एग्रीगेट किए गए आंकड़े दिखाते हैं. डेटा इकट्ठा करने से जुड़ी शर्तें यहां दी गई हैं:
एग्रीगेट किए गए पैकेट के ये आंकड़े, हर लिंक के हिसाब से मिले आंकड़ों के योग का इस्तेमाल करते हैं:
public long getTotalTxSuccess() public long getTotalTxRetries() public long getTotalTxBad() public long getTotalRxSuccess() public int getRxLinkSpeedMbps()यहां दिए गए आंकड़ों में, सबसे ज़्यादा आरएसएसआई वाले लिंक का डेटा इस्तेमाल किया जाता है:
public int getRssi() public int getLinkSpeedMbps() public long getTotalBeaconRx() public int getTimeSliceDutyCycleInPercent() public ContentionTimeStats getContentionTimeStats(@WmeAccessCategory int ac) public List<RateStats> getRateStats()
Android 13 में लिंक लेयर के आंकड़े
Android 13 पर काम करने वाले डिवाइसों के लिए, लिंक लेयर के आंकड़ों में यह जानकारी शामिल नहीं होती कि किसी एक इंटरफ़ेस के लिए, एक से ज़्यादा लिंक का इस्तेमाल किया गया है. एमएलओ के साथ काम करने के लिए, वेंडर के सॉफ़्टवेयर को LinkLayerStats HAL API के ज़रिए IWifi# getLinkLayerStats_1_6() की रिपोर्टिंग करते समय, एग्रीगेशन के इस लॉजिक का इस्तेमाल करना होगा. सबसे अच्छा लिंक वह होता है जिसका आरएसएसआई सबसे ज़्यादा होता है.
StaLinkLayerStats.iface.beaconRx: इंटरफ़ेस के लिए इस्तेमाल किए गए सबसे अच्छे लिंक के लिए, बीकन की संख्या की रिपोर्ट करें.StaLinkLayerStats.iface.avgRssiMgmt: इंटरफ़ेस के लिए इस्तेमाल किए गए सबसे अच्छे लिंक के लिएavgRssiMgmtकी रिपोर्ट करें.StaLinkLayerStats.iface.wmeXxPktStats(Xx = Vo, Vi, Be,Bk): इंटरफ़ेस के लिंक पर, एग्रीगेट किए गए पैकेट के आंकड़ों (कुल) की रिपोर्ट करें.StaLinkLayerStats.iface.wmeXxContentionTimeStats(Xx = Vo, Vi, Be,Bk): इंटरफ़ेस पर इस्तेमाल किए गए सबसे अच्छे लिंक (सबसे कम कंटेंशन टाइम के आंकड़े) के लिए, कंटेंशन टाइम के आंकड़े रिपोर्ट करें.
एमएलओ लिंक को फिर से कॉन्फ़िगर करना
जब वाई-फ़ाई 7 ऐक्सेस पॉइंट के किसी लिंक का इस्तेमाल किसी और काम के लिए किया जाता है, तो AP, MLO लिंक को फिर से कॉन्फ़िगर करके लिंक को हटाने की सूचना दे सकता है. स्टेशन, बाकी लिंक पर फिर से असोसिएट किए बिना, एपी के साथ बिना किसी रुकावट के कनेक्ट हो सकते हैं.
onMloLinksInfoChanged AIDL इंटरफ़ेस, वाई-फ़ाई सप्लीकेंट में ISupplicantStaIfaceCallback.aidl पर मौजूद होता है. यह लिंक को फिर से कॉन्फ़िगर करने (लिंक से एपी हटाने) की सुविधा देता है.
जब वाई-फ़ाई फ़्रेमवर्क, लिंक हटाने की प्रोसेस करता है, तब लिंक की स्थिति को MLO_LINK_STATE_UNASSOCIATED पर सेट किया जाता है.
इसके बाद, फ़्रेमवर्क लिंक की स्थिति में बदलाव के लिए ConnectivityManager.NetworkCallback#onCapabilitiesChanged() को ट्रिगर करता है.
WifiInfo#getAffiliatedMloLinks वाला तरीका, अफ़िलिएट किए गए एमएलओ लिंक दिखाता है. MloLink#getState वाला तरीका, लिंक की स्थिति दिखाता है. लिंक हटा दिए जाने पर, लिंक की स्थिति MLO_LINK_STATE_UNASSOCIATED के तौर पर दिखती है.
चिप एमएलओ रणनीति
एमएलओ की मदद से, डिवाइस एक ही समय में कई वाई-फ़ाई लिंक पर डेटा भेज और पा सकते हैं. इससे उन ऐप्लिकेशन की परफ़ॉर्मेंस बेहतर हो सकती है जिनकी कुछ खास ज़रूरतें होती हैं. जैसे, कम समय में डेटा ट्रांसफ़र होना, ज़्यादा बैंडविड्थ, और कम बैटरी खर्च होना. चिप बनाने वाली कंपनियां, उपलब्ध लिंक का इस्तेमाल करने के तरीके के बारे में एल्गोरिदम बना सकती हैं.
सिस्टम ऐप्लिकेशन, Wifimanager में setMloMode तरीके का इस्तेमाल करके, इन एल्गोरिदम में बदलाव कर सकते हैं. साथ ही, ये मोड सेट कर सकते हैं:
MLO_MODE_DEFAULT = 0MLO_MODE_LOW_LATENCY = 1MLO_MODE_HIGH_THROUGHPUT = 2MLO_MODE_LOW_POWER = 3
यह फ़्रेमवर्क, एमएलओ मोड सेट करने के लिए IWifiChip AIDL इंटरफ़ेस में setMloMode का इस्तेमाल करता है.