การเชื่อมต่อ Wi-Fi STA/STA พร้อมกัน

Android 12 เปิดตัวการใช้งาน Wi-Fi STA/STA พร้อมกัน ซึ่งทำให้อุปกรณ์เชื่อมต่อเครือข่าย Wi-Fi 2 เครือข่ายพร้อมกันได้ ฟีเจอร์ที่ไม่บังคับนี้ทำให้ฟังก์ชันต่อไปนี้ใช้งานได้

  • หยุดพัก: อุปกรณ์เชื่อมต่อเครือข่าย Wi-Fi ใหม่ ก่อนที่จะหยุดการเชื่อมต่อที่มีอยู่ ซึ่งทำให้ การเปลี่ยนผ่านได้อย่างราบรื่นขึ้นเมื่อสลับระหว่างเครือข่าย Wi-Fi
  • เฉพาะเครื่องและการเชื่อมต่ออินเทอร์เน็ตพร้อมกัน: อุปกรณ์ เชื่อมต่อกับเครือข่ายเฉพาะที่โดยไม่รบกวนอุปกรณ์ การเชื่อมต่ออินเทอร์เน็ตหลัก
  • การเชื่อมต่ออินเทอร์เน็ตแบบจำกัดและพร้อมกัน: อุปกรณ์ เชื่อมต่อกับเครือข่ายที่จำกัด (ใช้ได้กับบางแอปที่ได้รับสิทธิ์เท่านั้น) โดยไม่รบกวนการเชื่อมต่ออินเทอร์เน็ตหลักของอุปกรณ์
  • (Android 13 ขึ้นไป) หลายรายการพร้อมกัน เครือข่ายที่มีการเชื่อมต่ออินเทอร์เน็ต: อุปกรณ์จะเชื่อมต่อ เป็น 2 เครือข่ายซึ่งไม่มีการจำกัดและใช้ได้กับทุกแอป และมอบการเชื่อมต่ออินเทอร์เน็ต

หน้านี้จะอธิบายถึงลักษณะการทำงานของอุปกรณ์เมื่อเปิดใช้ฟีเจอร์นี้และ รายละเอียดการใช้งานสำหรับผู้ผลิตอุปกรณ์และผู้ให้บริการ

การใช้งาน

อุปกรณ์ต้องรองรับรายการต่อไปนี้เพื่อใช้งาน Wi-Fi STA/STA การเกิดขึ้นพร้อมกัน:

  • ชิป Wi-Fi หรือเฟิร์มแวร์ต้องรองรับ STA พร้อมกัน 2 เครื่อง การเชื่อมต่อ เฟิร์มแวร์ต้องรองรับชุดค่าผสมของช่องและย่านความถี่ทั้งหมด สำหรับการเชื่อมต่อทั้ง 2 ประเภท เพื่อหลีกเลี่ยงปัญหาด้านประสิทธิภาพ เราขอแนะนำให้ใช้ ชิป Wi-Fi ที่รองรับ DBS ขนาด 2x2+2x2

  • อุปกรณ์ต้องรองรับ API ต่อไปนี้ใน AIDL หรือ HIDL การใช้งาน IWifiChip

    • IWifiChip.setMultiStaPrimaryConnection(String ifName)
    • IWifiChip.setMultiStaUseCase(MultiStaUseCase useCase)
  • ชุดอินเทอร์เฟซ Wi-Fi แบบ HAL ต้องมีอินเทอร์เฟซ STA พร้อมกัน 2 แบบ เปิดเผยโดยใช้รูปแบบข้อกำหนด เช่น [{STA} <= 2, ...] สำหรับ ข้อมูลเพิ่มเติม โปรดดู การใช้งานหลายอินเทอร์เฟซผ่าน Wi-Fi พร้อมกัน

หากตรงตามข้อกำหนดเบื้องต้นเหล่านั้น ให้ใช้ Wi-Fi STA/STA พร้อมกัน ดังต่อไปนี้

  1. เปิดใช้อย่างน้อย 1 ฟังก์ชันแยกกันโดยใช้ การวางซ้อนทรัพยากรรันไทม์ (ปิดใช้โดย เริ่มต้น)

    • แต่งหน้าก่อนหยุดพัก config_wifiMultiStaNetworkSwitchingMakeBeforeBreakEnabled
    • การเชื่อมต่ออินเทอร์เน็ตเฉพาะในพื้นที่และพร้อมกัน: config_wifiMultiStaLocalOnlyConcurrencyEnabled
    • การเชื่อมต่ออินเทอร์เน็ตแบบจำกัดและพร้อมกัน: config_wifiMultiStaRestrictedConcurrencyEnabled
    • ทำงานพร้อมกันหลายเครือข่ายโดยมีการเชื่อมต่ออินเทอร์เน็ต: config_wifiMultiStaMultiInternetConcurrencyEnabled
  2. ตรวจสอบการติดตั้งใช้งานแต่ละรายการตามที่อธิบายไว้ในส่วนที่เกี่ยวข้อง

