Wi-Fi STA/STA במקביל

אנדרואיד 12 מציגה במקביל Wi-Fi STA/STA, המאפשרת למכשירים להתחבר לשתי רשתות Wi-Fi במקביל. תכונה אופציונלית זו מאפשרת את הפונקציות הבאות.

  • עשה לפני הפסקה : המכשיר יוצר חיבור לרשת Wi-Fi חדשה לפני ניתוק החיבור הקיים. זה מביא למעברים חלקים יותר בעת מעבר בין רשתות Wi-Fi
  • חיבור מקומי בלבד וחיבור לאינטרנט במקביל : המכשיר מתחבר לרשת מקומית בלבד מבלי לשבש את החיבור הראשי של המכשיר המספק אינטרנט.
  • חיבור מוגבל ואינטרנט במקביל : המכשיר מתחבר לרשת מוגבלת (זמינה רק לאפליקציות מורשות מסוימות) מבלי לשבש את חיבור האינטרנט הראשי של המכשיר.
  • (אנדרואיד 13 ומעלה) מספר רשתות במקביל עם חיבור לאינטרנט : המכשיר מתחבר לשתי רשתות ששתיהן אינן מוגבלות וזמינות לכל האפליקציות, ומספקות קישוריות לאינטרנט.

דף זה מתאר את התנהגות המכשיר כאשר תכונה זו מופעלת ואת פרטי ההטמעה עבור יצרני וספקי מכשירים.

יישום

התקנים חייבים לתמוך בדברים הבאים כדי ליישם במקביל Wi-Fi STA/STA:

  • שבב ה-Wi-Fi או הקושחה חייבים לתמוך בשני חיבורי STA במקביל. הקושחה חייבת לתמוך בכל שילובי הערוצים והלהקה עבור שני החיבורים. כדי למנוע בעיות ביצועים, אנו ממליצים להשתמש בשבב Wi-Fi בעל יכולת 2x2+2x2 DBS.

  • ההתקן חייב לתמוך בממשקי ה-API הבאים ביישום AIDL או HIDL של IWifiChip .

    • IWifiChip.setMultiStaPrimaryConnection(String ifName)
    • IWifiChip.setMultiStaUseCase(MultiStaUseCase useCase)
  • שילוב ממשק ה-HAL Wi-Fi חייב להיות בעל שני ממשקי STA בו-זמניים הנחשפים באמצעות פורמט מפרט כגון [{STA} <= 2, ...] . למידע נוסף, ראה במקביליות Wi-Fi מרובה ממשקים .

אם תנאים מוקדמים אלה מתקיימים, יישם במקביל Wi-Fi STA/STA על ידי ביצוע הפעולות הבאות:

  1. אפשר פונקציה אחת או יותר בנפרד באמצעות שכבות-על של משאבי זמן ריצה (מושבת כברירת מחדל).

    • Make-before-break : config_wifiMultiStaNetworkSwitchingMakeBeforeBreakEnabled
    • במקביל לחיבור מקומי בלבד וחיבור לאינטרנט : config_wifiMultiStaLocalOnlyConcurrencyEnabled
    • במקביל מוגבל וחיבור לאינטרנט : config_wifiMultiStaRestrictedConcurrencyEnabled
    • רשתות מרובות במקביל עם חיבור לאינטרנט : config_wifiMultiStaMultiInternetConcurrencyEnabled
  2. אמת כל יישום כמתואר בסעיפים המתאימים להלן.

כדי לתמוך טוב יותר ב-Wi-Fi STA/STA במקביל, אנו ממליצים למסגרות ואפליקציות מותאמות אישית של OEM להשתמש בשיטת NetworkCallback#onCapabilitiesChanged() במקום WifiManager#getConnectionInfo() , שמחזירה WifiInfo רק עבור רשת בודדת והוצאה משימוש ב-Android 12 למידע נוסף, ראה ממשק API לבקשת רשת Wi-Fi עבור קישוריות עמית לעמית .

הפוך-לפני הפסקה

פונקציית ה-make-before-break מאפשרת למכשירים להתחבר לרשת Wi-Fi חדשה תוך שמירה על חיבור רשת ה-Wi-Fi הקיים, רק כאשר הוא מתחבר בהצלחה לרשת ה-Wi-Fi החדשה ויש לו גישה לאינטרנט.

