Commit Graph
5219 Commits
Author SHA1 Message Date
agessaman 730eb37dbd feat(ota): implement build number suffix for firmware versioning
Enhanced the firmware versioning system by appending a build number
suffix when available, allowing for better tracking of published builds.
This change improves the OTA update process by providing clearer
versioning information in the embedded firmware string.
2026-06-23 12:55:07 -07:00
Nick Dunklee 4ac8742ce0 feat: use RAK hardware crypto on advert processing
While working on some sensor code implementations, I ran into
some hard crashes that root-caused to the 4KB loop task stack
being exhausted.

Looking for various optimization schemes resulted in this relatively
low-lift fix. RAK3401 and RAK4631 both support hardware crypto.

Rather than loading in one of the two software crypto libs,
we can just use the onboard hardware. This is faster, should
consume less power, and in testing used a scant up to 700
bytes in the run loop vs 2.5-3KB per advert.

This change **only** affects advert verification processing, which
currently consumes a significant chunk of the 4KB run loop.

I figured such a change should likely be implemented in phases.

After soaking, this hardware crypto verification
process could be implemented across the entire MeshCore
cryptographic function on RAK nodes. Also possible other nodes
have available hardware crypto, however, I have not checked,
so future improvements may also exist there.

Tested on:
  - RAK3401 RAK 1W
  - RAK4631 19001
2026-06-23 11:39:20 -06:00
agessaman addb637b63 feat(mqtt): add meshcore-fi preset to MQTT presets 2026-06-23 09:31:45 -07:00
UltimateCodeWarrior b8b6598dd3 Fix blank OLED on T-Beam Supreme V3 (I2C bus + 0x3D address)
The SH1106 OLED on the LilyGo T-Beam Supreme V3 never lights up because:

1. The primary I2C bus (Wire) that the OLED, BME280 and magnetometer share
   is never initialized. The PMU/RTC use Wire1 (via XPowersLib); nothing
   brings up Wire on PIN_BOARD_SDA/PIN_BOARD_SCL, so the display driver
   talks on the wrong default pins.
2. The OLED is at I2C address 0x3D on this board (0x3C is taken by the
   QMC6310 magnetometer), but SH1106Display::begin() only tried 0x3C.

Initialize Wire for TBEAM_SUPREME_SX1262, and have SH1106Display::begin()
prefer 0x3D (only ever used by the OLED) before falling back to 0x3C.
Backwards-compatible for boards with the OLED at 0x3C.

