נקודת Wi-Fi לשיתוף אינטרנט (Soft AP)

מערכת Android תומכת בנקודות Wi-Fi לשיתוף אינטרנט (Soft AP), כולל שיתוף אינטרנט דרך נקודת Wi-Fi לשיתוף אינטרנט ונקודות Wi-Fi לשיתוף אינטרנט מקומי בלבד.

התכונה soft AP מאפשרת להגדיר את האפשרויות הבאות:

  • SSID ו-BSSID
  • סוג האבטחה (כולל WPA3)
  • SSID מוסתר
  • התדר והערוץ התפעוליים (כולל ACS)
  • המספר המקסימלי של לקוחות מורשים
  • הערך של הזמן הקצוב לתפוגה של כיבוי אוטומטי
  • רשימת היתרים ורשימת החסימות כדי לאפשר למשתמשים לשלוט במכשירים המשויכים
  • רמת הרנדומיזציה של כתובת ה-MAC של BSSID של נקודת הגישה
  • 802.11ax ו-802.11be

הזמינות של אמצעי הבקרה האלה תלויה ביכולות של המכשיר. ב-Android 11 נוספו ממשקי API שמאפשרים ליהנות מהיכולות האלה. יצרני המכשירים יכולים גם לציין את יכולות המכשיר הבסיסיות באמצעות שכבות-על.

חשוב לדעת שחלק מממשקי ה-API הם ממשקי API של מערכת, והם מוגבלים באמצעות הרשאות כך שרק לאפליקציית ההגדרות של המערכת תהיה גישה אליהם.

פיתוח אפליקציות באמצעות ממשקי API של נקודות גישה

אפליקציית ההגדרות של AOSP מספקת הטמעה שמוגדרת כברירת מחדל של נקודה לשיתוף אינטרנט (hotspot) מקושרת ב-Wi-Fi, אבל היא לא משתמשת בכל ממשקי ה-API להגדרת Soft AP.

כדי לתמוך בשיתוף אינטרנט דרך נקודה לשיתוף אינטרנט או נקודה מקומית בלבד לשיתוף אינטרנט, האפליקציה צריכה לבצע את הפונקציות הבאות:

  1. כדי לקבל את יכולות המכשיר, צריך לרשום קריאה חוזרת (callback) באמצעות WifiManager#registerSoftApCallback לנקודה לשיתוף אינטרנט שמקושרת למכשיר אחר או באמצעות WifiManager#registerLocalOnlyHotspotSoftApCallback לנקודה לשיתוף אינטרנט מקומית בלבד.

    פונקציית הקריאה החוזרת SoftApCallback מספקת את השיטות הבאות:

    • SoftApCallback#onCapabilityChanged: מידע על יכולות המכשיר, כולל המספר המקסימלי של לקוחות נתמכים והאם יש תמיכה ב-SAE או ב-ACS.
    • SoftApCallback#onInfoChanged: מידע על נקודת ה-Soft AP שפועלת (תקף רק אחרי שהיא מופעלת), כולל מידע על התדר והתדרים.
    • SoftApCallback#onConnectedClientsChanged: הצגת רשימה של לקוחות מחוברים. אפשר לקבל את כתובת ה-MAC של כל לקוח. כדי לקבל את פרטי ה-IP, משתמשים ב-callback‏ TetheringEventCallback#onClientsChanged.
    • SoftApCallback#onStateChanged: קבלת עדכונים על מצב ה-Soft AP בזמן שהוא מופעל ומושבת.
    • SoftApCallback#onBlockedClientConnecting: מידע על הלקוח החסום, עם אחת מהסיבות הבאות לחסימה: המכשיר הגיע למספר המקסימלי של לקוחות שהוא יכול לתמוך בהם, או שהלקוח לא מורשה באופן מפורש להתחבר.

לנקודת אינטרנט שמשותפת באמצעות שיתוף אינטרנט בין מכשירים:

  1. כדי להגדיר את ההגדרות של נקודת הגישה הווירטואלית לצורך קישור, צריך לקרוא ל-method‏ WifiManager#setSoftApConfiguration ולספק מופע של SoftApConfiguration. יוצרים את SoftApConfiguration באמצעות הכיתה SoftApConfiguration.Builder.
  2. כדי להתחיל את הקישור, קוראים לשיטת הקישור ב-TetheringManager#startTethering.

לנקודת אינטרנט (hotspot) מקומית בלבד:

  1. כדי להפעיל את הנקודה לשיתוף אינטרנט מקומי בלבד עם הגדרה ספציפית של AP רך, צריך להפעיל את השיטה WifiManager#startLocalOnlyHotspot.

הטמעת רשימות היתרים ורשימות חסומים

