वाई-फ़ाई हॉटस्पॉट (सॉफ़्ट एपी)

Android, वाई-फ़ाई हॉटस्पॉट (सॉफ़्ट एपी) की सुविधा देता है. इसमें वाई-फ़ाई हॉटस्पॉट और सिर्फ़ सीमित दायरे में इस्तेमाल होने वाले वाई-फ़ाई हॉटस्पॉट के ज़रिए टेदरिंग की सुविधा शामिल है.

सॉफ़्ट एपी की सुविधा का इस्तेमाल करके, इन्हें कॉन्फ़िगर किया जा सकता है:

  • SSID और BSSID
  • सुरक्षा का टाइप (इसमें WPA3 शामिल है)
  • छिपा हुआ SSID
  • ऑपरेटिंग बैंड और चैनल (इसमें एसीएस भी शामिल है)
  • अनुमति वाले क्लाइंट की ज़्यादा से ज़्यादा संख्या
  • ऑटोमैटिक शटडाउन के लिए टाइम आउट की वैल्यू
  • अनुमति वाली सूची और ब्लॉक की गई सूची, ताकि उपयोगकर्ता कनेक्ट किए गए डिवाइसों को कंट्रोल कर सके
  • एपी BSSID के लिए, मैक पते को रैंडम बनाने का लेवल
  • 802.11ax और 802.11be

डिवाइस की क्षमताओं के आधार पर, इन कंट्रोल की उपलब्धता तय होती है. Android 11 में, इन सुविधाओं को पाने के लिए एपीआई उपलब्ध कराए गए हैं. डिवाइस बनाने वाली कंपनियां, ओवरले का इस्तेमाल करके डिवाइस की बुनियादी क्षमताओं के बारे में भी बता सकती हैं.

ध्यान दें कि कुछ एपीआई, सिस्टम एपीआई होते हैं. इन्हें अनुमतियों के ज़रिए प्रतिबंधित किया जाता है, ताकि सिर्फ़ सिस्टम का Settings ऐप्लिकेशन इन्हें ऐक्सेस कर सके.

हॉटस्पॉट एपीआई की मदद से ऐप्लिकेशन डेवलप करना

AOSP के सेटिंग ऐप्लिकेशन में, टेदर किए गए वाई-फ़ाई हॉटस्पॉट को डिफ़ॉल्ट रूप से लागू किया जाता है. हालांकि, यह Soft AP कॉन्फ़िगरेशन के लिए सभी एपीआई का इस्तेमाल नहीं करता.

हॉटस्पॉट या सिर्फ़ सीमित दायरे में इस्तेमाल होने वाले हॉटस्पॉट के ज़रिए टेदरिंग की सुविधा देने के लिए, ऐप्लिकेशन को ये काम करने होंगे:

  1. टेदर किए गए हॉटस्पॉट के लिए WifiManager#registerSoftApCallback या सिर्फ़ लोकल हॉटस्पॉट के लिए WifiManager#registerLocalOnlyHotspotSoftApCallback का इस्तेमाल करके, डिवाइस की सुविधाओं के बारे में जानने के लिए कॉलबैक रजिस्टर करें.

    SoftApCallback कॉलबैक फ़ंक्शन में ये तरीके उपलब्ध होते हैं:

    • SoftApCallback#onCapabilityChanged: इससे डिवाइस की क्षमताओं के बारे में जानकारी मिलती है. इसमें ज़्यादा से ज़्यादा सपोर्ट किए गए क्लाइंट की संख्या और यह जानकारी शामिल होती है कि SAE या ACS काम करते हैं या नहीं.
    • SoftApCallback#onInfoChanged: इससे चालू किए गए सॉफ़्ट एपी के बारे में जानकारी मिलती है. यह जानकारी सिर्फ़ एक बार मान्य होती है. इसमें बैंड और फ़्रीक्वेंसी की जानकारी भी शामिल होती है.
    • SoftApCallback#onConnectedClientsChanged: इससे कनेक्ट किए गए क्लाइंट की सूची मिलती है. हर क्लाइंट के लिए, आपको MAC पता मिल सकता है. आईपी पते की जानकारी पाने के लिए, TetheringEventCallback#onClientsChanged कॉलबैक का इस्तेमाल करें.
    • SoftApCallback#onStateChanged: इससे Soft AP के चालू और बंद होने की स्थिति के बारे में अपडेट मिलते हैं.
    • SoftApCallback#onBlockedClientConnecting: यह ब्लॉक किए गए क्लाइंट की जानकारी देता है. साथ ही, ब्लॉक करने की वजह भी बताता है. जैसे, डिवाइस पर कनेक्ट किए जा सकने वाले क्लाइंट की संख्या ज़्यादा हो गई है या क्लाइंट को कनेक्ट करने की अनुमति नहीं है.
    • SoftApCallback#onClientsDisconnected: इससे डिसकनेक्ट किए गए क्लाइंट की सूची मिलती है. हर क्लाइंट के लिए, कनेक्शन बंद होने की वजह जानी जा सकती है.

