openHop Modem v1.1.0 expands support to 19 firmware targets, completes the user-facing openHop rebrand, and improves ESP32 responsiveness during sustained TCP modem traffic.
Highlights
-
Added three new firmware targets:
- LilyGO T-Beam-S3 Supreme
- BQ Voyage Station G3
- RAK4631 USB-only
-
Completed openHop Modem branding across firmware, displays, setup/OTA pages, API documentation, manifests, and installation guides.
-
Improved ESP32 TCP servicing so heavy modem traffic cannot indefinitely starve HTTP, OTA, telemetry, display, GPS, or network maintenance.
-
Preserved the existing modem wire protocol and host-driver compatibility.
New Hardware
LilyGO T-Beam-S3 Supreme
Added support for:
- ESP32-S3
- SX1262 LoRa radio
- L76K GNSS
- SH1106 OLED
- AXP2101 PMU
The firmware correctly sequences LoRa, GNSS, and display power rails before peripheral initialization.
Factory firmware, application firmware, manifest, and checksums are included.
BQ Voyage Station G3
Added a dedicated Station G3 firmware target with:
- Persistent PA PL1 selection
- RX-only external LNA control
- INA219 voltage, current, and power telemetry
- Minimum-voltage and maximum-current telemetry
- Onboard display support
- Optional GROVE GPS support
- Conservative 19 dBm SX1262 command-power ceiling
Station G3 users should follow the power and RF-jumper instructions in
INSTALL.mdbefore enabling software PA/LNA control.
RAK4631 USB-only
Added rak4631_usb for native USB-CDC operation without the RAK13800/W5100S Ethernet stack.
It retains the proven RAK4631 configuration, including:
- SX1262 pin mapping
- SPIM2 bus
- DIO2 RF switching
- Sensitivity patch
- Boosted RX gain
- 22 dBm power ceiling
Firmware packages include:
- HEX
- Adafruit DFU ZIP
- UF2
The existing rak4631_wismesh_eth target remains available for Ethernet deployments.
ESP32 Transport Reliability
TCP modem processing is now bounded during each cooperative loop pass.
The firmware now:
- Processes up to 256 bytes per pass.
- Processes at most one successfully parsed frame per pass.
- Preserves parser state when frames span multiple passes.
- Applies the same 256-byte ceiling to malformed input.
- Prevents queued modem commands from monopolizing the firmware loop.
This keeps HTTP, OTA, telemetry, GPS, display, and network maintenance responsive during sustained modem traffic.
No wire-protocol or frame-layout changes were introduced.
Branding & Repository Cleanup
The user-facing pyMC Modem → openHop Modem rebrand is now complete.
This includes:
- Firmware and display text
- Setup and OTA interfaces
- API documentation
- Firmware manifests
- Installation documentation
Legacy identifiers remain only where required for runtime or build compatibility.
Obsolete copied Core/Repeater drivers, patch installers, and the old modem-host Docker wrapper have also been removed. Users are now directed to the maintained openHop Core and openHop Repeater integrations.
Upgrade Notes
Station G3 Users
Review the power and RF-jumper configuration documented in INSTALL.md before enabling software PA/LNA controls.
Existing Installations
Existing openHop USB and network modem integrations remain compatible.
No protocol migration is required.
Verification
- ✅ All 19 PlatformIO environments built successfully with
FW_VERSION_BASE=v1.1.0 - ✅ All generated firmware checksum sets validated
- ✅ All 19 release ZIPs passed checksum validation
- ✅ All 19 release ZIPs passed archive-integrity checks
- ✅ Two independent packaging runs produced byte-identical outputs
- ✅ No duplicate archive entries found
- ✅ No modem wire-protocol changes
What's Changed
- fix(firmware): generate XIAO nRF52 UF2 builds by @yellowcooln in #47
- firmware: add LilyGO T-Beam-S3 Supreme board support by @kinkytail in #49
- firmware: update generated firmware assets by @yellowcooln in #51
- feat: add BQ Voyage Station G3 modem support by @yellowcooln in #50
- refactor: complete openHop Modem branding by @yellowcooln in #54
- Bound ESP32 TCP protocol servicing to preserve HTTP/OTA fairness by @yellowcooln in #53
- feat: add RAK4631 USB-only firmware target by @yellowcooln in #55
- chore(firmware): prepare v1.1.0 by @yellowcooln in #56
- firmware: update generated firmware assets [skip ci] by @yellowcooln in #57
New Contributors
- @kinkytail made their first contribution in #49
Full Changelog: v1.0.1...v1.1.0