Commit Graph
3652 Commits
Author SHA1 Message Date
Scott Powell 8bcf760558 Merge branch 'dev' into new-direct-mode 2026-10-29 12:18:41 +11:00
ripplebiz cf286687d2 Merge pull request #3682 from meshcore-dev/fix-scope-zero
scope 0 rule fixes
2026-10-29 12:17:09 +11:00
ripplebiz 42ded8da64 Merge pull request #3688 from Blake-Latchford/fix/stats-dup-count-wrap
Saturate duplicate packet stats instead of wrapping
2026-10-28 17:06:21 +11:00
ripplebiz 02c827b27d Merge pull request #3686 from marcelverdult/upstream-pr/esp32-rtc-backup-once
Define the RTC backup of ESP32RTCClock once instead of per translation unit
2026-10-28 14:38:36 +11:00
ripplebiz 93ddc86db6 Merge pull request #3692 from Seeed-Studio/dev
Fix LR2021 hot frequency change over BLE
2026-10-28 12:48:39 +11:00
fdlamotte 6fd8e2f4bb Merge pull request #3703 from fdlamotte/remove_button_state_changed
Remove unused buttonStateChanged from some variants
2026-10-27 16:03:02 -04:00
Florent cedb8050a5 Remove unused buttonStateChanged from some variants 2026-10-27 15:52:36 -04:00
fdlamotte f869e565d0 Merge pull request #3702 from akalinin-softvelum/fix/techo-eink-driver
T-Echo: use GxEPD2_154_D67 e-ink driver
2026-10-27 14:56:21 -04:00
akalinin-softvelum 492814bbef T-Echo: use GxEPD2_154_D67 e-ink driver
T-Echo used the fallback GxEPD2_150_BN; on my unit every refresh hit the
10 s busy timeout. Switch to GxEPD2_154_D67 like Meshtastic.
2026-10-27 18:20:36 +00:00
fdlamotte afa4b87c6c Merge pull request #3509 from marcelverdult/fix/thinknode-m8-sensors
Fix ThinkNode M8 repeater/room server build: compile sensor helpers for all envs
2026-10-27 09:31:51 -04:00
Liam Cottle fd56b1a36c Merge pull request #3615 from radek-sixi/fix/common-radio-prefs-signed-tx-power
Fix unsigned conversion of negative TX power in CommonRadioPrefs
2026-10-27 22:44:04 +13:00
Liam Cottle b594cfdace Merge pull request #3693 from recrof/patch-4
bump RadioLib to 7.8.1
2026-10-27 21:58:19 +13:00
Rastislav Vysoky 63bc8ed2bf bump RadioLib to 7.8.1 2026-10-27 09:56:20 +01:00
rado 3e4f71d9a2 Drop unit tests per review feedback 2026-10-27 07:21:24 +01:00
WayenWeng b0bacf8a04 fix(radio): put LR2021 in standby before re-config in setParams 2026-10-27 10:44:36 +08:00
Scott Powell f9e893ee8d * updateContactFromFrame() bug fix 2026-10-27 11:30:29 +11:00
ripplebiz d694bd39c7 Merge pull request #3639 from radek-sixi/fix/skip-empty-anon-contact-slots
Skip empty anon contact slots in peer/contact lookups (prevent null-key ECDH sink)
2026-10-27 11:29:10 +11:00
Marcel Verdult e197e557c3 fix(esp32): define the RTC backup of ESP32RTCClock once
ESP32Board.h defined _rtc_backup_time and _rtc_backup_magic as static in the
header, so every translation unit that includes it has its own copy, and the
inline members of ESP32RTCClock read and write the copy of the unit they are
compiled in. Today one unit per image uses them; a second one could restore a
copy that setCurrentTime() never wrote. The header now declares them, and
ESP32Board.cpp defines them once.
2026-10-26 16:11:12 +01:00
Scott Powell 55b961e36f * unit test fix 2026-10-26 20:39:46 +11:00
Scott Powell bd882a2aa2 * scope 0 rule fixes 2026-10-26 20:29:39 +11:00
Blake LatchfordandClaude Opus 5.5 26e438904e Saturate duplicate packet stats instead of wrapping
Tested on a Heltec V4 repeater with the counter seeded at 65530.

