Wi-Fi Aware

התכונה Wi-Fi Aware שנוספה ב-Android 8.0 מאפשרת למכשירים נתמכים לגלות, להתחבר ולשדר זה לזה ישירות באמצעות פרוטוקול Wi-Fi Aware, בלי גישה לאינטרנט או לרשת הסלולרית (התכונה נוספה ב-Android 9). התכונה הזו, שמבוססת על המפרט של Wi-Fi Aware (גרסאות 2.0, 3.0, 3.1 ו-4.0) של Wi-Fi Alliance (WFA), מאפשרת לשתף בקלות נתונים עם תפוקה גבוהה בין אפליקציות ומכשירים מהימנים שלא מחוברים לרשת.

דוגמאות ומקור

כדי להשתמש בתכונה הזו, יצרני המכשירים צריכים להטמיע את HAL של Wi-Fi Vendor. ב-Android מגרסה 14 ואילך, ממשק ה-HAL של הספק מוגדר באמצעות AIDL. בגרסה 13 של Android ובגרסאות קודמות, ממשק ה-HAL של הספק מוגדר באמצעות HIDL.

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

  • AIDL: ‏ hardware/interfaces/wifi/aidl
  • HIDL: hardware/interfaces/wifi/1.2 ואילך

אפשר לעיין ב-HAL הקודם של Wi-Fi כדי לראות איך הוא קשור לממשקי AIDL ו-HIDL: hardware/libhardware_legacy/+/android16-release/include/hardware_legacy/wifi_nan.h.

הטמעה

יצרני המכשירים צריכים לספק תמיכה גם ב-framework וגם ב-HAL/קושחת:

  • מסגרת:
    • קוד AOSP
    • הפעלת Aware: נדרש גם דגל תכונה וגם דגל build
  • תמיכה ב-HAL של Wi-Fi Aware‏ (NAN) (הכוללת תמיכה בקושחה)

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

  • ב-BoardConfig.mk או ב-BoardConfig-common.mk שנמצאים ב-device/<oem>/<device>, מוסיפים את הדגל הבא:

    WIFI_HIDL_FEATURE_AWARE := true
    
  • בקובץ device.mk שנמצא ב-device/<oem>/<device>, משנים את משתנה הסביבה PRODUCT_COPY_FILES כך שיכלול תמיכה בתכונה Wi-Fi Aware:

    PRODUCT_COPY_FILES +=
    frameworks/native/data/etc/android.hardware.wifi.aware.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.aware.xml
    

Wi-Fi Aware כולל מדידת מרחק למכשירים אחרים באמצעות פרוטוקול IEEE 802.11mc, שנקרא גם זמן נסיעה הלוך ושוב (RTT). התכונה המשנית הזו של Wi-Fi Aware תלויה בתמיכה של המכשיר בתכונה Wi-Fi RTT, כלומר, המכשיר צריך לתמוך גם ב-Wi-Fi Aware וגם ב-Wi-Fi RTT. למידע נוסף, ראו זמן נסיעות משוער (RTT) ב-Wi-Fi.

אחרת, כל מה שנדרש לתכונה הזו נכלל ב-AOSP.

המערכת תתעלם מהדגל WIFI_HIDL_FEATURE_AWARE אם צוין הדגל WIFI_HAL_INTERFACE_COMBINATIONS. מידע נוסף זמין במאמר ביצועים בו-זמניים בממשקים מרובים של Wi-Fi.

רנדומיזציה של כתובות MAC

ב-Android נדרש שה-MAC address של תהליך הגילוי של Wi-Fi Aware‏ (NMI) וממשקי הנתונים (NDPs) יהיה אקראי ולא זהה לכתובת ה-MAC האמיתית של המכשיר. כתובות ה-MAC חייבות להיות:

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

השהיה והמשך

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

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

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

כדי לתמוך ביכולת להשעות ולהמשיך סשנים של חיפוש, יצרני המכשירים חייבים לספק תמיכה ב-HAL ובקושחה. פרטים נוספים זמינים במאמר IWifiNanIface.java.

יצרני מכשירים יכולים להשתמש בתקשורת מחוץ לפס (לדוגמה, BLE) כדי לסנכרן השהיה והמשך בכמה מכשירים.

אימות

ב-Android יש קבוצה של בדיקות יחידה, בדיקות של חבילה לבדיקות תאימות (CTS) ובדיקות של CTS Verifier כדי לאמת את התכונה Wi-Fi Aware. אפשר גם לבדוק את Wi-Fi Aware באמצעות חבילת בדיקות של ספקים (VTS).

בדיקות יחידה

בדיקות החבילות של Wi-Fi Aware מתבצעות באמצעות:

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

atest com.android.server.wifi.aware

בדיקות של חשבון ניהול:

atest android.net.wifi.aware

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

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

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

atest SingleDeviceTest

בדיקות של מאמת CTS

בדיקות CTS Verifier מאמתות את ההתנהגות של Wi-Fi Aware באמצעות שני מכשירים: מכשיר בדיקה ומכשיר ידוע כתקין. כדי להריץ את הבדיקות, פותחים את CTS Verifier ועוברים לקטע Wi-Fi Aware Tests.