เมื่อไม่กี่วันก่อน เราได้เขียนบทความเกี่ยวกับโปรเจกต์ ESP-SDR ที่เปลี่ยน ESP32 ให้กลายเป็นเครื่องรับสัญญาณ SDR(Software-Defined Radio) และปัจจุบันยังสามารถ ส่งสัญญาณ SDR ได้ด้วย แต่การส่งข้อมูลผ่าน UART มีข้อจำกัดด้านความเร็ว ทำให้ไม่สามารถรองรับอัตราการสุ่มตัวอย่างได้ทัน ล่าสุดนักพัฒนา h0m3us3r ได้ได้เผยแพร่โปรเจกต์โอเพนซอร์ส w1700k-sdr ซึ่งเปลี่ยนเราเตอร์ Wi-Fi 7 รุ่น Gemtek W1700K ให้กลายเป็นเครื่องรับสัญญาณวิทยุแบบ SDR ที่มีแบนด์วิดท์กว้าง
โปรเจกต์นี้ใช้ชิปวิทยุ MediaTek MT7996 ที่ติดตั้งมาในเราเตอร์ เพื่อรับข้อมูลตัวอย่างสัญญาณ I/Q ดิบ ความละเอียด 14 บิต ที่อัตราสูงสุด 320 MSps ครอบคลุมย่านความถี่ 2.4 GHz, 5 GHz และ 6 GHz ข้อมูลที่รับได้จะถูกส่งผ่านการเชื่อมต่อ Ethernet ความเร็ว 10 GbE โดยใช้ชิป SoC Airoha AN7581 ของเราเตอร์ ไปยังคอมพิวเตอร์ Linux จากนั้นผู้ใช้สามารถดูสเปกตรัมสัญญาณและแผนภาพ Waterfall แบบเรียลไทม์ผ่านเว็บเบราว์เซอร์ได้ การทำงานนี้จำเป็นต้องเปลี่ยนเฟิร์มแวร์เดิมของเราเตอร์เป็นระบบ Linux และเฟิร์มแวร์วิทยุที่พัฒนาขึ้นเป็นพิเศษ เพื่อให้สามารถดึงข้อมูล I/Q ดิบออกมาได้ แทนที่จะประมวลผลข้อมูลตามรูปแบบการรับส่งข้อมูล Wi-Fi ทั่วไป

คุณสมบัติและสเปกของ W1700K SDR มีดังนี้
- ฮาร์ดแวร์ที่รองรับ – เราเตอร์ Wi-Fi 7 รุ่น Gemtek W1700K (HW 1.x) และ W1700K2 (HW 2.1)
- SoC – Airoha AN7581 พร้อมโปรเซสเซอร์ Arm Cortex-A53 แบบ quad-core
- วิทยุ – ชิปเซ็ต MediaTek MT7996 Wi-Fi 7 เชื่อมต่อผ่าน PCIe
- MT7976 เป็นวงจร RF Front-end สำหรับย่าน 2.4 GHz
- MT7977 จำนวน 2 ตัว สำหรับย่าน 5 GHz และ 6 GHz
- หน่วยความจำ – DRAM ขนาด 2 GB โดยจัดสรรพื้นที่ 1 GiB เป็นบัฟเฟอร์ DMA Ring สำหรับเก็บข้อมูลตัวอย่างสัญญาณ
- การรับสัญญาณ SDR
- ย่านความถี่ – 2.4 GHz, 5 GHz และ 6 GHz
- ความละเอียดข้อมูล – ตัวอย่าง I/Q ขนาด 14 บิต
- อัตราการสุ่มตัวอย่าง – 40, 80, 160 และ 320 MSps ในทั้งสามย่านความถี่
- รองรับโหมดการสุ่มตัวอย่าง 640/2 เพิ่มเติมใน Band 2 โดยมีข้อจำกัดด้าน Aliasing
- สามารถปรับความถี่ LO ได้อย่างต่อเนื่องภายในช่วงที่วงจร Synthesizer รองรับ รวมถึงเปลี่ยนความถี่ระหว่างการสตรีมข้อมูล
- ควบคุม RF ได้ทั้งแบบ AGC (Automatic Gain Control) และปรับ LNA/Baseband Gain ด้วยตนเอง และรองรับการกรองสัญญาณแอนะล็อกในช่วง 20–320 MHz
- การสตรีม – สตรีม UDP แบบ zero-copy ผ่าน 10GbE พร้อมการแพ็กตัวอย่างแบบไม่สูญเสียข้อมูลที่อัตราสูงสุด

