ওয়াই-ফাই হটস্পট (সফ্ট AP)

ওয়াই-ফাই হটস্পট (সফ্ট AP) সহ টিথারিংয়ের জন্য Android সহায়তা প্রদান করে। এটি ওয়াই-ফাই হটস্পট ও শুধুমাত্র লোকাল ওয়াই-ফাই হটস্পটের মাধ্যমে করা হয়।

সফ্ট AP ফিচারের মাধ্যমে নিম্নলিখিত বিষয়গুলি কনফিগার করা যায়:

  • SSID ও BSSID
  • নিরাপত্তার ধরন (WPA3 সহ)
  • লুকানো SSID
  • অপারেটিং ব্যান্ড ও চ্যানেল (ACS সহ)
  • অনুমোদিত ক্লায়েন্টের সর্বাধিক সংখ্যা
  • অটোমেটিক বন্ধ হওয়ার টাইমআউট ভ্যালু
  • অ্যাসোসিয়েট করা ডিভাইস ব্যবহারকারীর নিয়ন্ত্রণে রাখতে সাদাতালিকা ও ব্লক তালিকা
  • AP BSSID-এর জন্য MAC র‍্যান্ডমাইজেশনের লেভেল
  • 802.11ax এবং 802.11be

ডিভাইসের কার্যকারিতা এইসব কন্ট্রোলের উপলভ্যতা নির্ধারণ করে। Android 11 এইসব ক্ষমতা পাওয়ার জন্য API নিয়ে এসেছে। এছাড়াও, ডিভাইস প্রস্তুতকারক ওভারলে ব্যবহার করে বেস ডিভাইসের ক্ষমতা নির্দিষ্ট করতে পারেন।

হটস্পট API-এর সাহায্যে অ্যাপ ডেভেলপ করুন

টethered ওয়াই-ফাই হটস্পটের একটি ডিফল্ট প্রয়োগ Android ওপেন সোর্স প্রোজেক্ট (AOSP) সেটিংস অ্যাপের মাধ্যমে প্রদান করা হয়, তবে এটি Soft AP কনফিগারেশনের জন্য সব API ব্যবহার করে না।

হটস্পট বা শুধুমাত্র লোকাল হটস্পটের মাধ্যমে টিথারিংয়ের সুবিধা দিতে, অ্যাপকে অবশ্যই নিম্নলিখিত ফাংশনগুলি করতে হবে:

  1. টethered হটস্পটের জন্য WifiManager#registerSoftApCallback অথবা শুধুমাত্র লোকাল হটস্পটের জন্য WifiManager#registerLocalOnlyHotspotSoftApCallback ব্যবহার করে ডিভাইসের ক্ষমতা পাওয়ার জন্য কলব্যাক রেজিস্টার করুন।

    SoftApCallback কলব্যাক নিম্নলিখিত পদ্ধতি প্রদান করে:

    • SoftApCallback#onCapabilityChanged: ডিভাইসের ক্ষমতা সম্পর্কে তথ্য প্রদান করে, এর মধ্যে সর্বাধিক কাজ করে এমন ক্লায়েন্টের সংখ্যা এবং SAE বা ACS কাজ করে কিনা তা অন্তর্ভুক্ত।
    • SoftApCallback#onInfoChanged: চলমান Soft AP (শুরু হওয়ার পরে শুধুমাত্র একবারই বৈধ ) সম্পর্কে তথ্য প্রদান করে, যার মধ্যে ব্যান্ড ও ফ্রিকোয়েন্সি সংক্রান্ত তথ্য অন্তর্ভুক্ত।
    • SoftApCallback#onConnectedClientsChanged: কানেক্ট করা ক্লায়েন্টদের তালিকা প্রদান করে। প্রতিটি ক্লায়েন্টের জন্য, আপনি MAC অ্যাড্রেস পাবেন। IP সংক্রান্ত তথ্য পেতে, TetheringEventCallback#onClientsChanged কলব্যাক ব্যবহার করুন।
    • SoftApCallback#onStateChanged: সফ্ট AP চালু ও বন্ধ করা হলে সেটির স্ট্যাটাস সম্পর্কে আপডেট দেয়।
    • SoftApCallback#onBlockedClientConnecting: ব্লক করা ক্লায়েন্ট সম্পর্কে তথ্য প্রদান করে এবং ব্লক করার নিম্নলিখিত কারণগুলির মধ্যে একটি উল্লেখ করে: ডিভাইসটি সর্বাধিক সংখ্যক ক্লায়েন্টে পৌঁছে গেছে যেটি এটি সাপোর্ট করতে পারে অথবা ক্লায়েন্টটি কানেক্ট করার জন্য স্পষ্টভাবে অনুমোদিত নয়।
    • SoftApCallback#onClientsDisconnected: ডিসকানেক্ট করা ক্লায়েন্টের তালিকা প্রদান করে। প্রতিটি ক্লায়েন্টের জন্য, আপনি ডিসকানেক্ট করার কারণ জানতে পারবেন।

