ฟีเจอร์การหลีกเลี่ยงช่องสัญญาณร่วม Wi-Fi และเซลลูลาร์ที่เปิดตัวใน Android 12 จะระบุและหลีกเลี่ยงการใช้ช่อง Wi-Fi ที่ไม่ปลอดภัยในกรณีที่อาจมี สัญญาณรบกวนจากหรือไปยังช่องเซลลูลาร์ ซึ่งรวมถึงอินเทอร์เฟซ เช่น STA, SoftAp, Wi-Fi Direct (P2P) และ Wi-Fi Aware (NAN)
หน้านี้จะอธิบายเรื่องต่อไปนี้
- ข้อมูลที่โมเด็มเซลลูลาร์ต้องรายงานไปยังเฟรมเวิร์ก Android
- อัลกอริทึมที่เฟรมเวิร์ก Wi-Fi ใช้ในการคำนวณช่อง Wi-Fi ที่ควรหลีกเลี่ยง
- ตารางการกำหนดค่าที่ผู้ผลิตอุปกรณ์ต้องระบุสำหรับ เฟรมเวิร์ก Wi-Fi
- API ของระบบ การกำหนดค่า และ API ของ HAL ที่เกี่ยวข้องกับฟีเจอร์การหลีกเลี่ยงช่อง
- ลักษณะการทำงานของเฟรมเวิร์กสำหรับการจัดการการหลีกเลี่ยงช่อง
- ลักษณะการทำงานของผู้ให้บริการชิปในการจัดการการหลีกเลี่ยงช่อง
- รายละเอียดการติดตั้งใช้งานสำหรับการหลีกเลี่ยงช่อง
- การทดสอบเพื่อตรวจสอบลักษณะการทำงานของการหลีกเลี่ยงช่อง
ฉากหลัง
สำหรับอุปกรณ์ที่มีเทคโนโลยีเครือข่ายมือถือ เช่น LTE, 5G NR และ Licensed Assisted Access (LAA) ช่องสัญญาณเครือข่ายมือถือที่ใช้อาจรบกวน ช่องสัญญาณ Wi-Fi ที่ใช้ ปัญหานี้เกิดขึ้นเมื่อช่องสัญญาณมือถือและ Wi-Fi อยู่ ภายในช่วงความถี่ที่แยกกันเล็กน้อย (ช่องสัญญาณที่อยู่ติดกัน) หรือเมื่อมี การรบกวนฮาร์มอนิกและการรบกวนอินเตอร์โมดูเลชัน
การรบกวนประเภทนี้จะกลายเป็นปัญหาเมื่อเสาอากาศหนึ่งส่งสัญญาณและ อีกเสารับสัญญาณในเวลาเดียวกัน ในกรณีนี้ เสาอากาศส่งสัญญาณจะ ท่วมเสาอากาศรับสัญญาณ ซึ่งส่งผลต่อคุณภาพการรับสัญญาณ
เอกสารนี้เรียกเครื่องส่งสัญญาณที่รบกวนว่าผู้รุกราน และเรียกเครื่องรับที่ถูกรบกวนว่าเหยื่อ ช่อง Wi-Fi ที่เป็นผู้รุกรานหรือเหยื่อจะเรียกว่าช่องที่ไม่ปลอดภัย
ฟีเจอร์การหลีกเลี่ยงช่องสัญญาณร่วมของ Wi-Fi และเซลลูลาร์มีแนวทางที่สอดคล้องกัน สำหรับการหลีกเลี่ยงช่องสัญญาณ ซึ่งช่วยลดความจำเป็นในการใช้โค้ดที่เป็นกรรมสิทธิ์ซึ่ง แตกต่างจากเฟรมเวิร์ก Wi-Fi นอกจากนี้ ฟีเจอร์นี้ยังช่วยให้ผู้ผลิตอุปกรณ์สามารถกำหนดค่า เปิดใช้ ปิดใช้ และลบล้างฟีเจอร์ได้ด้วย
ฟีเจอร์นี้จะหลีกเลี่ยงช่องโดยการควบคุมช่อง Wi-Fi รูปแบบการหลีกเลี่ยงช่อง Wi-Fi สามารถอธิบายได้เป็นชุดขั้นตอนเชิงนามธรรม 4 ขั้นตอน ดังนี้
- โมเด็มรายงานการเปลี่ยนแปลงความถี่ของเครือข่ายมือถือ
- อัลกอริทึมการหลีกเลี่ยงการรบกวนจะคำนวณช่อง Wi-Fi ที่ไม่ปลอดภัย
- อัลกอริทึมการหลีกเลี่ยงการรบกวนจะแจ้งให้ทราบถึงบริการ Wi-Fi
- เฟรมเวิร์กหรือไดรเวอร์จะดำเนินการ Wi-Fi ที่เหมาะสม
รูปที่ 1 รูปแบบการหลีกเลี่ยงช่อง
รายงานการเปลี่ยนแปลงความถี่ของเครือข่ายมือถือ
บริการโทรศัพท์จะรายงานช่องสัญญาณมือถือที่ใช้งานอยู่ เมื่อความถี่ของเซลลูลาร์ที่ใช้งานมีการเปลี่ยนแปลง โมเด็มจะรายงานข้อมูลนี้ไปยังบริการโทรศัพท์ผ่าน IRadio::PhysicalChannelConfig
ข้อมูลนี้รวมถึงข้อบ่งชี้สำหรับ Licensed Assisted Access (LAA) และ
Carrier Aggregation (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;
/** Uplink cell bandwidth, in kHz */
int32_t cellBandwidthUplink;
}
คำนวณช่องสัญญาณ Wi-Fi ที่ไม่ปลอดภัย
เมื่อโมเด็มรายงานการเปลี่ยนแปลงความถี่ของเครือข่ายมือถือ อัลกอริทึมช่องสัญญาณ Coex จะคำนวณการรบกวนระหว่างช่องสัญญาณมือถือและ 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 การคำนวณช่องที่ไม่ปลอดภัยสำหรับการรบกวนช่องข้างเคียง
ฮาร์มอนิกหรือการบิดเบือนอินเตอร์โมดูเลชัน
สำหรับความเพี้ยนฮาร์โมนิกหรือความเพี้ยนอินเตอร์โมดูเลชัน เครื่องมือ Coex จะคำนวณ ช่วงของสัญญาณฮาร์โมนิกหรือสัญญาณอินเตอร์โมดูเลชัน และประเมินเปอร์เซ็นต์ การทับซ้อนกับช่องสัญญาณที่อาจเป็นช่องสัญญาณที่ถูกรบกวน หากการทับซ้อนเกิน เกณฑ์การทับซ้อน อัลกอริทึมจะถือว่าสถานการณ์นี้ไม่ปลอดภัย การคำนวณเปอร์เซ็นต์การทับซ้อนของฮาร์มอนิกหรือการบิดเบือน อินเตอร์มอดูเลชันในช่องสัญญาณที่ได้รับผลกระทบจะดำเนินการด้วยสมการต่อไปนี้
ในกรณีการบิดเบือนฮาร์มอนิก อัลกอริทึมจะพิจารณาการบิดเบือนฮาร์มอนิก ของช่องอัปลิงก์ของเซลล์ที่ทำให้ช่อง Wi-Fi เสียหาย จากนั้นจะ แทนที่การบิดเบือนสูงและการบิดเบือนต่ำด้วยค่าฮาร์มอนิก ตามความถี่ขาขึ้นของเซลล์และระดับฮาร์มอนิก $ N $
รูปที่ 4 การคำนวณช่องที่ไม่ปลอดภัยสำหรับฮาร์มอนิกดิสทอร์ชัน
ในกรณีการเกิดอินเตอร์โมดูเลชัน อัลกอริทึมจะพิจารณาการบิดเบือนอินเตอร์โมดูเลชัน ของอัปลิงก์ของเซลล์และช่อง Wi-Fi ที่ทำให้ช่องดาวน์ลิงก์ของเซลล์ ได้รับผลกระทบ จากนั้นจะแทนที่การบิดเบือนสูงและการบิดเบือนต่ำ ด้วยค่าการอินเตอร์มอดูเลชันตามความถี่ขาขึ้นของเซลล์ ความถี่ Wi-Fi และสัมประสิทธิ์การอินเตอร์มอดูเลชัน 2 ค่า $ M $ และ $ N $
รูปที่ 5 การคำนวณช่องที่ไม่ปลอดภัยสำหรับการบิดเบือนอินเตอร์มอดูเลชัน
คุณระบุค่า $ M $, $ N $ และค่าการทับซ้อนในตารางการค้นหาต่อ แถบความถี่ของเซลล์ที่รบกวนได้ หากไม่มีการรบกวนสำหรับแถบความถี่ ระบบจะละเว้นค่า ในตารางสำหรับรายการแถบความถี่นั้น คุณกำหนดค่าเหล่านี้ 2 ชุดสำหรับ ย่านความถี่ 2.4 GHz และ 5 GHz ของ Wi-Fi ได้อย่างอิสระ
อัลกอริทึมจะนำค่าขีดจำกัดกำลังเดียวกันที่กำหนดต่อแบนด์ของเซลล์ที่รบกวนกลับมาใช้ใหม่ เช่นเดียวกับอัลกอริทึมการรบกวนที่อยู่ใกล้เคียง
อัลกอริทึมจะทำงานดังนี้สำหรับแต่ละช่องที่ใช้งานอยู่
- สำหรับแบนด์ของช่องสัญญาณโทรศัพท์มือถือ ระบบจะพยายามค้นหารายการในตารางการค้นหา หากไม่พบรายการตาราง ระบบจะแสดงผลโดยไม่มีช่องที่ไม่ปลอดภัยสำหรับช่องนี้
ค้นหาช่อง 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, การอัปลิงก์ของเซลล์ และช่อง 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>
การรวมคลื่นความถี่
สำหรับการรวมคลื่นความถี่ (CA) ช่วงฮาร์มอนิกหรือช่วงอินเตอร์โมดูเลชันสำหรับแต่ละ อัปลิงก์หรือดาวน์ลิงก์อาจไม่ทับซ้อนกันมากพอที่จะทำให้เกิดการรบกวน โดยอิสระ แต่อาจทับซ้อนกันมากพอเมื่อรวมกัน อัลกอริทึม จะพิจารณาช่วงฮาร์มอนิกหรือช่วงอินเตอร์โมดูเลชันแต่ละช่วงแยกกัน และใช้ ยูเนียนของช่องที่ไม่ปลอดภัยที่ส่งคืน สำหรับกรณีการเกิดอินเตอร์โมดูเลชัน หมายความว่า การประเมินช่วงอินเตอร์โมดูเลชันของ UL ทุกรายการไปยัง DL ทุกรายการ
อัลกอริทึมไม่แยกความแตกต่างระหว่าง PCELL, PSCELL หรือ SCELL และถือว่า ทั้ง 3 รายการนี้เท่ากัน
การเข้าถึงที่ได้รับความช่วยเหลือเกี่ยวกับใบอนุญาต
License Assisted Access (LAA) จะระบุเป็นแบนด์ #46 อัลกอริทึมจะถือว่า วงดนตรีนี้คล้ายกับวงดนตรีอื่นๆ ในกรณีนี้ คุณสามารถตั้งค่าช่อง 5 GHz ทั้งหมดเป็นรายการลบล้างในตารางการค้นหาได้
อัลกอริทึมการหลีกเลี่ยงแชแนลจะกำหนดข้อจำกัดที่จำเป็นใน SoftAP และ Wi-Fi Direct (P2P) สำหรับย่านความถี่ Wi-Fi 5 GHz ทั้งหมดตามข้อกำหนดของผู้ให้บริการ
ต้องกำหนดค่า restrict_5g_softap_wifi_direct_for_laa ของผู้ให้บริการ
config เพื่อให้อัลกอริทึมจัดการกรณีการใช้งานนี้ได้ หาก
ช่องสัญญาณเซลล์อยู่ใน LAA และ restrict_5g_softap_wifi_direct_for_laa เป็น true
อัลกอริทึมจะแสดงชุดช่องสัญญาณที่ไม่ปลอดภัยพร้อมย่านความถี่ 5 GHz ทั้งหมด
และตั้งค่าสถานะการจำกัดที่จำเป็นสำหรับ SoftAP และ Wi-Fi Direct (P2P)
แจ้งบริการ 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<CoexUnsafeChannel> 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 หากตั้งค่าภาพซ้อนเป็น false
ระบบจะปิดใช้อัลกอริทึมเริ่มต้น จากนั้นคุณสามารถใช้อัลกอริทึมที่เป็นกรรมสิทธิ์แบบ Out-of-Band ของคุณเองเพื่อสร้างรายการช่องที่ไม่ปลอดภัยเพื่อส่งไปยังเฟรมเวิร์กโดยใช้ System API ต่อไปนี้
public void setCoexUnsafeChannels(Set<CoexUnsafeChannel> coexUnsafeChannels,
int coexRestrictions);
ตรวจสอบการติดตั้งใช้งาน
หากต้องการตรวจสอบความถูกต้องของการใช้งานฟีเจอร์การหลีกเลี่ยงช่องสัญญาณร่วมของ Wi-Fi และเซลลูลาร์ ให้ใช้การทดสอบต่อไปนี้
การทดสอบ CTS
WifiManagerTest.javatestCoexMethodsShouldFailNoPermission()testListenOnCoexUnsafeChannels()
การทดสอบ ACTS
WifiManagerTest.pytest_set_get_coex_unsafe_channels()
การทดสอบ VTS
- หากมีการใช้ AIDL ให้ทำดังนี้
wifi_chip_aidl_test.cppTEST_P(WifiChipAidlTest, SetCoexUnsafeChannels)
- หากมีการใช้ HIDL
wifi_chip_hidl_test.cppTEST_P(WifiChipHidlTest, setCoexUnsafeChannels)