מקרה השימוש של make-before-break מטפל בבעיות הבאות באנדרואיד 11 ומטה, שבהן המכשיר חייב להתנתק מרשת ה-Wi-Fi הקיימת לפני חיבור לרשת חדשה (break-before-make).

  • בעת התחברות לרשת חדשה, ייתכן שהמכשיר יגלה כי נשמרה לו סיסמת Wi-Fi שגויה או שלרשת החדשה אין גישה לאינטרנט. זה מאלץ את המכשיר לחזור לרשת הישנה, ​​מה שמוביל לפרק זמן משמעותי ללא קישוריות Wi-Fi.

  • הרשת הישנה מתנתקת בפתאומיות, מה שאומר שכל השקעים נסגרים. אפליקציות לרוב לא מגיבות טוב לאובדן פתאומי של קישוריות וזה עלול להוביל למשתמש חווה מספר שניות ללא קישוריות לאינטרנט עד שהחיבור החדש יתבסס במלואו.

  • רשת ברירת המחדל משתנה פעמיים, מרשת ה-Wi-Fi הישנה לסלולרית, ולאחר מכן מסלולר לרשת ה-Wi-Fi החדשה. זה גורם לאפליקציות להגיב פעמיים לשינויים ברשת. המכשיר חייב גם לבלות זמן קצר בשימוש בנתונים סלולריים.

זרימת ההכנה לפני הפסקה משמשת רק עבור מתגי רשת Wi-Fi אוטומטיים שיזמו מערכת ההפעלה. מתגי רשת ביוזמת המשתמש משתמשים בזרימת הפסקה לפני ייצור מדור קודם, כאשר הרשת הקודמת מנותקת לחלוטין לפני חיבור הרשת החדשה. במקרים מסוימים, זרימת ההפסקה לפני ייצור משמשת אפילו במתגים אוטומטיים שיזמו מערכת ההפעלה, למשל, בעת מעבר בין שתי רשתות המוגדרות שתיהן להשתמש בכתובת ה-MAC של היצרן.

אפליקציות יכולות לבדוק אם מקרה השימוש הזה נתמך במכשיר באמצעות ה- WifiManager#isMakeBeforeBreakWifiSwitchingSupported() API.

אימות הפוך-לפני הפסקה

כדי לאמת את ההטמעה שלך, הפעל מתג רשת Wi-Fi אוטומטי (על ידי הבטחת רשת עם עוצמת אות חזקה יותר מהרשת המחוברת כרגע) וודא שהמכשיר שומר על החיבור הקיים תוך כדי התחברות לרשת החדשה. כדי להציג את המצב של שני ממשקי ה-Wi-Fi ולוודא ששניהם מחוברים, השתמש בפקודה הבאה.

adb shell wpa_cli -i wlan0 status ; echo ; adb shell wpa_cli -i wlan1 status

אם לרשת החדשה אין קישוריות, המכשיר מנסה להתחבר לרשת, תוך שמירה על החיבור עם הרשת הקיימת, ומבטל את הניסיון כאשר הוא מזהה שלרשת החדשה אין אינטרנט. לאחר מכן, המכשיר ממשיך להשתמש בחיבור הקיים כרשת ה-Wi-Fi הראשית.

במקביל לחיבור מקומי בלבד וחיבור לאינטרנט

פונקציית חיבור מקומי בלבד וחיבור לאינטרנט במקביל מאפשרת למכשירים להתחבר לחיבור מקומי בלבד, כגון חיבור למכשיר IoT, במקביל לרשת הראשית המספקת אינטרנט. פונקציה זו משפרת את חווית המשתמש בעת חיבור ישיר למכשירי IoT, כגון מצלמות, דבר המתאפשר באמצעות WifiNetworkSpecifier API שנוסף ב-Android 10.

באנדרואיד 11 ומטה, מכשירים מתנתקים מרשת ה-Wi-Fi הראשית בעת התחברות למכשיר IoT, וכתוצאה מכך אובדן קישוריות לאינטרנט (אלא אם למכשיר יש סוג תחבורה אחר זמין, כגון נתונים סלולריים).