Closes #2609
2026-06-22 23:39:34 -07:00
Adam Gessaman a06a14dfa8 Merge pull request #17 from agessaman/feat/ota-web
Feat/ota web
2026-06-22 22:36:38 -07:00
agessaman c1885fcc15 feat(ota): implement deferred OTA update scheduling and handling
Added support for deferred OTA updates in the MyMesh class, allowing
the system to schedule firmware updates to occur after a confirmation
reply is sent. This change improves the user experience by ensuring
that the update process does not block the main application loop,
allowing for smoother operation during firmware updates.
2026-06-22 22:33:57 -07:00
agessaman dec668386a fix(ota): improve OTA update handling for connected WiFi networks
Updated the startOTAUpdate method to serve the ElegantOTA on the
station IP when connected to a WiFi network, enhancing accessibility
for OTA updates. If not connected, it defaults to the MeshCore-OTA
SoftAP. This change improves the user experience by allowing easier
access to OTA updates without needing to switch networks.
2026-06-22 21:28:18 -07:00
agessaman 3719ebb980 fix(ota): improve streaming JSON parsing in otaFromManifest
Updated the otaFromManifest method to stream-parse the firmware manifest
directly from the network, reducing peak RAM usage during OTA checks. This
change enhances compatibility with slow TLS links by implementing a per-read
timeout, ensuring a more efficient and reliable update process.
2026-06-22 19:53:40 -07:00
Kevin Le 2fd9685404 Added missing PERSISTENT_RAM in memory 2026-06-23 09:40:55 +07:00
agessaman e84c266576 feat(ota): add ota check and ota update commands for pull-based updates 2026-06-22 19:36:05 -07:00
agessaman b679c0d712 fix(ota): handle HTTP response and empty manifest in otaFromManifest
Updated the otaFromManifest method to enforce HTTP/1.0 for better
compatibility with CDNs and to handle empty manifest responses. This
ensures that the JSON parser receives a complete body, preventing
errors during firmware update checks.
2026-06-22 19:32:23 -07:00
ripplebiz 3192684582 Merge pull request #2752 from Quency-D/heltec-tower-v2
Add Heltec tower v2
2026-06-23 11:51:03 +10:00
ripplebiz aa1cb1f663 Merge pull request #2765 from fizzyfuzzle/ESP32-Reset-Reason
Add ESP32 Reset Reason to existing pwrmgt.bootreason cli command
2026-06-23 11:41:57 +10:00
ripplebiz 6a63dfce1c Merge pull request #2771 from oltaco/nrf52-framework-buildfix
Point Heltec Mesh Solar and Mesh Pocket at our NRF52 framework fork
2026-06-23 11:37:03 +10:00
mikecarper 4b6810d380 Restore uf2reset CLI after PR merges 2026-06-22 18:18:14 -07:00
mikecarper 915353c5d2 Merge remote-tracking branch 'refs/remotes/upstream/pr-2325' into keymindCascade 2026-06-22 18:14:17 -07:00
mikecarper 4813b9eea4 Merge remote-tracking branch 'upstream/pr-2367' into keymindCascade
# Conflicts:
#	build-iotthinks.sh
#	build.sh
#	docs/cli_commands.md
#	examples/companion_radio/MyMesh.cpp
#	examples/companion_radio/main.cpp
#	examples/simple_repeater/MyMesh.cpp
#	examples/simple_repeater/MyMesh.h
#	src/helpers/CommonCLI.cpp
#	src/helpers/CommonCLI.h
#	src/helpers/ESP32Board.h
#	src/helpers/SimpleMeshTables.h
#	src/helpers/sensors/EnvironmentSensorManager.cpp
#	variants/heltec_ct62/platformio.ini
#	variants/heltec_t096/T096Board.cpp
#	variants/heltec_t096/platformio.ini
#	variants/heltec_tracker/platformio.ini
#	variants/heltec_tracker_v2/platformio.ini
#	variants/heltec_v2/platformio.ini
#	variants/heltec_v3/platformio.ini
#	variants/heltec_v4/HeltecV4Board.cpp
#	variants/heltec_v4/platformio.ini
#	variants/heltec_wireless_paper/platformio.ini
#	variants/lilygo_tbeam_1w/platformio.ini
#	variants/lilygo_tbeam_SX1262/platformio.ini
#	variants/lilygo_tbeam_SX1276/platformio.ini
#	variants/lilygo_tbeam_supreme_SX1262/platformio.ini
#	variants/lilygo_tlora_v2_1/platformio.ini
#	variants/xiao_c3/platformio.ini
#	variants/xiao_s3/platformio.ini
#	variants/xiao_s3_wio/platformio.ini
2026-06-22 18:13:18 -07:00
mikecarper 90a3bd6b94 Merge remote-tracking branch 'upstream/pr-2489' into keymindCascade
# Conflicts:
#	build.sh
2026-06-22 17:51:09 -07:00
mikecarper d9cefed1b1 Merge remote-tracking branch 'IoTThinks/PowerSaving-v16' into keymindCascade
# Conflicts:
#	build-iotthinks.sh
#	build.sh
#	examples/simple_repeater/MyMesh.h
#	src/helpers/CommonCLI.cpp
#	variants/heltec_ct62/platformio.ini
#	variants/heltec_t096/T096Board.cpp
#	variants/heltec_t096/platformio.ini
#	variants/heltec_tracker/platformio.ini
#	variants/heltec_tracker_v2/platformio.ini
#	variants/heltec_v2/platformio.ini
#	variants/heltec_v3/HeltecV3Board.h
#	variants/heltec_v3/platformio.ini
#	variants/heltec_v4/HeltecV4Board.cpp
#	variants/heltec_v4/platformio.ini
#	variants/heltec_wireless_paper/platformio.ini
#	variants/lilygo_tbeam_1w/platformio.ini
#	variants/lilygo_tbeam_SX1262/platformio.ini
#	variants/lilygo_tbeam_SX1276/platformio.ini
#	variants/lilygo_tbeam_supreme_SX1262/platformio.ini
#	variants/lilygo_tlora_v2_1/platformio.ini
#	variants/xiao_c3/platformio.ini
#	variants/xiao_s3_wio/platformio.ini
2026-06-22 17:50:12 -07:00
mikecarper dfbb59fdda Merge remote-tracking branch 'upstream/dev' into keymindCascade 2026-06-22 17:45:22 -07:00
mikecarper b38e6e04d4 build.sh: refactor menu flow 2026-06-22 17:35:37 -07:00
agessaman 454afec91d feat(mqtt): add flmesh.us preset to MQTT implementation 2026-06-22 13:52:48 -07:00
Liam Cottle c2cfba4af3 Merge pull request #2810 from IoTThinks/MCDev-Fixed-GPS-Time-for-T114-202606
Fixed GPS time sync for Heltec T114
2026-06-22 14:19:09 +12:00
Kevin Le 62849ef114 Fixed GPS time sync for Heltec T114 2026-06-22 09:13:36 +07:00
agessaman 004d308ea9 feat(ota): implement pull-based OTA from manifest for observer builds
Added functionality to support pull-based OTA updates by fetching firmware
from a manifest. The new `otaFromManifest` method allows the system to
check for available updates and flash the firmware if necessary. This
enhancement improves the update process for observer builds using the
MQTT bridge, ensuring a more seamless firmware management experience.
2026-06-21 11:57:05 -07:00
Dreikor17 32b0eb91dd feat(mqtt): add rflab.io WebSocket broker preset
Adds the "rflab" built-in MQTT preset and bumps MQTT_PRESET_COUNT to 22.

  - Server:   wss://mqtt.rflab.io:443
  - Auth:     JWT (Ed25519 device identity), audience mqtt.rflab.io
  - Topic:    MeshCore style
  - TLS:      Let's Encrypt, pinned to ISRG Root X1

