Android 13 या इसके बाद के वर्शन वाले डिवाइसों के लिए, Android पर वाई-फ़ाई 7 (IEEE 802.11be) स्टैंडर्ड काम करता है. इस पेज पर, Android Wi-Fi 7 की सुविधाओं के बारे में बताया गया है. इनमें बेसलाइन और मल्टी-लिंक ऑपरेशन (एमएलओ) भी शामिल हैं.
बेसलाइन वाई-फ़ाई 7 की सुविधाएं
इस सेक्शन में, Android 13 और उसके बाद के वर्शन में शामिल बेसलाइन वाई-फ़ाई 7 की सुविधाओं के बारे में बताया गया है.
डिवाइस पर वाई-फ़ाई 7 की सुविधा
Android फ़्रेमवर्क में WifiManager#isWifiStandardSupported(int standard)
एपीआई शामिल होता है. ऐप्लिकेशन, ScanResults.WIFI_STANDARD_11BE
आर्ग्युमेंट के साथ इस एपीआई को कॉल करके यह पता लगा सकते हैं कि कोई डिवाइस, वाई-फ़ाई 7 के साथ काम करता है या नहीं.
इस एपीआई को कॉल करने पर, वाई-फ़ाई मॉड्यूल यह जांच करता है कि config_wifi11beSupportOverride
कॉन्फ़िगरेशन ओवरले का इस्तेमाल, बदलाव करने के तौर पर किया गया है या नहीं. साथ ही, यह ये काम करता है:
- अगर ओवरले को
true
पर सेट किया गया है, तो माना जाता है कि डिवाइस पर nl80211 से मिले जवाब के बावजूद, वाई-फ़ाई 7 काम करता है. यह बदलाव सिर्फ़ उन डिवाइस मैन्युफ़ैक्चरर के लिए फ़ायदेमंद है जिनके पास ऐसे ड्राइवर नहीं हैं जो वाई-फ़ाई 7 की सुविधा देते हैं. - अगर ओवरले को
false
(डिफ़ॉल्ट वैल्यू) पर सेट किया गया है, तो वाई-फ़ाई मॉड्यूल, nl80211 से मिली जानकारी का इस्तेमाल करता है. वाई-फ़ाई मॉड्यूल, wificond से जानकारी का अनुरोध करता है. यह nl80211 कमांडNL80211_CMD_GET_WIPHY
को कॉल करता है. अगर ड्राइवर से मिले रिस्पॉन्स मेंNL80211_BAND_IFTYPE_ATTR_EHT_CAP_PHY
एट्रिब्यूट मौजूद है, तो माना जाता है कि डिवाइस में वाई-फ़ाई 7 काम करता है.
स्कैन किए गए एपी वाई-फ़ाई 7 के साथ काम करता है
Android फ़्रेमवर्क में int ScanResult#getWifiStandard()
एपीआई शामिल होता है. ऐप्लिकेशन इस एपीआई को कॉल करके यह पता लगा सकते हैं कि स्कैन किया गया ऐक्सेस पॉइंट (एपी), वाई-फ़ाई 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 होता है. अगर कनेक्शन मोड वाई-फ़ाई 7 है, तो एपीआई ScanResults.WIFI_STANDARD_11BE
दिखाता है.
getWifiStandard
को कॉल करने पर, वाई-फ़ाई मॉड्यूल, ISupplicantStaIface#getConnectionCapabilities()
एचएएल एपीआई को कॉल करके मोड तय करता है. wpa_supplicant
एआईडीएल लेयर में इस एचएएल एपीआई को लागू करने से यह पता चलता है कि कनेक्टिविटी सेटअप के दौरान, EHT Capability IE
, AssocReq
और AssocRsp
, दोनों में मौजूद है या नहीं.
नेटवर्क चुनना
Android 13 में, नेटवर्क चुनने के विकल्प में कई पैरामीटर का इस्तेमाल होता है. इससे यह तय किया जाता है कि किस AP से कनेक्ट करना है. एपी का अनुमानित थ्रूपुट एक पैरामीटर है. इसका अनुमान, ThroughputPredictor
ब्लॉक का इस्तेमाल करके लगाया जाता है. ThroughputPredictor
ब्लॉक, डिवाइस और स्कैन किए गए एपी, दोनों के PHY पैरामीटर का इस्तेमाल करता है.
Android 13 में, ThroughputPredictor
का हिसाब लगाने के लिए, एपी की इन सुविधाओं का इस्तेमाल किया जाता है:
- वाई-फ़ाई 7 (802.11be) के साथ काम करना
- 320 MHz चैनल चौड़ाई के साथ काम करना
ThroughputPredictor
लॉजिक में इन सुविधाओं को शामिल करने से, वाई-फ़ाई 7 की सुविधा वाले एपी को चुनने की संभावना बढ़ जाती है. ऐसा तब होता है, जब डिवाइस इन सुविधाओं का इस्तेमाल कर सकता है.
वाई-फ़ाई आरटीटी पर आधारित रेंजिंग
Android, Wi-Fi RTT के लिए, EHT प्रीऐंबेल और 320 MHz चैनल की चौड़ाई के लिए एपीआई की सुविधा देता है. इससे, चिप के साथ काम करने पर, आरटीटी रेंजिंग में वाई-फ़ाई 7 से जुड़ी सुविधाओं का इस्तेमाल किया जा सकता है.
एचएएल एपीआई
आरटीटी पर आधारित रेंजिंग के लिए, ये एचएएल एपीआई, Wi-Fi 7 की सुविधाओं के साथ काम करते हैं:
EHT
:enum RttPreamble
औरenum WifiRatePreamble
में लगातारWIDTH_320
:enum WifiChannelWidthInMhz
में स्थिरBW_320MHz
:enum RttBw
में स्थिर
API
ऐप्लिकेशन, वाई-फ़ाई 7 आरटीटी (रेंजिंग के लिए ट्रैवल टाइम) पर आधारित रेंजिंग के लिए, इन एपीआई का इस्तेमाल कर सकते हैं:
ScanResult#PREAMBLE_EHT
ResponderConfig#PREAMBLE_EHT
(SystemApi)
सॉफ़्ट एपी
Android, Soft AP में वाई-फ़ाई 7 के साथ काम करता है और ये सुविधाएं देता है.
सॉफ़्ट एपी शुरू करना
Android, वाई-फ़ाई 7 मोड में सॉफ़्ट एपी शुरू करने की सुविधा देता है.
यह config_wifiSoftapIeee80211beSupported
ओवरले कॉन्फ़िगरेशन से कंट्रोल होता है.
वाई-फ़ाई मॉड्यूल, IHostApd#addAccessPoint()
एपीआई कॉल में बूलियन HwModeParams#enable80211BE
को सेट करने के लिए, ओवरले config_wifiSoftapIeee80211beSupported
का इस्तेमाल करता है. Hostapd AIDL लेयर में, इस वैल्यू का इस्तेमाल hostapd.conf
पैरामीटर सेट करने के लिए किया जाता है.
एचएएल एपीआई
hostapd HAL में HwModeParams
में enable80211BE
वाला बोलियन, वाई-फ़ाई 7 मोड में सॉफ़्ट एपी शुरू करने की सुविधा देता है.
सॉफ्ट एपी की जानकारी की शिकायत करना
Android में एपीआई की सुविधा शामिल है, ताकि रिपोर्ट किए गए सॉफ़्ट एपी की जानकारी में वाई-फ़ाई 7 और 320 MHz चैनल की चौड़ाई की जानकारी शामिल की जा सके.
HAL API
Generation.aidl
में होस्ट किए गए AIDL इंटरफ़ेस में मौजूद WIFI_STANDARD_11BE
कॉन्सटेंट, जिसका इस्तेमाल IHostapdCallback#onApInstanceInfoChanged()
कॉलबैक में रिपोर्ट किए गए ApInfo
में किया गया है. यह सॉफ़्ट AP की जानकारी देने के लिए इस्तेमाल किया जाता है.
API
ऐप्लिकेशन, सॉफ्ट एपी की जानकारी की शिकायत करने के लिए, SoftApInfo
में इन तरीकों (सिस्टम एपीआई) का इस्तेमाल कर सकते हैं.
SoftApInfo#getWifiStandard()
: अगर सॉफ्ट एपी को वाई-फ़ाई 7 मोड में शुरू किया जाता है, तो यहScanResults.WIFI_STANDARD_11BE
दिखाता है.SoftApInfo#getBandwidth()
: अगर 320 MHz चैनल की चौड़ाई का इस्तेमाल किया जाता है, तो यह फ़ंक्शनSoftApInfo#CHANNEL_WIDTH_320MHZ
दिखाता है.
MLO वाई-फ़ाई 7 की सुविधाएं
वाई-फ़ाई 7 (802.11be) की खासियत में, मल्टी-लिंक ऑपरेशन (एमएलओ) मुख्य सुविधा है. MLO, वाई-फ़ाई 7 पर काम करने वाले मल्टी-लिंक डिवाइसों (एमएलडी) के लिए ज़रूरी सुविधा है. भले ही, वे एक साथ या अलग-अलग काम कर रहे हों.
पहली इमेज. MLO डायग्राम.
जैसा कि पहली इमेज में दिखाया गया है, AP-MLD और STA-MLD, दोनों में हर लिंक पर AP या STA के कई इंस्टेंस चल रहे हैं. हर लिंक का एक अलग एपी या एसटीए मैक पता होता है. डिवाइस की पहचान करने के लिए, AP या STA में एमएलडी MAC पता भी होता है.
एमएलओ लिंक के बारे में जानकारी
android.net.wifi.MloLink
क्लास, एमएलओ लिंक को दिखाती है. इस क्लास में ये पैरामीटर शामिल हैं:
int getLinkId()
: AP एमएलडी की ओर से विज्ञापन में दिखाया गया लिंक आईडी.MacAddress getApMacAddress()
: एपी का एमएसी पता. उस लिंक के लिए, AP इंस्टेंस का BSSID.MacAddress getStaMacAddress()
: एसटीए का एमएसी पता. लिंक पर एसटीए इंस्टेंस के लिए, स्थानीय तौर पर असाइन किया गया MAC पता.int getChannel()
: चैनल लिंक करें. लिंक किए गए चैनल का नंबर.int getBand()
: लिंक बैंड. लिंक का बैंड.int getState()
: लिंक का स्टेटस. इनमें से कोई एक स्थिति हो सकती है:MLO_LINK_STATE_INVALID
: अमान्य. इसका इस्तेमाल, शुरू करने और गड़बड़ी के मामलों के लिए किया जाता है.MLO_LINK_STATE_UNASSOCIATED
: असोसिएट नहीं किया गया. लिंक किसी एपी से नहीं जुड़ा है.MLO_LINK_STATE_IDLE
: कुछ समय से इस्तेमाल में नहीं है. लिंक जुड़ा हुआ है, लेकिन चालू नहीं है (लिंक पर कोई ट्रैफ़िक आइडेंटिफ़ायर (TID) मैप नहीं किया गया है).MLO_LINK_STATE_ACTIVE
: चालू है. लिंक जुड़ा हो और चालू हो (लिंक से कम से कम एक TID मैप किया गया हो). कोई चालू लिंक, पावर सेव मोड में हो सकता है, क्योंकि फ़्रेमवर्क, लिंक की पावर की स्थिति पर नज़र नहीं रखता.
स्कैन की गई वाई-फ़ाई 7 एपी एमएलओ की जानकारी
जब वाई-फ़ाई मॉड्यूल को एपी-एमएलडी से ScanResult
ऑब्जेक्ट मिलता है, तब ऐप्लिकेशन को वाई-फ़ाई 7 एपी एमएलडी के लिए एमएलओ पैरामीटर मिल सकते हैं. AOSP WifiTracker
, ज़्यादा जानकारी वाले मोड में चलने पर MLO पैरामीटर दिखाता है.
एमएलओ की जानकारी इकट्ठा करने के लिए, Wi-Fi मॉड्यूल ये काम करता है:
- AP MLD MAC पते और मौजूदा लिंक आईडी को पढ़ने के लिए, बीकन या जांच के जवाब में शामिल कई लिंक की जानकारी देने वाले एलिमेंट (IE) को पार्स करता है.
- यह बीकन या जांच के जवाब में शामिल कम पड़ोसी रिपोर्ट (RNR) IE को पार्स करता है, ताकि जुड़े हुए लिंक की जानकारी की सूची को पढ़ सके.
API
स्कैन किए गए एपी एमएलओ की जानकारी पाने के लिए, ऐप्लिकेशन इन एपीआई का इस्तेमाल कर सकते हैं:
ScanResult#BSSID
: एपी इंस्टेंस MAC पता (उस लिंक के लिए जिस पर स्कैन का नतीजा मिलता है)MacAddress ScanResult#getApMldMacAddress()
: यह विकल्प एपी के एमएलडी MAC पते को दिखाता है.int ScanResult#getApMloLinkId()
: इससे उस लिंक का लिंक आईडी मिलता है जिस पर ScanResult मिला था.List<MloLink> ScanResult#getAffiliatedMloLinks()
: यह AP-MLD के ज़रिए विज्ञापन किए गए सभी लिंक के लिए,MloLink
ऑब्जेक्ट की सूची दिखाता है. इसमें वह लिंक भी शामिल होता है जिस पर ScanResult मिला था.
कनेक्ट किए गए Wi-Fi 7 AP MLO की जानकारी
जब कोई डिवाइस, वाई-फ़ाई 7 AP-MLD से कनेक्ट होता है, तो फ़्रेमवर्क WifiInfo
ऑब्जेक्ट से कनेक्शन के MLO पैरामीटर इकट्ठा करता है. AOSP
WifiTracker
ऑब्जेक्ट, ज़्यादा जानकारी वाले मोड में चलने पर यह जानकारी दिखाता है.
जब डिवाइस AP-MLD से कनेक्ट होता है, तो वाई-फ़ाई मॉड्यूल, AP से मिले ScanResult
ऑब्जेक्ट से एमएलओ की जानकारी कॉपी कर लेता है. इसके बाद, मॉड्यूल ISupplicantStaIface#getConnectionMloLinksInfo()
HAL API को कॉल करता है, ताकि वह एपी और एसटीए, दोनों के लिए हर लिंक के एमएसी पते को पढ़ सके. साथ ही, इससे जुड़े लिंक की स्थिति को अपडेट कर सके.
API
एमएलओ कनेक्शन की जानकारी पाने के लिए, ऐप्लिकेशन इन एपीआई का इस्तेमाल कर सकते हैं:
WifiInfo#getBSSID()
: यह फ़ंक्शन, एपी इंस्टेंस MAC पता दिखाता है (उस लिंक के लिए जिससे डिवाइस जुड़ा है).MacAddress WifiInfo#getApMldMacAddress()
: यह एपी का एमएलडी एमएसी पता दिखाता है.int WifiInfo#getApMloLinkId()
: इस फ़ंक्शन से उस लिंक का लिंक आईडी मिलता है जिस पर एसटीए, एपी से जुड़ा है.List<MloLink> WifiInfo#getAffiliatedMloLinks()
: AP-MLD की मदद से विज्ञापन दिखाए गए सभी लिंक के लिए,MloLink
ऑब्जेक्ट की सूची दिखाता है. इसमें लिंक से जुड़ा लिंक भी शामिल है. हरMloLink
ऑब्जेक्ट पर, एपी और एसटीए, दोनों के मैक पते के लिए क्वेरी की जा सकती है.
एपी-एमएलडी स्कैनिंग
वेंडर सॉफ़्टवेयर, हर बीकन या उसे मिलने वाली जांच की जांच के नतीजों के साथ वाई-फ़ाई फ़्रेमवर्क उपलब्ध कराता है. इसका मतलब है कि Wi-Fi फ़्रेमवर्क:
- एक ही AP-MLD से कई
ScanResults
ऑब्जेक्ट मिल सकते हैं, क्योंकि AP में एक से ज़्यादा बीकन लिंक हो सकते हैं. - इसे AP-MLD के AP लिंक के लिए, स्कैन के नतीजों का सिर्फ़ कुछ हिस्सा मिल सकता है. इसकी वजह यह हो सकती है कि फ़र्मवेयर को इनमें से कुछ लिंक सिग्नल न मिलें.
वेंडर सॉफ़्टवेयर सिर्फ़ एयर के ज़रिए मिले स्कैन के नतीजों की रिपोर्ट करता है. साथ ही, उसे एपी-एमएलडी के विज्ञापन वाले लिंक के आधार पर, स्कैन के नतीजे नहीं बनाने चाहिए.
वेंडर के सॉफ़्टवेयर में, स्कैन के नतीजों में एपी इंस्टेंस से मिले बुनियादी वैरिएंट मल्टी-लिंक और आरएनआर आईई शामिल होने चाहिए. अगर स्कैन के नतीजों में, एफ़िलिएटेड एपी की जानकारी मौजूद नहीं है, तो वेंडर सॉफ़्टवेयर, मल्टी-लिंक प्रोब अनुरोध (प्रोब अनुरोध फ़्रेम, जिसमें प्रोब अनुरोध मल्टी-लिंक एलिमेंट शामिल होता है) भेज सकता है. इससे, रिस्पॉन्स फ़्रेम में टारगेट किए गए एपी-एमएलडी के साथ, एपी की क्षमताओं, पैरामीटर, और ऑपरेशन एलिमेंट का पूरा या कुछ हिस्सा शामिल किया जा सकता है.
ज़रूरत पड़ने पर, वेंडर सॉफ़्टवेयर एमएल-प्रॉबिंग (जांच ज़रूरी फ़्रेम में जांच की ज़रूरी शर्त ML IE का इस्तेमाल करके) को ट्रिगर कर सकता है.
एपी-एमएलडी नेटवर्क असोसिएशन
जब कोई डिवाइस किसी AP-MLD नेटवर्क से जुड़ता है, तो वेंडर सॉफ़्टवेयर, सिग्नल भेजने के लिए चुने गए AP लिंक (जुड़े हुए लिंक) का इस्तेमाल करता है. वेंडर सॉफ़्टवेयर, डिवाइस पर काम करने वाले सभी या कुछ लिंक से जुड़ सकता है.
असोसिएशन पूरा होने के बाद, ड्राइवर, AP-MLD के लिए लिंक के BSSID के साथ ISupplicantStaIfaceCallback#onStateChanged()
की रिपोर्ट करता है. इसके बाद, ड्राइवर AP-MLD का कोई लिंक चुनता है. हालांकि, ऐसा तब ही होता है, जब उस लिंक के लिए स्कैन के नतीजे, फ़्रेमवर्क को रिपोर्ट किए गए हों.
नेटवर्क स्कोरिंग
Android 14 या इसके बाद के वर्शन पर चलने वाले डिवाइसों के लिए, Android वाई-फ़ाई नेटवर्क चुनने की सुविधा, वाई-फ़ाई 7 MLO के साथ काम करती है. इसका मतलब है कि एमएलओ के लिए उपलब्ध लिंक की संख्या के आधार पर, Android डिवाइस के लिए सबसे अच्छा वाई-फ़ाई नेटवर्क चुनता है.
एमएलओ के साथ काम करने के लिए, नेटवर्क चुनने वाला एल्गोरिदम, वाई-फ़ाई चिप की इन एमएलओ क्षमताओं का इस्तेमाल करता है:
- ज़्यादा से ज़्यादा एसटीआर लिंक की संख्या
- असोसिएशन लिंक की ज़्यादा से ज़्यादा संख्या
- एक साथ कई बैंड कॉम्बिनेशन
दूसरी इमेज. एमएलओ नेटवर्क चुनना.
ज़्यादा से ज़्यादा एसटीआर लिंक की संख्या
एक साथ भेजना और पाना (एसटीआर), मल्टी-लिंक ऑपरेशन के लिए वाई-फ़ाई मीडियम कॉन्टेंट स्कीम है. अलग-अलग लिंक के बीच सिग्नल अलग-अलग होने चाहिए, ताकि लिंक अलग-अलग काम कर सकें और एक साथ अलग-अलग लिंक में सिग्नल भेज और पा सकें. एसटीआर, लेगसी सिंगल लिंक (एसएल) एसटीए और लेगसी ड्यूअल बैंड ड्यूअल कंसिस्टेंट (डीबीडीसी) एसटीए से अलग है. एसटीए एमएलडी से जुड़े एसटीए, एक ही ट्रांसमीटर सीक्वेंस नंबर (एसएन) शेयर करते हैं. साथ ही, अलग-अलग लिंक के लिए डेटा ट्रांसमिशन के लिए एक ही स्पेस को ऐलोकेट करते हैं. ऐसा तब होता है, जब एक से ज़्यादा लिंक के ट्रांसमिशन की ऐक्सेस कैटगरी (एसी) एक ही हो.
ज़्यादा से ज़्यादा एसटीआर लिंक का इस्तेमाल, चिप के साथ काम करने वाले रेडियो की ज़्यादा से ज़्यादा संख्या से अलग हो सकता है. दूसरे उदाहरण में, स्ट्रिंग के लिए ज़्यादा से ज़्यादा दो लिंक हैं.
यहां दिए गए AIDL HAL इंटरफ़ेस, ज़्यादा से ज़्यादा STR लिंक की संख्या और असोसिएशन लिंक की संख्या की सुविधाओं के साथ काम करते हैं:
hardware/interfaces/wifi/aidl/android/hardware/wifi/IWifiChip.aidl
hardware/interfaces/wifi/aidl/android/hardware/wifi/WifiChipCapabilities.aidl
असोसिएशन लिंक की ज़्यादा से ज़्यादा संख्या
बेहतर मल्टी-लिंक सिंगल रेडियो (eMLSR) की मदद से, एक ही रेडियो पर कई लिंक काम कर सकते हैं. मल्टी-लिंक डिवाइस, लिंक के एक सेट पर eMLSR का इस्तेमाल करता है. ऐसा तब होता है, जब उसे कुछ बुनियादी कंट्रोल फ़्रेम मिल सकते हों और वह लिंक के सेट पर, चैनल का साफ़ तौर पर आकलन (सीसीए) एक साथ कर सकता हो. हालांकि, एमएलडी एक बार में सिर्फ़ एक लिंक (वह लिंक जिसे हर ट्रांसमिट करने के अवसर (टीएक्सओपी) की अवधि में डाइनैमिक तरीके से चुना गया है) पर ही डेटा को ट्रांसफ़र या रिसीव करता है.
अगर चिप में STR और eMLSR मोड काम करते हैं, तो एक ही लिंक वाले लेगसी स्टेशन की तुलना में, बेहतर भरोसेमंदता, बेहतर थ्रूपुट, और कम इंतज़ार (लेटेंसी) के लिए, एमएलडी स्टेशन, असोसिएशन लिंक की संख्या को बढ़ा सकता है. दूसरे चित्र में, असोसिएशन लिंक की ज़्यादा से ज़्यादा संख्या तीन है.
यहां दिए गए AIDL HAL इंटरफ़ेस, असोसिएशन लिंक की ज़्यादा से ज़्यादा संख्या के साथ काम करते हैं:
hardware/interfaces/wifi/aidl/android/hardware/wifi/IWifiChip.aidl
hardware/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
यहां दिया गया AIDL HAL इंटरफ़ेस, एक साथ कई रेडियो कॉम्बिनेशन के साथ काम करता है:
hardware/interfaces/wifi/aidl/android/hardware/wifi/IWifiChip.aidl
नेटवर्क चुनना
नेटवर्क चुनने (एमएलओ) के दौरान, उम्मीदवारों की सूची को एक ही एमएलडी एमएसी पते वाले सदस्यों के हिसाब से ग्रुप किया जाता है. हर ग्रुप के लिए, एक से ज़्यादा लिंक थ्रूपुट का ज़्यादा से ज़्यादा अनुमानित स्कोर कैलकुलेट किया जाता है. ऐसा, एसटीआर लिंक की ज़्यादा से ज़्यादा संख्या और चिप के साथ काम करने वाले बैंड के कॉम्बिनेशन के आधार पर किया जाता है. अगर उम्मीदवार के पास मल्टी-लिंक की सुविधा है और चिप, एसटीआर के साथ काम करता है, तो अनुमानित थ्रूपुट स्कोर को मल्टी-लिंक प्रेडिकेट थ्रूपुट स्कोर से बदल दिया जाता है. इससे नेटवर्क चुनने के दौरान, एमएलओ उम्मीदवारों को फ़ायदा मिलता है.
किसी AP-MLD नेटवर्क से जुड़ते समय, फ़्रेमवर्क ScanResults
ऑब्जेक्ट में मिली जानकारी के आधार पर एसएसआईडी चुनता है. यह जानकारी, वेंडर के सॉफ़्टवेयर से मिलती है. फ़्रेमवर्क के ज़रिए एसएसआईडी चुनने के बाद, सबसे अच्छे एपी (या एपी लिंक) के लिए बीएसएसआईडी चुनने की ज़िम्मेदारी, वेंडर के सॉफ़्टवेयर की होती है, ताकि उसे असोसिएशन के लिए इस्तेमाल किया जा सके.
डिवाइस के STA MAC पते को मैनेज करना
इस सेक्शन में बताया गया है कि डिवाइस के STA MAC पते (MLD MAC पते और हर लिंक के STA MAC पते) को कैसे मैनेज किया जाता है.
एमएलडी मैक पता
वाई-फ़ाई फ़्रेमवर्क, डिवाइस के एमएलडी मैक पते को मैनेज करता है. एमएलडी MAC पते को उसी तरह मैनेज किया जाता है जिस तरह कोई गैर-MLD डिवाइस अपना MAC पता हैंडल करता है.
उपयोगकर्ता की पसंद के आधार पर, एमएसी पता अपने-आप चुना गया एमएसी पता या हार्डवेयर से तय किया गया एमएसी पता हो सकता है. IWifiStaIface#setMacAddress()
HAL API का इस्तेमाल करके, फ़्रेमवर्क, एमएलडी एमएसी पता सेट करता है.
हर लिंक के लिए STA का मैक पता
वेंडर सॉफ़्टवेयर, हर लिंक के लिए इंस्टेंस STA मैक पते मैनेज करता है. जब कोई डिवाइस किसी एपी से जुड़ता है, तो वेंडर सॉफ़्टवेयर, उससे जुड़े हर लिंक के लिए एक इंस्टेंस एमएसी पता असाइन करता है.
वेंडर सॉफ़्टवेयर, एल्गोरिदम के आधार पर हर लिंक के लिए MAC पते असाइन करता है. एल्गोरिदम को दोहराया जा सकता है और इसमें ये चीज़ें शामिल होनी चाहिए:
- वाई-फ़ाई फ़्रेमवर्क से सेट किया गया STA-MLD MAC पता.
- लिंक आईडी (एपी से मिला)
इसका मतलब है कि अगर फ़्रेमवर्क एक ही एमएलडी मैक पते का फिर से इस्तेमाल करता है, तो वेंडर को हर इंस्टेंस के लिए, उससे जुड़े मैक पते का फिर से इस्तेमाल करना होगा. इसके अलावा, अगर वेंडर हर इंस्टेंस के लिए, उससे जुड़े मैक पते का फिर से इस्तेमाल करता है, तो फ़्रेमवर्क को एक ही एमएलडी मैक पते का फिर से इस्तेमाल करना होगा. इससे यह पक्का होता है कि जब किसी SSID के लिए, फ़्रेमवर्क से जनरेट किया गया STA-MLD पता लगातार मौजूद रहता है, तो हर STA के MAC पते भी लगातार मौजूद रहते हैं.
यहां हर लिंक के लिए एसटीए मैक पते के असाइनमेंट के लिए, एल्गोरिदम का एक उदाहरण दिया गया है (वेंडर, एल्गोरिदम की शर्तों को पूरा करने वाले किसी भी एल्गोरिदम को लागू कर सकते हैं):
- ऑक्टेट 0: पक्का करें कि स्थानीय तौर पर मैनेज किया जाने वाला बिट सेट हो
- ऑक्टेट 1 से 4: STA-MLD मैक पते के जैसे ही
- पांचवां ऑक्टेट: हर एसटीए = (एसटीए-एमएलडी + लिंक आईडी + 1) MOD (256)
एक से ज़्यादा लिंक हैंडल करना
वेंडर फ़र्मवेयर, लिंक पर स्विच कर सकता है. साथ ही, वाई-फ़ाई फ़्रेमवर्क से इनपुट के बिना, लिंक को चालू या बंद करने की पावर सेव की स्थिति को मैनेज कर सकता है.
लिंक की स्थिति बदलने पर, वाई-फ़ाई फ़्रेमवर्क को सूचना नहीं मिलती.
बैटरी सेव करने की स्थिति को मैनेज करना
वाई-फ़ाई फ़्रेमवर्क पर बैटरी सेव करने की स्थिति, डिफ़ॉल्ट रूप से चालू रहती है. बिजली बचाने की स्थिति में, वेंडर फ़र्मवेयर, ट्रैफ़िक पैटर्न और लिंक चालू या बंद करने के फ़ैसलों के आधार पर, अलग-अलग लिंक की बिजली बचाने की स्थिति को मैनेज करता है.
हालांकि, वाई-फ़ाई फ़्रेमवर्क, ISupplicantStaIface::setPowerSave(false)
HAL API को कॉल करके, बैटरी सेव करने की स्थिति को बंद कर सकता है. अगर फ़्रेमवर्क की वजह से पावर सेव मोड बंद है, तो वेंडर फ़र्मवेयर को कम से कम एक लिंक चालू रखना होगा (पावर सेव मोड बंद). इस स्थिति में, फ़र्मवेयर लागू करने की प्रोसेस यह तय करती है कि कौनसा लिंक सेट किया जाए.
डेटा पाथ
इसमें, अपलिंक और डाउनलोड ट्रैफ़िक को मैनेज करने के लिए, वेंडर फ़र्मवेयर लागू करने के बारे में बताया गया है.
अपलिंक ट्रैफ़िक
फ़र्मवेयर, अपने इंटरनल लागू होने के आधार पर अपलिंक ट्रैफ़िक को एक (या एक से ज़्यादा) लिंक पर भेजता है. वेंडर फ़र्मवेयर यह तय करता है कि ट्रैफ़िक के पैटर्न के आधार पर, ट्रैफ़िक को कब लोड बैलेंस करना है, डुप्लीकेट करना है या इकट्ठा करना है. हमारा सुझाव है कि इन मामलों में, फ़र्मवेयर के डुप्लीकेट ट्रैफ़िक को एक से ज़्यादा लिंक पर भेजा जाए:
- जब
IWifiChip#setLatencyMode()
HAL API की मदद से लो-लेटेंसी मोड सेट किया जाता है. - जब उपयोगकर्ता की प्राथमिकता 6 और 7 वाला ट्रैफ़िक हो.
डाउनलिंक ट्रैफ़िक
फ़र्मवेयर को, मैक हेडर के हर एसटीए के (डेस्टिनेशन) मैक पते को MLD-STA मैक पते से बदलना होगा. साथ ही, मैक हेडर के हर एपी के (सोर्स) मैक पते को MLD-AP मैक पते से बदलना होगा. फ़र्मवेयर को APF फ़िल्टर से गुज़रने से पहले इस MAC पते का इस्तेमाल करना चाहिए. ऐसा इसलिए, क्योंकि APF फ़िल्टर कमांड में MLD MAC पतों पर आधारित फ़िल्टर होते हैं. किसी AP-MLD के सभी लिंक के लिए, एक ही एपीएफ़ फ़िल्टर होता है.
एक साथ कई टास्क करने की सुविधा
जिन मामलों में नए इंटरफ़ेस के लिए रेडियो का इस्तेमाल किया जाता है, उनमें एक ही इंटरफ़ेस के लिंक के लिए, अलग-अलग रेडियो स्टेशन तय करने को प्राथमिकता दी जानी चाहिए. एक साथ कई गतिविधियां होने की स्थितियों को एमएलओ से ज़्यादा प्राथमिकता दी जानी चाहिए. भले ही, कोई भी स्थिति पहले आई हो. एक इंटरफ़ेस के लिए एक से ज़्यादा लिंक का इस्तेमाल करना, मौके के हिसाब से किया जाता है. इसका मतलब है कि एक से ज़्यादा लिंक का इस्तेमाल सिर्फ़ तब किया जाता है, जब:
- लोड बैलेंसिंग, एग्रीगेशन या डुप्लीकेशन के लिए फ़र्मवेयर के फ़ैसले के आधार पर, एमएलओ ज़रूरी है.
- एमएलओ उपलब्ध है. इसका मतलब है कि किसी दूसरे इंटरफ़ेस के लिए रेडियो की ज़रूरत नहीं है.
TID से लिंक की मैपिंग
Android 14 या इसके बाद के वर्शन वाले डिवाइसों के लिए, जब Wi-Fi 7 एपी, बीकन, प्रोब रिस्पॉन्स, और असोसिएशन रिस्पॉन्स फ़्रेम में भेजे गए TID-to-link मैपिंग एलिमेंट की मदद से, किसी एक लिंक को कुछ समय के लिए बंद करने का एलान करता है, तो Wi-Fi 7 स्टेशन, सेट अप किए गए बाकी लिंक का इस्तेमाल करके एपी से कनेक्ट रहता है. ऐसा करने के लिए, उसे कोई दूसरा असोसिएशन नहीं करना पड़ता.
Android 13 या इससे पहले के वर्शन वाले डिवाइसों के लिए, वाई-फ़ाई फ़्रेमवर्क, TID से लिंक मैपिंग की वजह से लिंक की स्थिति में बदलाव होने पर सूचनाएं पाने की सुविधा नहीं देता. भले ही, उससे जुड़ा लिंक किसी TID से लिंक न हो.
एआईडीएल एचएएल
वाई-फ़ाई सप्लाइंट, TID से लिंक मैपिंग में हुए बदलावों के बारे में वाई-फ़ाई फ़्रेमवर्क को बताता है. इसके लिए, वह इन एआईडीएल इंटरफ़ेस का इस्तेमाल करता है:
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
नीचे दिए गए एपीआई का इस्तेमाल करके, ऐप्लिकेशन को TID-to-link की मैपिंग में हुए बदलावों के बारे में जानकारी मिल सकती है:
ConnectivityManager.NetworkCallback.onCapabilitiesChanged()
: टीआईडी-टू-लिंक को मैप करने में बदलाव होने पर, फ़्रेमवर्क से नेटवर्क कॉलबैक ट्रिगर होता है.WifiInfo#getAssociatedMloLinks()
: यह, इससे जुड़े एमएलओ लिंक दिखाता है.MloLink#getState()
: यह लिंक की स्थिति दिखाता है, जो किMLO_LINK_STATE_ACTIVE
याMLO_LINK_STATE_IDLE
हो सकती है.
टीआईडी से लिंक मैपिंग की बातचीत की सुविधाएं
Android 14 या इसके बाद के वर्शन वाले डिवाइसों के लिए, स्टेशन और एपी के लिए TID-to-link मैप नेगोशिएशन की सुविधाएं पाने के लिए, ये एपीआई उपलब्ध हैं.
चिप की सुविधा
यहां दिए गए इंटरफ़ेस, TID से लिंक मैपिंग के लिए चिप की सुविधा के साथ काम करते हैं.
AIDL HAL
TID-to-link मैपिंग के लिए, बातचीत करने वाला AIDL इंटरफ़ेस FeatureSetMask
में hardware/interfaces/wifi/aidl/android/hardware/wifi/IWifiChip.aidl
में मौजूद है. T2LM_NEGOTIATION = 1 << 8
क्षमता से पता चलता है कि चिप में टीआईडी-टू-लिंक को मैप करने की सुविधा है.
एपीआई
WifiManager.isTidToLinkMappingNegotiationSupported()
: TID-to-link मैपिंग नेगोशिएशन के साथ काम करने वाला चिप दिखाता है.
एपी की सुविधा
नीचे दिए गए इंटरफ़ेस, TID-to-link मैपिंग के लिए एपी की सुविधा के साथ काम करते हैं.
AIDL HAL
यह फ़्रेमवर्क, मौजूदा कनेक्शन की क्षमता के साथ-साथ, सपोर्ट करने वाले टूल से एपी की क्षमता के बारे में क्वेरी करता है.
apTidToLinkMapNegotiationSupported
: यह जांच करता है कि एपी, TID-to-link मैप नेगोशिएशन की सुविधा के साथ काम करता है या नहीं.
एपीआई
WifiInfo.isApTidToLinkMappingNegotiationSupported()
: यह बताता है कि एपी, TID से लिंक मैपिंग की बातचीत की सुविधा के साथ काम करता है या नहीं.
लिंक लेयर के आंकड़े
लिंक लेयर के आंकड़ों में, वाई-फ़ाई लिंक से जुड़ी खास जानकारी शामिल होती है. जैसे, आरएसएसआई, कई टेक्सस और RX पैकेट काउंटर, और रेडियो के आंकड़े. सबसे अच्छा नेटवर्क चुनने या कनेक्ट किए गए नेटवर्क की क्वालिटी का आकलन करने के लिए, वाई-फ़ाई फ़्रेमवर्क समय-समय पर लेयर के आंकड़ों और आरएसएसआई को पोल करता है. Android 14 या इसके बाद के वर्शन वाले डिवाइसों के लिए, लिंक लेयर के आंकड़ों में कई लिंक के साथ काम करने की सुविधा शामिल होती है. वाई-फ़ाई 7 के साथ काम करने के लिए, Android, लिंक लेयर के आंकड़ों और सिग्नल पोल, दोनों में एमएलओ की सुविधा देता है.
लिंक से जुड़े आंकड़े, इन लिंक लेयर एआईडीएल इंटरफ़ेस में मिलते हैं:
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 के ज़रिए LinkLayerStats
की रिपोर्टिंग करते समय, वेंडर सॉफ़्टवेयर को एग्रीगेशन का यह लॉजिक लागू करना होगा. सबसे अच्छा लिंक वह होता है जिसका आरएसएसआई सबसे ज़्यादा होता है.
StaLinkLayerStats.iface.beaconRx
: इंटरफ़ेस के लिए इस्तेमाल किए गए सबसे अच्छे लिंक के लिए, बीकन की संख्या की रिपोर्ट करें.StaLinkLayerStats.iface.avgRssiMgmt
: इंटरफ़ेस के लिए इस्तेमाल किए गए सबसे अच्छे लिंक के लिए,avgRssiMgmt
रिपोर्ट करें.StaLinkLayerStats.iface.wmeXxPktStats
(Xx = Vo, Vi, Be,Bk): इंटरफ़ेस के लिंक पर, पैकेट के एग्रीगेट किए गए आंकड़े (कुल) की रिपोर्ट दें.StaLinkLayerStats.iface.wmeXxContentionTimeStats
(Xx = Vo, Vi, Vi, Be,Bk): इंटरफ़ेस पर इस्तेमाल किए गए सबसे अच्छे लिंक के लिए, कॉन्टेस्ट के समय के आंकड़े रिपोर्ट करें (कॉन्टेंट के सबसे कम समय के आंकड़े).
एमएलओ लिंक का फिर से कॉन्फ़िगरेशन
जब वाई-फ़ाई 7 ऐक्सेस पॉइंट के किसी लिंक को फिर से इस्तेमाल किया जाता है, तो AP, एमएलओ लिंक को फिर से कॉन्फ़िगर करके, इस लिंक को हटाने की घोषणा कर सकता है. स्टेशन, बाकी लिंक पर फिर से असोसिएट किए बिना, एपी के साथ आसानी से कनेक्ट रह सकते हैं.
onMloLinksInfoChanged
ISupplicantStaIfaceCallback.aidl
में वाई-फ़ाई सपोर्टिंग में मौजूद 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
एआईडीएल इंटरफ़ेस में setMloMode
का इस्तेमाल करता है.