Android 12 มาพร้อม Wi-Fi STA/STA ทำงานพร้อมกัน ซึ่งช่วยให้อุปกรณ์เชื่อมต่อกับเครือข่าย Wi-Fi สองเครือข่ายพร้อมกันได้ คุณลักษณะเสริมนี้เปิดใช้งานฟังก์ชันต่อไปนี้
- Make-before-break : อุปกรณ์ทำการเชื่อมต่อกับเครือข่าย Wi-Fi ใหม่ก่อนที่จะทำลายการเชื่อมต่อที่มีอยู่ ส่งผลให้การเปลี่ยนถ่ายราบรื่นขึ้นเมื่อสลับไปมาระหว่างเครือข่าย Wi-Fi
- การเชื่อมต่อเฉพาะท้องถิ่นและอินเทอร์เน็ตพร้อม กัน : อุปกรณ์เชื่อมต่อกับเครือข่ายเฉพาะในพื้นที่โดยไม่รบกวนการเชื่อมต่ออินเทอร์เน็ตหลักของอุปกรณ์
- การเชื่อมต่อแบบ จำกัดและอินเทอร์เน็ตพร้อมกัน : อุปกรณ์เชื่อมต่อกับเครือข่ายที่ถูกจำกัด (ใช้ได้เฉพาะกับแอปที่มีสิทธิ์บางแอปเท่านั้น) โดยไม่รบกวนการเชื่อมต่ออินเทอร์เน็ตหลักของอุปกรณ์
หน้านี้อธิบายพฤติกรรมของอุปกรณ์เมื่อเปิดใช้งานคุณสมบัตินี้และรายละเอียดการใช้งานสำหรับผู้ผลิตอุปกรณ์และผู้จำหน่าย
การดำเนินการ
อุปกรณ์ต้องรองรับสิ่งต่อไปนี้เพื่อใช้การทำงานพร้อมกันของ Wi-Fi STA/STA:
ชิป Wi-Fi หรือเฟิร์มแวร์ต้องรองรับการเชื่อมต่อ STA สองรายการพร้อมกัน เฟิร์มแวร์ต้องรองรับการรวมช่องสัญญาณและแบนด์ทั้งหมดสำหรับการเชื่อมต่อทั้งสองแบบ เพื่อหลีกเลี่ยงปัญหาด้านประสิทธิภาพ เราขอแนะนำให้ใช้ชิป Wi-Fi ที่รองรับ 2x2+2x2 DBS
อุปกรณ์ต้องรองรับ API ต่อไปนี้ใน ผู้จำหน่าย HAL เวอร์ชัน 1.5
-
IWifiChip.setMultiStaPrimaryConnection()
-
IWifiChip.setMultiStaUseCase()
-
การรวมอินเทอร์เฟซ HAL Wi-Fi ต้องมีอินเทอร์เฟซ STA พร้อมกันสองอินเทอร์เฟซที่แสดงโดยใช้รูปแบบเฉพาะ เช่น
[{STA} <= 2, ...]
สำหรับข้อมูลเพิ่มเติม โปรดดู ที่ การทำงานพร้อมกันหลายอินเทอร์เฟซของ Wi-Fi
หากเป็นไปตามข้อกำหนดเบื้องต้นเหล่านั้น ให้ใช้ Wi-Fi STA/STA ทำงานพร้อมกันโดยดำเนินการดังต่อไปนี้:
เปิดใช้งานอย่างน้อยหนึ่งฟังก์ชันโดยใช้ โอเวอร์เลย์ทรัพยากรรันไทม์ (ปิดใช้งานโดยค่าเริ่มต้น)
- ทำก่อนพัก :
config_wifiMultiStaNetworkSwitchingMakeBeforeBreakEnabled
- การเชื่อมต่อภายในเครื่องและอินเทอร์เน็ตพร้อม กัน:
config_wifiMultiStaLocalOnlyConcurrencyEnabled
- การเชื่อมต่ออินเทอร์เน็ตและ จำกัด พร้อมกัน :
config_wifiMultiStaRestrictedConcurrencyEnabled
- ทำก่อนพัก :
ตรวจสอบการใช้งานแต่ละรายการตามที่อธิบายไว้ในส่วนที่เกี่ยวข้องด้านล่าง
เพื่อให้รองรับการทำงานพร้อมกันของ 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 แก้ไขปัญหาต่อไปนี้ใน Android 11 หรือต่ำกว่า โดยที่อุปกรณ์จะต้องยกเลิกการเชื่อมต่อจากเครือข่าย Wi-Fi ที่มีอยู่ก่อนที่จะเชื่อมต่อกับเครือข่ายใหม่ (break-before-make)
เมื่อเชื่อมต่อกับเครือข่ายใหม่ อุปกรณ์อาจพบว่ามีรหัสผ่าน Wi-Fi ที่ไม่ถูกต้องที่บันทึกไว้หรือเครือข่ายใหม่ไม่มีการเข้าถึงอินเทอร์เน็ต สิ่งนี้บังคับให้อุปกรณ์เปลี่ยนกลับไปใช้เครือข่ายเก่า นำไปสู่ระยะเวลาที่มีนัยสำคัญหากไม่มีการเชื่อมต่อ Wi-Fi
เครือข่ายเก่าถูกตัดการเชื่อมต่ออย่างกะทันหัน ซึ่งหมายความว่าซ็อกเก็ตทั้งหมดจะถูกปิด แอปมักไม่ตอบสนองได้ดีเมื่อขาดการเชื่อมต่ออย่างกะทันหัน และอาจส่งผลให้ผู้ใช้ประสบปัญหาในการเชื่อมต่ออินเทอร์เน็ตไม่กี่วินาทีจนกว่าการเชื่อมต่อใหม่จะเสร็จสมบูรณ์
เครือข่ายเริ่มต้นจะเปลี่ยนสองครั้ง จากเครือข่าย Wi-Fi เก่าเป็นเครือข่ายเซลลูลาร์ จากนั้นเปลี่ยนจากเครือข่ายเซลลูลาร์เป็นเครือข่าย Wi-Fi ใหม่ ทำให้แอปตอบสนองต่อการเปลี่ยนแปลงเครือข่ายสองครั้ง อุปกรณ์ยังต้องใช้เวลาช่วงสั้นๆ โดยใช้ข้อมูลเครือข่ายมือถือ
โฟลว์ make-before-break ใช้สำหรับสวิตช์เครือข่าย Wi-Fi อัตโนมัติที่เริ่มต้นโดย OS เท่านั้น สวิตช์เครือข่ายที่เริ่มต้นโดยผู้ใช้ใช้โฟลว์ break-before-make แบบเดิม โดยที่เครือข่ายก่อนหน้าถูกตัดการเชื่อมต่ออย่างสมบูรณ์ก่อนที่จะเชื่อมต่อเครือข่ายใหม่ ในบางกรณี โฟลว์ก่อนกำหนดจะใช้แม้ในสวิตช์อัตโนมัติที่เริ่มต้นโดย OS เช่น เมื่อสลับไปมาระหว่างสองเครือข่ายที่กำหนดค่าให้ใช้ที่อยู่ MAC ของโรงงาน
แอปสามารถตรวจสอบว่าอุปกรณ์รองรับกรณีการใช้งานนี้หรือไม่โดยใช้ WifiManager#isMakeBeforeBreakWifiSwitchingSupported()
API
ตรวจสอบ make-befor-break
ในการตรวจสอบการใช้งานของคุณ ให้เปิดใช้งานสวิตช์เครือข่าย 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
ใน Android 11 และต่ำกว่า อุปกรณ์จะตัดการเชื่อมต่อจากเครือข่าย Wi-Fi หลักเมื่อเชื่อมต่อกับอุปกรณ์ IoT ส่งผลให้การเชื่อมต่ออินเทอร์เน็ตสูญเสีย (เว้นแต่อุปกรณ์จะมีประเภทการขนส่งอื่นที่พร้อมใช้งาน เช่น ข้อมูลมือถือ)
แอปสามารถตรวจสอบว่าอุปกรณ์รองรับฟังก์ชันนี้หรือไม่โดยใช้ WifiManager#isStaConcurrencyForLocalOnlyConnectionsSupported()
API
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการเปลี่ยนแปลงของฟังก์ชันการเชื่อมต่อภายในเครื่องและการเชื่อมต่ออินเทอร์เน็ตพร้อมกันใน Android 12 โปรดดู ที่ API คำขอเครือข่าย Wi-Fi สำหรับการเชื่อมต่อแบบเพียร์ทูเพีย ร์
กำลังตรวจสอบการเชื่อมต่อในพื้นที่เท่านั้นและอินเทอร์เน็ต
ในการตรวจสอบฟังก์ชันนี้ ให้ใช้การทดสอบ CTS และ ACTS ต่อไปนี้:
- CTS:
MultiStaConcurrencyWifiNetworkSpecifierTest
- การกระทำ:
WifiStaConcurrencyNetworkRequestTest
การเชื่อมต่ออินเทอร์เน็ตที่ถูก จำกัด และอินเทอร์เน็ต
ฟังก์ชัน การเชื่อมต่ออินเทอร์เน็ตแบบจำกัดและเชื่อมต่อพร้อมกัน ทำให้อุปกรณ์สามารถเชื่อมต่อกับเครือข่าย Wi-Fi หลักสำหรับผู้ใช้พร้อมกันและเครือข่าย Wi-Fi แบบจำกัดที่มีให้เฉพาะบางแอปเท่านั้น
แอปสามารถตรวจสอบว่าอุปกรณ์รองรับฟังก์ชันนี้หรือไม่โดยใช้ WifiManager#isStaConcurrencyForRestrictedConnectionsSupported()
API
หากต้องการเปิดใช้งานอุปกรณ์เพื่อเชื่อมต่อกับเครือข่าย Wi-Fi สำรองที่ถูกจำกัด ให้ทำตามขั้นตอนเหล่านี้:
เพิ่ม คำแนะนำเครือข่าย Wi-Fi ด้วย
setOemPaid
หรือsetOemPrivate
ที่ตั้งค่าเป็นจริงใน
ConnectivityManager
ให้ยื่นNetworkRequest
ด้วยความสามารถที่เกี่ยวข้อง:-
NET_CAPABILITY_OEM_PAID
สำหรับsetOemPaid
-
NET_CAPABILITY_OEM_PRIVATE
สำหรับsetOemPrivate
-
เมื่ออุปกรณ์ตรวจพบผลการสแกนด้วยเครือข่ายที่ตรงกับคำแนะนำส่วนตัวของ OEM ที่จ่ายหรือคำแนะนำส่วนตัวของ OEM อุปกรณ์จะเชื่อมต่อกับอุปกรณ์นั้นเป็นเครือข่ายรองโดยอัตโนมัติ
กำลังตรวจสอบการเชื่อมต่ออินเทอร์เน็ตที่ถูก จำกัด และการเชื่อมต่ออินเทอร์เน็ต
ในการตรวจสอบฟังก์ชันนี้ ให้ใช้การทดสอบ CTS และ ACTS ต่อไปนี้:
- CTS:
MultiStaConcurrencyRestrictedWifiNetworkSuggestionTest
- การกระทำ:
WifiStaConcurrencyNetworkRequestTest
แนวทางชิป Wi-Fi ของผู้จำหน่าย
สำหรับผู้จำหน่ายชิป Wi-Fi ให้ใช้แนวทางต่อไปนี้เพื่อรองรับการทำงานพร้อมกันของ Wi-Fi STA/STA
ชิป Wi-Fi ต้องรองรับการเชื่อมต่อ STA แบบคู่พร้อมกัน ซึ่งหมายความว่ารองรับสิ่งต่อไปนี้:
- อินเทอร์เฟซ STA แต่ละรายการมี MAC ที่ไม่ซ้ำกันซึ่งตั้งโปรแกรมได้โดยเฟรมเวิร์ก
- อินเทอร์เฟซ STA สำรองสามารถสร้างและทำลายแบบไดนามิกได้
- STA แต่ละ STA สามารถเชื่อมต่อกับ SSID ที่แตกต่างกัน (ภายในแบนด์เดียวกันหรือแบนด์อื่น)
- STA แต่ละ 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 พร้อมกันแบบคู่สามารถนำไปสู่โหมดการทำงาน 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%
-