টিথার করা হটস্পটের জন্য:

  1. WifiManager#setSoftApConfiguration মেথড কল করে এবং SoftApConfiguration ইনস্ট্যান্স প্রদান করে টিথারিংয়ের জন্য সফ্ট AP কনফিগারেশন কনফিগার করুন। Construct SoftApConfiguration ব্যবহার করে SoftApConfiguration.Builder ক্লাস।
  2. TetheringManager#startTethering-এ টিথারিং পদ্ধতি কল করে টিথারিং শুরু করুন।

শুধুমাত্র স্থানীয় হটস্পটের জন্য:

  1. নির্দিষ্ট সফ্ট AP কনফিগারেশন সহ শুধুমাত্র লোকাল হটস্পট চালু করতে, WifiManager#startLocalOnlyHotspot মেথড কল করুন।

অনুমতি ও ব্লক করার তালিকা প্রয়োগ করা

সাধারণত পরিষেবা প্রদানকারীর প্রয়োজনীয়তা হল ব্যবহারকারীকে সেইসব ডিভাইসের কন্ট্রোল প্রদান করা যেগুলি Soft AP-এর সাথে যুক্ত করার অনুমতি দেওয়া হয়েছে। এটি করার জন্য বিভিন্ন পদ্ধতি আছে:

  • SoftApConfiguration.Builder#setMaxNumberOfClients ব্যবহার করে সফট AP-এর সাথে কানেক্ট করতে পারে এমন ডিভাইসের সর্বাধিক সংখ্যা সীমিত করুন। ডিভাইসে কাজ করে এমন ক্লায়েন্টের সর্বাধিক সংখ্যার চেয়ে কম সংখ্যা উল্লেখ করতে ভুলবেন না। আপনি SoftApCapability#getMaxSupportedClients থেকে সর্বাধিক নম্বর পেতে পারেন।
  • অনুমতি ও ব্লক তালিকা ব্যবহার করে ডায়নামিক কন্ট্রোল প্রদান করা:

    • সফ্ট এপি-র ডিফল্ট কনফিগারেশন সব ডিভাইসকে সফ্ট এপি-র সাথে যুক্ত হতে দেয়, তবে যেসব ডিভাইসের MAC অ্যাড্রেস SoftApConfiguration.Builder#setBlockedClientList-এ যোগ করা আছে, সেগুলি যুক্ত হতে পারে না।
    • Soft AP যদি SoftApConfiguration.Builder#setClientControlByUserEnabled(true)-এর সাথে কনফিগার করা থাকে, তাহলে অনুমোদিত তালিকা ব্যবহার করা হয়।
      • যেসব ডিভাইসের MAC অ্যাড্রেস SoftApConfiguration.Builder#setBlockedClientList-এ আছে, সেগুলি অ্যাসোসিয়েশন থেকে ব্লক করা আছে।
      • SoftApConfiguration.Builder#setAllowedClientList-এ MAC অ্যাড্রেস আছে এমন সব ডিভাইসকে অ্যাসোসিয়েশনের অনুমতি দেওয়া হয়।
      • অন্যান্য সব ডিভাইস (অর্থাৎ, যেসব ডিভাইসের MAC অ্যাড্রেস অনুমতি বা ব্লক তালিকায় নেই) অ্যাসোসিয়েশন থেকে ব্লক করা হয়, কিন্তু SoftApCallback#onBlockedClientConnecting-কে কল করা হয়, এর ফলে কন্ট্রোল করা অ্যাপ (অর্থাৎ, সেটিংস অ্যাপ) কোনও অ্যাকশন নিতে পারে, যেমন, ব্যবহারকারীর কাছে কনফার্মেশন চাওয়া এবং তারপরে ব্যবহারকারীর আচরণ অনুযায়ী ডিভাইসটিকে অনুমতি তালিকায় বা ব্লক তালিকায় যোগ করা।

    মনে রাখবেন, ডিভাইসে অনুমতিপ্রাপ্ত তালিকা কাজ করবে শুধুমাত্র যদি সেটি ডিভাইসে সাপোর্ট করে। SoftApCapability#areFeaturesSupported(SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT) ব্যবহার করে ডিভাইস কাজ করে কিনা তা যাচাই করতে পারবেন।

প্রয়োগ

