การหลีกเลี่ยงช่องสัญญาณ Coex ผ่าน Wi-Fi/เซลลูลาร์

คุณลักษณะการหลีกเลี่ยงช่องสัญญาณ coex ของ Wi-Fi/เซลลูลาร์ ซึ่งเปิดตัวใน Android 12 จะระบุและหลีกเลี่ยงการใช้ช่องสัญญาณ Wi-Fi ที่ไม่ปลอดภัย ในกรณีที่อาจมีการรบกวนจาก/ไปยังช่องสัญญาณมือถือ ซึ่งรวมถึงอินเทอร์เฟซต่างๆ เช่น STA, SoftAp, Wi-Fi Direct (P2P), Wi-Fi Aware (NAN)

หน้านี้กล่าวถึงสิ่งต่อไปนี้:

  • ข้อมูลที่โมเด็มมือถือต้องรายงานไปยังเฟรมเวิร์กของ Android
  • อัลกอริทึมที่เฟรมเวิร์ก Wi-Fi ใช้ในการคำนวณช่องสัญญาณ Wi-Fi ที่ควรหลีกเลี่ยง
  • ตารางการกำหนดค่าที่ผู้ผลิตอุปกรณ์ต้องจัดเตรียมสำหรับเฟรมเวิร์ก Wi-Fi
  • API ของระบบ การกำหนดค่า และ HAL API ที่เกี่ยวข้องกับคุณลักษณะการหลีกเลี่ยงช่องทาง
  • พฤติกรรมของกรอบงานในการจัดการการหลีกเลี่ยงช่องทาง
  • พฤติกรรมผู้จำหน่ายชิปสำหรับการจัดการการหลีกเลี่ยงช่องทาง
  • รายละเอียดการใช้งานเพื่อหลีกเลี่ยงช่อง
  • การทดสอบการตรวจสอบพฤติกรรมการหลีกเลี่ยงช่องทาง

พื้นหลัง

สำหรับอุปกรณ์ที่มีเทคโนโลยีเซลลูลาร์ เช่น LTE, 5G NR และ Licensed Assisted Access (LAA) ช่องสัญญาณเซลลูลาร์ที่ใช้งานอาจรบกวนช่องสัญญาณ Wi-Fi ที่ใช้งานอยู่ กรณีนี้เกิดขึ้นเมื่อช่องสัญญาณเซลลูลาร์และ Wi-Fi อยู่ภายในการแยกความถี่สั้น (ช่องสัญญาณเพื่อนบ้าน) หรือเมื่อมีการรบกวนทางฮาร์โมนิกและอินเตอร์มอดูเลต

การรบกวนประเภทนี้จะกลายเป็นปัญหาเมื่อเสาอากาศหนึ่งกำลังส่งสัญญาณและอีกเสาอากาศหนึ่งกำลังรับในเวลาเดียวกัน ในกรณีนี้ เสาอากาศส่งสัญญาณจะท่วมเสาอากาศรับสัญญาณ ซึ่งส่งผลต่อคุณภาพการรับสัญญาณ

เอกสารนี้อ้างถึงเครื่องส่งที่รบกวนว่าเป็น ผู้รุกราน และผู้รับที่ได้รับการแทรกแซงในฐานะ เหยื่อ ช่องสัญญาณ Wi-Fi ที่เป็นผู้รุกรานหรือเหยื่อเรียกว่า ช่องสัญญาณ ที่ ไม่ปลอดภัย

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

คุณลักษณะนี้จะทำการหลีกเลี่ยงช่องสัญญาณโดยการควบคุมช่องสัญญาณ Wi-Fi รูปแบบการหลีกเลี่ยงช่องสัญญาณ Wi-Fi สามารถอธิบายได้เป็นชุดของขั้นตอนนามธรรมสี่ขั้นตอน:

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

รูปแบบการหลีกเลี่ยงช่องทาง

รูปที่ 1 รูปแบบการหลีกเลี่ยงช่องทาง

การรายงานการเปลี่ยนแปลงความถี่เซลลูลาร์

