ฟีเจอร์การหลีกเลี่ยงช่องสัญญาณ Wi-Fi/เครือข่ายมือถือที่ทำงานร่วมกันซึ่งเปิดตัวใน Android 12 จะระบุและหลีกเลี่ยงการใช้ช่อง Wi-Fi ที่ไม่ปลอดภัยในกรณีที่อาจมีการรบกวนจากหรือไปยังช่องสัญญาณเครือข่ายมือถือ ซึ่งรวมถึงอินเทอร์เฟซต่างๆ เช่น STA, SoftAp, Wi-Fi Direct (P2P), Wi-Fi Aware (NAN)
หน้านี้จะกล่าวถึงหัวข้อต่อไปนี้
- ข้อมูลที่โมเด็มเซลลูลาร์ต้องรายงานไปยังเฟรมเวิร์ก Android
- อัลกอริทึมที่เฟรมเวิร์ก Wi-Fi ใช้เพื่อคำนวณช่อง Wi-Fi ที่ต้องหลีกเลี่ยง
- ตารางการกําหนดค่าที่ผู้ผลิตอุปกรณ์ต้องระบุสําหรับเฟรมเวิร์ก Wi-Fi
- API ของระบบ การกำหนดค่า และ HAL API ที่เกี่ยวข้องกับฟีเจอร์การหลีกช่อง
- ลักษณะการทํางานของเฟรมเวิร์กสําหรับการจัดการการหลีกเลี่ยงแชแนล
- ลักษณะการทํางานของผู้ให้บริการชิปสําหรับการจัดการการหลีกเลี่ยงช่องทาง
- รายละเอียดการใช้งานเพื่อหลีกเลี่ยงแชแนล
- การทดสอบเพื่อตรวจสอบลักษณะการหลีกเลี่ยงช่อง
ฉากหลัง
สำหรับอุปกรณ์ที่มีเทคโนโลยีเครือข่ายมือถือ เช่น LTE, 5G NR และ Licensed Assisted Access (LAA) ช่องเครือข่ายมือถือที่ใช้อยู่อาจรบกวนช่อง Wi-Fi ที่ใช้อยู่ ปัญหานี้เกิดขึ้นเมื่อช่องสัญญาณมือถือและ Wi-Fi อยู่ในช่วงความถี่ที่ใกล้กัน (ช่องสัญญาณใกล้เคียง) หรือเมื่อมีการรบกวนความถี่ฮาร์โมนิกและการรบกวนจากการมอดูเลตร่วมกัน
การรบกวนประเภทนี้จะกลายเป็นปัญหาเมื่อเสาอากาศหนึ่งส่งสัญญาณและอีกเสาหนึ่งรับสัญญาณในเวลาเดียวกัน ในกรณีนี้ เสาอากาศส่งสัญญาณจะรบกวนเสาอากาศรับสัญญาณ ซึ่งส่งผลต่อคุณภาพการรับสัญญาณ
เอกสารนี้เรียกเครื่องส่งสัญญาณที่รบกวนว่าผู้รุกราน และเรียกเครื่องรับที่รบกวนว่าเหยื่อ ช่อง Wi-Fi ที่เป็นผู้ที่โจมตีหรือเหยื่อเรียกว่าช่อง ที่ไม่ปลอดภัย
ฟีเจอร์การหลีกเลี่ยงช่องสัญญาณที่ทับซ้อนกันของ Wi-Fi/เครือข่ายมือถือมีแนวทางที่สอดคล้องกันสำหรับการหลีกเลี่ยงช่องสัญญาณ ซึ่งช่วยลดความจำเป็นในการใช้โค้ดที่เป็นกรรมสิทธิ์ซึ่งแตกต่างจากเฟรมเวิร์ก Wi-Fi นอกจากนี้ ฟีเจอร์นี้ยังช่วยให้ผู้ผลิตอุปกรณ์กำหนดค่า เปิดใช้ ปิดใช้ และลบล้างฟีเจอร์ได้
ฟีเจอร์นี้จะหลีกเลี่ยงช่องสัญญาณโดยการควบคุมช่อง Wi-Fi รูปแบบการหลีกเลี่ยงช่อง Wi-Fi อธิบายได้ว่าเป็นชุดขั้นตอนนามธรรม 4 ขั้นตอนดังนี้
- โมเด็มรายงานการเปลี่ยนแปลงความถี่ของเครือข่ายมือถือ
- อัลกอริทึมการหลีกเลี่ยง Coex จะคำนวณช่อง Wi-Fi ที่ไม่ปลอดภัย
- อัลกอริทึมการหลีกเลี่ยงการอยู่ร่วมกันจะแจ้งให้บริการ Wi-Fi ทราบ
- เฟรมเวิร์กหรือไดรเวอร์ดำเนินการกับ Wi-Fi ตามความเหมาะสม
รูปที่ 1 รูปแบบการหลีกเลี่ยงช่อง
รายงานการเปลี่ยนแปลงความถี่ของสัญญาณมือถือ
บริการโทรศัพท์จะรายงานช่องสัญญาณมือถือที่ใช้อยู่ในปัจจุบัน เมื่อความถี่ของเครือข่ายมือถือที่ใช้งานเปลี่ยนแปลง โมเด็มจะรายงานข้อมูลนี้ไปยังบริการโทรศัพท์ผ่าน IRadio::PhysicalChannelConfig
ข้อมูลนี้รวมถึงตัวบ่งชี้สําหรับการเข้าถึงแบบมีอุปกรณ์ช่วยที่ได้รับอนุญาต (LAA) และการรวมผู้ให้บริการ (CA)
ตั้งแต่ Android 12 ช่องต่อไปนี้ใน
1.6 IRadio::PhysicalChannelConfig
จะให้ข้อมูลที่จำเป็นสำหรับสูตรการอยู่ร่วมกันที่โมเด็มต้องป้อน
struct PhysicalChannelConfig {
/** Connection status for cell. Valid values are PRIMARY_SERVING and SECONDARY_SERVING */
CellConnectionStatus status;
/** The radio technology for this physical channel */
RadioTechnology rat;
/** Downlink Absolute Radio Frequency Channel Number */
int32_t channelNumberDownlink;
/** Uplink Absolute Radio Frequency Channel Number */
int32_t channelNumberUplink;
/** Downlink cell bandwidth, in kHz */
int32_t cellBandwidthDownlink;hte
/** Uplink cell bandwidth, in kHz */
int32_t cellBandwidthUplink;
}
คำนวณช่อง Wi-Fi ที่ไม่ปลอดภัย
เมื่อโมเด็มรายงานการเปลี่ยนแปลงความถี่ของเครือข่ายมือถือ อัลกอริทึมของช่องการทำงานร่วมกันจะคำนวณการรบกวนระหว่างช่องเครือข่ายมือถือและ Wi-Fi และพิจารณาว่าช่อง Wi-Fi ชุดใดไม่ปลอดภัย
การรบกวนมีหลายประเภทที่ต้องใช้สูตรที่แตกต่างกัน ได้แก่ การรบกวนจากสถานีใกล้เคียงและการรบกวนจากคลื่นความถี่สูง/การรบกวนระหว่างความถี่ รูปแบบของการรบกวนจากอุปกรณ์ใกล้เคียงและการรบกวนฮาร์โมนิก/การรบกวนแบบผสมกันของอุปกรณ์แต่ละเครื่องจะแตกต่างกันเนื่องจากความแตกต่างของเสาอากาศและเลย์เอาต์ของอุปกรณ์ ผู้ผลิตอุปกรณ์จึงต้องระบุตารางการค้นหาเพื่อใส่พารามิเตอร์ลงในสูตรทั่วไปสำหรับสัญญาณรบกวนทั้ง 2 ประเภท พารามิเตอร์เหล่านี้จะกำหนดตามย่านความถี่ของเซลล์และอ้างอิงตามย่านความถี่ของแชแนลเซลล์ที่ใช้งานอยู่
คุณกำหนดกำลังไฟฟ้าสูงสุดได้ในตารางการค้นหา หากมีการกําหนดขีดจํากัดกำลังไฟฟ้าสูงสุด ช่องที่ไม่ปลอดภัยจะส่งด้วยขีดจํากัดกำลังไฟฟ้าที่ระบุไว้ หากไม่มีขีดจํากัดกำลังไฟฟ้า ช่องจะส่งด้วยกำลังไฟฟ้าสูงสุด
โดยทั่วไป ฟีเจอร์การหลีกเลี่ยงช่องจะใช้แนวทางที่ดีที่สุดเพื่อหลีกเลี่ยงช่อง Wi-Fi ที่ไม่ปลอดภัยเพื่อเพิ่มประสิทธิภาพ แต่ในบางกรณี (เช่น เนื่องจากข้อกำหนดของผู้ให้บริการ) อินเทอร์เฟซบางอย่างจำเป็นต้องหลีกเลี่ยงช่องที่ไม่ปลอดภัยสำหรับย่านความถี่ของเครือข่ายมือถือบางย่าน ในกรณีเช่นนี้ ข้อจำกัดที่จําเป็นจะแสดงเป็นบิตมาสก์ที่มีค่าสำหรับห้ามใช้บางช่อง เช่น Wi-Fi Direct (P2P), SoftAp และ Wi-Fi Aware (NAN) แม้ว่าแชแนลที่ไม่ปลอดภัยจะเป็นคำแนะนำที่ไม่ให้ใช้แชแนลนั้นกับกรณีการใช้งานทั้งหมด แต่ข้อจำกัดที่ต้องปฏิบัติตามจะระบุกรณีการใช้งานที่เฉพาะเจาะจงซึ่งต้องหลีกเลี่ยง
หากมีการทำเครื่องหมายแชแนลทุกช่องของย่านความถี่ 2.4 GHz หรือ 5 GHz ว่าไม่ปลอดภัย ตารางการค้นหาอาจกำหนดแชแนล 2.4 GHz เริ่มต้นหรือแชแนล 5 GHz เริ่มต้นตามย่านความถี่ของเซลล์ที่รบกวนว่าเป็นตัวเลือกที่ปลอดภัยที่สุด ระบบจะไม่รายงานว่าช่องเริ่มต้นเหล่านี้เป็นช่องที่ไม่ปลอดภัยเมื่อมีการรายงานว่าย่านความถี่ที่เหลือไม่ปลอดภัย
กลายเป็นสแปมรายการการลบล้าง
แนวทางแบบสูตรจำกัดในกรณีที่การรบกวนขึ้นอยู่กับแบนด์วิดท์อย่างมาก (ดังนั้นช่องที่มีแบนด์วิดท์ขนาดใหญ่จึงอาจไม่ปลอดภัย แต่ช่องที่มีแบนด์วิดท์ขนาดเล็กจะปลอดภัย) ในกรณีต่างๆ เช่น LAA คุณควรข้ามการคํานวณและใช้รายการแชแนลที่ไม่ปลอดภัยที่ระบุ
ซึ่งทำได้โดยระบุรายการการลบล้างแชแนลที่ไม่ปลอดภัยในตารางการค้นหาสำหรับบางรายการ รายการการลบล้างในรายการตารางหมายความว่าระบบจะข้ามการคำนวณสำหรับช่องสัญญาณของเซลล์นั้นๆ และระบุช่อง Wi-Fi ที่ไม่ปลอดภัยสำหรับช่องสัญญาณของเซลล์ที่ตรงกันโดยรายการการลบล้าง
สำหรับกรณีที่คำนึงถึงแบนด์วิดท์ คุณสามารถหลีกเลี่ยงแบนด์วิดท์บางรายการได้โดยระบุบางช่องที่มีแบนด์วิดท์บางรายการในรายการการลบล้าง เนื่องจากหมายเลขช่อง Wi-Fi แต่ละช่องจะสอดคล้องกับแบนด์วิดท์ที่ระบุ
รายการการลบล้างจะแสดงด้วยรายการหมายเลขช่องหรือคีย์เวิร์ดหมวดหมู่ที่กําหนดไว้ล่วงหน้าสําหรับย่านความถี่ Wi-Fi แต่ละย่าน ดังนี้
หมวดหมู่ 2G
all
(ทั้งย่านความถี่ 2.4 GHz)
หมวดหมู่ 5G
all
(ทั้งย่านความถี่ 5 GHz)20mhz
(ช่อง 5 GHz 20 MHz)40mhz
(ช่อง 5 GHz 40 MHz)80mhz
(ช่อง 5 GHz 80 MHz)160mhz
(ช่อง 5 GHz 160 MHz)
การรบกวนจากช่องใกล้เคียง
อัลกอริทึมการหลีกเลี่ยงการอยู่ร่วมกันจะตรวจสอบว่าระยะทาง ΔF ระหว่างช่องที่รบกวนกับช่องที่ได้รับผลกระทบไม่ได้ต่ำกว่าเกณฑ์ที่ระบุเพื่อพิจารณาการรบกวนของช่องใกล้เคียง
รูปที่ 2 ระยะห่างระหว่างช่องของผู้กระทำการและเหยื่อ
เกณฑ์จะกำหนดโดยการกำหนดค่าทางกายภาพของอุปกรณ์และค่าเกณฑ์ที่ระบุไว้ในรายการตารางการค้นหาต่อย่านความถี่ที่รบกวน ย่านความถี่ที่ถือว่าไม่รบกวนจะไม่มีรายการในตาราง และไม่จำเป็นต้องคำนวณช่องที่ไม่ปลอดภัย (ซึ่งมักจะเป็นเช่นนั้น)
พารามิเตอร์การรบกวนจากสัญญาณใกล้เคียง
wifiVictimMhz
: เกณฑ์ระยะทาง MHz สำหรับเหยื่อ Wi-Fi (การอัปลิงก์ของเครือข่ายมือถือ)cellVictimMhz
: เกณฑ์ระยะทาง MHz สำหรับเหยื่อที่อยู่ในเซลล์ (ดาวน์ลิงก์ของเซลล์)
อัลกอริทึมจะทํางานดังนี้สําหรับแชแนลเซลล์ที่ใช้งานอยู่แต่ละแชแนล
- สำหรับย่านของช่อง ให้พยายามค้นหารายการในตารางการค้นหา หากไม่พบรายการที่เปลี่ยนแปลงได้ ระบบจะแสดงผลว่าไม่มีแชแนลที่ไม่ปลอดภัยสำหรับแชแนลเซลล์นั้น
- ระบุย่านความถี่ Wi-Fi ที่เสี่ยงและด้านของย่านความถี่ที่สัญญาณรบกวนมาจาก (เช่น ช่อง 2.4 GHz ที่ต่ำกว่า ช่อง 2.4 GHz ที่สูงกว่า ช่อง 5 GHz ที่ต่ำกว่า) โดยอิงตามย่านความถี่ของเครือข่ายมือถือ
หากมี
wifiVictimMhz
และช่องเซลล์มีการอัปลิงก์และหากย่านความถี่ต่ำของ Wi-Fi มีความเสี่ยง
- ค้นหาขีดจำกัดบนของช่องที่ไม่ปลอดภัยโดยการเพิ่ม
wifiVictimMhz
ลงในความถี่สูงสุดของสัญญาณขาขึ้นของเซลล์ - ค้นหาช่อง Wi-Fi 20 MHz แรกที่มีขอบล่างทับซ้อนกับขีดจำกัด
- ทำเครื่องหมายช่อง Wi-Fi, ช่องที่มีแบนด์วิดท์กว้างกว่าทุกช่อง (เช่น 40 Mhz, 80 Mhz) และช่องที่ต่ำกว่าทุกช่องของย่านความถี่เดียวกับช่องที่ไม่ปลอดภัย
- ค้นหาขีดจำกัดบนของช่องที่ไม่ปลอดภัยโดยการเพิ่ม
หากย่านความถี่ด้านบนของ Wi-Fi มีความเสี่ยง
- ค้นหาขีดจำกัดล่างของช่องที่ไม่ปลอดภัยโดยหัก wifiVictimMhz ออกจากความถี่ต่ำสุดของสัญญาณขาขึ้นของเครือข่ายมือถือ
- ค้นหาช่อง Wi-Fi ช่องแรกที่ขอบด้านบนทับซ้อนกับขีดจำกัด
- ทำเครื่องหมายช่อง Wi-Fi, ช่องที่ใหญ่กว่าทุกช่องที่มีช่องดังกล่าว (เช่น 40 Mhz, 80 Mhz) และช่องที่สูงกว่าทุกช่องในย่านความถี่เดียวกับช่องที่ไม่ปลอดภัย
หากมี
cellVictimMhz
และช่องเซลล์มีดาวน์ลิงก์- ดําเนินการขั้นตอนที่ 3 โดยใช้
cellVictimMhz
เป็นเกณฑ์ และเปรียบเทียบกับดาวน์ลิงก์ของเครือข่ายมือถือแทนอัปลิงก์ของเครือข่ายมือถือ
- ดําเนินการขั้นตอนที่ 3 โดยใช้
ใช้ขีดจำกัดกำลังไฟฟ้าของรายการตารางกับช่องที่ไม่ปลอดภัยที่คำนวณแล้ว
รูปที่ 3 การคำนวณช่องที่ไม่ปลอดภัยสำหรับการรบกวนจากช่องข้างเคียง
การบิดเบือนเชิงฮาร์โมนิกหรือการบิดเบือนจากการรบกวนกันของสัญญาณ
สำหรับความผิดเพี้ยนฮาร์โมนิกหรือการรบกวนกันของสัญญาณ เครื่องมือการทำงานร่วมกันจะคำนวณช่วงของสัญญาณฮาร์โมนิกหรือการรบกวนกันของสัญญาณ และประเมินเปอร์เซ็นต์การซ้อนทับกับแชแนลที่อาจได้รับผลกระทบ หากการซ้อนทับเกินเกณฑ์การซ้อนทับ อัลกอริทึมจะถือว่านี่เป็นสถานการณ์ที่ไม่ปลอดภัย การคํานวณเปอร์เซ็นต์การซ้อนทับของสัญญาณรบกวนฮาร์โมนิกหรือการบิดเบือนจากการรบกวนกันของสัญญาณในช่องที่ได้รับผลกระทบจะทําโดยใช้สูตรต่อไปนี้
ในกรณีการบิดเบือนฮาร์โมนิก อัลกอริทึมจะพิจารณาการบิดเบือนฮาร์โมนิกของช่องสัญญาณขาขึ้นของเครือข่ายมือถือที่ส่งผลกระทบต่อช่อง Wi-Fi จากนั้นระบบจะแทนที่ระดับการบิดเบือนสูงและการบิดเบือนต่ำด้วยค่าฮาร์โมนิกโดยอิงตามความถี่ของสัญญาณขาขึ้นของเซลล์และระดับฮาร์โมนิก $ N $
รูปที่ 4 การคำนวณช่องที่ไม่ปลอดภัยสำหรับความผิดเพี้ยนตามฮาร์โมนิก
ในกรณีการมอดูเลตร่วมกัน อัลกอริทึมจะพิจารณาการบิดเบือนจากการมอดูเลตร่วมกันของสัญญาณขาขึ้นของเครือข่ายมือถือและช่อง Wi-Fi ที่ส่งผลกระทบต่อช่องขาลงของเครือข่ายมือถือ จากนั้นจะแทนที่ความผิดเพี้ยนสูงและความผิดเพี้ยนต่ำด้วยค่าการมอดูเลตร่วมกันตามความถี่ขาขึ้นของเซลล์ ความถี่ Wi-Fi และค่าสัมประสิทธิ์การมอดูเลตร่วมกัน 2 ค่า $ M $, $ N $
รูปที่ 5 การคํานวณช่องที่ไม่ปลอดภัยสําหรับการบิดเบือนจากการรบกวนกัน
คุณสามารถระบุค่า $ M $, $ N $ และค่าที่ซ้อนทับในตารางการค้นหาตามย่านความถี่ของเซลล์ที่รบกวน หากไม่มีสัญญาณรบกวนสำหรับย่านความถี่ ระบบจะไม่แสดงค่าในตารางสำหรับรายการย่านความถี่นั้น คุณกำหนดค่าเหล่านี้ 2 ชุดสำหรับย่านความถี่ Wi-Fi 2.4 GHz และ 5 GHz ได้แบบอิสระ
อัลกอริทึมนี้จะใช้ค่ากำลังสูงสุดเดียวกันที่กำหนดไว้สำหรับย่านความถี่ของเซลล์ที่รบกวนซ้ำ เช่นเดียวกับอัลกอริทึมการรบกวนจากเครือข่ายใกล้เคียง
อัลกอริทึมจะทํางานดังนี้สําหรับแชแนลเซลล์ที่ใช้งานอยู่แต่ละแชแนล
- สำหรับย่านความถี่ของช่องเซลล์ ระบบจะพยายามค้นหารายการในตารางการค้นหา หากไม่พบรายการในตาราง ระบบจะแสดงผลลัพธ์ว่าไม่มีช่องที่ไม่ปลอดภัยสำหรับช่องนี้
ค้นหาช่อง 2.4 GHz ที่ไม่ปลอดภัยจากฮาร์โมนิกหากมีการกําหนดพารามิเตอร์
- ค้นหาดีกรีฮาร์โมนิก N สำหรับ 2.4 GHz
- คำนวณความถี่สูงตามฮาร์โมนิกและความถี่ต่ำตามฮาร์โมนิกโดยอิงตาม N และสัญญาณขาขึ้นของเซลล์
- ค้นหาช่อง Wi-Fi 20 MHz แรกที่อยู่ภายในขอบเขตล่างของฮาร์โมนิกที่มาจากด้านล่าง
- คํานวณการซ้อนทับของฮาร์โมนิกในช่อง Wi-Fi และทําเครื่องหมายช่องว่าไม่ปลอดภัยหากการซ้อนทับเกินเกณฑ์การซ้อนทับของ Wi-Fi ย่านความถี่ 2.4 GHz
- ค้นหาช่อง Wi-Fi 20 MHz แรกที่อยู่ภายในขอบเขตบนของฮาร์โมนิกที่มาจากด้านบน
- คํานวณการซ้อนทับของฮาร์โมนิกในช่อง Wi-Fi และทําเครื่องหมายช่องว่าไม่ปลอดภัยหากการซ้อนทับเกินเกณฑ์การซ้อนทับของ Wi-Fi ย่านความถี่ 2.4 GHz
- ทำเครื่องหมายช่อง 20 MHz ทุกช่องตรงกลางว่าเป็นช่องที่ไม่ปลอดภัย
ค้นหาช่อง 5 GHz ที่ไม่ปลอดภัยจากฮาร์โมนิกหากมีการกําหนดพารามิเตอร์
- ค้นหาดีกรีฮาร์โมนิก N สำหรับ 5 GHz หาก N เป็น 0 ให้ข้ามไปยังขั้นตอนที่ 5
- คํานวณความถี่สูงตามฮาร์โมนิกและความถี่ต่ำตามฮาร์โมนิกโดยอิงตาม N และสัญญาณขาขึ้นของเซลล์
ค้นหาช่อง 20 Mhz ที่ไม่ปลอดภัย
- ค้นหาช่อง Wi-Fi 20 MHz แรกที่อยู่ภายในขอบเขตล่างของฮาร์โมนิกที่มาจากด้านล่าง
- คํานวณการซ้อนทับของฮาร์โมนิกในช่อง Wi-Fi และทําเครื่องหมายช่องว่าไม่ปลอดภัยหากการซ้อนทับเกินเกณฑ์การซ้อนทับของ Wi-Fi 2.4 GHz
- ค้นหาช่อง Wi-Fi 20 MHz แรกที่อยู่ภายในขีดจำกัดบนของฮาร์โมนิกที่มาจากด้านบน
- คํานวณการซ้อนทับของฮาร์โมนิกในช่อง Wi-Fi และทําเครื่องหมายช่องว่าไม่ปลอดภัยหากการซ้อนทับเกินเกณฑ์การซ้อนทับของ Wi-Fi 2.4 GHz
- ทำเครื่องหมายช่องทุกๆ 20 MHz ตรงกลางว่าเป็นช่องที่ไม่ปลอดภัยซึ่งมีขีดจำกัดกำลังที่ระบุ
ค้นหาช่อง 40 MHz, 80 MHz, 160 MHz ที่ไม่ปลอดภัย
- ทำซ้ำขั้นตอนที่ 3ก แต่ใช้ความถี่ 40 MHz, 80 MHz, 160 MHz
- แทนที่จะคำนวณการซ้อนทับของช่องที่ขอบฮาร์โมนิก ให้ใช้การซ้อนทับที่คำนวณแล้วจากช่องที่เป็นส่วนประกอบที่มีขนาดเล็กกว่าซ้ำ (เช่น หากช่อง 20 MHz 2 ช่องรวมกันเป็นช่อง 40 MHz และมีการซ้อนทับ 30% และ 90% ค่าเฉลี่ยของการซ้อนทับสำหรับช่อง 40 MHz จะเป็น 60%)
ค้นหาช่อง 2.4 GHz ที่ไม่ปลอดภัยจากการรบกวนกันหากมีการกําหนดพารามิเตอร์ไว้
- ค้นหาสัมประสิทธิ์การมอดูเลตร่วมกัน N, M สำหรับ 2.4 GHz
สำหรับช่อง Wi-Fi 2.4 GHz แต่ละช่อง ให้ทำดังนี้
- คํานวณความถี่ต่ำของการรบกวนระหว่างความถี่และความถี่สูงของการรบกวนระหว่างความถี่ตามช่อง N, M, ช่องสัญญาณ Uplink ของเครือข่ายมือถือ และ Wi-Fi
- คํานวณการซ้อนทับของสัญญาณรบกวนระหว่างความถี่ในดาวน์ลิงก์ของเซลล์ และทําเครื่องหมายช่องว่าไม่ปลอดภัยหากการซ้อนทับเกินเกณฑ์การซ้อนทับของเซลล์ 2.4 GHz
ค้นหาช่อง 5 GHz ที่ไม่ปลอดภัยจากการรบกวนกันหากมีการกําหนดพารามิเตอร์
- ทำขั้นตอนที่ 4 ซ้ำโดยใช้ช่อง Wi-Fi 5 GHz และเกณฑ์ความซ้อนทับของเซลล์ 5 GHz
ใช้ขีดจำกัดกำลังไฟฟ้าของรายการตารางกับช่องที่ไม่ปลอดภัยที่คำนวณแล้ว
ผลลัพธ์สุดท้าย
หลังจากคำนวณทั้ง 2 ชุดของช่องที่ไม่ปลอดภัยจากการรบกวนจากช่องข้างเคียงและการรบกวนจากความถี่ตามฮาร์โมนิกแล้ว ระบบจะคำนวณชุดสุดท้ายโดยนำทั้ง 2 ชุดมารวมกัน (และเลือกขีดจำกัดกำลังไฟฟ้าที่ต่ำกว่าหากมีการชนกัน) และนำช่องเริ่มต้นออกจากชุดหากไม่มีการใช้ข้อจำกัดที่กำหนด
อัลกอริทึมจะทำงานดังนี้
- หากมีการทำเครื่องหมายช่อง Wi-Fi 2.4 GHz ทั้งหมดว่าเป็นช่องที่ไม่ปลอดภัย ระบบจะนำช่อง Wi-Fi 2.4 GHz เริ่มต้นออกจากชุด
- หากทำเครื่องหมายช่อง Wi-Fi 5 GHz ทั้งหมดว่าเป็นช่องที่ไม่ปลอดภัย ระบบจะนำช่อง Wi-Fi 5 GHz เริ่มต้นออกจากชุด
- แสดงผลแชแนลที่ไม่ปลอดภัยชุดสุดท้าย
รูปแบบตารางตรวจสอบ
ตารางการค้นหาจะแสดงในไฟล์ XML ซึ่งอยู่ในสตริงการกําหนดค่า config_wifiCoexTableFilepath
ที่วางซ้อนได้ และกำหนดโดย XSD ต่อไปนี้
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
version="1.0">
<xsd:element name="table">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="entry" minOccurs="1" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="entry">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="rat" type="ratType"/>
<xsd:element name="band" type="xsd:int"/>
<xsd:element name="powerCapDbm" type="xsd:int" minOccurs="0"/>
<xsd:choice>
<xsd:element ref="params"/>
<xsd:element ref="override"/>
</xsd:choice>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:simpleType name="ratType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="LTE"/>
<xsd:enumeration value="NR"/>
</xsd:restriction>
</xsd:simpleType>
<!-- Define coex algorithm parameters -->
<xsd:element name="params">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="neighborThresholds" minOccurs="0"/>
<xsd:element name="harmonicParams2g" type="harmonicParams" minOccurs="0"/>
<xsd:element name="harmonicParams5g" type="harmonicParams" minOccurs="0"/>
<xsd:element name="intermodParams2g" type="intermodParams" minOccurs="0"/>
<xsd:element name="intermodParams5g" type="intermodParams" minOccurs="0"/>
<xsd:element ref="defaultChannels" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="neighborThresholds">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="wifiVictimMhz" type="xsd:int" minOccurs="0"/>
<xsd:element name="cellVictimMhz" type="xsd:int" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:complexType name="harmonicParams">
<xsd:sequence>
<xsd:element name="N" type="xsd:int"/>
<xsd:element name="overlap" type="xsd:int"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="intermodParams">
<xsd:sequence>
<xsd:element name="N" type="xsd:int"/>
<xsd:element name="M" type="xsd:int"/>
<xsd:element name="overlap" type="xsd:int"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="defaultChannels">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="default2g" type="xsd:int" minOccurs="0"/>
<xsd:element name="default5g" type="xsd:int" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<!-- Define algorithm override lists -->
<xsd:element name="override">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="override2g" minOccurs="0"/>
<xsd:element ref="override5g" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="override2g">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="category" type="overrideCategory2g" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="channel" type="xsd:int" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="override5g">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="category" type="overrideCategory5g" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="channel" type="xsd:int" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:simpleType name="overrideCategory2g">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="all"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="overrideCategory5g">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="all"/>
<xsd:enumeration value="20Mhz"/>
<xsd:enumeration value="40Mhz"/>
<xsd:enumeration value="80Mhz"/>
<xsd:enumeration value="160Mhz"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>
ตัวอย่างตาราง XML
ต่อไปนี้คือตัวอย่างตารางการค้นหา XML
<table>
<!-- Entry using algorithm parameters -->
<entry>
<rat>LTE</rat>
<band>40</band>
<powerCapDbm>50</powerCapDbm>
<params>
<neighborThresholds>
<wifiVictimMhz>25</wifiVictimMhz>
<cellVictimMhz>40</cellVictimMhz>
</neighborThresholds>
<harmonicParams2g>
<N>3</N>
<overlap>50</overlap>
</harmonicParams2g>
<harmonicParams5g>
<N>3</N>
<overlap>50</overlap>
</harmonicParams5g>
<intermodParams2g>
<N>-2</N>
<M>1</M>
<overlap>75</overlap>
</intermodParams2g>
<intermodParams5g>
<N>-2</N>
<M>1</M>
<overlap>75</overlap>
</intermodParams5g>
<defaultChannels>
<default2g>6</default2g>
<default5g>36</default5g>
</defaultChannels>
</params>
</entry>
<!-- Entry using the override list -->
<entry>
<rat>LTE</rat>
<band>41</band>
<powerCapDbm>50</powerCapDbm>
<override>
<override2g>
<channel>6</channel>
<channel>11</channel>
...
</override2g>
<override5g>
<category>40Mhz</category>
<channel>34</channel>
...
</override5g>
</override>
</entry>
</table>
การรวมคลื่นความถี่
สำหรับย่านความถี่ฮาร์โมนิกหรือการรบกวนระหว่างย่านความถี่ของสัญญาณขาขึ้นหรือขาลงแต่ละย่านอาจไม่ทับซ้อนกันมากพอที่จะทำให้เกิดสัญญาณรบกวนเมื่อทำงานแยกกัน แต่อาจทับซ้อนกันมากพอเมื่อทำงานร่วมกัน อัลกอริทึมจะพิจารณาช่วงฮาร์โมนิกหรือช่วงการมอดูเลชันร่วมกันแต่ละช่วงแยกกัน และนำช่องที่ไม่ปลอดภัยที่แสดงผลมารวมกัน สำหรับกรณีการมอดูเลตร่วมกัน การดำเนินการนี้หมายถึงการประเมินช่วงการมอดูเลตร่วมกันของ UL แต่ละรายการใน DL แต่ละรายการ
อัลกอริทึมจะไม่แยกความแตกต่างระหว่าง PCELL, PSCELL หรือ SCELL และถือว่ามีค่าเท่ากัน
การเข้าถึงที่รับความช่วยเหลือจากใบอนุญาต
การเข้าถึงที่รับใบอนุญาต (LAA) จะระบุเป็นย่านความถี่ #46 อัลกอริทึมจะถือว่ากลุ่มนี้คล้ายกับกลุ่มอื่นๆ ในกรณีนี้ คุณสามารถตั้งค่าช่อง 5 GHz แบบเต็มเป็นรายการการลบล้างในตารางการค้นหา
อัลกอริทึมการหลีกเลี่ยงช่องจะกำหนดข้อจำกัดที่จำเป็นสำหรับ SoftAP และ Wi-Fi Direct (P2P) สำหรับย่านความถี่ Wi-Fi 5 GHz ทั้งหมด ทั้งนี้ขึ้นอยู่กับข้อกำหนดของผู้ให้บริการ คุณต้องกําหนดค่า carrier
config restrict_5g_softap_wifi_direct_for_laa
เพื่อให้อัลกอริทึมจัดการกรณีการใช้งานนี้ได้ หากแชแนลของเซลล์อยู่ใน LAA และ restrict_5g_softap_wifi_direct_for_laa
คือ true
อัลกอริทึมจะแสดงชุดแชแนลที่ไม่ปลอดภัยที่มีย่านความถี่ 5 GHz ทั้งหมด และตั้งค่า Flag ข้อจำกัดที่จำเป็นสำหรับ SoftAP และ Wi-Fi Direct (P2P)
บริการ Inform Wi-Fi
หลังจากอัลกอริทึมของช่องการทำงานร่วมกันคํานวณช่องที่ไม่ปลอดภัยแล้ว หากต้องการระบุช่องที่ไม่ปลอดภัยและข้อจํากัดของช่องให้กับแอประบบ ให้ใช้โครงสร้างข้อมูล @SystemApi ต่อไปนี้ที่กําหนดไว้ในเฟรมเวิร์ก Android
public final class CoexUnsafeChannel {
public static final int POWER_CAP_NONE
public @WifiAnnotations.WifiBandBasic int getBand();
public int getChannel();
// Returns the specified power cap in dBm, or POWER_CAP_NONE if not specified.
public int getPowerCapDbm();
}
ใช้เมธอดและวิธีการเรียกกลับ WifiManager
@SystemApi ต่อไปนี้เพื่อเปิดใช้แอปในการรับค่าที่อัปเดตเมื่อช่องที่ไม่ปลอดภัยมีการเปลี่ยนแปลง
public static final int COEX_RESTRICTION_WIFI_DIRECT;
public static final int COEX_RESTRICTION_SOFTAP;
public static final int COEX_RESTRICTION_WIFI_AWARE;
// Register a CoexCallback to listen on onCoexUnsafeChannelsChanged callbacks. The callback will be called whenever the unsafe channels change, as well as immediately after registering to get the current values.
public void registerCoexCallback(Executor executor, CoexCallback callback);
public void unregisterCoexCallback(CoexCallback callback);
public abstract static class CoexCallback {
//Gets called whenever getCoexUnsafeChannels()/getCoexRestrictions() have updated values
public void onCoexUnsafeChannelsChanged(List<CoexUnsafeChannels> unsafeChannels, int restrictions);
}
ดำเนินการกับ Wi-Fi
เมื่อบริการ Wi-Fi ได้รับข้อมูลเกี่ยวกับชุดของช่องที่ไม่ปลอดภัย ระบบจะดำเนินการตามความเหมาะสมเพื่อให้แน่ใจว่าระบบจะหลีกเลี่ยงช่องเหล่านั้น ส่วนนี้จะอธิบายลักษณะการทํางานของบริการ Wi-Fi ในสถานการณ์ต่างๆ
แจ้งให้คนขับรถทราบ
เนื่องจากไดรเวอร์มีบทบาทสำคัญในการหลีกเลี่ยงช่อง จึงจำเป็นต้องส่งช่องที่ไม่ปลอดภัยไปยังไดรเวอร์และเฟิร์มแวร์ โดยให้ใช้ IWifiChip
HAL API ต่อไปนี้
สำหรับ AIDL
void setCoexUnsafeChannels(in CoexUnsafeChannel[] unsafeChannels,
in int restrictions)
สำหรับ HIDL (1.5 ขึ้นไป) ให้ทำดังนี้
setCoexUnsafeChannels(vec<CoexUnsafeChannel> unsafeChannels,
bitfield<IfaceType> restrictions);
SoftAP
SoftAP เป็น Use Case หลักในการหลีกเลี่ยงช่องที่ไม่ปลอดภัย ส่วนต่อไปนี้จะอธิบายสถานการณ์ SoftAp หลักที่สามารถใช้การหลีกเลี่ยงช่องด้วย ACS ได้ สถานการณ์อธิบายลักษณะการทํางานของอัลกอริทึมการหลีกเลี่ยงช่อง และไดรเวอร์หรือเฟิร์มแวร์
เริ่ม SoftAP ที่เปิดใช้ ACS (SoftAP ยังไม่ทำงาน)
หากช่องไม่ปลอดภัยและมีข้อจำกัด SoftAP
- เฟรมเวิร์กจะนำช่องที่ไม่ปลอดภัยออกจากรายการ ACS
- หากรายการว่างเปล่า เฟรมเวิร์กจะหยุด SoftAP
หากช่องไม่ปลอดภัยและไม่มีข้อจำกัด
- โปรแกรมควบคุมหรือเฟิร์มแวร์ของผู้ให้บริการจะให้ความสำคัญกับแชแนลที่ปลอดภัยมากกว่าแชแนลที่ไม่ปลอดภัย
SoftAP เปิดอยู่โดยเปิดใช้ ACS และอัปเดตช่องที่ไม่ปลอดภัยแล้ว
หากช่อง SoftAP ไม่ปลอดภัยและมีข้อจำกัดของ SoftAP
- เฟรมเวิร์กจะอัปเดตรายการ ACS โดยนำช่องที่ไม่ปลอดภัยออก
- หากรายการว่างเปล่า เฟรมเวิร์กจะปิด SoftAP
หากช่อง SoftAP ไม่ปลอดภัยและไม่มีข้อจำกัด
- เฟรมเวิร์กจะไม่ดำเนินการใดๆ โปรแกรมควบคุมหรือเฟิร์มแวร์ของผู้ให้บริการจะจัดการการหลีกเลี่ยงช่องที่ไม่ปลอดภัยหรือการใช้ขีดจำกัดกำลังไฟฟ้าหากหลีกเลี่ยงไม่ได้
Wi-Fi Direct (P2P)
หากมีช่องที่ไม่ปลอดภัยซึ่งมีข้อจำกัด Wi-Fi Direct (P2P)
- เฟรมเวิร์กจะส่งคำขอ
wpa_supplicant
เพื่อหลีกเลี่ยงแชแนลที่ไม่ปลอดภัยโดยใช้เมธอด HALISupplicantP2pIface::setDisallowedFrequencies()
- เฟรมเวิร์กจะส่งคำขอ
หากมีช่องที่ไม่ปลอดภัยซึ่งไม่มีข้อจำกัด
- โปรแกรมควบคุมหรือเฟิร์มแวร์ของผู้ให้บริการจะใช้การจำกัดกำลังไฟหากมีการใช้ช่องทางที่ไม่ปลอดภัยซึ่งไม่มีข้อจำกัด Wi-Fi Direct (P2P)
Wi-Fi Aware (NAN)
เฟรมเวิร์กไม่เกี่ยวข้องกับการเลือกช่องสำหรับ Wi-Fi Aware (NAN) และไม่มีการดำเนินการใดๆ กับเฟรมเวิร์ก โปรแกรมควบคุมหรือเฟิร์มแวร์ของผู้ให้บริการจะเป็นผู้รับผิดชอบการหลีกเลี่ยงช่อง Wi-Fi Aware (NAN)
ปิดใช้อัลกอริทึม
หากต้องการปิดใช้การใช้อัลกอริทึมเริ่มต้นและส่งรายการแชแนลที่ไม่ปลอดภัยของคุณเองเพื่อหลีกเลี่ยง ให้กําหนดค่าการวางซ้อน config_wifiDefaultCoexAlgorithmEnabled
หากตั้งค่าการวางซ้อนเป็น "เท็จ" ระบบจะปิดใช้อัลกอริทึมเริ่มต้น จากนั้นคุณสามารถใช้อัลกอริทึมที่เป็นกรรมสิทธิ์ของคุณเองนอกแบนด์เพื่อสร้างรายการแชแนลที่ไม่ปลอดภัยเพื่อเชื่อมต่อกับเฟรมเวิร์กโดยใช้ API ของระบบต่อไปนี้
public void setCoexUnsafeChannels(Set<CoexUnsafeChannel> coexUnsafeChannels,
int coexRestrictions);
ตรวจสอบการติดตั้งใช้งาน
หากต้องการตรวจสอบการติดตั้งใช้งานฟีเจอร์การหลีกเลี่ยงช่องสัญญาณที่ทับซ้อนกันของ Wi-Fi/เครือข่ายมือถือ ให้ใช้การทดสอบต่อไปนี้
การทดสอบ CTS
WifiManagerTest.java
testCoexMethodsShouldFailNoPermission()
testListenOnCoexUnsafeChannels()
การทดสอบ ACTS
WifiManagerTest.py
test_set_get_coex_unsafe_channels()
การทดสอบ VTS
หากมีการใช้ AIDL:
wifi_chip_aidl_test.cpp
TEST_P(WifiChipAidlTest, SetCoexUnsafeChannels)
หากมีการใช้ HIDL:
wifi_chip_hidl_test.cpp
TEST_P(WifiChipHidlTest, setCoexUnsafeChannels)