เราขอแนะนำให้ใช้บริการ OEM ที่กำหนดเองเพื่อรองรับการเกิดขึ้นพร้อมกันของ Wi-Fi STA/STA ได้ดียิ่งขึ้น เฟรมเวิร์กและแอปใช้เมธอด NetworkCallback#onCapabilitiesChanged() แทนที่จะเป็น WifiManager#getConnectionInfo() ซึ่งจะแสดงผลเฉพาะ WifiInfo สำหรับ เครือข่ายเดียวและเลิกใช้งานแล้วใน Android 12 สำหรับ ข้อมูลเพิ่มเติม โปรดดู API คำขอเครือข่าย Wi-Fi สำหรับการเชื่อมต่อแบบเพียร์ทูเพียร์

แต่งหน้าก่อนหยุดพัก

ฟังก์ชันกำหนดเวลาก่อนหยุดพักช่วยให้อุปกรณ์เชื่อมต่อกับ Wi-Fi ใหม่ได้ เครือข่ายพร้อมๆ กับรักษาการเชื่อมต่อเครือข่าย Wi-Fi ที่มีอยู่เท่านั้น ถูกตัดการเชื่อมต่อจากเครือข่ายเดิม เมื่อเชื่อมต่อกับเครือข่ายใหม่ได้สำเร็จ เครือข่าย Wi-Fi และเชื่อมต่ออินเทอร์เน็ตได้

Use Case แบบก่อนหยุดพักจะจัดการกับปัญหาต่อไปนี้ใน Android 11 หรือต่ำกว่า ซึ่งอุปกรณ์ต้องยกเลิกการเชื่อมต่อ จากเครือข่าย Wi-Fi ที่มีอยู่ก่อนเชื่อมต่อเครือข่ายใหม่ (break-before-make)

  • เมื่อเชื่อมต่อกับเครือข่ายใหม่ อุปกรณ์อาจพบว่า บันทึกรหัสผ่าน Wi-Fi ที่ไม่ถูกต้องหรือเครือข่ายใหม่ไม่บันทึก มีการเชื่อมต่ออินเทอร์เน็ต วิธีนี้จะบังคับให้อุปกรณ์เปลี่ยนกลับไปเป็นเวอร์ชันเก่า เครือข่าย เป็นเวลานานพอสมควรหากไม่มีการเชื่อมต่อ Wi-Fi

  • ยกเลิกการเชื่อมต่อเครือข่ายเก่าอย่างกะทันหัน ซึ่งหมายความว่า ซ็อกเก็ตต่าง ๆ ปิดลง แอปมักตอบสนองได้ไม่ดีนักกับการสูญเสีย และอาจนำไปสู่การเชื่อมต่อ ผู้ใช้ไม่สามารถเชื่อมต่อกับอินเทอร์เน็ตได้ 2-3 วินาทีจนกระทั่ง สร้างการเชื่อมต่ออย่างสมบูรณ์แล้ว

  • เครือข่ายเริ่มต้นจะเปลี่ยน 2 ครั้ง โดยเปลี่ยนจากเครือข่าย Wi-Fi เดิมเป็นเครือข่ายมือถือ จากนั้นจากเครือข่ายมือถือไปใช้เครือข่าย Wi-Fi ใหม่ ซึ่งทำให้แอปตอบสนองต่อ มีการเปลี่ยนแปลง 2 ครั้ง อุปกรณ์ยังต้องใช้เวลา โดยใช้อินเทอร์เน็ตมือถือ

ขั้นตอนการสร้างก่อนหยุดพักจะใช้กับเครือข่าย Wi-Fi อัตโนมัติเท่านั้น สวิตช์ที่เริ่มโดยระบบปฏิบัติการ สวิตช์เครือข่ายที่เริ่มต้นโดยผู้ใช้จะใช้สวิตช์เดิม ขั้นตอน "หยุดพักก่อน" ที่เครือข่ายก่อนหน้าถูกตัดการเชื่อมต่อโดยสมบูรณ์ ก่อนที่จะเชื่อมต่อเครือข่ายใหม่ ในบางกรณี ฟิลด์ จะมีการใช้ขั้นตอน "หยุดพักก่อนสร้าง" แม้ในสวิตช์อัตโนมัติที่เริ่มต้นโดย เช่น เมื่อสลับระหว่างเครือข่าย 2 เครือข่าย ทั้ง 2 เครือข่ายมีการกำหนดค่าให้ใช้ ที่อยู่ Mac จากโรงงาน