Fixes #3255

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-25 21:45:10 -04:00
ripplebiz 46216b2d0d Merge pull request #3617 from aXistem-dev/feat/tz-offset-quarter-hours
Show quarter-hour timezone offsets with two decimals
2026-10-26 12:27:10 +11:00
ripplebiz 55abbe72b2 Merge pull request #3667 from Blake-Latchford/fix/kiss-modem-usbcdc-tx-buffer
Fix broken KISS modem build on 6 ESP32-S3 platforms
2026-10-26 12:02:57 +11:00
ripplebiz 36eb5ebad2 Merge pull request #3680 from fdlamotte/m5_wifi_usb_companion
ThinknodeM5: enable wifi in usb companion
2026-10-26 11:18:10 +11:00
Florent 2cad4eecb4 ThinknodeM5: enable wifi in usb companion 2026-10-25 17:49:16 -04:00
fdlamotte ea8e95447f Merge pull request #3659 from fdlamotte/elecrow_eink_refactor
Elecrow eink refactor
2026-10-24 19:50:03 -04:00
Florent b2106ea7ee ThinknodeM1: update eink driver 2026-10-24 13:26:06 -04:00
Florent d7c0eadbe2 thinknode_m1: fix button2 definition 2026-10-24 11:15:28 -04:00
Florent da98f5318d UiTask: better cleaning of eink screens when hibernating 2026-10-24 10:16:56 -04:00
ripplebiz cd9f97fd4a Merge pull request #3643 from marcelverdult/upstream-candidate/companion-channel-txt-min-len
Fix companion crash on a short CMD_SEND_CHANNEL_TXT_MSG frame
2026-10-24 11:40:49 +11:00
ripplebiz 61363a3309 Merge pull request #3646 from marcelverdult/upstream-candidate/af-nan-text-check
Refuse nan and inf for the airtime factor (set af, set dutycycle)
2026-10-24 11:34:10 +11:00
Scott Powell 5250eb7440 * workaround for edge case described here: https://github.com/meshcore-dev/MeshCore/pull/3630#issuecomment-6275517866 2026-10-23 14:04:29 +11:00
Scott Powell a8b3118b42 * added 'wide.snr.thresh' config
* repeater: Wide mode, isHashNeighbor() now only considers neighbor nodes with SNR >= threshold
2026-10-23 13:04:26 +11:00
Blake Latchford 47259633f2 Fix broken KISS modem build on 6 ESP32-S3 platforms
Broken out from PR #3496 which has been open for a month.
2026-10-22 17:57:33 -04:00
Marcel Verdult 83bd824f6c fix(radio): refuse "nan" for the airtime factor
"set af nan" is accepted and stores a NaN in airtime_factor, the duty cycle
budget the roles hand to their airtime accounting. strtof() consumes the
token, so the parse guard does not fire, and no ordered comparison is true for
a NaN, so "af < 0 || af > 9" cannot reject it. "set dutycycle" writes the same
field and has the same hole.

Both commands now check the text before it is parsed: after optional white
space and sign, a number has to start with a digit or a '.'. That refuses
"nan", "inf" and their variants, and keeps every spelling that was accepted
before (signs, leading white space, ".5"). The ranges and both reply strings
are unchanged.