Also documents the preset in the MQTT_IMPLEMENTATION.md preset table.
2026-06-21 11:20:44 -05:00
Kevin Le f5d9e18517 Fixed poweroff for NRF52 boards 2026-06-21 23:14:03 +07:00
Kevin Le ddf8387703 Fixed missing rtc_clock for Heltec T114's GPS 2026-06-21 21:13:25 +07:00
Ryan Gregg a206f3e066 Merge remote-tracking branch 'upstream/dev' into rak-ethernet
# Conflicts:
#	docs/faq.md
#	examples/companion_radio/main.cpp
2026-06-20 14:39:03 -07:00
Kevin Le 22e45d559d Power off board including radio, display, GPS and components 2026-06-20 12:17:40 +07:00
agessaman 8b084d5ac3 chore(github-actions): enhance asset pruning logic in release workflow
Updated the build-observer-firmwares.yml to improve the asset pruning
logic during the release process. The workflow now retains the most
recent build hashes to prevent 404 errors for assets that may still
be requested during build cycles. This change ensures a smoother
release experience by maintaining necessary assets while cleaning
up older ones.
2026-06-18 17:55:45 -07:00
agessaman 618c849d53 feat(mqtt): enhance timestamp formatting with microsecond precision
Updated the MQTTMessageBuilder to include microsecond precision in the
timestamp formatting. The formatIsoTimestampForMqtt function now accepts
a microsecond parameter, allowing for more accurate time representation.
Modified related functions in MQTTBridge to utilize the new timestamp
formatting, ensuring consistency across MQTT messages.
2026-06-18 15:03:02 -07:00
agessaman 50154563ba chore(github-actions): refine paths-ignore and shallow clone handling in workflow 2026-06-18 12:01:32 -07:00
agessaman 71b92c830c chore(github-actions): improve changelog generation and git history fetch 2026-06-18 09:38:27 -07:00
agessaman 985fda1382 Add AlertReporter integration to MyMesh 2026-06-17 20:02:39 -07:00
mikecarper 6b8135aa36 Fix direct retry review nits 2026-06-17 16:44:58 -07:00
mikecarper 19cfc43269 Trim recent repeater API and document retry defaults 2026-06-17 16:32:04 -07:00
Kevin Le 61e0e28e9a Added ThinkNode_M5_companion_radio_ble_ps 2026-06-17 16:58:37 +07:00
mikecarper 8d46ed4f21 Enable retry CR radio overrides 2026-06-16 16:25:04 -07:00
agessaman 8bf590b1e3 Enhance MQTT message structure by adding cumulative packet statistics (packets_sent and packets_received) to the status message. Update related functions in MQTTMessageBuilder and MQTTBridge to handle new parameters and ensure proper JSON serialization. Document the new fields and their significance in the implementation notes. 2026-06-16 15:59:36 -07:00
agessaman e80a5ded1c Enhance MQTT message handling by updating path representation to use an array of lowercase hex hop tokens. Refactor related functions in MQTTMessageBuilder to accommodate new path parameters and improve JSON serialization. Update documentation to reflect changes in path handling and timestamp formatting. 2026-06-16 14:39:03 -07:00
agessaman 0844eee136 Sync documentation files for Flasher in GitHub Actions workflow 2026-06-16 14:14:33 -07:00
mikecarper 9c510ab7a6 Add Packet EOF newline 2026-06-16 13:30:49 -07:00
mikecarper 1f14f744af Clean Mesh header comments 2026-06-16 13:28:46 -07:00
mikecarper 4a9d6bae52 Remove duplicate Mesh comments 2026-06-16 13:25:04 -07:00
mikecarper f58cdef8a8 Revert Mesh comment noise 2026-06-16 13:21:51 -07:00
mikecarper 7d2ff38120 Trim direct retry cleanup 2026-06-16 13:15:52 -07:00
mikecarper 4ed9415866 Clean up Mesh comments 2026-06-15 18:15:00 -07:00
mikecarper e35886780c Simplify recent repeater paging 2026-06-15 18:10:40 -07:00
mikecarper 21c5e2701b Tune unknown retry SNR 2026-06-15 18:06:58 -07:00