การหลีกเลี่ยงช่อง Wi-Fi/เครือข่ายมือถือ Coex

ฟีเจอร์การหลีกเลี่ยงช่องทาง Wi-Fi/เครือข่ายมือถือ CoEx ที่เปิดตัวใน 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/เครือข่ายมือถือ Coex มอบแนวทางที่สอดคล้องกันสำหรับการหลีกเลี่ยงช่องทาง ซึ่งช่วยลดความจำเป็นในการใช้โค้ดที่เป็นกรรมสิทธิ์ซึ่งแตกต่างจากเฟรมเวิร์ก Wi-Fi นอกจากนี้ ฟีเจอร์นี้ยังช่วยให้ผู้ผลิตอุปกรณ์กำหนดค่า เปิดใช้ ปิดใช้ และลบล้างฟีเจอร์ได้

ฟีเจอร์นี้จะหลีกเลี่ยงช่องสัญญาณโดยการควบคุมช่อง Wi-Fi แผนการหลีกเลี่ยงช่องสัญญาณ Wi-Fi อาจอยู่ในรูปแบบที่แบ่งออกเป็น 4 ขั้นตอน ดังนี้

  1. โมเด็มรายงานการเปลี่ยนแปลงความถี่ของเครือข่ายมือถือ
  2. อัลกอริทึมการหลีกเลี่ยง Coex จะคำนวณช่อง Wi-Fi ที่ไม่ปลอดภัย
  3. อัลกอริทึมการหลีกเลี่ยงการอยู่ร่วมกันจะแจ้งให้บริการ Wi-Fi ทราบ
  4. เฟรมเวิร์กหรือไดรเวอร์ดำเนินการกับ 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 สำหรับเหยื่อเซลล์ (ลิงก์ขาลงของเซลล์)

อัลกอริทึมจะทํางานดังนี้สําหรับแชแนลเซลล์ที่ใช้งานอยู่แต่ละแชแนล

  1. สำหรับย่านของช่อง ให้พยายามค้นหารายการในตารางการค้นหา หากไม่พบรายการที่เปลี่ยนแปลงได้ ระบบจะแสดงผลว่าไม่มีแชแนลที่ไม่ปลอดภัยสำหรับแชแนลเซลล์นั้น
  2. ระบุย่านความถี่ Wi-Fi ที่เสี่ยงและด้านของย่านความถี่ที่สัญญาณรบกวนมาจาก (เช่น ช่อง 2.4 GHz ที่ต่ำกว่า ช่อง 2.4 GHz ที่สูงกว่า ช่อง 5 GHz ที่ต่ำกว่า) โดยอิงตามย่านความถี่ของเครือข่ายมือถือ
  3. หากมี wifiVictimMhz และช่องเซลล์มีการอัปลิงก์และ

    1. หากย่านความถี่ต่ำของ Wi-Fi มีความเสี่ยง

      1. ค้นหาขีดจำกัดบนของช่องที่ไม่ปลอดภัยโดยการเพิ่ม wifiVictimMhz ลงในความถี่สูงสุดของสัญญาณขาขึ้นของเซลล์
      2. ค้นหาช่อง Wi-Fi 20 MHz แรกที่มีขอบล่างทับซ้อนกับขีดจำกัด
      3. ทำเครื่องหมายช่องสัญญาณ Wi-Fi, ช่องสัญญาณแบนด์วิดท์ขนาดใหญ่ทุกช่องที่มีช่องสัญญาณ Wi-Fi (เช่น 40 Mhz, 80 Mhz) และทุกช่องสัญญาณที่ต่ำลงในคลื่นความถี่เดียวกับช่องที่ไม่ปลอดภัย
    2. หากบริเวณบนของย่านความถี่ Wi-Fi มีความเสี่ยง

      1. ค้นหาขีดจำกัดล่างของช่องที่ไม่ปลอดภัยโดยหัก wifiVictimMhz ออกจากความถี่ต่ำสุดของสัญญาณขาขึ้นของเครือข่ายมือถือ
      2. ค้นหาช่อง Wi-Fi ช่องแรกที่ขอบด้านบนซ้อนทับกับขีดจำกัด
      3. ทำเครื่องหมายช่องสัญญาณ Wi-Fi ซึ่งเป็นช่องสัญญาณขนาดใหญ่ทุกช่องที่มีช่องสัญญาณ Wi-Fi (เช่น 40M hz, 80 Mhz) และช่องสัญญาณที่สูงกว่าทุกช่องในย่านความถี่เดียวกับช่องที่ไม่ปลอดภัย
  4. หากมี cellVictimMhz และช่องเซลล์มีดาวน์ลิงก์

    1. ดําเนินการขั้นตอนที่ 3 โดยใช้ cellVictimMhz เป็นเกณฑ์ และเปรียบเทียบกับดาวน์ลิงก์ของเครือข่ายมือถือแทนอัปลิงก์ของเครือข่ายมือถือ
  5. ใช้ขีดจำกัดกำลังไฟฟ้าของรายการตารางกับช่องที่ไม่ปลอดภัยที่คำนวณแล้ว