टेदर किए गए हॉटस्पॉट के लिए:

  1. WifiManager#setSoftApConfiguration तरीके को कॉल करके और SoftApConfiguration इंस्टेंस देकर, टेदरिंग के लिए सॉफ़्ट एपी कॉन्फ़िगरेशन कॉन्फ़िगर करें. SoftApConfiguration.Builder क्लास का इस्तेमाल करके SoftApConfiguration बनाएं.
  2. TetheringManager#startTethering पर, टेदरिंग के तरीके को कॉल करके टेदरिंग शुरू करें.

सिर्फ़ स्थानीय हॉटस्पॉट के लिए:

  1. WifiManager#startLocalOnlyHotspot तरीके का इस्तेमाल करके, किसी खास सॉफ़्ट एपी कॉन्फ़िगरेशन के साथ, सिर्फ़ लोकल हॉटस्पॉट शुरू करें.

अनुमति वाली सूची और ब्लॉक की गई सूची लागू करना

आम तौर पर, कैरियर की यह ज़रूरी शर्त होती है कि वह उपयोगकर्ता को उन डिवाइसों को कंट्रोल करने की सुविधा दे जिन्हें सॉफ़्ट एपी से कनेक्ट करने की अनुमति है. ऐसा करने के कई तरीके हैं:

  • SoftApConfiguration.Builder#setMaxNumberOfClients का इस्तेमाल करके, सॉफ़्ट एपी से कनेक्ट किए जा सकने वाले डिवाइसों की ज़्यादा से ज़्यादा संख्या को सीमित करें. पक्का करें कि आपने डिवाइस के साथ काम करने वाले क्लाइंट की ज़्यादा से ज़्यादा संख्या से कम संख्या डाली हो. आपको ज़्यादा से ज़्यादा SoftApCapability#getMaxSupportedClients मिल सकते हैं.
  • अनुमति देने और ब्लॉक करने की सूचियों का इस्तेमाल करके डाइनैमिक कंट्रोल उपलब्ध कराएं:

    • सॉफ़्ट एपी का डिफ़ॉल्ट कॉन्फ़िगरेशन, सभी डिवाइसों को सॉफ़्ट एपी से कनेक्ट करने की अनुमति देता है. हालांकि, जिन डिवाइसों के मैक पते SoftApConfiguration.Builder#setBlockedClientList में जोड़े गए हैं उन्हें कनेक्ट करने की अनुमति नहीं मिलती.
    • अगर Soft AP को SoftApConfiguration.Builder#setClientControlByUserEnabled(true) के साथ कॉन्फ़िगर किया गया है, तो अनुमति वाली सूची का इस्तेमाल किया जाता है.

      • जिन डिवाइसों के मैक पते SoftApConfiguration.Builder#setBlockedClientList में हैं उन्हें नेटवर्क से कनेक्ट करने की अनुमति नहीं है.
      • SoftApConfiguration.Builder#setAllowedClientList में मौजूद मैक पते वाले सभी डिवाइसों को कनेक्ट करने की अनुमति है.
      • अन्य सभी डिवाइसों (यानी कि जिन डिवाइसों के मैक पते, अनुमति या ब्लॉक की गई सूची में शामिल नहीं हैं) को कनेक्ट करने से ब्लॉक कर दिया जाता है. हालांकि, SoftApCallback#onBlockedClientConnecting को कॉल किया जाता है, ताकि कंट्रोल करने वाला ऐप्लिकेशन (यानी कि Settings ऐप्लिकेशन) कोई कार्रवाई कर सके. उदाहरण के लिए, उपयोगकर्ता से पुष्टि करने के लिए कहना. इसके बाद, उपयोगकर्ता के व्यवहार के आधार पर डिवाइस को अनुमति या ब्लॉक की गई सूची में जोड़ना.

    ध्यान दें कि डिवाइस, अनुमति वाली सूची की सुविधा का इस्तेमाल सिर्फ़ तब कर सकते हैं, जब यह सुविधा डिवाइस पर काम करती हो. SoftApCapability#areFeaturesSupported(SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT) का इस्तेमाल करके, यह पुष्टि की जा सकती है कि डिवाइस पर यह सुविधा काम करती है या नहीं.

