github openhop-dev/openhop_modem v1.2.0
v1.2.0 - RAK Ethernet Support, RAK3401 & Radio Reliability

latest release: v1.3.0
27 days ago

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 0x08B5 receive-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.bin may 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

Full Changelog: v1.1.0...v1.2.0

Don't miss a new openhop_modem release

NewReleases is sending notifications on new releases.