แอปจะตรวจสอบได้ว่าอุปกรณ์รองรับกรณีการใช้งานนี้หรือไม่โดยใช้ WifiManager#isMakeBeforeBreakWifiSwitchingSupported() API

ตรวจสอบการแต่งหน้าก่อนหยุดพัก

หากต้องการตรวจสอบการใช้งาน ให้ทริกเกอร์สวิตช์เครือข่าย Wi-Fi อัตโนมัติ (โดยตรวจสอบให้เครือข่ายมีความแรงของสัญญาณมากกว่า เครือข่ายที่เชื่อมต่อ) และยืนยันว่าอุปกรณ์ดูแลรักษา ที่มีอยู่ในขณะที่เชื่อมต่อกับเครือข่ายใหม่ หากต้องการดูสถานะของอินเทอร์เฟซ Wi-Fi ทั้ง 2 อินเทอร์เฟซ และยืนยันว่าทั้ง 2 อินเทอร์เฟซเชื่อมต่อแล้ว ให้ใช้คำสั่งต่อไปนี้

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

หากเครือข่ายใหม่ไม่มีการเชื่อมต่อ อุปกรณ์จะ พยายามเชื่อมต่อกับเครือข่ายพร้อมๆ กับ การเชื่อมต่อกับเครือข่ายที่มีอยู่ และล้มเลิกการดำเนินการเมื่อตรวจพบ เครือข่ายใหม่ไม่มีอินเทอร์เน็ต จากนั้นอุปกรณ์จะใช้ต่อ เป็นเครือข่าย Wi-Fi หลักที่มีอยู่

เฉพาะในตัวเครื่องและการเชื่อมต่ออินเทอร์เน็ตพร้อมกัน

ฟังก์ชันการเชื่อมต่ออินเทอร์เน็ตภายในเครื่องเท่านั้นและพร้อมกันช่วยให้อุปกรณ์ เป็นการเชื่อมต่อเฉพาะในตัวเครื่อง เช่น การเชื่อมต่อกับอุปกรณ์ IoT ไปพร้อมกับเครือข่ายที่ให้บริการอินเทอร์เน็ตหลัก ฟังก์ชันนี้จะปรับปรุง ประสบการณ์ของผู้ใช้เมื่อเชื่อมต่อกับอุปกรณ์ IoT โดยตรง เช่น กล้อง ซึ่งทำได้ผ่าน WifiNetworkSpecifier API ที่เพิ่มลงใน Android 10

ใน Android 11 และต่ำกว่า อุปกรณ์จะยกเลิกการเชื่อมต่อจาก เครือข่าย Wi-Fi หลักเมื่อเชื่อมต่อกับอุปกรณ์ IoT ซึ่งทำให้สูญเสีย การเชื่อมต่ออินเทอร์เน็ต (ยกเว้นกรณีที่อุปกรณ์มีการรับส่งประเภทอื่นที่ใช้ได้ เช่น อินเทอร์เน็ตมือถือ)

แอปจะตรวจสอบได้ว่าอุปกรณ์รองรับฟังก์ชันนี้หรือไม่โดยใช้ WifiManager#isStaConcurrencyForLocalOnlyConnectionsSupported() API

ดูข้อมูลเพิ่มเติมเกี่ยวกับการเปลี่ยนแปลงฟีเจอร์เฉพาะในพื้นที่และอินเทอร์เน็ตพร้อมกัน ฟังก์ชันการเชื่อมต่อใน Android 12 โปรดดู API คำขอเครือข่าย Wi-Fi สำหรับการเชื่อมต่อแบบเพียร์ทูเพียร์

ตรวจสอบการเชื่อมต่ออินเทอร์เน็ตเฉพาะในตัวเครื่องและการเชื่อมต่ออินเทอร์เน็ต

ในการตรวจสอบฟังก์ชันนี้ ให้ใช้ การทดสอบ CTS MultiStaConcurrencyWifiNetworkSpecifierTest

การเชื่อมต่ออินเทอร์เน็ตที่จำกัดและจำกัดพร้อมกัน

ฟังก์ชันการเชื่อมต่ออินเทอร์เน็ตแบบจำกัดและพร้อมกันช่วยให้อุปกรณ์ เพื่อเชื่อมต่อกับเครือข่าย Wi-Fi หลักพร้อมกันสำหรับผู้ใช้และ เครือข่าย Wi-Fi ที่จำกัดซึ่งใช้ได้กับบางแอปเท่านั้น