হটস্পটের মাধ্যমে টিথারিং বা শুধুমাত্র লোকাল হটস্পট কাজ করার জন্য, ডিভাইস প্রস্তুতকারী সংস্থাকে অবশ্যই একটি সেটিংস অ্যাপ, ফ্রেমওয়ার্ক, এবং HAL/ফার্মওয়্যার সাপোর্ট দিতে হবে:

  • সেটিংস অ্যাপ: Android ওপেন সোর্স প্রোজেক্ট (AOSP) সেটিংস অ্যাপ SSID ও নিরাপত্তা সংক্রান্ত ক্রেডেনশিয়াল সহ টিথারিং হটস্পট কনফিগার করার জন্য একটি বেসলাইন প্রদান করে। এই কোডটি যেমন আছে তেমন ব্যবহার করা যেতে পারে অথবা হটস্পট API-এর মাধ্যমে অ্যাপ ডেভেলপ করা লিঙ্কে বর্ণিত অতিরিক্ত ক্ষমতা প্রদান করার জন্য এটি পরিবর্তন করা যেতে পারে।

  • ফ্রেমওয়ার্ক: AOSP ফ্রেমওয়ার্ক কোড হটস্পট API-এর মাধ্যমে অ্যাপ ডেভেলপ করা নিবন্ধে বর্ণিত সমস্ত কার্যকারিতা সমর্থন করে।

  • হটস্পটের জন্য HAL/ফার্মওয়্যার: HIDL IHostapd.hal ভার্সন 1.2 বা তার পরের যেকোনও ভার্সন অথবা AIDL 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: সফ্ট AP পাসফ্রেজ ASCII এনকোড করার প্রয়োজন আছে কিনা।
  • config_wifiSoftapAutoUpgradeToBridgedConfigWhenSupported: নতুন ডিভাইস কাজ করলে ক্লাউড কনফিগারেশন রিস্টোর করার সময় ব্যান্ড সেটিংস কনফিগারেশন অটোমেটিক ডুয়াল ব্যান্ডে আপগ্রেড করা হবে কিনা।
  • (Android 13 থেকে উপলভ্য) config_wifiSoftapAutoAppendLowerBandsToBandConfigurationEnabled: সহাবস্থান হ্যান্ডলিং এড়ানোর জন্য ফ্রেমওয়ার্ক অটোমেটিক ব্যান্ড কনফিগারেশনে লোয়ার ব্যান্ড যোগ করে কিনা।
  • config_wifiSoftApDynamicCountryCodeUpdateSupported: ডিভাইসে AP মোডে ডাইনামিক কান্ট্রি কোড আপডেট কাজ করে কিনা
  • চ্যানেল সহায়তা: 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
    • (Android 13 থেকে উপলভ্য) config_wifiSoftapOweTransitionSupported
    • (Android 13 থেকে উপলভ্য) config_wifiSoftapOweSupported
    • config_wifi_softap_ieee80211ac_supported
    • config_wifiSoftapIeee80211axSupported
    • (Android 13 থেকে উপলভ্য) config_wifiSoftapIeee80211beSupported
    • config_wifiSoftapMacAddressCustomizationSupported
    • config_wifiSoftapHeSuBeamformerSupported
    • config_wifiSoftapHeSuBeamformeeSupported
    • config_wifiSoftapHeMuBeamformerSupported
    • config_wifiSoftapHeTwtSupported
    • config_wifiSoftap24ghzSupported
    • config_wifiSoftap5ghzSupported
    • config_wifiSoftap6ghzSupported
    • config_wifiSoftap60ghzSupported
    • config_wifiSoftapAcsIncludeDfs

যাচাইকরণ

হটস্পট ফিচার যাচাই করার জন্য Android ইউনিট টেস্ট ও কম্প্যাটিবিলিটি টেস্ট স্যুট (CTS) টেস্টের একটি সেট প্রদান করে। এছাড়াও, ভেন্ডর টেস্ট স্যুট (VTS) ব্যবহার করে হটস্পট ফিচার পরীক্ষা করা যেতে পারে।

ইউনিট টেস্ট

নিম্নলিখিত পরীক্ষা ব্যবহার করে হটস্পট প্যাকেজ যাচাই করুন।

  • পরিষেবা টেস্ট:

    atest packages/modules/Wifi/service/tests/wifitests/
  • ম্যানেজার টেস্ট:

    atest packages/modules/Wifi/framework/tests/

কম্প্যাটিবিলিটি টেস্ট স্যুট (CTS) টেস্ট

হটস্পট ফিচার যাচাই করতে CTS টেস্ট ব্যবহার করুন। ফিচারটি চালু করা হলে CTS তা শনাক্ত করে এবং অটোমেটিক সংশ্লিষ্ট টেস্ট অন্তর্ভুক্ত করে।

CTS টেস্ট ট্রিগার করতে, রান করুন:

atest android.net.wifi.cts.WifiManagerTest

ভেন্ডর টেস্ট স্যুট (VTS)

HIDL ইন্টারফেস প্রয়োগ করা হলে, এটি চালান:

atest VtsHalWifiHostapdV1_2Target

AIDL ইন্টারফেস প্রয়োগ করা হলে, এগুলি রান করান:

atest VtsHalHostapdTargetTest