บริการโทรศัพท์รายงานช่องสัญญาณโทรศัพท์เคลื่อนที่ที่ใช้อยู่ในปัจจุบัน เมื่อความถี่ของเครือข่ายโทรศัพท์เคลื่อนที่เปลี่ยนไป โมเด็มจะรายงานข้อมูลนี้ไปยังบริการโทรศัพท์ผ่าน IRadio::PhysicalChannelConfig ข้อมูลนี้รวมถึงข้อบ่งชี้สำหรับการเข้าถึงความช่วยเหลือที่ได้รับอนุญาต (LAA) และการรวมตัวของผู้ให้บริการ (CA)

จาก Android 12 ช่องต่อไปนี้ใน 1.6 IRadio::PhysicalChannelConfig จะให้ข้อมูลที่จำเป็นสำหรับสูตร coex ที่โมเด็มต้องเติม

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 ที่ไม่ปลอดภัย

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

สามารถกำหนด กำลังไฟสูงสุด ได้ในตารางค้นหา หากมีการกำหนดกำลังไฟสูงสุด ช่องสัญญาณที่ไม่ปลอดภัยจะส่งสัญญาณพร้อมกับฝาครอบกำลังไฟที่ให้มา หากไม่มีฝาปิดช่องจ่ายไฟ ช่องจะส่งสัญญาณเต็มกำลัง

โดยทั่วไป คุณลักษณะการหลีกเลี่ยงช่องสัญญาณจะใช้ความพยายามอย่างดีที่สุดเพื่อหลีกเลี่ยงช่องสัญญาณ Wi-Fi ที่ไม่ปลอดภัยเพื่อเพิ่มประสิทธิภาพ แต่ในบางกรณี (เช่น เนื่องจากข้อกำหนดของผู้ให้บริการ) อินเทอร์เฟซบางตัวจึงจำเป็นต้องหลีกเลี่ยงช่องสัญญาณที่ไม่ปลอดภัยสำหรับคลื่นความถี่มือถือบางช่อง ในกรณีดังกล่าว ข้อจำกัดบังคับ จะแสดงเป็นบิตมาสก์ที่มีค่าว่าจะห้ามช่องบางช่อง เช่น Wi-Fi Direct (P2P), SoftAp และ Wi-Fi Aware (NAN) หรือไม่ ในขณะที่ช่องทางที่ไม่ปลอดภัยทำหน้าที่เป็นคำแนะนำไม่ให้ใช้ช่องทางนั้นสำหรับกรณีการใช้งานทั้งหมด ข้อจำกัดที่บังคับจะทำเครื่องหมายกรณีการใช้งานเฉพาะสำหรับการหลีกเลี่ยงที่จำเป็น

หากทุกช่องสัญญาณของแถบความถี่ 2.4GHz หรือ 5GHz ถูกทำเครื่องหมายว่าไม่ปลอดภัย ตารางค้นหาสามารถกำหนดช่องสัญญาณ 2.4GHz เริ่มต้นหรือช่องสัญญาณ 5GHz เริ่มต้นตามแถบความถี่ของเซลล์ที่รบกวนเป็นตัวเลือกที่ปลอดภัยที่สุด แชนเนลเริ่มต้นเหล่านี้จะไม่ถูกรายงานเป็นแชนเนลที่ไม่ปลอดภัยเมื่อแบนด์ที่เหลือถูกรายงานว่าไม่ปลอดภัย

แทนที่รายการ

แนวทางเชิงสูตรมีข้อ จำกัด ในกรณีที่การรบกวนขึ้นอยู่กับแบนด์วิดท์อย่างมาก (และดังนั้นแชนเนลที่มีแบนด์วิดท์ขนาดใหญ่อาจไม่ปลอดภัย แต่ไม่ใช่แชนเนลที่มีแบนด์วิดท์น้อยกว่า) ในกรณีเช่น LAA จะเป็นประโยชน์ที่จะข้ามการคำนวณและใช้รายการช่องทางที่ไม่ปลอดภัยที่ระบุ