การคํานวณช่องที่ไม่ปลอดภัย

รูปที่ 3 การคำนวณช่องที่ไม่ปลอดภัยสำหรับการรบกวนจากช่องใกล้เคียง

การบิดเบือนเชิงฮาร์โมนิกหรือการบิดเบือนจากการรบกวนกันของสัญญาณ

สำหรับความผิดเพี้ยนฮาร์โมนิกหรือการรบกวนกันของสัญญาณ เครื่องมือการทำงานร่วมกันจะคำนวณช่วงของสัญญาณฮาร์โมนิกหรือการรบกวนกันของสัญญาณ และประเมินเปอร์เซ็นต์การซ้อนทับกับแชแนลที่อาจได้รับผลกระทบ หากการซ้อนทับเกินเกณฑ์การซ้อนทับ อัลกอริทึมจะถือว่านี่เป็นสถานการณ์ที่ไม่ปลอดภัย การคํานวณเปอร์เซ็นต์การซ้อนทับของสัญญาณรบกวนฮาร์โมนิกหรือการรบกวนระหว่างความถี่ในช่องที่ได้รับผลกระทบจะทําโดยใช้สมการต่อไปนี้

$$ overlap = \frac{min(distortion_{high}, victim_{high}) - max(distortion_{low}, victim_{low})}{victim_{bandwidth}} $$

ในกรณีการบิดเบือนฮาร์โมนิก อัลกอริทึมจะพิจารณาการบิดเบือนฮาร์โมนิกของช่องสัญญาณขาขึ้นของเครือข่ายมือถือที่ส่งผลกระทบต่อช่อง Wi-Fi จากนั้นระบบจะแทนที่ระดับการบิดเบือนสูงและการบิดเบือนต่ำด้วยค่าฮาร์โมนิกโดยอิงตามความถี่ของสัญญาณขาขึ้นของเซลล์และระดับฮาร์โมนิก $ N $

$$ harmonic_{high} = N * uplink_{high} $$
$$ harmonic_{low} = N * uplink_{low} $$

ความผิดเพี้ยนตามฮาร์โมนิกของการคำนวณช่องที่ไม่ปลอดภัย

รูปที่ 4 การคำนวณช่องสัญญาณที่ไม่ปลอดภัยสำหรับการบิดเบี้ยวแบบฮาร์มอนิก

ในกรณีของการอินเทอร์โมเดชัน อัลกอริทึมจะพิจารณาการบิดเบี้ยวของอัปลิงก์เซลล์และช่องสัญญาณ Wi-Fi ที่ทำให้ช่องลิงก์ดาวน์ลิงก์ของเซลล์เป็นเหยื่อ จากนั้นจะแทนที่ความผิดเพี้ยนระดับสูงและความเพี้ยนระดับต่ำ ด้วยค่าอินเตอร์โมเดชันตามความถี่อัปลิงก์ของเซลล์, ความถี่ Wi-Fi และค่าสัมประสิทธิ์การกล้ำสัญญาณสองค่าคือ $ M $, $ N $