The check is on the text rather than on the parsed float on purpose. nRF52
builds use -Ofast, and under -ffast-math the compiler may assume a float is
never NaN or infinite. A test on the value, even one that reads its bits, can
then be folded away: clang does exactly that with a bit test at -Ofast, while
arm-none-eabi-gcc keeps it. A character test does not depend on that.
2026-10-22 09:42:58 +00:00
Marcel Verdult 56b5f4e9c6 fix(chat): refuse a negative text length for a group message
CMD_SEND_CHANNEL_TXT_MSG reads txt_type, channel_idx and a 4 byte timestamp, so
the frame needs 7 bytes before the text starts, and the branch had no length
guard. For a shorter frame "len - i" is computed in size_t, wraps, and reaches
sendGroupMessage() as a negative int. The clamp there tests
"text_len + prefix_len > MAX_TEXT_LEN", which a negative value passes, and the
following memcpy() converts the length back to a size_t: a 3 byte frame asks for
4294967292 bytes into a 197 byte stack buffer.

Two guards, because there are two mistakes. The branch now states its minimum
like most other branches of handleCmdFrame do, so a frame below 7 bytes is
answered through the existing path instead of being parsed. And
sendGroupMessage() refuses a negative length the way sendGroupData() in the same
file already does, which protects every other caller.

A frame of exactly 7 bytes keeps working and sends an empty message, as before.

Evidence. On a T-Echo running dev 428a95c6, built with
FIRMWARE_BUILD_DATE "f1-dev" and confirmed by "ver => v1.18.0 (Build: f1-dev)":

  CH_TXT len=7    -> RESP_CODE_OK
  GET_STATS core  -> uptime=78s
  CH_TXT len=3    -> NO REPLY
  DEVICE_QUERY    -> NO REPLY  (three times over 8 s, node never came back)
2026-10-22 09:33:07 +00:00
ripplebiz 02c9922954 Merge pull request #3651 from liamcottle/feature/auto-detect-display
New AutoDetectDisplay for SH1106 and SSD1306
2026-10-22 10:44:26 +11:00
Florent 408d674ace DisplayDriver: fixing alignment issue in vtable for nrf52 and epd display 2026-10-21 17:13:27 -04:00
Florent a31e2c92df refactoring eink devices behaviour 2026-10-21 14:08:56 -04:00
Confituurke a8e8d01a3c Use two decimals only for exact quarter-hour offsets 2026-10-21 11:24:34 +02:00
liamcottle 87c76a8b06 implement new auto detect display for sh1106 and ssd1306 2026-10-21 15:41:11 +13:00
Liam Cottle dec8ad6edc Merge pull request #3614 from amdoolittle/fix/heltec-v4-tft-wifi-enable
Fix: Added WiFi to TFT BLE version of Heltec V4
2026-10-21 13:59:37 +13:00
Liam Cottle d7f0fb7c01 Merge pull request #3627 from radek-sixi/tbeam-supreme-ble-wifi
added dynamic wifi to: lilygo t-beam supreme sx1262
2026-10-21 13:31:07 +13:00
rado 060fd2193d Skip empty anon contact slots in peer/contact lookups (prevent null-key ECDH sink) 2026-10-20 05:56:02 +02:00
Scott Powell fe298318be * squashed 2026-10-19 10:41:51 +11:00
Radek 933c0f6a98 added dynamic wifi to: lilygo t-beam supreme sx1262 ble companion 2026-10-18 11:02:07 +02:00
Confituurke b7389353e2 Show quarter-hour timezone offsets with two decimals
'get tz.offset' printed one decimal, so a UTC+5:45 offset (5.75)
read back as 5.8. Print two decimals when the offset is on a quarter
hour (x.25 / x.75); everything else keeps one decimal.
2026-10-17 13:03:06 +02:00
rado 85ad886589 Fix unsigned conversion of negative TX power in CommonRadioPrefs 2026-10-17 09:36:59 +02:00
amdoolittle 9d93a72693 Added WiFi to TFT BLE version of Heltec V4 2026-10-16 22:39:26 -07:00
Liam Cottle 428a95c643 Merge pull request #3606 from amdoolittle/feature/ble-conditional-display
Remove BLE screen when BLE not available
2026-10-17 15:38:18 +13:00