ฟีเจอร์การหลีกเลี่ยงช่องสัญญาณร่วม 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
ข้อมูลนี้รวมถึงข้อบ่งชี้สำหรับการเข้าถึงแบบมีผู้ช่วยที่ได้รับอนุญาต (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 ที่ไม่ปลอดภัย
เมื่อโมเด็มรายงานการเปลี่ยนแปลงความถี่ของเครือข่ายมือถือ อัลกอริทึมช่องสัญญาณ 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<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
หากตั้งค่าการวางซ้อนเป็น "เท็จ"
ระบบจะปิดใช้อัลกอริทึมเริ่มต้น จากนั้นคุณสามารถใช้อัลกอริทึมที่เป็นกรรมสิทธิ์แบบ Out-of-Band ของคุณเองเพื่อสร้างรายการช่องที่ไม่ปลอดภัยเพื่อส่งไปยังเฟรมเวิร์กโดยใช้ System 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)