openHop Modem v1.2.0 expands the project to 20 supported firmware targets, adds two new RAK hardware targets, fixes receive-versus-transmit race conditions, aligns SX1262 configuration across supported boards, and strengthens firmware release packaging.
Highlights
- Added RAK4631 WisMesh Ethernet support using the RAK13800/W5100S.
- Added RAK3401 + RAK13302 support.
- Fixed TX and CAD operations interrupting incoming LoRa packets.
- Restored continuous RX correctly after CAD operations.
- Standardized SX1262 current limit, boosted RX gain, and sensitivity settings across supported boards.
- Updated all supported firmware variants to v1.2.0.
- Removed the misleading Auto CAD: Off diagnostic row.
- Added release validation to prevent hardware variants from being silently omitted from GitHub Releases.
- No modem wire-protocol changes or host configuration migrations are required.
New Hardware Support
RAK4631 WisMesh Ethernet
Added the dedicated rak4631_wismesh_eth target for the RAK4631 with RAK13800/W5100S Ethernet.
Features include:
- Ethernet openHop modem transport
- Authenticated HTTP management
- Persistent hostname, network, modem, and authentication settings
- Static network configuration
- CRC-protected dual-record configuration storage
- Bounded W5100S receive and request handling
- Battery and runtime telemetry
- Automatic reboot after network or hostname changes
- Bluetooth DFU firmware updates
- USB DFU recovery
Configuration persistence now uses bounded direct nRF52 NVMC operations rather than waiting indefinitely for unavailable SoftDevice flash events.
Ethernet and HTTP handling have also been hardened against unbounded W5100S library loops that could previously leave the board responding to ping while the application itself was stuck.
Ethernet WebUI firmware installation remains intentionally disabled. The installed bootloader does not currently provide a proven safe staged-image activation path. Use Bluetooth DFU for deployed updates and keep USB DFU available for recovery.
Special thanks to VK5LN Michael for RAK4631/RAK13800 hardware testing and support.
RAK3401 + RAK13302
Added the new rak3401 firmware target.
Features include:
- Board-specific nRF52840 and SX1262 configuration
- Correct TCXO initialization
- RAK13302 LED handling
- TX activity indication
- Periodic ready pulse for visible modem status
- HEX firmware
- UF2 firmware
- Adafruit DFU ZIP
Thanks to @recrof for contributing the original board support in PR #59.
Radio Reliability
Incoming Packets Are Protected From TX
Previous firmware could place the radio into standby before determining whether an incoming LoRa packet was already being received.
A TX or CAD request arriving during a frame could therefore interrupt and destroy the reception.
v1.2.0 introduces a passive reception guard using the SX1262:
- Preamble-detected IRQ state
- Valid-header IRQ state
The modem checks this state before:
- Entering standby
- Performing CAD
- Beginning TX
The protection applies to every TX request and no longer depends on the modem's automatic-CAD setting.
Improved Reception Timeouts
The reception guard uses two timeout stages:
- Short preamble/header timeout
- Longer payload timeout after a valid header is detected
This prevents stale preamble state from holding the channel busy for an entire maximum-payload window.
CAD Returns to Continuous RX
CAD operations now:
- Defer when a packet is actively being received.
- Leave the radio untouched during active reception.
- Return the radio to continuous RX after CAD completes.
- Use the documented 50–200 ms retry jitter.
This keeps the modem listening correctly while openHop Repeater performs repeated LBT/CAD checks.
Thanks to @npdgm for the reception-guard and CAD reliability work in PR #58.
SX1262 Configuration
SX1262 defaults have been aligned more closely with the corresponding MeshCore board configurations.
Changes include:
-
140 mA SX1262 current limit on applicable boards.
-
Boosted RX gain on supported targets.
-
SX1262
0x08B5receive-sensitivity patch on:- Heltec V4
- Heltec V4.2
- Heltec V4.3
-
22 dBm RadioLib command-power ceiling for:
- Waveshare ESP32-P4 Nano
- MeshSmith EtherMesh-1W
On E22P hardware, 22 dBm is the command level sent to the SX1262. The external PA still provides the board's higher final RF output.
Thanks to @jhuebert for the cross-board SX1262 configuration work in PR #60.
Diagnostics & WebUI
Removed the misleading diagnostic:
Auto CAD: Off
openHop Repeater manages the actual CAD/LBT policy, so the modem's local automatic-CAD flag did not accurately indicate whether CAD was being used.
The underlying CAD protocol commands and compatibility behavior remain unchanged.
The OTA response now also explicitly declares UTF-8, fixing malformed characters in browser reboot and rollback messages.
Thanks to @jhuebert for the OTA response fix in PR #61.
Compatibility
There are no modem wire-protocol or frame-layout changes in v1.2.0.
Existing USB and TCP integrations remain compatible, and existing modem configuration keys and CAD commands are preserved.
No host configuration migration is required.
Upgrade Notes
Use the firmware package matching your exact board and hardware revision.
In particular:
- Heltec V4.2 and V4.3: Do not interchange firmware; the boards use different RF front-end policies.
- RAK4631 WisMesh Ethernet: Use Bluetooth DFU for deployed updates and retain USB DFU as a recovery method.
- ESP32 first installation/recovery: Use the complete factory image.
- Compatible ESP32 upgrades: Application-only
firmware.binmay be used. - Verify downloaded firmware using the included
SHA256SUMS.txt.
Verification
- ✅ Clean GitHub-hosted builds for all 20 PlatformIO environments
- ✅ 20/20 hosted firmware builds passed
- ✅ All 20 generated workflow artifacts inspected
- ✅ SHA256 verification passed for every hosted artifact set
- ✅ 31 Python host tests passed
- ✅ Shared WebUI renderer tests passed
- ✅ 20 per-environment release ZIPs generated successfully
- ✅ Release-level ZIP checksum validation passed
- ✅ EtherMesh-1W OTA tested beyond the rollback window
- ✅ Heltec V4.2 OTA tested beyond the rollback window
- ✅ openHop Repeater successfully reconnected and reconfigured both tested devices
- ✅ No modem wire-protocol changes
Contributors
Thank you to everyone who contributed hardware support, fixes, testing, and review:
- @npdgm — reception guard, CAD handling, and channel checks in PR #58
- @recrof — original RAK3401 + RAK13302 support in PR #59
- @jhuebert — SX1262 configuration alignment in PR #60 and OTA UTF-8 fix in PR #61
- VK5LN Michael — RAK4631 WisMesh Ethernet hardware testing and support
The detailed hardware testing and board-specific feedback made this release materially better.
What's Changed
- fix(firmware): reception guard and channel checks before TX standby by @npdgm in #58
- fix: declare utf-8 charset for OTA update response by @jhuebert in #61
- feat(rak4631): add WisMesh Ethernet firmware support by @yellowcooln in #62
- new board: RAK3401 + RAK13302 by @recrof in #59
- firmware: align SX1262 RF defaults with MeshCore per-board reference by @jhuebert in #60
- release: stage openHop Modem v1.2.0 by @yellowcooln in #63
- release: promote openHop Modem v1.2.0 by @yellowcooln in #64
- firmware: update generated firmware assets [skip ci] by @yellowcooln in #65
New Contributors
- @npdgm made their first contribution in #58
- @jhuebert made their first contribution in #61
- @recrof made their first contribution in #59
Full Changelog: v1.1.0...v1.2.0