โปรเจกต์นี้ใช้เทคนิคการบรรจุข้อมูลและบัฟเฟอร์เพื่อให้สามารถส่งข้อมูล I/Q อย่างต่อเนื่องด้วยความเร็วสูงได้ ที่อัตราการสุ่มตัวอย่าง 320 MSps วิทยุจะสร้างข้อมูลประมาณ 1.28 GB/s หากจัดเก็บตัวอย่างเชิงซ้อนแต่ละตัวอย่างด้วยข้อมูลขนาด 32 บิต ซึ่งมีปริมาณมากกว่าแบนด์วิดท์ใช้งานจริงของการเชื่อมต่อ 10 GbE เพียงเส้นเดียว
เพื่อแก้ปัญหานี้ เฟิร์มแวร์จึงใช้เทคนิคบีบอัดรูปแบบการจัดเก็บข้อมูลโดยไม่สูญเสียข้อมูล โดยข้อมูลตัวอย่างครึ่งหนึ่งจะถูกจัดเก็บในรูปแบบที่ใช้เพียง 28 บิตต่อตัวอย่างเชิงซ้อน ทำให้ลดปริมาณข้อมูลที่ต้องส่งผ่านเครือข่ายได้ โดยยังคงรักษาข้อมูลเดิมไว้อย่างครบถ้วน จากนั้นข้อมูลจะถูกส่งไปเก็บใน Ring Buffer ขนาด 1 GiB ภายในหน่วยความจำของเราเตอร์ ก่อนส่งต่อไปยังคอมพิวเตอร์ปลายทางผ่าน UDP นักพัฒนาระบุว่าวิธีนี้ทำให้สามารถใช้แบนด์วิดท์เครือข่ายได้สูงถึงประมาณ 9.75 Gbit/s เมื่อเปรียบเทียบกับ ESP-WebSDR ซึ่งรับข้อมูล I/Q เป็นช่วงสั้น ๆ และอาจพลาดสัญญาณที่เกิดขึ้นระหว่างช่วงการจับสัญญาณ W1700K-SDR สามารถสตรีมข้อมูล I/Q ได้อย่างต่อเนื่อง จึงไม่มีช่องว่างดังกล่าว


โปรเจกต์นี้ใช้เฟิร์มแวร์ที่พัฒนาขึ้นเองสำหรับ MT7996 รวมถึงROM Patch และเฟิร์มแวร์แยกสำหรับส่วน WM และ WA นักพัฒนาได้ทำวิศวกรรมย้อนกลับ (Reverse Engineering) ขั้นตอนการเริ่มต้นทำงานและการปรับเทียบวงจรวิทยุของ MediaTek ด้วยการติดตามการทำงานของรีจิสเตอร์ จากนั้นจึงพัฒนาฟังก์ชันที่จำเป็นขึ้นมาใหม่ โดยไม่ต้องโหลดเฟิร์มแวร์กรรมสิทธิ์ของ MediaTek
ตัวรับสัญญาณรองรับการปรับค่าต่าง ๆ ระหว่างการสตรีม ได้แก่ เปลี่ยนความถี่รับสัญญาณ, ปรับ Gain, ปรับค่าฟิลเตอร์ และ สลับย่านความถี่ แต่การเปลี่ยนอัตราการสุ่มตัวอย่างยังจำเป็นต้องหยุดสตรีมข้อมูลก่อน แล้วจึงเริ่มสตรีมใหม่
ซอฟต์แวร์ฝั่งคอมพิวเตอร์ยังมีตัวเลือก Flatten เพื่อแก้ไขการลดทอนการตอบสนองตามความถี่ (Frequency Response Roll-off) ที่เกิดจากฟิลเตอร์ Decimation ของวงจรวิทยุ ช่วยให้การแสดงสเปกตรัมมีระดับสม่ำเสมอมากขึ้น โดยเฉพาะบริเวณใกล้ขอบแบนด์วิดท์ที่กำลังรับอยู่ ผู้ใช้สามารถควบคุมตัวรับสัญญาณผ่านเว็บเบราว์เซอร์ หรือใช้เครื่องมือบรรทัดคำสั่ง (Command Line) เพื่อเปลี่ยนการตั้งค่าและบันทึกข้อมูล I/Q สำหรับนำไปประมวลผลต่อด้วยซอฟต์แวร์อื่นได้
ในการเริ่มต้นใช้งานต้องมีเราเตอร์ W1700K หรือ W1700K2 รุ่นที่รองรับ, อะแดปเตอร์ USB-to-Serial ขนาด 3.3V, สาย Ethernet สำหรับเชื่อมต่อกับพอร์ต LAN3 ของเราเตอร์ระหว่างติดตั้ง และคอมพิวเตอร์ Linux ที่มีการ์ดเครือข่าย 10GbE เชื่อมต่อกับพอร์ต WAN ของเราเตอร์ เราเตอร์ Gemtek W1700K ยังเป็นที่รู้จักในชื่อ Quantum Fiber W1700K Wi-Fi 7 router หากไม่แน่ใจว่าเครื่องที่มีอยู่เป็นเวอร์ชันที่ถูกต้องหรือไม่ hungvu.tech มีบทความ teardown พร้อมภาพบอร์ดให้ดู
ใน Repository มีสคริปต์สำหรับ build เครื่องมือติดตั้ง และคำแนะนำสำหรับสำรองข้อมูล NAND Flash ของเราเตอร์ก่อนเปลี่ยนเฟิร์มแวร์ หลังติดตั้งเสร็จ สามารถเข้าถึงได้ผ่านเว็บเบราว์เซอร์ที่พอร์ต 8073 โค้ดส่วนใหญ่เผยแพร่ภายใต้สัญญาอนุญาต MIT ขณะที่ส่วนประกอบบางส่วน เช่น Kernel, Bootloader และไดรเวอร์ ใช้สัญญาอนุญาต GPL และ BSD
แปลจากบทความ : W1700K SDR turns a Wi-Fi 7 router into a 320 MSps software-defined radio receiver

บรรณาธิการข่าวและบทความภาษาไทย CNX Software ได้มีความสนใจในด้านเทคโนโลยี โดยเฉพาะ Smart Home และ IoT
