Skip to content

v1.0.1 - Factory Images, Release Packages, and Radio Reliability Improvements

Latest

Choose a tag to compare

@yellowcooln yellowcooln released this 23 Jul 00:23
b29d159

This release improves radio diagnostics and reliability, corrects board-specific display and bootloader configurations, and expands firmware distribution with complete factory images and per-variant GitHub Release packages.

Highlights

  • Updated all 16 firmware variants to v1.0.1.
  • Added complete firmware.factory.bin images for all 13 ESP32-family targets.
  • Added UF2 firmware files for all three nRF52 targets.
  • Added automatic GitHub Release packaging with one ZIP per firmware variant.
  • Corrected the Station G2/G3 OLED controller and driver.
  • Corrected the XIAO nRF52 Wio SoftDevice and application layout.
  • Improved Heltec SX126x current-limit handling and TX-power diagnostics.
  • No wire-protocol changes were introduced.

Radio and TX-Power Improvements

The SX126x current limit is now set to 140 mA on:

  • Heltec V3
  • Heltec V4
  • Heltec V4.2
  • Heltec V4.3

Additional diagnostic logging now reports:

  • Requested TX power
  • Applied TX power
  • Board power ceiling
  • setOutputPower() result
  • SX126x over-current protection values before and after configuration

Received SET_CONFIG commands also log the requested:

  • Frequency
  • Bandwidth
  • Spreading factor
  • Coding rate
  • TX power
  • Sync word
  • Preamble length

Station G2/G3 Display Fix

The Station G2/G3 onboard display was incorrectly configured as an SH1107.

This release:

  • Corrects the controller to SH1106
  • Switches the implementation to Adafruit_SH1106G
  • Restores accurate display documentation

XIAO nRF52 Wio Bootloader Compatibility

The XIAO nRF52 Wio firmware now uses the correct S140 7.3.0 bootloader layout.

Changes include:

  • SoftDevice updated from S140 6.1.1 to S140 7.3.0
  • SoftDevice FWID updated from 0x00B6 to 0x0123
  • Added a dedicated S140 v7 linker script
  • Application origin moved to 0x27000
  • Maximum application size updated for the new layout
  • Regenerated HEX, DFU ZIP, and UF2 artifacts

Important: XIAO nRF52 Wio users must install a compatible Adafruit nRF52 bootloader using S140 7.3.0 before flashing this firmware.

Complete ESP32 Factory Images

Every ESP32-family firmware directory now includes:

  • firmware.factory.bin
  • firmware.bin
  • bootloader.bin
  • partitions.bin
  • SHA256SUMS.txt
  • manifest.json where supported

Which File Should I Use?

Use firmware.factory.bin at address 0x0 for:

  • First-time installation
  • Recovery
  • Replacing a damaged or incompatible bootloader/partition layout

Use firmware.bin at address 0x10000 for:

  • Compatible app-only USB updates
  • Web UI OTA updates
  • curl OTA updates

The factory image contains the bootloader, partition table, OTA initialization data, and application at the correct offsets for each board.

ESP32-P4 targets retain their required layout:

Bootloader:       0x2000
Partition table:  0x8000
OTA initialization: 0xe000
Application:      0x10000

The asset builder now removes stale factory output before incremental builds, preventing an older firmware.factory.bin from being packaged with a newer application.

nRF52 Firmware Formats

All three nRF52 targets now include:

  • firmware.hex
  • firmware.zip for Adafruit serial DFU
  • firmware.uf2
  • SHA256SUMS.txt

Affected targets:

  • Heltec T114
  • XIAO nRF52 Wio
  • RAK4631 WisMesh Ethernet

Build and Asset Tooling

  • Added deterministic per-variant ZIP generation.
  • Added validation of tracked firmware checksums before packaging.
  • Added release-level checksums for all variant ZIPs.
  • Added UF2 generation to the canonical nRF52 asset builder.
  • Consolidated the legacy all-environment release script around the canonical asset builder.
  • Marked BIN and Intel HEX files as binary in Git.
  • Updated installation and flashing documentation.

Updating an Existing ESP32 Device

Download the correct firmware.bin for your board from:

https://github.com/openhop-dev/openhop_modem/tree/main/firmware

You can then install it using the modem Web UI or curl.

Web UI

  1. Log in to the modem Web UI.
  2. Open the OTA update section.
  3. Select the correct firmware.bin.
  4. Start the update and wait for the modem to reboot.

curl

curl --user <username>:<password> \
  -F "firmware=@firmware.bin" \
  http://<modem-ip>/update

Use firmware.factory.bin instead when performing a complete USB installation or recovery.

Verification

  • All 16 PlatformIO environments built successfully.
  • All compiled firmware reports v1.0.1.
  • All 16 firmware checksum sets verified.
  • All 11 applicable web-flasher manifests verified.
  • All 13 ESP32 factory-image layouts verified.
  • ESP32-P4 bootloaders confirmed at 0x2000.
  • All 16 per-variant release ZIPs generated and verified.
  • Release-level ZIP checksum manifest verified.
  • No wire-protocol changes were introduced.

What's Changed

New Contributors

Full Changelog: v1.0.0...v1.0.1