בדרך כלל, ספקי הסלולר דורשים לספק למשתמש אמצעי בקרה על המכשירים שמותר לשייך לנקודת ה-AP הווירטואלית. יש כמה מנגנונים שאפשר להשתמש בהם כדי לעשות זאת:

  • הגבלת המספר המקסימלי של מכשירים שיכולים לשייך ל-AP הווירטואלי באמצעות SoftApConfiguration.Builder#setMaxNumberOfClients. חשוב לציין מספר נמוך ממספר הלקוחות המקסימלי שנתמך במכשיר. אפשר לקבל את המספר המקסימלי מ-SoftApCapability#getMaxSupportedClients.
  • שליטה דינמית באמצעות רשימות של אישורים וחסימות:

    • הגדרת ברירת המחדל של Soft AP מאפשרת לכל המכשירים להתאגד ל-Soft AP, מלבד מכשירים שכתובות ה-MAC שלהם נוספו ל-SoftApConfiguration.Builder#setBlockedClientList.
    • אם ה-Soft AP מוגדר עם SoftApConfiguration.Builder#setClientControlByUserEnabled(true), המערכת משתמשת ברשימת ההיתרים.

      • כל המכשירים שכתובות ה-MAC שלהם נמצאות ב-SoftApConfiguration.Builder#setBlockedClientList חסומים משיוך.
      • כל המכשירים שכתובות ה-MAC שלהם נמצאות ב-SoftApConfiguration.Builder#setAllowedClientList מורשים לשייך.
      • כל שאר המכשירים (כלומר, מכשירים שמזהי ה-MAC שלהם לא נמצאים ברשימת ההיתרים או ברשימת החסימה) חסומים מפני שיוך, אבל מתבצעת קריאה ל-SoftApCallback#onBlockedClientConnecting, שמאפשרת לאפליקציה השולטת (כלומר, אפליקציית ההגדרות) לבצע פעולה, למשל לבקש מהמשתמש אישור ואז להוסיף את המכשיר לרשימת ההיתרים או לרשימת החסימה, בהתאם להתנהגות המשתמש.

    חשוב לדעת: אפשר להשתמש בפונקציות של רשימת ההיתרים במכשירים רק אם הם תומכים בהן. אפשר לבדוק את תמיכת המכשיר באמצעות SoftApCapability#areFeaturesSupported(SOFTAP_FEATURE_CLIENT_FORCE_DISCONNECT).

הטמעה

כדי לתמוך בקישור דרך נקודה לשיתוף אינטרנט או לתמוך בנקודה לשיתוף אינטרנט מקומית בלבד, יצרני המכשירים חייבים לספק תמיכה באפליקציית ההגדרות, במסגרת וב-HAL/קושחה:

התאמה אישית

כדי להתאים אישית את ההטמעה, יצרני המכשירים צריכים להגדיר את שכבות-העל ואת הגדרות הספקים הבאות, שמפורטות במסמך 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).
  • (זמין מ-13) config_wifiSoftapPassphraseAsciiEncodableCheck: האם ביטוי הסיסמה של נקודת הגישה הווירטואלית צריך להיות ניתן לקידוד ASCII.
  • config_wifiSoftapAutoUpgradeToBridgedConfigWhenSupported: האם לשדרג באופן אוטומטי את הגדרת התדרים לשני תדרים במהלך שחזור ההגדרות בענן כשיש תמיכה במכשיר חדש.
  • (זמין מגרסה 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
    • (התכונה זמינה מגיל 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

אימות

ב-Android יש קבוצה של בדיקות יחידה ובדיקות של חבילה לבדיקות תאימות (CTS) כדי לאמת את התכונה 'נקודת אינטרנט'. אפשר לבדוק את תכונת נקודת ה-Wi-Fi גם באמצעות Vendor Test Suite‏ (VTS).

בדיקות יחידה

מאמתים את חבילת הנקודה לשיתוף אינטרנט באמצעות הבדיקות הבאות.

  • בדיקות שירות:

    atest packages/modules/Wifi/service/tests/wifitests/
  • בדיקות של חשבון ניהול:

    atest packages/modules/Wifi/framework/tests/

בדיקות של חבילה לבדיקות תאימות (CTS)

משתמשים בבדיקות CTS כדי לאמת את התכונה של נקודת ה-Wi-Fi לשיתוף אינטרנט. CTS מזהה מתי התכונה מופעלת וכוללת באופן אוטומטי את הבדיקות המשויכות.

כדי להפעיל את בדיקות CTS, מריצים את הפקודה:

atest android.net.wifi.cts.WifiManagerTest

חבילה לבדיקת ספקים (VTS)

אם ממשק HIDL מוטמע, מריצים את הפקודה:

atest VtsHalWifiHostapdV1_2Target

אם ממשק AIDL מוטמע, מריצים את הפקודה:

atest VtsHalHostapdTargetTest