Android 13 या इसके बाद के वर्शन पर काम करने वाले डिवाइसों के लिए, Android, Wi-Fi 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 के लिए, ईएचटी प्रीऐम्बल और 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_EHT
ResponderConfig#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
एआईडीएल इंटरफ़ेस में मौजूद WIFI_STANDARD_11BE
कॉन्स्टेंट का इस्तेमाल, IHostapdCallback#onApInstanceInfoChanged()
कॉलबैक में रिपोर्ट किए गए ApInfo
में किया जाता है. यह सॉफ्ट एपी की जानकारी रिपोर्ट करने की सुविधा देता है.
API
ऐप्लिकेशन, Soft AP की जानकारी देने के लिए SoftApInfo
में, सिस्टम एपीआई के इन तरीकों का इस्तेमाल कर सकते हैं.
SoftApInfo#getWifiStandard()
: अगर Soft AP को Wi-Fi 7 मोड में शुरू किया जाता है, तो यहScanResults.WIFI_STANDARD_11BE
वैल्यू दिखाता है.SoftApInfo#getBandwidth()
: अगर 320 मेगाहर्ट्ज़ चैनल की चौड़ाई का इस्तेमाल किया जाता है, तोSoftApInfo#CHANNEL_WIDTH_320MHZ
वैल्यू दिखाता है.
एमएलओ वाई-फ़ाई 7 की सुविधाएं
मल्टी-लिंक ऑपरेशन (एमएलओ), वाई-फ़ाई 7 (802.11be) की मुख्य सुविधा है. एमएलओ, वाई-फ़ाई 7 पर काम करने वाले मल्टी-लिंक डिवाइसों (एमएलडी) के लिए ज़रूरी है. भले ही, यह सुविधा एक साथ काम करे या न करे.
पहली इमेज. एमएलओ डायग्राम.
पहली इमेज में दिखाया गया है कि AP-MLD और STA-MLD, दोनों में हर लिंक पर कई AP या STA इंस्टेंस चल रहे हैं. हर लिंक का अपना अलग एपी या STA MAC पता होता है. डिवाइस की पहचान करने के लिए, एपी या एसटीए के पास भी एमएलडी मैक पता होता है.
एमएलओ लिंक का प्रतिनिधित्व
android.net.wifi.MloLink
क्लास, एमएलओ लिंक को दिखाती है. इस क्लास में ये पैरामीटर शामिल हैं:
int getLinkId()
: एपी एमएलडी के ज़रिए दिखाए गए विज्ञापन में मौजूद लिंक आईडी.MacAddress getApMacAddress()
: एपी का एमएसी पता. उस लिंक के लिए, एपी इंस्टेंस का बीएसएसआईडी.MacAddress getStaMacAddress()
: एसटीए का मैक पता. लिंक पर मौजूद STA इंस्टेंस के लिए, स्थानीय तौर पर असाइन किया गया MAC पता.int getChannel()
: चैनल लिंक करें. लिंक किए गए चैनल का नंबर.int getBand()
: लिंक बैंड. लिंक का बैंड.int getState()
: लिंक का स्टेटस. इनमें से कोई एक स्थिति हो सकती है:MLO_LINK_STATE_INVALID
: अमान्य. इस कुकी का इस्तेमाल, शुरू करने और गड़बड़ी के मामलों के लिए किया जाता है.MLO_LINK_STATE_UNASSOCIATED
: खाते से लिंक नहीं है. लिंक, किसी एपी से नहीं जुड़ा है.MLO_LINK_STATE_IDLE
: कुछ समय से इस्तेमाल में नहीं है. लिंक जुड़ा हुआ है, लेकिन चालू नहीं है. इसका मतलब है कि लिंक पर कोई ट्रैफ़िक आइडेंटिफ़ायर (टीआईडी) मैप नहीं किया गया है.MLO_LINK_STATE_ACTIVE
: चालू है. लिंक जुड़ा हुआ और चालू हो. साथ ही, कम से कम एक टीआईडी लिंक से मैप किया गया हो. चालू लिंक, बैटरी सेवर मोड में हो सकता है. ऐसा इसलिए, क्योंकि फ़्रेमवर्क लिंक की बैटरी की स्थिति पर नज़र नहीं रखता.
स्कैन किए गए वाई-फ़ाई 7 एपी एमएलओ की जानकारी
जब वाई-फ़ाई मॉड्यूल को AP-MLD से ScanResult
ऑब्जेक्ट मिलता है, तब ऐप्लिकेशन को वाई-फ़ाई 7 AP MLD के लिए MLO पैरामीटर मिल सकते हैं. AOSP WifiTracker
, वर्बोस मोड में चलने पर MLO पैरामीटर दिखाता है.
वाई-फ़ाई मॉड्यूल, एमएलओ की जानकारी इस तरह इकट्ठा करता है:
- यह कुकी, बीकन या जांच के जवाब में शामिल मल्टी-लिंक इन्फ़ॉर्मेशन एलिमेंट (आईई) को पार्स करती है. इससे एपी एमएलडी का मैक पता और मौजूदा लिंक आईडी पढ़ा जा सकता है.
- यह कुकी, बीकन या जांच के जवाब में शामिल RNR IE को पार्स करती है, ताकि अफ़िलिएट लिंक की जानकारी की सूची पढ़ी जा सके.
API
स्कैन किए गए एपी एमएलओ की जानकारी पाने के लिए, ऐप्लिकेशन इन एपीआई का इस्तेमाल कर सकते हैं:
ScanResult#BSSID
: एपी इंस्टेंस का एमएसी पता (उस लिंक के लिए जिस पर स्कैन का नतीजा मिला है)MacAddress ScanResult#getApMldMacAddress()
: यह एपी का एमएलडी MAC पता दिखाता है.int ScanResult#getApMloLinkId()
: यह उस लिंक का लिंक आईडी दिखाता है जिस पर ScanResult मिला था.List<MloLink> ScanResult#getAffiliatedMloLinks()
: यह एपी-एमएलडी के ज़रिए दिखाए गए सभी लिंक के लिए,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()
: यह एपी का एमएलडी MAC पता दिखाता है.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 लिंक इस्तेमाल किए गए हैं.
नीचे दिए गए AIDL HAL इंटरफ़ेस, ज़्यादा से ज़्यादा एसटीआर लिंक और ज़्यादा से ज़्यादा असोसिएशन लिंक की संख्या के साथ काम करते हैं:
hardware/interfaces/wifi/aidl/android/hardware/wifi/IWifiChip.aidl
hardware/interfaces/wifi/aidl/android/hardware/wifi/WifiChipCapabilities.aidl
लिंक किए गए खातों की ज़्यादा से ज़्यादा संख्या
एक ही रेडियो पर कई लिंक काम कर सकते हैं. इसके लिए, कंटेंशन स्कीम, बेहतर मल्टी-लिंक सिंगल रेडियो (ईएमएलएसआर) का इस्तेमाल किया जाता है. अगर मल्टी-लिंक डिवाइस, कुछ बुनियादी कंट्रोल फ़्रेम पा सकता है और लिंक के सेट पर एक साथ क्लियर चैनल असेसमेंट (सीसीए) कर सकता है, तो वह लिंक के सेट पर eMLSR का इस्तेमाल करता है. हालांकि, एमएलडी एक बार में सिर्फ़ एक लिंक पर डेटा ट्रांसमिट या रिसीव करता है. यह लिंक, हर ट्रांसमिट ऑपर्च्यूनिटी (टीएक्सओपी) की अवधि में डाइनैमिक तरीके से चुना जाता है.
अगर चिप में STR और eMLSR, दोनों को एक साथ इस्तेमाल करने की सुविधा है, तो MLD स्टेशन, एसोसिएशन लिंक की संख्या को ज़्यादा से ज़्यादा कर सकता है. इससे बेहतर विश्वसनीयता, बेहतर थ्रूपुट, और कम इंतज़ार का समय मिलता है. यह सुविधा, एक लिंक वाले लेगसी स्टेशन की तुलना में बेहतर होती है. दूसरे डायग्राम में, असोसिएशन लिंक की ज़्यादा से ज़्यादा संख्या 3 है.
एआईडीएल एचएएल के ये इंटरफ़ेस, ज़्यादा से ज़्यादा असोसिएशन लिंक करने की सुविधा के साथ काम करते हैं:
hardware/interfaces/wifi/aidl/android/hardware/wifi/IWifiChip.aidl
hardware/interfaces/wifi/aidl/android/hardware/wifi/WifiChipCapabilities.aidl
एक साथ कई बैंड कॉम्बिनेशन
फ़्रेमवर्क, चिप से उन रेडियो कॉम्बिनेशन के बारे में पूछता है जिन्हें एक साथ इस्तेमाल किया जा सकता है. इसके लिए, वह IWifiChip.aidl
AIDL इंटरफ़ेस का इस्तेमाल करता है. इस जानकारी से, फ़्रेमवर्क एक साथ इस्तेमाल किए जा सकने वाले बैंड के कॉम्बिनेशन का पता लगाता है. यहां एक साथ इस्तेमाल किए जा सकने वाले बैंड कॉम्बिनेशन (GHz) की सूची का उदाहरण दिया गया है:
- 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 MAC पतों (एमएलडी MAC पते और हर लिंक के हिसाब से STA MAC पते) को मैनेज करने का तरीका बताया गया है.
एमएलडी मैक पता
वाई-फ़ाई फ़्रेमवर्क, डिवाइस के एमएलडी एमएसी पते को मैनेज करता है. एमएलडी डिवाइस के MAC पते को उसी तरह मैनेज किया जाता है जिस तरह कोई नॉन-एमएलडी डिवाइस अपने MAC पते को मैनेज करता है.
उपयोगकर्ता की पसंद के आधार पर, एमएसी पता बिना किसी तय नियम के चुना गया एमएसी पता या हार्डवेयर के लिए उपलब्ध कराया गया एमएसी पता हो सकता है. एमएलडी एमएसी पते को फ़्रेमवर्क सेट करता है. इसके लिए, वह IWifiStaIface#setMacAddress()
HAL API का इस्तेमाल करता है.
हर लिंक के लिए STA का मैक पता
वेंडर का सॉफ़्टवेयर, हर लिंक के लिए इंस्टेंस STA मैक पतों को मैनेज करता है. जब कोई डिवाइस किसी एपी से जुड़ता है, तो वेंडर सॉफ़्टवेयर, हर लिंक के लिए एक इंस्टेंस मैक पता असाइन करता है.
वेंडर सॉफ़्टवेयर, अपने एल्गोरिदम के आधार पर हर लिंक को एमएसी पते असाइन करता है. एल्गोरिदम को दोहराया जा सकता है और यह इन पर आधारित होना चाहिए:
- यह वाई-फ़ाई फ़्रेमवर्क की ओर से सेट किया गया STA-MLD MAC पता होता है.
- लिंक आईडी (एपी से मिला)
इसका मतलब है कि अगर फ़्रेमवर्क एक ही एमएलडी मैक पते का फिर से इस्तेमाल करता है, तो वेंडर को हर इंस्टेंस से जुड़े एक ही मैक पते का फिर से इस्तेमाल करना होगा. इसके उलट, अगर वेंडर हर इंस्टेंस से जुड़े एक ही मैक पते का फिर से इस्तेमाल करता है, तो फ़्रेमवर्क को एक ही एमएलडी मैक पते का फिर से इस्तेमाल करना होगा. इससे यह पक्का होता है कि जब फ़्रेमवर्क जनरेट किया गया STA-MLD पता किसी SSID के लिए बना रहता है, तो हर STA के लिए MAC पते भी बने रहते हैं.
यहां हर लिंक के लिए, STA MAC पते असाइन करने का एक उदाहरण एल्गोरिदम दिया गया है (वेंडर, एल्गोरिदम से जुड़ी शर्तों को पूरा करने वाला कोई भी एल्गोरिदम लागू कर सकते हैं):
- ऑक्टेट 0: पक्का करें कि स्थानीय तौर पर मैनेज किया गया बिट सेट हो
- ऑक्टेट 1-4: STA-MLD MAC पते के जैसा ही
- ऑक्टेट 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.aidl
hardware/interfaces/wifi/supplicant/aidl/android/hardware/wifi/supplicant/ISupplicantStaIface.aidl
hardware/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.aidl
hardware/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 पर काम करने वाले डिवाइसों के लिए, लिंक लेयर के आंकड़ों में यह जानकारी शामिल नहीं होती कि किसी एक इंटरफ़ेस के लिए, एक से ज़्यादा लिंक का इस्तेमाल किया गया है या नहीं. एमएलओ के साथ काम करने के लिए, वेंडर के सॉफ़्टवेयर को IWifi# getLinkLayerStats_1_6()
HAL API के ज़रिए IWifi# getLinkLayerStats_1_6()
की रिपोर्टिंग करते समय, एग्रीगेशन के इस लॉजिक का इस्तेमाल करना होगा.LinkLayerStats
सबसे अच्छा लिंक वह होता है जिसका आरएसएसआई सबसे ज़्यादा होता है.
StaLinkLayerStats.iface.beaconRx
: इंटरफ़ेस के लिए इस्तेमाल किए गए सबसे अच्छे लिंक के लिए, बीकन की संख्या रिपोर्ट करें.StaLinkLayerStats.iface.avgRssiMgmt
: इंटरफ़ेस के लिए इस्तेमाल किए गए सबसे अच्छे लिंक के लिएavgRssiMgmt
रिपोर्ट करें.StaLinkLayerStats.iface.wmeXxPktStats
(Xx = Vo, Vi, Be,Bk): इंटरफ़ेस के लिंक पर, एग्रीगेट किए गए पैकेट के आंकड़े (कुल) रिपोर्ट करें.StaLinkLayerStats.iface.wmeXxContentionTimeStats
(Xx = Vo, Vi, Be,Bk): इंटरफ़ेस पर इस्तेमाल किए गए सबसे अच्छे लिंक (सबसे कम विवाद का समय) के लिए, विवाद के समय के आंकड़े की रिपोर्ट करें.
एमएलओ लिंक को फिर से कॉन्फ़िगर करना
जब वाई-फ़ाई 7 ऐक्सेस पॉइंट के किसी लिंक का इस्तेमाल किसी और काम के लिए किया जाता है, तो एपी, एमएलओ लिंक को फिर से कॉन्फ़िगर करके लिंक को हटाने की सूचना दे सकता है. स्टेशन, बाकी लिंक पर फिर से असोसिएट किए बिना, एपी के साथ आसानी से कनेक्ट हो सकते हैं.
onMloLinksInfoChanged
AIDL इंटरफ़ेस, वाई-फ़ाई सप्लीकेंट में ISupplicantStaIfaceCallback.aidl
पर मौजूद होता है. यह लिंक को फिर से कॉन्फ़िगर करने (लिंक से एपी हटाने) की सुविधा देता है.
जब वाई-फ़ाई फ़्रेमवर्क किसी लिंक को हटाने की प्रोसेस करता है, तो लिंक की स्थिति को MLO_LINK_STATE_UNASSOCIATED
पर सेट किया जाता है.
इसके बाद, फ़्रेमवर्क लिंक की स्थिति में बदलाव के लिए ConnectivityManager.NetworkCallback#onCapabilitiesChanged()
को ट्रिगर करता है.
WifiInfo#getAffiliatedMloLinks
वाला तरीका, अफ़िलिएट किए गए एमएलओ लिंक दिखाता है. MloLink#getState
वाला तरीका, लिंक होने की स्थिति दिखाता है. लिंक हटा दिए जाने पर, लिंक की स्थिति MLO_LINK_STATE_UNASSOCIATED
के तौर पर दिखती है.
चिप एमएलओ रणनीति
एमएलओ की मदद से, डिवाइस एक ही समय में कई वाई-फ़ाई लिंक पर डेटा भेज और पा सकते हैं. इससे उन ऐप्लिकेशन की परफ़ॉर्मेंस बेहतर हो सकती है जिनकी कुछ खास ज़रूरतें होती हैं. जैसे, कम समय में डेटा ट्रांसफ़र होना, ज़्यादा बैंडविड्थ, और कम बैटरी खर्च होना. चिप बनाने वाली कंपनियां, उपलब्ध लिंक का इस्तेमाल करने के तरीके के बारे में एल्गोरिदम बना सकती हैं.
सिस्टम ऐप्लिकेशन, Wifimanager
में setMloMode
तरीके का इस्तेमाल करके, इन एल्गोरिदम में बदलाव कर सकते हैं. साथ ही, ये मोड सेट कर सकते हैं:
MLO_MODE_DEFAULT = 0
MLO_MODE_LOW_LATENCY = 1
MLO_MODE_HIGH_THROUGHPUT = 2
MLO_MODE_LOW_POWER = 3
यह फ़्रेमवर्क, एमएलओ मोड सेट करने के लिए IWifiChip
AIDL इंटरफ़ेस में setMloMode
का इस्तेमाल करता है.