लागू करना

हॉटस्पॉट के ज़रिए इंटरनेट शेयर करने की सुविधा या सिर्फ़ लोकल हॉटस्पॉट की सुविधा देने के लिए, डिवाइस बनाने वाली कंपनियों को Settings ऐप्लिकेशन, फ़्रेमवर्क, और एचएएल/फ़र्मवेयर की सहायता देनी होगी:

  • सेटिंग ऐप्लिकेशन: AOSP का सेटिंग ऐप्लिकेशन, एसएसआईडी और सुरक्षा क्रेडेंशियल के साथ टेदरिंग हॉटस्पॉट को कॉन्फ़िगर करने के लिए एक बेसलाइन उपलब्ध कराता है. इस कोड का इस्तेमाल, बिना किसी बदलाव के किया जा सकता है. इसके अलावा, इसे हॉटस्पॉट एपीआई की मदद से ऐप्लिकेशन डेवलप करना लेख में बताए गए तरीके से बदलकर, अतिरिक्त सुविधाएं भी जोड़ी जा सकती हैं.

  • फ़्रेमवर्क: AOSP फ़्रेमवर्क कोड में, हॉटस्पॉट एपीआई की मदद से ऐप्लिकेशन डेवलप करना में बताई गई सभी सुविधाएं काम करती हैं.

  • हॉटस्पॉट के लिए एचएएल/फ़र्मवेयर: एचआईडीएल IHostapd.hal वर्शन 1.2 या इसके बाद का वर्शन या एआईडीएल IHostapd.aidl.

पसंद के मुताबिक बनाएं