เมื่อต้องการทำเช่นนี้ คุณสามารถระบุ รายการแทนที่ ของช่องทางที่ไม่ปลอดภัยในตารางค้นหาสำหรับบางรายการ รายการแทนที่ในรายการตารางหมายความว่าการคำนวณสำหรับช่องสัญญาณเซลล์นั้น ๆ ถูกข้ามและช่องสัญญาณ Wi-Fi ที่ไม่ปลอดภัยสำหรับช่องสัญญาณเซลล์ที่ตรงกันจะถูกระบุโดยรายการแทนที่

สำหรับกรณีที่ไวต่อแบนด์วิดท์ คุณสามารถเลือกหลีกเลี่ยงแบนด์วิดท์บางอย่างได้โดยการระบุแชนเนลบางช่องที่มีแบนด์วิดท์บางอย่างในรายการแทนที่ เนื่องจากหมายเลขช่องสัญญาณ Wi-Fi แต่ละหมายเลขสอดคล้องกับแบนด์วิดท์ที่ระบุ

รายการแทนที่จะแสดงด้วยรายการหมายเลขช่องสัญญาณหรือคีย์เวิร์ดของหมวดหมู่ที่กำหนดไว้ล่วงหน้าสำหรับแต่ละย่านความถี่ Wi-Fi:

หมวดหมู่ 2g:

  • all (แบนด์ 2.4GHz ทั้งหมด)

หมวดหมู่ 5g:

  • all (แบนด์ 5GHz ทั้งหมด)
  • 20mhz เฮิร์ตซ์ (ช่อง 5GHz 20MHz)
  • 40mhz เฮิร์ตซ์(5กิกะเฮิร์ตซ์40เมกะเฮิร์ตซ์ช่อง)
  • 80mhz เฮิร์ตซ์ (ช่อง 5GHz 80MHz)
  • 160 เมกะเฮิร์ตซ์ (ช่อง 5GHz 160mhz )

การรบกวนช่องสัญญาณข้างเคียง

ในการระบุการรบกวนของช่องสัญญาณที่อยู่ใกล้เคียง อัลกอริธึมการหลีกเลี่ยง coex จะทำให้แน่ใจว่าระยะห่าง ΔF ระหว่างช่องสัญญาณของผู้รุกรานและช่องเหยื่อไม่อยู่ภายใต้ เกณฑ์ ที่กำหนด

การรบกวนของช่องสัญญาณ

รูปที่ 2 ระยะห่างระหว่างช่องทางผู้รุกรานและเหยื่อ

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

พารามิเตอร์การรบกวนที่อยู่ใกล้เคียง

  • wifiVictimMhz : เกณฑ์ระยะทาง MHz สำหรับเหยื่อ Wi-Fi (อัปลิงค์ของเซลล์)
  • cellVictimMhz : เกณฑ์ระยะทาง MHz สำหรับเหยื่อเซลล์ (เซลล์ดาวน์ลิงก์)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ผลสุดท้าย

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

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

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

ใบอนุญาตช่วยการเข้าถึง

License Assisted Access (LAA) ถูกระบุว่าเป็นวงดนตรี #46 อัลกอริธึมถือว่าแบนด์นี้คล้ายกับแบนด์อื่นๆ ในกรณีนี้ คุณสามารถตั้งค่าช่องสัญญาณ 5Ghz แบบเต็มเป็นรายการแทนที่ในตารางค้นหาได้

อัลกอริธึมการหลีกเลี่ยงช่องสัญญาณจะกำหนดข้อจำกัดบังคับสำหรับ SoftAP และ Wi-Fi Direct (P2P) สำหรับย่านความถี่ 5GHz Wi-Fi ทั้งหมด ทั้งนี้ขึ้นอยู่กับข้อกำหนดของผู้ให้บริการ สำหรับอัลกอริธึมในการจัดการกรณีการใช้งานนี้ ต้องกำหนดค่าคอนฟิกของผู้ให้บริการ restrict_5g_softap_wifi_direct_for_laa หากช่องสัญญาณมือถืออยู่บน LAA และ restrict_5g_softap_wifi_direct_for_laa เป็น true อัลกอริธึมจะคืนค่าชุดช่องสัญญาณที่ไม่ปลอดภัยด้วยย่านความถี่ 5Ghz ทั้งหมด และตั้งค่าสถานะการจำกัดที่บังคับสำหรับ SoftAP และ Wi-Fi Direct (P2P)