$$ intermod_{high} = |M*wifi_{high} + N*uplink_{high}| $$
$$ intermod_{low} = |M*wifi_{low} + N*uplink_{low}| $$

การบิดเบือนการประมาณค่าช่องที่ไม่ปลอดภัย

รูปที่ 5 การคํานวณช่องที่ไม่ปลอดภัยสําหรับการบิดเบือนจากการรบกวนกัน

คุณสามารถระบุค่า $ M $, $ N $ และค่าที่ซ้อนทับในตารางการค้นหาตามย่านความถี่ของเซลล์ที่รบกวน ถ้าย่านความถี่ไม่มีการรบกวน ค่าจะไม่แสดงในตารางสำหรับรายการย่านความถี่นั้น ค่าเหล่านี้ 2 ชุดสำหรับย่านความถี่ Wi-Fi 2.4 GHz และ 5 GHz สามารถกำหนดแยกกันได้

อัลกอริทึมนี้จะใช้ค่ากำลังสูงสุดเดียวกันที่กำหนดไว้สำหรับย่านความถี่ของเซลล์ที่รบกวนซ้ำอีกครั้ง ซึ่งคล้ายกับอัลกอริทึมการรบกวนจากเครือข่ายใกล้เคียง

อัลกอริทึมจะทํางานดังนี้สําหรับแชแนลเซลล์ที่ใช้งานอยู่แต่ละแชแนล

  1. สำหรับย่านความถี่ของช่องเซลล์ ระบบจะพยายามค้นหารายการในตารางการค้นหา หากไม่พบรายการในตาราง ระบบจะแสดงผลลัพธ์ว่าไม่มีช่องที่ไม่ปลอดภัยสำหรับช่องนี้
  2. ค้นหาช่อง 2.4 GHz ที่ไม่ปลอดภัยจากฮาร์โมนิกหากมีการกําหนดพารามิเตอร์ไว้

    1. ค้นหาดีกรีฮาร์โมนิก N สำหรับ 2.4 GHz
    2. คำนวณความถี่สูงตามฮาร์โมนิกและความถี่ต่ำตามฮาร์โมนิกโดยอิงตาม N และสัญญาณขาขึ้นของเซลล์
    3. ค้นหาช่องสัญญาณ Wi-Fi 20 MHz แรกที่อยู่ภายในขอบเขตล่างของฮาร์มอนิกที่มาจากด้านล่าง
    4. คำนวณการทับซ้อนของฮาร์มอนิกผ่านช่องสัญญาณ Wi-Fi และทำเครื่องหมายช่องว่าไม่ปลอดภัยหากการทับซ้อนดังกล่าวเกินเกณฑ์การทับซ้อน Wi-Fi 2.4 GHz
    5. ค้นหาช่อง Wi-Fi 20 MHz แรกที่อยู่ภายในขอบเขตบนของฮาร์โมนิกที่มาจากด้านบน
    6. คํานวณการซ้อนทับของฮาร์โมนิกในช่อง Wi-Fi และทําเครื่องหมายช่องว่าไม่ปลอดภัยหากการซ้อนทับเกินเกณฑ์การซ้อนทับของ Wi-Fi ย่านความถี่ 2.4 GHz
    7. ทำเครื่องหมายช่อง 20 MHz ทุกช่องตรงกลางว่าเป็นช่องที่ไม่ปลอดภัย
  3. ค้นหาช่องสัญญาณ 5 GHz ที่ไม่ปลอดภัยจากฮาร์มอนิกหากมีการกำหนดพารามิเตอร์ไว้

    1. หาค่าฮาร์มอนิกองศา N ของ 5 GHz หาก N เป็น 0 ให้ข้ามไปยังขั้นตอนที่ 5
    2. คำนวณความถี่สูงตามฮาร์โมนิกและความถี่ต่ำตามฮาร์โมนิกโดยอิงตาม N และสัญญาณขาขึ้นของเซลล์
    3. ค้นหาช่องความถี่ 20 Mhz ที่ไม่ปลอดภัย

      1. ค้นหาช่อง Wi-Fi 20 MHz แรกที่อยู่ภายในขอบเขตล่างของฮาร์โมนิกที่มาจากด้านล่าง
      2. คํานวณการซ้อนทับของฮาร์โมนิกในช่อง Wi-Fi และทําเครื่องหมายช่องว่าไม่ปลอดภัยหากการซ้อนทับเกินเกณฑ์การซ้อนทับของ Wi-Fi 2.4 GHz
      3. หาช่องสัญญาณ Wi-Fi 20 MHz แรกที่อยู่ภายในขอบเขตบนของฮาร์มอนิกที่มาจากด้านบน
      4. คํานวณการซ้อนทับของฮาร์โมนิกในช่อง Wi-Fi และทําเครื่องหมายช่องว่าไม่ปลอดภัยหากการซ้อนทับเกินเกณฑ์การซ้อนทับของ Wi-Fi 2.4 GHz
      5. ทำเครื่องหมายช่อง 20 MHz ทุกๆ ช่องเป็นช่องที่ไม่ปลอดภัยโดยมีขีดจำกัดพลังงานที่ระบุไว้
    4. ค้นหาช่อง 40 MHz, 80 MHz, 160 MHz ที่ไม่ปลอดภัย

      1. ทำซ้ำขั้นตอนที่ 3ก แต่ใช้ความถี่ 40 MHz, 80 MHz, 160 MHz
      2. แทนที่จะคำนวณการซ้อนทับของช่องที่ขอบฮาร์โมนิก ให้ใช้การซ้อนทับที่คำนวณแล้วจากช่องที่เป็นส่วนประกอบที่มีขนาดเล็กกว่าซ้ำ (เช่น หากช่อง 20 MHz 2 ช่องรวมกันเป็นช่อง 40 MHz และมีการซ้อนทับ 30% และ 90% ค่าเฉลี่ยของการซ้อนทับสำหรับช่อง 40 MHz จะเป็น 60%)
  4. ค้นหาช่อง 2.4 GHz ที่ไม่ปลอดภัยจากการรบกวนกันหากมีการกําหนดพารามิเตอร์ไว้

    1. ค้นหาสัมประสิทธิ์การมอดูเลตร่วมกัน N, M สำหรับ 2.4 GHz
    2. สำหรับช่อง Wi-Fi 2.4 GHz แต่ละช่อง ให้ทำดังนี้

      1. คำนวณความถี่ต่ำและการอินเตอร์โมเมนต์ความถี่สูงตามการมอเตอร์ไซค์แบบ N, M, อัปลิงก์ของเซลล์ และช่อง Wi-Fi
      2. คํานวณการซ้อนทับของสัญญาณรบกวนระหว่างความถี่ในดาวน์ลิงก์ของเซลล์ และทําเครื่องหมายช่องว่าไม่ปลอดภัยหากการซ้อนทับเกินเกณฑ์การซ้อนทับของเซลล์ 2.4 GHz
  5. ค้นหาช่องสัญญาณ 5 GHz ที่ไม่ปลอดภัยจากการกล้ำสัญญาณหากมีการกำหนดพารามิเตอร์ไว้

    1. ทำซ้ำขั้นตอนที่ 4 โดยใช้ช่องสัญญาณ Wi-Fi 5 GHz และเกณฑ์ความคาบเกี่ยวกันของเซลล์ 5 GHz
  6. ใช้ขีดจำกัดพลังงานของรายการในตารางกับแชแนลที่ไม่ปลอดภัยที่คำนวณแล้ว