लागू करने की प्रोसेस को पसंद के मुताबिक बनाने के लिए, डिवाइस बनाने वाली कंपनियों को यहां दी गई ओवरले और कैरियर कॉन्फ़िगरेशन को कॉन्फ़िगर करना चाहिए. इनके बारे में packages/modules/Wifi/service/ServiceWifiResources/res/values/config.xml में बताया गया है:

  • config_wifiFrameworkSoftApShutDownTimeoutMilliseconds: शटडाउन के लिए डिफ़ॉल्ट टाइमआउट इंटरवल. यह सिर्फ़ तब मान्य होता है, जब SoftApConfiguration#setAutoShutdownEnabled चालू हो. SoftApConfiguration#setShutdownTimeoutMillis का इस्तेमाल करके, इसे बदला जा सकता है.
  • config_wifiHardwareSoftapMaxClientCount: ज़्यादा से ज़्यादा क्लाइंट को सपोर्ट करने के लिए, हार्डवेयर की सीमा. डिवाइस पर ज़्यादा से ज़्यादा क्लाइंट कनेक्ट किए जा सकते हैं. यह संख्या, हार्डवेयर और कैरियर की शर्तों (CarrierConfigManager.Wifi#KEY_HOTSPOT_MAX_CLIENT_COUNT के हिसाब से तय की गई) के हिसाब से तय होती है. SoftApCapabilities#getMaxSupportedClients के साथ ऐप्लिकेशन को फ़ाइनल नतीजे मिलते हैं.
  • config_wifiSofapClientForceDisconnectSupported: डिवाइस में क्लाइंट को डिसकनेक्ट करने की सुविधा है या नहीं. अनुमति और ब्लॉक की गई सूचियां चालू करने के लिए ज़रूरी है. SoftApCapabilities#areFeaturesSupported(SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT) के ज़रिए, कंट्रोल करने वाले ऐप्लिकेशन (सेटिंग ऐप्लिकेशन) को इसकी जानकारी दी जाती है.
  • (Android 13 से उपलब्ध है) config_wifiSoftapPassphraseAsciiEncodableCheck: सॉफ़्ट एपी पासफ़्रेज़ को ASCII में एन्कोड करना ज़रूरी है या नहीं.
  • config_wifiSoftapAutoUpgradeToBridgedConfigWhenSupported: इससे यह तय किया जाता है कि जब कोई नया डिवाइस काम करता है, तब क्लाउड कॉन्फ़िगरेशन को वापस लाने के दौरान, बैंड की सेटिंग के कॉन्फ़िगरेशन को ड्यूअल बैंड में अपने-आप अपग्रेड करना है या नहीं.
  • (Android 13 और इसके बाद के वर्शन पर उपलब्ध है) config_wifiSoftapAutoAppendLowerBandsToBandConfigurationEnabled: क्या फ़्रेमवर्क, कोएक्सिस्टेंस को मैनेज करने से बचने के लिए, बैंड कॉन्फ़िगरेशन में अपने-आप लोअर बैंड जोड़ता है.
  • config_wifiSoftApDynamicCountryCodeUpdateSupported: यह जानकारी कि डिवाइस पर एपी मोड में, डाइनैमिक देश कोड अपडेट करने की सुविधा काम करती है या नहीं
  • चैनल के साथ काम करने की सुविधा: config_wifiSoftap2gChannelList, config_wifiSoftap5gChannelList, config_wifiSoftap6gChannelList, और config_wifiSoftap60gChannelList.
  • यह जानकारी दें कि हॉटस्पॉट कॉन्फ़िगरेशन को नए डिवाइस पर वापस लाने पर, क्या इससे जुड़ी एंट्री डिफ़ॉल्ट सेटिंग पर रीसेट हो जाती हैं: config_wifiSoftapResetChannelConfig, config_wifiSoftapResetHiddenConfig, config_wifiSoftapResetUserControlConfig, config_wifiSoftapResetAutoShutdownTimerConfig, config_wifiSoftapResetMaxClientSettingConfig. ध्यान दें कि ये डिफ़ॉल्ट रूप से true पर सेट होती हैं. इसका मतलब है कि वैल्यू रीसेट हो जाती हैं. अगर नए डिवाइस पर कॉन्फ़िगरेशन काम नहीं करता है, तो यह ज़रूरी है.
  • हार्डवेयर की सुविधाएं:
    • config_wifi_softap_acs_supported
    • config_wifi_softap_sae_supported
    • (13 से उपलब्ध) config_wifiSoftapOweTransitionSupported
    • (13 से उपलब्ध) config_wifiSoftapOweSupported
    • config_wifi_softap_ieee80211ac_supported
    • config_wifiSoftapIeee80211axSupported
    • (13 से उपलब्ध) config_wifiSoftapIeee80211beSupported
    • config_wifiSoftapMacAddressCustomizationSupported
    • config_wifiSoftapHeSuBeamformerSupported
    • config_wifiSoftapHeSuBeamformeeSupported
    • config_wifiSoftapHeMuBeamformerSupported
    • config_wifiSoftapHeTwtSupported
    • config_wifiSoftap24ghzSupported
    • config_wifiSoftap5ghzSupported
    • config_wifiSoftap6ghzSupported
    • config_wifiSoftap60ghzSupported
    • config_wifiSoftapAcsIncludeDfs

Validation

Android, हॉटस्पॉट की सुविधा की पुष्टि करने के लिए, यूनिट टेस्ट और Compatibility Test Suite (CTS) टेस्ट का एक सेट उपलब्ध कराता है. Vendor Test Suite (VTS) का इस्तेमाल करके, हॉटस्पॉट की सुविधा की जांच भी की जा सकती है.

यूनिट टेस्ट

इन टेस्ट का इस्तेमाल करके, हॉटस्पॉट पैकेज की पुष्टि करें.

  • सेवा की जांच:

    atest packages/modules/Wifi/service/tests/wifitests/
  • मैनेजर के टेस्ट:

    atest packages/modules/Wifi/framework/tests/

Compatibility Test Suite (CTS) टेस्ट

हॉटस्पॉट सुविधा की पुष्टि करने के लिए, सीटीएस टेस्ट का इस्तेमाल करें. सीटीएस को यह पता चल जाता है कि सुविधा कब चालू है. साथ ही, यह उससे जुड़े टेस्ट अपने-आप शामिल कर लेता है.

CTS टेस्ट ट्रिगर करने के लिए, यह कमांड चलाएं:

atest android.net.wifi.cts.WifiManagerTest

Vendor Test Suite (VTS)

अगर एचआईडीएल इंटरफ़ेस लागू किया गया है, तो यह कमांड चलाएं:

atest VtsHalWifiHostapdV1_2Target

अगर एआईडीएल इंटरफ़ेस लागू किया गया है, तो यह कमांड चलाएं:

atest VtsHalHostapdTargetTest