การหลีกเลี่ยงช่องสัญญาณร่วมของ Wi-Fi และเครือข่ายมือถือ

ฟีเจอร์การหลีกเลี่ยงช่องสัญญาณร่วม 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 ขั้นตอน ดังนี้

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

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

  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, ช่องแบนด์วิดท์ที่ใหญ่กว่า ซึ่งมีช่องดังกล่าว (เช่น 40 MHz, 80 MHz) และทุกช่อง ที่ต่ำกว่าของย่านความถี่เดียวกันกับช่องที่ไม่ปลอดภัย
    2. หากส่วนบนของแถบความถี่ Wi-Fi มีความเสี่ยง ให้ทำดังนี้

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

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

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

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

ฮาร์มอนิกหรือการบิดเบือนอินเตอร์มอดูเลชัน

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

$$ 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 และสัมประสิทธิ์การอินเตอร์มอดูเลชัน 2 ค่า $ M $ และ $ N $

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

การคำนวณช่องสัญญาณที่ไม่ปลอดภัย การบิดเบือนอินเตอร์โมดูเลชัน

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

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

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

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

  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>

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

สำหรับการรวมคลื่นความถี่ (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)

  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 หากตั้งค่าภาพซ้อนเป็น false ระบบจะปิดใช้อัลกอริทึมเริ่มต้น จากนั้นคุณสามารถใช้อัลกอริทึมที่เป็นกรรมสิทธิ์แบบ 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)