אפליקציות יכולות לבדוק אם פונקציה זו נתמכת במכשיר באמצעות ה- WifiManager#isStaConcurrencyForLocalOnlyConnectionsSupported() API.

למידע נוסף על שינויים בפונקציית החיבור המקומי בלבד והאינטרנט במקביל ב-Android 12, ראה ממשק API של בקשת רשת Wi-Fi עבור קישוריות עמית לעמית .

אימות חיבור מקומי בלבד וחיבור לאינטרנט

כדי לאמת פונקציה זו, השתמש במבחני CTS ו-ACTS הבאים:

  • CTS: MultiStaConcurrencyWifiNetworkSpecifierTest
  • ACTS: WifiStaConcurrencyNetworkRequestTest

במקביל מוגבל וחיבור לאינטרנט

הפונקציה מוגבלת וחיבור לאינטרנט במקביל מאפשרת למכשיר להתחבר בו-זמנית לרשת Wi-Fi ראשית עבור המשתמש ולרשת Wi-Fi מוגבלת שזמינה רק לאפליקציות נבחרות.

אפליקציות יכולות לבדוק אם פונקציה זו נתמכת במכשיר באמצעות ה- WifiManager#isStaConcurrencyForRestrictedConnectionsSupported() API.

כדי לאפשר למכשיר להתחבר לרשתות Wi-Fi משניות מוגבלות, בצע את השלבים הבאים:

  1. הוסף הצעות לרשת Wi-Fi כאשר setOemPaid או setOemPrivate מוגדרים כ-true.

  2. ב- ConnectivityManager , הגש בקשת NetworkRequest עם היכולות המתאימות:

כאשר המכשיר מזהה תוצאות סריקה עם רשת התואמת להצעה של OEM בתשלום או OEM פרטי, הוא מתחבר אליה באופן אוטומטי כרשת משנית.

אימות במקביל מוגבל וחיבור לאינטרנט

כדי לאמת פונקציה זו, השתמש במבחני CTS ו-ACTS הבאים:

  • CTS: MultiStaConcurrencyRestrictedWifiNetworkSuggestionTest
  • ACTS: WifiStaConcurrencyNetworkRequestTest

מספר רשתות במקביל עם חיבור לאינטרנט

זמין עבור אנדרואיד 13 ומעלה, תכונת רשתות מרובות במקביל עם חיבור לאינטרנט מאפשרת למכשיר להתחבר בו-זמנית לשתי רשתות (APs) ששתיהן אינן מוגבלות (לכל האפליקציות יש גישה) ומספקות גישה לאינטרנט.

אפליקציות יכולות לבדוק אם תכונה זו נתמכת במכשיר באמצעות שיטת WifiManager#isStaConcurrencyForMultiInternetSupported() ‎.

אם התכונה נתמכת, אפליקציות מורשות יכולות להפעיל את התכונה באמצעות שיטת WifiManager#setStaConcurrencyForMultiInternetMode(int mode) . לתכונה יש את המצבים הבאים:

כדי לשאול את מצב התכונה הפעיל כעת, השתמש בשיטה WifiManager#getStaConcurrencyForMultiInternetMode() ‎.

כאשר התכונה מופעלת, השתמש בשלבים הבאים כדי לבקש רשת Wi-Fi נוספת המספקת אינטרנט.

  1. צור מפרט רשת Wi-Fi באמצעות WifiNetworkSpecifier.Builder . בחר פס עבור המפרט באמצעות שיטת setBand() . אל תציין את SSID או BSSID מכיוון שהרשת הנוספת עבור הרצועה שצוינה נבחרה על ידי מסגרת ה-Wi-Fi.

  2. באמצעות ConnectivityManager , צור NetworkRequest עם יכולת NET_CAPABILITY_INTERNET .

  3. הוסף את המפרט לבקשת הרשת יחד עם מופע NetworkCallback כדי לעקוב אחר מצב הבקשה, והנפק את הבקשה ל- ConnectivityManager . אם רשת שמורה עם הרצועה המבוקשת זמינה בתוצאת הסריקה, והחיבור לרשת הצליח, NetworkCallback.onAvailable() מופעל על אובייקט ה-callback.

