تزامن STA/STA في شبكة Wi-Fi

يوفّر Android 12 تزامن Wi-Fi STA/STA، ما يتيح للأجهزة الاتصال بشبكتَي Wi-Fi بشكل متزامن. تتيح هذه الميزة الاختيارية الوظائف التالية.

  • إجراء قبل الفاصل: ينشئ الجهاز اتصالاً بشبكة Wi-Fi جديدة قبل قطع الاتصال الحالي. ينتج عن ذلك انتقالات أكثر سلاسة عند التبديل بين شبكات Wi-Fi
  • الاتصال المحلي فقط والاتصال بالإنترنت المتزامن: يتصل الجهاز بشبكة محلية فقط بدون تعطيل الاتصال الأساسي الذي يوفر شبكة الإنترنت للجهاز.
  • الاتصال المقيّد والاتصال بالإنترنت المتزامن: يتصل الجهاز بشبكة محظورة (لا تتوفّر هذه الميزة إلا لبعض التطبيقات الحاصلة على امتياز) بدون انقطاع الاتصال الأساسي الذي يوفّر الإنترنت للجهاز.
  • (نظام التشغيل Android 13 أو الإصدارات الأحدث) شبكات متعدّدة متزامنة مع اتصال بالإنترنت: يتصل الجهاز بشبكتَين غير مقيَّدتَين ومتاحتَين لجميع التطبيقات، ويوفّران الاتصال بالإنترنت.

تصف هذه الصفحة سلوك الجهاز عند تفعيل هذه الميزة وتفاصيل التنفيذ للشركات المصنّعة للأجهزة ومورّديها.

التنفيذ

يجب أن تتوافق الأجهزة مع ما يلي لتطبيق تزامن Wi-Fi STA/STA:

  • يجب أن تكون شريحة Wi-Fi أو البرامج الثابتة متوافقة مع اتصالَي STA متزامنَين. يجب أن تتوافق البرامج الثابتة مع كل مجموعات القنوات والنطاقات لكلا الاتصالين. لتجنُّب المشاكل في الأداء، ننصحك باستخدام شريحة Wi-Fi متوافقة مع تكنولوجيا 2x2+2x2.

  • يجب أن يتوافق الجهاز مع واجهات برمجة التطبيقات التالية في عملية تنفيذ "IWifiChip" المستندة إلى AIDL أو HIDL.

    • IWifiChip.setMultiStaPrimaryConnection(String ifName)
    • IWifiChip.setMultiStaUseCase(MultiStaUseCase useCase)
  • يجب أن تحتوي تركيبة واجهة HAL Wi-Fi على واجهتَي STA متزامنتين مع عرضهما باستخدام تنسيق مواصفات مثل [{STA} <= 2, ...]. لمزيد من المعلومات، راجِع تزامن واجهات Wi-Fi المتعددة.

إذا تم استيفاء هذه المتطلبات الأساسية، يمكنك تنفيذ تزامن Wi-Fi STA/STA من خلال تنفيذ ما يلي:

  1. يمكنك تفعيل دالة واحدة أو أكثر بشكل فردي باستخدام تراكبات موارد وقت التشغيل (غير مفعّلة تلقائيًا).

    • الاستعداد قبل الفاصل: config_wifiMultiStaNetworkSwitchingMakeBeforeBreakEnabled
    • اتصال محلي فقط واتصال إنترنت متزامن: config_wifiMultiStaLocalOnlyConcurrencyEnabled
    • اتصال مقيَّد واتصال بالإنترنت متزامن: config_wifiMultiStaRestrictedConcurrencyEnabled
    • شبكات متعددة متزامنة مع اتصال الإنترنت: config_wifiMultiStaMultiInternetConcurrencyEnabled
  2. تحقَّق من صحة كل عملية تنفيذ كما هو موضّح في الأقسام المعنيّة.

لتوفير تزامن أفضل عبر Wi-Fi STA/STA، ننصح بأن تستخدم الأطر والتطبيقات المخصصة للمصنّع الأصلي للجهاز طريقة NetworkCallback#onCapabilitiesChanged() بدلاً من WifiManager#getConnectionInfo() التي تعرض WifiInfo فقط لشبكة واحدة، وقد تم إيقافها نهائيًا في Android 12. لمزيد من المعلومات، يُرجى الاطّلاع على واجهة برمجة تطبيقات طلب شبكة Wi-Fi للاتصال من نظير إلى نظير.

الاستعداد قبل الفاصل

تتيح الوظيفة make-before-break للأجهزة الاتصال بشبكة Wi-Fi جديدة مع الحفاظ على الاتصال الحالي بشبكة Wi-Fi، مع انقطاع الاتصال بالشبكة القديمة فقط عند اتصالها بنجاح بشبكة Wi-Fi الجديدة ووصولها إلى الإنترنت.

تعالج حالة الاستخدام قبل الفاصل المشاكل التالية في الإصدار 11 من نظام التشغيل Android أو الإصدارات الأقدم، والتي يجب فيها قطع اتصال الجهاز بشبكة Wi-Fi الحالية قبل الاتصال بشبكة جديدة (الفاصل قبل الصنع).

  • عند الاتصال بشبكة جديدة، قد يكتشف الجهاز أنّ هناك كلمة مرور 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)، بالتزامن مع الشبكة الأساسية التي توفر الإنترنت. تحسّن هذه الوظيفة تجربة المستخدم عند الاتصال المباشر بأجهزة إنترنت الأشياء، مثل الكاميرات، والذي يمكن تحقيقه من خلال واجهة برمجة تطبيقات WifiNetworkSpecifier المُضافة في Android 10.

