Commit Graph
3612 Commits
Author SHA1 Message Date
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
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
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
Radek 933c0f6a98 added dynamic wifi to: lilygo t-beam supreme sx1262 ble companion 2026-10-18 11:02:07 +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
Liam Cottle b3d76afd6d Merge pull request #3610 from liamcottle/fix/timezone-offset
Fix: tz_offset should allow for half hour timezone offsets
2026-10-17 15:30:59 +13:00
liamcottle 0e63c183a8 tz_offset should be treated as float when down casting calculation result to int32 2026-10-17 15:22:46 +13:00
liamcottle 7a0fde2912 timezone offset is now stored as float to allow half hour offsets 2026-10-17 15:16:38 +13:00
amdoolittle 6e1f474f7d Update UITask.cpp
Housekeeping: removed unnecessary space
2026-10-16 17:30:19 -07:00
amdoolittle b9c328a882 Remove BLE screen when BLE not available 2026-10-16 10:04:44 -07:00
Scott Powell 07a833bbbe * version 1.18.0 2026-10-15 19:42:01 +11:00
ripplebiz 9043a2bbf8 Merge pull request #3596 from recrof/wifi-companion-boards
added dynamic wifi to: heltec wsl3, v4r8, wireless paper; rak 3112; seeed xiao s3 (wio)
2026-10-15 19:35:32 +11:00
Rastislav Vysoky 97c0aec8d6 added dynamic wifi to: heltec wsl3, v4r8, wireless paper; rak 3112; xiao s3 (wio) 2026-10-15 09:57:31 +02:00
ripplebiz f1b608a777 Merge pull request #2377 from fschrempf/dev
Disable NRF52 undervoltage bootlock feature
2026-10-15 15:02:12 +11:00
Liam Cottle 2586f7abe3 Merge pull request #3591 from liamcottle/feature/companion-ble-wifi
Add WiFi support to Heltec v3 and v4 BLE variants
2026-10-14 20:23:11 +13:00
liamcottle a0fc769660 rework companion ui for ip address so it fits in multi interface variants 2026-10-14 16:29:41 +13:00
liamcottle c0d00a060a enable wifi interface for heltec v4 ble variant 2026-10-14 15:16:55 +13:00
liamcottle 590bc23ab9 enable wifi interface for heltec v3 ble variant 2026-10-14 15:05:00 +13:00
Liam Cottle 8e48e01a4b Merge pull request #3589 from meshcore-dev/remove-room-repeater
Room: "set repeat" CLI now deprecated
2026-10-14 14:27:54 +13:00
Scott Powell 481f72cae7 * only 'repeat on' now intercepted 2026-10-14 12:21:38 +11:00
ripplebiz d86cad8a82 Merge pull request #3575 from agessaman/feat/lr1121-dual-band-power
LR1121: keep TX power valid across sub-GHz and 2.4 GHz
2026-10-14 12:04:47 +11:00
ripplebiz 97113a7050 Merge pull request #3574 from agessaman/feat/waveshare-esp32s3-lr1121
feat(variants): add Waveshare ESP32-S3-LR1121
2026-10-14 12:00:11 +11:00
Scott Powell 8579c66747 * Room: "set repeat" CLI now deprecated 2026-10-14 11:48:58 +11:00
ripplebiz b47fd54905 Merge pull request #3573 from meshcore-dev/ack-timing-fix
ACK forwarding timing fix
2026-10-13 15:48:29 +11:00
ripplebiz 52d7bf1551 Merge pull request #3568 from meshcore-dev/zero-scope
Treat transport code 0 the same as un-scoped.
2026-10-13 15:48:02 +11:00
agessaman eac6e66b1b fix(radiolib): keep LR1121 tx power valid across sub-GHz and 2.4 GHz
- Clip requested power to the active PA's range instead of failing. A
  stored 22 dBm was rejected at 2.4 GHz (HF PA max 13 dBm), and since
  setTxPower ignores errors the sub-GHz PA stayed configured.