אימות של מספר רשתות במקביל עם חיבור לאינטרנט

כדי לאמת פונקציה זו, השתמש במבחן CTS הבא:

  • CTS: MultiStaConcurrencyMultiInternetWifiNetworkTest

הנחיות של שבב Wi-Fi של הספק

עבור ספקי שבבי Wi-Fi, השתמש בהנחיות הבאות כדי לתמוך במקביל ב-Wi-Fi STA/STA.

שבב ה-Wi-Fi חייב לתמוך בחיבורי STA במקביל. פירוש הדבר שהוא תומך בדברים הבאים:

  • לכל ממשק STA יש MAC ייחודי שניתן לתכנות על ידי המסגרת.
  • ניתן ליצור ולהשמיד את ממשק ה-STA המשני באופן דינמי.
  • כל STA יכול להיות מחובר ל-SSID אחר (בתוך אותה פס או פס אחר).
  • כל STA יכול להיות מחובר לאותו SSID (בתוך אותה פס או פס אחר). אסור לחבר את שני ה-STA לאותו BSSID.

תכונות קריטיות חייבות לפעול על בסיס ממשק והן חייבות להיות זמינות בממשק הראשי. להלן רשימה של תכונות קריטיות אלה:

  • יש לתמוך בנדידה לפחות בממשק הראשי (מוגדר באמצעות IWifiChip.setMultiStaPrimaryConnection() ). אם נדידה נתמכת בשני הממשקים, החלטות על חיבור אחד לא חייבות להתנגש עם החיבור השני במקביל. לדוגמה, לממשק אחד אסור לנדוד ל-BSSID של החיבור השני.

  • יש לתמוך ב-APF (והורדות אחרות כגון ARP ו-NS) לפחות בממשק הראשי (מוגדר באמצעות IWifiChip.setMultiStaPrimaryConnection() ).

  • נתונים סטטיסטיים של שכבת קישור חייבים לפעול על בסיס ממשק.

להלן יישומי שבב Wi-Fi מומלצים עבור תרחישי מקבילים שונים:

  • שבב ה-Wi-Fi חייב לאפשר למסגרת לקרוא ל- IWifiChip.setMultiStaUseCase() עם אחד מהקבועים הבאים כדי לציין את הפונקציה הנוכחית:

    • DUAL_STA_TRANSIENT_PREFER_PRIMARY : מציין את הפונקציה Make-Before-Break. יש לתעדף את איכות החיבור הראשי על פני החיבור המשני.
    • DUAL_STA_NON_TRANSIENT_UNBIASED : מציין את החיבור המקומי בלבד והאינטרנט בו-זמנית או את פונקציית החיבור המוגבל והאינטרנט בו-זמנית . יש לתעדף את האיכות של שני החיבורים באופן שווה.
  • מכיוון ש-STAs במקביל יכולים להוביל למצבי פעולה של MCC, SCC ו-DBS, יישום הספק חייב לבחור את תצורת הרדיו הטובה ביותר כאשר המסגרת קוראת IWifiChip.setMultiStaUseCase() כדי לציין את הפונקציה. להלן הנחיות כלליות:

    • 2x2+2x2 DBS עדיף אם זמין.
    • הימנע מ-1x1+1x1 DBS אם אפשר בגלל ההשפעה המוגזמת על איכות החיבור. במקום זאת, העדיפו את 'מרכז הלקוחות שלי'.
    • מחזור העבודה של MCC חייב להיות ניתן להגדרה על ידי מנהל ההתקן או הקושחה עבור הפונקציות השונות. המסגרת לא מגדירה את מחזור העבודה של MCC ישירות, אלא שוללת מידע זה באמצעות StaLinkLayerIfaceStats.timeSliceDutyCycleInPercent .
    • אם אתה משתמש ב-MCC, אנו ממליצים על מחזורי העבודה הבאים בין החיבורים הראשיים והמשניים:

      • DUAL_STA_TRANSIENT_PREFER_PRIMARY : 70% ראשוני, 30% משני.
      • DUAL_STA_NON_TRANSIENT_UNBIASED : 50% ראשוני, 50% משני.