แอปจะตรวจสอบได้ว่าอุปกรณ์รองรับฟังก์ชันนี้หรือไม่โดยใช้ WifiManager#isStaConcurrencyForRestrictedConnectionsSupported() API

วิธีเปิดใช้อุปกรณ์เพื่อเชื่อมต่อกับเครือข่าย Wi-Fi รองที่จำกัดไว้ ให้ทำตามขั้นตอนต่อไปนี้

  1. เพิ่ม คำแนะนำเครือข่าย Wi-Fi กับ setOemPaid หรือ setOemPrivate ตั้งค่าเป็น "จริง"

  2. ใน ConnectivityManager ให้ส่ง NetworkRequest พร้อม ความสามารถ:

เมื่ออุปกรณ์ตรวจพบผลการสแกนที่มีเครือข่ายตรงกับ OEM แบบชำระเงินหรือ คำแนะนำส่วนตัวของ OEM จะเชื่อมต่อกับเครือข่ายรองโดยอัตโนมัติ

ตรวจสอบการเชื่อมต่ออินเทอร์เน็ตแบบจำกัดและพร้อมกัน

ในการตรวจสอบฟังก์ชันนี้ ให้ใช้ การทดสอบ CTS MultiStaConcurrencyRestrictedWifiNetworkSuggestionTest

เชื่อมต่อหลายเครือข่ายพร้อมกัน

พร้อมใช้งานสำหรับ Android 13 ขึ้นไป การเชื่อมต่อพร้อมกัน หลายเครือข่ายที่มีการเชื่อมต่ออินเทอร์เน็ต ทำให้อุปกรณ์ เชื่อมต่อเครือข่าย (AP) 2 เครือข่ายพร้อมกันโดยไม่มีการจำกัด (แอปทั้งหมดมีสิทธิ์เข้าถึง) และให้สิทธิ์เข้าถึงอินเทอร์เน็ต

แอปจะตรวจสอบได้ว่าอุปกรณ์รองรับฟีเจอร์นี้หรือไม่โดยใช้ 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 แบบ 2 เครื่องพร้อมกัน ซึ่งหมายความว่า รองรับรายการต่อไปนี้

  • อินเทอร์เฟซ STA แต่ละรายการมี MAC ที่ไม่ซ้ำกันซึ่งสามารถตั้งโปรแกรมได้โดยเฟรมเวิร์ก
  • คุณสร้างและทำลายอินเทอร์เฟซ STA รองแบบไดนามิกได้
  • STA แต่ละรายการสามารถเชื่อมต่อกับ SSID ที่ต่างกัน (ไม่ว่าจะอยู่ในโดเมนเดียวกันหรือไม่ก็ตาม สายนาฬิกาหรือสายอื่น)
  • STA แต่ละรายการสามารถเชื่อมต่อกับ SSID เดียวกันได้ (ภายในช่องเดียวกัน สายนาฬิกาหรือสายอื่น) STA ทั้ง 2 รายการจะต้องไม่ เชื่อมต่อกับ 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 แบบ 2 ชุดพร้อมกันอาจนำไปสู่โหมด MCC, SCC และ DBS การดำเนินการของผู้ให้บริการจะต้องเลือกวิทยุที่ดีที่สุด เมื่อเฟรมเวิร์กเรียกใช้ IWifiChip.setMultiStaUseCase() ไปยัง ระบุฟังก์ชัน หลักเกณฑ์ทั่วไปมีดังนี้

    • แนะนำให้ใช้ 2x2+2x2 DBS หากมี
    • หากเป็นไปได้ ให้หลีกเลี่ยงการใช้ 1x1+1x1 DBS เนื่องจากผลกระทบต่อ คุณภาพการเชื่อมต่อ แต่ให้ใช้ MCC แทน
    • ไดรเวอร์หรือเฟิร์มแวร์จะต้องกำหนดค่ารอบการทำงาน MCC ได้สำหรับ ฟังก์ชันต่างๆ เฟรมเวิร์กนี้ไม่ได้เป็นการกำหนดรอบการทำงาน MCC โดยตรง แต่ค้นหาข้อมูลนี้โดยใช้ StaLinkLayerIfaceStats.timeSliceDutyCycleInPercent
    • หากใช้ MCC เราขอแนะนำรอบหน้าที่ต่อไปนี้ระหว่างรอบการทำงานหลัก และการเชื่อมต่อรอง

      • DUAL_STA_TRANSIENT_PREFER_PRIMARY: ประถมศึกษา 70% มัธยมศึกษา 30%
      • DUAL_STA_NON_TRANSIENT_UNBIASED: ประถมศึกษา 50% มัธยมศึกษา 50%