ผลขั้นสุดท้าย

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

อัลกอริทึมจะทำงานดังนี้

  1. หากมีการทำเครื่องหมายช่อง Wi-Fi 2.4 GHz ทั้งหมดว่าเป็นช่องที่ไม่ปลอดภัย ระบบจะนำช่อง Wi-Fi 2.4 GHz เริ่มต้นออกจากชุด
  2. หากมีการทำเครื่องหมายช่องสัญญาณ Wi-Fi 5 GHz ทุกช่องว่าเป็นช่องที่ไม่ปลอดภัย ให้นำช่องสัญญาณ Wi-Fi 5 GHz เริ่มต้นออกจากชุด
  3. แสดงช่องที่ไม่ปลอดภัยชุดสุดท้าย

รูปแบบตารางตรวจสอบ

ตารางการค้นหาจะแสดงในไฟล์ 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>

การรวมคลื่นความถี่

สำหรับย่านความถี่ฮาร์โมนิกหรือการมอดูเลชันร่วมกันของสัญญาณสำหรับการรับส่งข้อมูลแต่ละทาง (Uplink หรือ Downlink) อาจไม่ทำให้เกิดความทับซ้อนมากพอที่จะก่อให้เกิดการรบกวนเมื่อทำงานแยกกัน แต่อาจทำให้เกิดความทับซ้อนมากพอเมื่อทำงานร่วมกัน อัลกอริทึมจะพิจารณาแต่ละช่วงฮาร์มอนิกหรือช่วงระหว่างการปรับค่าอย่างอิสระและใช้การรวมของช่องทางที่ไม่ปลอดภัยที่ส่งกลับมา สำหรับกรณีการมอดูเลตร่วมกัน การดำเนินการนี้หมายถึงการประเมินช่วงการมอดูเลตร่วมกันของ 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 เป็นกรณีการใช้งานหลักในการหลีกเลี่ยงช่องทางที่ไม่ปลอดภัย ส่วนต่อไปนี้จะอธิบายสถานการณ์ SoftAp หลักๆ ที่สามารถใช้การหลีกช่องด้วย ACS ได้ สถานการณ์อธิบายลักษณะการทํางานของอัลกอริทึมการหลีกเลี่ยงช่อง และไดรเวอร์หรือเฟิร์มแวร์