แจ้งบริการ Wi-Fi

หลังจากที่อัลกอริทึมช่อง coex คำนวณช่องสัญญาณที่ไม่ปลอดภัย เพื่อให้แอประบบของคุณมีช่องสัญญาณที่ไม่ปลอดภัยและข้อจำกัด ให้ใช้โครงสร้างข้อมูล @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 ในสถานการณ์ต่างๆ

แจ้งคนขับ

เนื่องจากไดรเวอร์มีบทบาทสำคัญในการหลีกเลี่ยงช่องสัญญาณ จึงจำเป็นต้องถ่ายทอดช่องสัญญาณที่ไม่ปลอดภัยไปยังไดรเวอร์และเฟิร์มแวร์ ในการดำเนินการนี้ ให้ใช้ 1.5::IWifiChip HAL API

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. ไม่มีการดำเนินการตามกรอบงาน ไดรเวอร์/เฟิร์มแวร์ของผู้จำหน่ายจะจัดการกับช่องทางที่ไม่ปลอดภัยหรือใช้ฝาครอบไฟหากไม่สามารถหลีกเลี่ยงได้

ไวไฟไดเร็ค (P2P)

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

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

    1. ไดรเวอร์/เฟิร์มแวร์ของผู้จำหน่ายใช้ปลั๊กไฟ หากใช้ช่องสัญญาณที่ไม่ปลอดภัยโดยไม่มีข้อจำกัด Wi-Fi Direct (P2P)

ตระหนักถึง Wi-Fi (NAN)

กรอบงานไม่เกี่ยวข้องกับการเลือกช่องสัญญาณสำหรับ Wi-Fi Aware (NAN) และจะไม่มีการดำเนินการกับกรอบงาน ไดรเวอร์/เฟิร์มแวร์ของผู้จำหน่ายมีหน้าที่ในการหลีกเลี่ยงช่องสัญญาณ Wi-Fi Aware (NAN)

ปิดการใช้งานอัลกอริทึม

หากคุณต้องการปิดการใช้งานอัลกอริธึมที่เป็นค่าเริ่มต้น และส่งรายการแชนเนลที่ไม่ปลอดภัยเพื่อหลีกเลี่ยง ให้กำหนดค่าโอเวอร์ config_wifiDefaultCoexAlgorithmEnabled หากตั้งค่าโอเวอร์เลย์เป็นเท็จ อัลกอริทึมเริ่มต้นจะถูกปิดใช้งาน จากนั้น คุณสามารถใช้อัลกอริธึมที่เป็นเอกสิทธิ์เฉพาะของตนเองเพื่อสร้างรายการช่องสัญญาณที่ไม่ปลอดภัยเพื่อนำไปใช้กับเฟรมเวิร์กโดยใช้ API ของระบบต่อไปนี้

public void setCoexUnsafeChannels(Set<CoexUnsafeChannel> coexUnsafeChannels,
  int coexRestrictions);

การตรวจสอบการใช้งาน

หากต้องการตรวจสอบการใช้งานคุณลักษณะการหลีกเลี่ยงช่องสัญญาณ coex ของ Wi-Fi/เซลลูลาร์ ให้ใช้การทดสอบต่อไปนี้

การทดสอบ CTS

  • WifiManagerTest.java

    • testCoexMethodsShouldFailNoPermission()
    • testListenOnCoexUnsafeChannels()

การทดสอบ ACTS

  • WifiManagerTest.py

    • test_set_get_coex_unsafe_channels()

การทดสอบ VTS

  • wifi_chip_hidl_test.cpp

    • TEST_P(WifiChipHidlTest, setCoexUnsafeChannels)