- Re-apply the requested power after every successful retune: PA choice
  depends on the band, and set radio / tempradio only call setParams.
2026-10-11 21:07:05 -07:00
agessaman 3d1a5d4c64 feat(variants): add Waveshare ESP32-S3-LR1121
ESP32-S3FH4R2 (4MB flash, 2MB PSRAM, native USB-CDC) with an LR1121.
Pins, the DIO5/DIO6 RF switch table and the 1.8 V TCXO follow the HF
schematic and Waveshare's examples. Envs: repeater, room server,
companion USB/BLE and KISS modem, all on min_spiffs so roles share one
partition layout.

Only RFO_HP_LF is wired (R4 on RFO_LP_LF is not fitted), so the new
opt-in LR1121_FORCE_HP_PA flag keeps RadioLib on the HP PA at <= 14 dBm,
where it would otherwise select the unconnected LP PA.
2026-10-11 20:51:18 -07:00
Scott Powell 6df5aaed43 * ACK forwarding (in direct mode) had zero delay 2026-10-12 10:44:42 +11:00
Scott Powell 01f9293be0 * treat transport code 0 the same as un-scoped. 2026-10-08 19:56:45 +11:00
Liam Cottle 2dbd463eda Merge pull request #3561 from quyenlt298/nelos-groupdata-allocation
Add Nelos allocation for GroupData
2026-10-07 20:41:54 +13:00
quyenlt298 47c3005b08 Add Nelos allocation for GroupData 2026-10-07 13:09:36 +07:00
Liam Cottle f3bcb3634b Merge pull request #3559 from syssi/streamline-ota-ble-name
Use consistent `_OTA` suffix for nRF52 OTA BLE names
2026-10-07 12:16:50 +13:00
Sebastian Muszynski 4c2af58d3e Use consistent _OTA suffix for nRF52 OTA BLE names 2026-10-06 18:50:15 +02:00
Liam Cottle 3e3150c83f Merge pull request #3538 from meshcore-dev/hidden-repeater
Hidden repeater
2026-10-04 20:10:43 +13:00
Scott Powell f19733e478 * don't respond to DISCOVER requests if node has adverts turned off. (isHiddenNode()) 2026-10-04 15:02:00 +11:00
Huw Duddy fad0ffb7f1 Merge pull request #3533 from oltaco/fix/bad-comment-format
Fix bad comment format
2026-10-02 07:46:36 +10:00
taco 0e1ba7102d tidy: remove old commented Bluefruit.autoConnLed(false) 2026-10-02 07:40:42 +10:00
taco 35e10a9c75 fix bad comment format 2026-10-02 07:35:34 +10:00
Huw Duddy ea0213754f Merge pull request #2838 from benskigomez/fix/gps-cold-start-detection
GPS: poll up to 5s for cold-start detection instead of a single 1s check
2026-10-01 23:52:16 +10:00
Huw Duddy f35216799a Merge pull request #3128 from bplein/feature/ble_led_disable
Allow for build-time macro to disable the bluetooth LED
2026-10-01 23:51:04 +10:00
Huw Duddy 1af2760c88 Merge pull request #3531 from meshcore-dev/revert-3411-patch-3
Revert "Fix Heltec Mesh Node T1 GNSS pins"
2026-10-01 22:19:32 +10:00
Huw Duddy a706d1d943 Revert "Fix Heltec Mesh Node T1 GNSS pins" 2026-10-01 22:17:44 +10:00
Huw Duddy 914143cb7e Merge pull request #3411 from Avamander/patch-3
Fix Heltec Mesh Node T1 GNSS pins
2026-10-01 20:31:38 +10:00
Huw Duddy ce266c00e5 Merge pull request #2065 from robekl/fix-t1000e-sensor-power-pin
Fix T1000-E sensor power pin mapping
2026-10-01 20:04:07 +10:00