[PR #266] [CLOSED] feat: implement adaptive RF channel selection with noise measurement … #262

Closed
opened 2026-10-22 05:08:25 +00:00 by roman · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/safijari/openpuck/pull/266
Author: @ripps818
Created: 9/2/2026
Status: ❌ Closed

Base: main ← Head: auto-channel


📝 Commits (1)

  • 64a2001 feat: implement adaptive RF channel selection with noise measurement and session migration logic

📊 Changes

10 files changed (+502 additions, -57 deletions)

View changed files

📝 OpenPuck/config.cpp (+12 -1)
📝 OpenPuck/config.h (+2 -0)
📝 OpenPuck/radio.cpp (+93 -2)
📝 OpenPuck/radio.h (+10 -0)
📝 OpenPuck/rf_link.cpp (+74 -26)
📝 OpenPuck/rf_link.h (+3 -1)
📝 OpenPuck/serial_console.cpp (+66 -11)
📝 OpenPuck/webusb_config.cpp (+74 -6)
📝 OpenPuck/webusb_config.h (+2 -0)
📝 docs/index.html (+166 -10)

📄 Description

Addresses 2.4 GHz Wi-Fi interference and signal dropouts discussed in #198.

OpenPuck's default channel 18 (2418 MHz) sits inside Wi-Fi Channel 1. This PR allows dynamically switching to clean frequencies outside or between Wi-Fi bands (e.g., channels 74–80 or guard channels 26/52).

Noise Survey & Auto-Channel: Measures ambient 2.4 GHz noise (rfMeasureChannelNoise) to sweep and adopt the cleanest candidate channel at boot or when degraded by packet loss.
Seamless Live Hopping: Bursts 8 0xE1 frames on the active channel so connected controllers migrate to the new frequency without dropping connection.
Config Persistence: Saves sessCh and autoChannel to cfg.bin.
WebUSB & WebUI: Protocol v22 status blob reporting, on-demand spectrum survey (opcode 0x18 / frame 0xAD), channel selection UI, and live spectrum bar chart.
Console: Adds C (survey spectrum) and C <1..80> (hop and save).
Tested with make check and make build.

(Authored with LLM assistance, verified and tested on hardware.)


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/safijari/openpuck/pull/266 **Author:** [@ripps818](https://github.com/ripps818) **Created:** 9/2/2026 **Status:** ❌ Closed **Base:** `main` ← **Head:** `auto-channel` --- ### 📝 Commits (1) - [`64a2001`](https://github.com/safijari/openpuck/commit/64a200123d24d7f8d34bc213ddc2b3243315821c) feat: implement adaptive RF channel selection with noise measurement and session migration logic ### 📊 Changes **10 files changed** (+502 additions, -57 deletions) <details> <summary>View changed files</summary> 📝 `OpenPuck/config.cpp` (+12 -1) 📝 `OpenPuck/config.h` (+2 -0) 📝 `OpenPuck/radio.cpp` (+93 -2) 📝 `OpenPuck/radio.h` (+10 -0) 📝 `OpenPuck/rf_link.cpp` (+74 -26) 📝 `OpenPuck/rf_link.h` (+3 -1) 📝 `OpenPuck/serial_console.cpp` (+66 -11) 📝 `OpenPuck/webusb_config.cpp` (+74 -6) 📝 `OpenPuck/webusb_config.h` (+2 -0) 📝 `docs/index.html` (+166 -10) </details> ### 📄 Description Addresses 2.4 GHz Wi-Fi interference and signal dropouts discussed in #198. OpenPuck's default channel 18 (2418 MHz) sits inside Wi-Fi Channel 1. This PR allows dynamically switching to clean frequencies outside or between Wi-Fi bands (e.g., channels 74–80 or guard channels 26/52). Noise Survey & Auto-Channel: Measures ambient 2.4 GHz noise (rfMeasureChannelNoise) to sweep and adopt the cleanest candidate channel at boot or when degraded by packet loss. Seamless Live Hopping: Bursts 8 0xE1 frames on the active channel so connected controllers migrate to the new frequency without dropping connection. Config Persistence: Saves sessCh and autoChannel to cfg.bin. WebUSB & WebUI: Protocol v22 status blob reporting, on-demand spectrum survey (opcode 0x18 / frame 0xAD), channel selection UI, and live spectrum bar chart. Console: Adds C (survey spectrum) and C <1..80> (hop and save). Tested with make check and make build. (Authored with LLM assistance, verified and tested on hardware.) --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
roman 2026-10-22 05:08:25 +00:00
Sign in to join this conversation.
No labels
pull-request
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
safijari/openpuck#262
No description provided.