เริ่ม SoftAP ที่เปิดใช้ ACS (SoftAP ยังไม่ทำงาน)

  1. หากช่องไม่ปลอดภัยและมีข้อจำกัด SoftAP

    1. เฟรมเวิร์กจะนำช่องที่ไม่ปลอดภัยออกจากรายการ ACS
    2. หากรายการว่างเปล่า เฟรมเวิร์กจะหยุด SoftAP
  2. หากช่องไม่ปลอดภัยและไม่มีข้อจำกัด

    1. โปรแกรมควบคุมหรือเฟิร์มแวร์ของผู้ให้บริการจะให้ความสำคัญกับแชแนลที่ปลอดภัยมากกว่าแชแนลที่ไม่ปลอดภัย

SoftAP เปิดอยู่โดยเปิดใช้ ACS และอัปเดตช่องที่ไม่ปลอดภัยแล้ว

  1. หากช่อง SoftAP ไม่ปลอดภัยและมีข้อจำกัดของ SoftAP

    1. เฟรมเวิร์กจะอัปเดตรายการ ACS โดยการนำช่องที่ไม่ปลอดภัยออก
    2. หากรายการว่างเปล่า เฟรมเวิร์กจะปิด SoftAP
  2. หากช่อง SoftAP ไม่ปลอดภัยและไม่มีข้อจำกัด

    1. เฟรมเวิร์กนี้ไม่ต้องดำเนินการใดๆ โปรแกรมควบคุมหรือเฟิร์มแวร์ของผู้ให้บริการจะจัดการการหลีกเลี่ยงช่องที่ไม่ปลอดภัยหรือการใช้การจำกัดกำลังไฟฟ้าหากหลีกเลี่ยงไม่ได้

Wi-Fi Direct (P2P)

  1. หากมีช่องที่ไม่ปลอดภัยซึ่งมีข้อจำกัด Wi-Fi Direct (P2P)

    1. เฟรมเวิร์กจะขอให้ wpa_supplicant หลีกเลี่ยงแชแนลที่ไม่ปลอดภัยโดยใช้เมธอด HAL ISupplicantP2pIface::setDisallowedFrequencies()
  2. หากมีช่องที่ไม่ปลอดภัยซึ่งไม่มีข้อจำกัด

    1. ไดร์เวอร์หรือเฟิร์มแวร์ของผู้ให้บริการจะใช้การจำกัดกำลังไฟหากมีการใช้ช่องทางที่ไม่ปลอดภัยซึ่งไม่มีข้อจำกัด 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)