في نظام التشغيل Android 11 والإصدارات الأقدم، تنقطع اتصال الأجهزة بشبكة Wi-Fi الأساسية عند الاتصال بجهاز إنترنت الأشياء (IoT)، ما يؤدي إلى فقدان الاتصال بالإنترنت (إلا إذا كان الجهاز يتضمن نوع نقل آخر، مثل بيانات شبكة الجوّال).

يمكن للتطبيقات التحقّق مما إذا كانت هذه الوظيفة متوافقة مع الجهاز باستخدام WifiManager#isStaConcurrencyForLocalOnlyConnectionsSupported() API.

لمزيد من المعلومات حول التغييرات التي تطرأ على وظيفة الاتصال المحلي فقط والاتصال بالإنترنت المتزامنة في Android 12، يُرجى الاطّلاع على واجهة برمجة التطبيقات لطلب شبكة Wi-Fi للاتصال من نظير إلى نظير.

التحقق من الاتصال المحلي فقط والاتصال بالإنترنت

للتحقّق من صحة هذه الدالة، استخدِم اختبار CTS (MultiStaConcurrencyWifiNetworkSpecifierTest).

اتصال محدود واتصال بالإنترنت متزامن

تسمح وظيفة الاتصال المحدود والاتصال بالإنترنت للجهاز بالاتصال بشبكة Wi-Fi أساسية للمستخدم بشكل متزامن، وبشبكة Wi-Fi مقيّدة لا تتوفر إلا لتطبيقات محددة.

يمكن للتطبيقات التحقّق مما إذا كانت هذه الوظيفة متوافقة مع الجهاز باستخدام WifiManager#isStaConcurrencyForRestrictedConnectionsSupported() API.

لتمكين جهاز من الاتصال بشبكات Wi-Fi الثانوية المحدودة، اتّبِع الخطوات التالية:

  1. يمكنك إضافة اقتراحات شبكة Wi-Fi مع ضبط setOemPaid أو setOemPrivate على "صحيح".

  2. في ConnectivityManager، قدِّم NetworkRequest باستخدام الإمكانات المناسبة:

عندما يرصد الجهاز نتائج فحص مع شبكة تطابق الاقتراح المدفوع من قِبل المصنّع الأصلي للجهاز أو اقتراح المصنّع الأصلي للجهاز، يتم الاتصال به تلقائيًا كشبكة ثانوية.

التحقق من الاتصال المحدود والاتصال بالإنترنت

للتحقّق من صحة هذه الدالة، استخدِم اختبار CTS (MultiStaConcurrencyRestrictedWifiNetworkSuggestionTest).

شبكات متعددة متزامنة مع اتصال الإنترنت

تتوفّر ميزة الشبكات المتعددة المتزامنة مع الاتصال بالإنترنت على نظام التشغيل Android 13 أو الإصدارات الأحدث، وتتيح للجهاز الاتصال بشبكتَين (AP) في الوقت نفسه، وكلتاهما غير محظورَين (يمكن لجميع التطبيقات الوصول إلى الخدمة) وتوفير إمكانية الوصول إلى الإنترنت.

يمكن للتطبيقات التحقّق مما إذا كانت هذه الميزة متوافقة مع الجهاز باستخدام الطريقة 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() في عنصر معاودة الاتصال.

التحقّق من صحة شبكات متعددة متزامنة مع اتصال الإنترنت

للتحقق من صحة هذه الدالة، استخدِم اختبار 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: تحدّد هذه السمة الاتصال المحلي فقط والاتصال بالإنترنت المتزامن أو وظيفة الاتصال المحدود والاتصال بالإنترنت بشكل متزامن. يجب إعطاء الأولوية لجودة كلا الاتصالين بشكل متساوٍ.
  • بما أنّ منافذ STA المزدوجة المتزامنة يمكن أن تؤدي إلى أوضاع التشغيل الخاصة بكل من مركز عملائي وSCC وDBS، يجب أن يختار التنفيذ من جانب المورِّد أفضل ضبط لاسلكي، عندما يستدعي إطار العمل IWifiChip.setMultiStaUseCase() للإشارة إلى الدالة. في ما يلي إرشادات عامة:

    • ويفضل 2x2+2x2 DBS إذا كان متاحًا.
    • تجنَّب استخدام معيار 1x1+1x1 DBS إن أمكن نظرًا للتأثير المفرط على جودة الاتصال. ويفضّلون استخدام "مركز عملائي" بدلاً من ذلك.
    • يجب أن تكون دورة مهام مركز عملائي قابلة للتهيئة بواسطة برنامج التشغيل أو البرامج الثابتة من أجل الوظائف المتنوعة. لا يحدد إطار العمل دورة عمل مركز عملائي مباشرة، ولكنه يطلب هذه المعلومات باستخدام StaLinkLayerIfaceStats.timeSliceDutyCycleInPercent.
    • في حال استخدام "مركز عملائي"، نقترح عليك عقد دورات العمل التالية بين الاتصالات الأساسية والثانوية:

      • DUAL_STA_TRANSIENT_PREFER_PRIMARY: %70 أساسي و30% ثانوي
      • DUAL_STA_NON_TRANSIENT_UNBIASED: %50 أساسي و% 50 ثانوي