Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
612 commits
Select commit Hold shift + click to select a range
56eb5b0
Merge pull request #1373 from liquidraver/buildwithoutdebug
liamcottle Jan 14, 2026
4575800
Turn on register 0x8B5 LSB for improved RX, turn off boosted gain
Socalix Jan 14, 2026
31f98bd
Fix Ikoka Stick builds
mannkind Jan 15, 2026
403ce1d
contacts: granular autoadd and overwrite-oldest
oltaco Jan 12, 2026
741564d
refactor: add populateContactFromAdvert()
oltaco Jan 12, 2026
df66870
bootstrap RTC from contact.lastmod and improve slot overwrite logic
oltaco Jan 12, 2026
d41a968
Merge pull request #1379 from oltaco/improved-contact-mgmt
ripplebiz Jan 15, 2026
23f1f2a
Merge pull request #1399 from mannkind/patch-1
liamcottle Jan 15, 2026
1156567
fix: bump max contacts for v3 companion usb
recrof Jan 15, 2026
7d1f522
Merge pull request #1402 from recrof/v3-usb-contact-fix
liamcottle Jan 15, 2026
c61fde9
always send PUSH_CODE_NEW_ADVERT when advert was not added to contacts[]
oltaco Jan 16, 2026
b919119
only write contacts when changed
oltaco Jan 16, 2026
5c7b28f
Change the Station G2 default tx power
WattleFoxxo Jan 18, 2026
5e4b33a
Merge pull request #4 from chrisdavis2110/var-rak3401
chrisdavis2110 Jan 18, 2026
ed5d290
updated variant rak3401
chrisdavis2110 Jan 18, 2026
bf07778
Merge pull request #1408 from oltaco/improved-contact-mgmt
ripplebiz Jan 19, 2026
56ab59d
Merge pull request #1387 from chrisdavis2110/rak3401
ripplebiz Jan 19, 2026
e51a2d1
Update T114 I2C pins
etienn01 Jan 19, 2026
a7cadc8
Fix Serial and TX LED not working on Heltec Wireless Paper V1.2
Snayler Jan 20, 2026
d68bc74
Remove _serial->isConnected() logic from buzzer notifications
nakoeppen Jan 21, 2026
46e4cc0
Revert boosted gain flag to original
Socalix Jan 22, 2026
b09ddfc
thinknode m1: add missing getLocationProvider() override
oltaco Jan 22, 2026
ea85486
thinknode m1: add missing GPS page to new UI
oltaco Jan 22, 2026
36f230d
thinknode m1: allow GPS to sync clock
oltaco Jan 22, 2026
bccefd6
Merge pull request #1445 from oltaco/thinknode_m1-gps-fix
liamcottle Jan 22, 2026
32230f6
Merge pull request #1415 from WattleFoxxo/StationG2-tx-power-changes
ripplebiz Jan 23, 2026
537acd7
Merge pull request #1437 from nakoeppen/dev
ripplebiz Jan 23, 2026
616eb57
Merge pull request #1428 from etienn01/update-t114-i2c
ripplebiz Jan 23, 2026
fc61018
Fix the issue of inconsistent I2C usage in the environmental sensor.
Quency-D Jan 23, 2026
3c27132
* T1000e BLE - default node name is now the MAC address
Jan 23, 2026
1f59e52
nRF52840 Power Management - Phase 1 - Boot Low VBAT Voltage Lockout
entr0p1 Jan 23, 2026
9dd52bd
build fix for room server with MESH_DEBUG=1
oltaco Jan 23, 2026
e7c72c5
initial port of rak3112
recrof Jan 23, 2026
266f6ee
fixed battery measurement
recrof Jan 23, 2026
b853c7c
Merge pull request #1459 from oltaco/fix-roomserver-debug
liamcottle Jan 24, 2026
e744adf
Merge pull request #1413 from entr0p1/powermgt-nrf52840-v2
ripplebiz Jan 24, 2026
c7b3d34
Merge pull request #1456 from Quency-D/fix-env-i2c
ripplebiz Jan 24, 2026
f46f0d0
* WIO tracker l1: BLE companion. default node name now MAC address
Jan 24, 2026
6336bd5
refactor ClientACL and CommonCLI, add ClientACL::clear()
oltaco Jan 24, 2026
988287b
recalc ClientACL shared_secrets at startup
oltaco Jan 24, 2026
96ef5e5
allow set prv.key from remote, validate new prv.key
oltaco Jan 24, 2026
153bcdc
Merge pull request #1457 from oltaco/remote-set-prvkey
ripplebiz Jan 25, 2026
f0269c9
Merge pull request #1465 from recrof/rak3112-port
ripplebiz Jan 25, 2026
a5f3766
Merge pull request #1429 from Snayler/dev
ripplebiz Jan 25, 2026
c16bcd2
Expose a counter to track RadioLib receive errors
Jan 25, 2026
7ae1642
* region names now don't need '#' prefix. (SHA still adds a '#' for b…
Jan 25, 2026
c7ac16f
Add v4-tft code.
Quency-D Jan 26, 2026
4b7684c
Merge pull request #1477 from Cisien/dev
ripplebiz Jan 26, 2026
ed589f9
boot adverts are now zero hop instead of flood
liamcottle Jan 26, 2026
d13bc44
added build flag to enable/disable boot advert
liamcottle Jan 26, 2026
7e24bd0
increase maximum flood advert interval to 168 hours (7 days)
liamcottle Jan 26, 2026
f1be7d0
Merge pull request #1488 from liamcottle/firmware/boot-adverts
ripplebiz Jan 26, 2026
0805a47
Add output of region cmd via lora cli
mattzzw Jan 24, 2026
d81616e
Merge pull request #1476 from mattzzw/region_via_LoRa
ripplebiz Jan 27, 2026
5a20e86
support for meshtiny
oltaco Jan 27, 2026
5627500
* new "clkreboot" CLI command
Jan 27, 2026
5ff6e81
* Fix: RegionMap build fail on _max
Jan 27, 2026
fedf703
Merge pull request #1486 from Quency-D/fix-heltec-v4-tft
ripplebiz Jan 27, 2026
c0194d8
Merge pull request #1492 from oltaco/meshtiny
ripplebiz Jan 27, 2026
3f3978c
Merge branch 'dev' into nrf-dcdc
fdlamotte Jan 27, 2026
ac79b38
Merge pull request #1246 from fschrempf/nrf-dcdc
fdlamotte Jan 27, 2026
4a83a66
build fix for meshtiny (nrf52board ota refactor)
oltaco Jan 27, 2026
3845a1c
Fix incorrect INA260 address in debug message
piotrmalek Jan 27, 2026
9665fee
Update runArgs in devcontainer.json
jbrazio Jan 27, 2026
58a3782
Merge pull request #1497 from oltaco/meshtiny-build-fix
ripplebiz Jan 27, 2026
edeafde
Fix: Correct validation logic in isValidName function
jbrazio Jan 27, 2026
4e1e8bb
Add a cli command reference document
Jan 27, 2026
3fc736e
Merge pull request #1499 from Meshcore-Portugal/jbrazio/2026_2768c833
liamcottle Jan 28, 2026
93367b9
Merge pull request #1493 from Cisien/dev
ripplebiz Jan 28, 2026
d5a73b2
fix: build errors because of changes in NRF52 base class
recrof Jan 28, 2026
f418724
moved pindefs from board file to variant.h
recrof Jan 28, 2026
dd2a904
Refactor display scaling definitions for HELTEC_VISION_MASTER_T190
litruv Jan 28, 2026
8f605f8
Merge pull request #1507 from recrof/rak3401-board-fix
liamcottle Jan 28, 2026
629adc2
Merge pull request #1508 from recrof/rak4631-cleanup
liamcottle Jan 28, 2026
f7e54ea
Add LilyGO T-Beam 1W Support
stevenlafl Jan 28, 2026
44e7c09
Add battery min/max voltage parameter support
stevenlafl Jan 28, 2026
a9a8299
Set LilyGO T-Beam 1W to use TX0 3.0V (within reference +2.85V~+3.15V)
stevenlafl Jan 28, 2026
465776d
* ver 1.12.0
Jan 29, 2026
3a7ccc0
fixed build errors and typos/inconsistencies
recrof Jan 29, 2026
2a321b5
renamed board files
recrof Jan 29, 2026
acca73f
Merge pull request #1524 from recrof/thinknode-m3-m6-fixes
fdlamotte Jan 29, 2026
31fbb67
Merge branch 'dev' into heltecv4-register1
Socalix Jan 29, 2026
c345f1d
Revert "Remove _serial->isConnected() logic from buzzer notifications"
recrof Jan 29, 2026
e50fe31
Merge pull request #1528 from recrof/revert-1437-dev
liamcottle Jan 29, 2026
e60fb14
Merge pull request #1500 from Meshcore-Portugal/jbrazio/2026_03a6aa94
ripplebiz Jan 30, 2026
cf7d95c
Merge pull request #1509 from stevenlafl/tbeam-1w
ripplebiz Jan 30, 2026
c7eea39
fix: remove esp_wifi.h from esp32board.h
oltaco Jan 30, 2026
019bbf7
Add recv_errors to CMD_GET_STATS STATS_TYPE_PACKETS response
agessaman Jan 30, 2026
06a83c0
Merge pull request #1531 from agessaman/add-recv-errors-stats
liamcottle Jan 30, 2026
c786cfe
Add KISS Modem firmware
ViezeVingertjes Jan 31, 2026
c5b1d30
t114: remove extra DCDC enable
oltaco Jan 31, 2026
e6e1b81
add DataStore::deleteBlobByKey()
oltaco Jan 27, 2026
31ba971
only store advblob when adding/updating contacts
oltaco Jan 27, 2026
8d5eaf5
add makeBlobPath inline helper for esp32
oltaco Jan 27, 2026
b5248fa
Revert "Merge pull request #1428 from etienn01/update-t114-i2c"
jbrazio Jan 31, 2026
1bcb52b
Add new commands and responses for RSSI, channel status, airtime, noi…
ViezeVingertjes Jan 31, 2026
240b5ea
Refactor KissModem to integrate radio and sensor management directly,…
ViezeVingertjes Jan 31, 2026
2b754d4
cli_commands.md: `region` available via remote cli in 1.12.0
mattzzw Jan 31, 2026
852c0b0
Merge pull request #1547 from oltaco/t114-remove-extra-dcdcen
ripplebiz Feb 1, 2026
f231347
Merge pull request #1512 from litruv/dev
ripplebiz Feb 1, 2026
13cfc9a
Merge pull request #1498 from piotrmalek/fix-env-sensor-manager
ripplebiz Feb 1, 2026
699d1cd
Merge pull request #1495 from oltaco/esp32-advblob-removal
ripplebiz Feb 1, 2026
a342ab8
nrf52: allow repeater to sleep when idle
oltaco Feb 1, 2026
2239307
Enable I2C sensors and EnvironmentSensorManager for Heltec T114
pinkolin Feb 1, 2026
ab99466
Merge pull request #1549 from Meshcore-Portugal/jbrazio/t114-fix
ripplebiz Feb 2, 2026
e15503d
Fix low power consumption issues
Quency-D Feb 2, 2026
f0ba14f
Remove sync word handling from KissModem.
ViezeVingertjes Feb 2, 2026
84e68cf
initial port of M5Stack Unit C6L, update pioarduino to newer bugfix r…
recrof Feb 2, 2026
e03f311
Merge pull request #1545 from ViezeVingertjes/kiss-modem-firmware
ripplebiz Feb 3, 2026
598489b
refactor ui with ring buffer and display most recent
oltaco Jan 26, 2026
2360259
Merge pull request #1487 from oltaco/refactor-ui-with-ringbuffer
liamcottle Feb 4, 2026
0fb5703
fix(kiss): periodic noise floor calibration and AGC reset
agessaman Feb 4, 2026
4b9d546
Merge pull request #1532 from oltaco/esp32board.h-removewifi
ripplebiz Feb 5, 2026
76a46a7
Merge pull request #1562 from oltaco/nrf52-sleep-repeater
ripplebiz Feb 5, 2026
f7e92a7
Merge pull request #1398 from Socalix/heltecv4-register1
ripplebiz Feb 5, 2026
f0aa12f
Merge remote-tracking branch 'pikolin/T114_sensors' into 2026/t114-se…
jbrazio Feb 5, 2026
5cb26b9
Refactor Heltec T114 sensor management
jbrazio Feb 5, 2026
1847333
Merge remote-tracking branch 'upstream/dev' into 2026/t114-sensors
jbrazio Feb 5, 2026
c0b81b9
Clean up comments on kiss noise floor changes.
agessaman Feb 5, 2026
d0720c6
Allow negative tx power
Jan 3, 2026
0b1fd58
Fix double claim, eliminate dead code at compile time
weebl2000 Feb 6, 2026
6502067
Merge pull request #1591 from agessaman/fix-kiss-noise-floor
ripplebiz Feb 7, 2026
c1c9848
Merge pull request #1596 from jbrazio/2026/t114-sensors
ripplebiz Feb 7, 2026
bcb7a80
Merge pull request #1578 from recrof/m5stack-unit-c6l
ripplebiz Feb 7, 2026
5dcc377
Rewrite KISS modem to be fully spec-compliant
ViezeVingertjes Feb 6, 2026
f78617d
Add periodic noise floor calibration and AGC reset
ViezeVingertjes Feb 6, 2026
203d86f
Update documentation.
ViezeVingertjes Feb 6, 2026
02ddc05
Reorganise KISS protocol to close gaps.
ViezeVingertjes Feb 6, 2026
1af013c
Clarify data frame limitations in KISS modem documentation.
ViezeVingertjes Feb 6, 2026
f445b5a
fix(kiss_modem): improve RX delivery and noise floor sampling
agessaman Feb 7, 2026
49e7516
Add KISS UART support
ViezeVingertjes Feb 6, 2026
7982d1c
Use high-bit convention for hardware response codes
ViezeVingertjes Feb 7, 2026
5ccd99e
Add toggleable per-packet signal reporting
ViezeVingertjes Feb 7, 2026
362b5eb
Update protocol docs for new response codes and signal reporting
ViezeVingertjes Feb 7, 2026
00b44c4
Remove redundant send/complete/finished callbacks, use Radio interfac…
ViezeVingertjes Feb 7, 2026
5157daf
Remove individual HW_RESP_* defines, use HW_RESP() macro directly
ViezeVingertjes Feb 7, 2026
f6ebbd9
Remove redundant locals in handleSetRadio
ViezeVingertjes Feb 7, 2026
c4c287d
Bridge always has work (prevents sleep)
weebl2000 Feb 7, 2026
23b4baa
Enable register patch heltec tracker v2
weebl2000 Feb 7, 2026
776131e
simplify kiss noise floor sampling
agessaman Feb 7, 2026
e8646f5
Parse as signed int
weebl2000 Feb 7, 2026
fcfbb45
Refactor environment names and build flags for RAK variants
jbrazio Feb 7, 2026
10eacc4
Merge pull request #1316 from weebl2000/allow-negative-tx
liamcottle Feb 7, 2026
31a2e74
Correct manufacturer name 'Elecrow ThinkNode M5'
thanegill Feb 8, 2026
736ddbf
Merge pull request #1620 from thanegill/patch-2
liamcottle Feb 8, 2026
f6fc056
Merge pull request #1609 from weebl2000/bridge-always-has-work
ripplebiz Feb 8, 2026
b1094c2
Merge pull request #1616 from jbrazio/2026/raknorm
liamcottle Feb 8, 2026
e4ef6db
Merge pull request #2 from agessaman/fix-simplify-kiss-noise-floor
ViezeVingertjes Feb 8, 2026
3ff1394
build.sh: add list and -l to list firmwares available to build.
thanegill Feb 8, 2026
9efb7cb
Merge pull request #2 from weebl2000/pr-1570-fix-heltec-v4-power
Quency-D Feb 9, 2026
248c310
Merge pull request #1605 from ViezeVingertjes/kiss-modem-spec-compliance
ripplebiz Feb 9, 2026
3f33455
Merge pull request #1570 from Quency-D/fix-heltec-power-consumption
ripplebiz Feb 9, 2026
810fd56
Enable TX LED for LilyGo LoRa32 V2.1_1.6
Snayler Feb 9, 2026
bafa2cc
fix estimated timeout for multi byte path traces
liamcottle Feb 10, 2026
7d7e88e
Merge pull request #1651 from liamcottle/fix/path-trace-timeout
liamcottle Feb 10, 2026
4944a46
Merge pull request #1638 from thanegill/build_sh-list
liamcottle Feb 10, 2026
d11d8ea
Merge branch 'meshcore-dev:dev' into dev
mattzzw Feb 10, 2026
e418b0c
Merge pull request #1557 from mattzzw/dev
liamcottle Feb 10, 2026
8db4214
Merge pull request #1645 from Snayler/Snayler-patch-1
ripplebiz Feb 11, 2026
e33d93d
Merge pull request #1611 from weebl2000/semtech-patch-tracker-v2
ripplebiz Feb 11, 2026
f720338
Fix WioTrackerL1 BLE companion: route sensors to Grove I2C bus (Wire1)
Azuresword Feb 11, 2026
beff18c
fix usb and build for rak 3112
recrof Feb 11, 2026
fb025fb
Add muted icon to show when buzzer is muted
ChaoticLeah Feb 11, 2026
5ccae4b
Merge pull request #1671 from recrof/rak3112-fix
liamcottle Feb 11, 2026
77675ab
add -D ESP32_PLATFORM to esp32_base
oltaco Feb 6, 2026
5df139f
update build.sh to support RP2040 and STM32
oltaco Feb 13, 2026
564a19d
* companion client repeat mode support
Feb 14, 2026
0abac35
* client_repeat state now in _DEVICE_INFO response
Feb 14, 2026
a6e741e
Merge pull request #1672 from ChaoticLeah/feature/mute-buzzer-icon
ripplebiz Feb 15, 2026
2220eca
Merge pull request #1669 from Azuresword/fix/wio-tracker-l1-grove-sen…
ripplebiz Feb 15, 2026
88452c4
Merge pull request #1603 from oltaco/fix-build.sh-for-RP2040-and-STM32
ripplebiz Feb 15, 2026
e2571ac
* ver 1.13.0
Feb 15, 2026
cafc212
fix M5Stack Unit M6L build errors
recrof Feb 15, 2026
2005977
Merge pull request #1699 from recrof/m5stack-m6l-build-fix
ripplebiz Feb 15, 2026
e8785dd
discover sends a single repeater discovery request and populates the …
Feb 16, 2026
87c78a9
discover.neighbors sends a tagged repeater discovery request and only…
Feb 17, 2026
bf9c6cb
Increased the timeout timer to 60 seconds, up from 30 seconds.
Feb 17, 2026
0770618
Allow repeater discovery even if repeater mode is disabled on the req…
Feb 17, 2026
3e53df5
Fix LilyGo_TLora_V2_1_1_6_terminal_chat build
3dpgg Feb 17, 2026
a073ba4
Merge pull request #1719 from 3dpgg/pr_lilygo_tlora_terminal_chat
ripplebiz Feb 17, 2026
5de3e1b
* repeater: slight increase to default direct.txdelay
Feb 17, 2026
2e00298
* companion: retransmit delays now hard-coded (only for client repeat…
Feb 17, 2026
bbc5f0c
Merge pull request #1718 from realtag-github/repeater-v1.13-implement…
liamcottle Feb 17, 2026
ffc9815
Fix packet pool leak when rx queue is full
weebl2000 Feb 17, 2026
1500a5a
add get bootloader.ver command for nrf52
oltaco Feb 18, 2026
063f505
Fixed RefCountedDigitalPin.h to release claim correctly. Ensure no ne…
IoTThinks Feb 2, 2026
39fb290
Avoid negative _claims
IoTThinks Feb 5, 2026
f6603fe
Set back PIN_VEXT_EN_ACTIVE=HIGH
IoTThinks Feb 5, 2026
44b80d0
Disabled periph_power for Heltec v4's display
IoTThinks Feb 5, 2026
13d0dff
Reverted to use GPIO 17, 18 as I2C for Heltec v4 repeater
IoTThinks Feb 18, 2026
c2abe89
Merge pull request #1728 from oltaco/nrf52-bootloader-version
ripplebiz Feb 21, 2026
d05d6ab
Merge pull request #1726 from weebl2000/fix-packet-pool-leak-queue-full
ripplebiz Feb 21, 2026
3e76161
* refactor of Contact/Client out_path_len (stored in files), from sig…
Feb 19, 2026
3dc1497
add companion usb build target for Heltec Wireless Tracker
accumulator Feb 22, 2026
011edd3
Fix millis() wraparound in PacketQueue time comparisons
DanielNovak Feb 22, 2026
5a885bf
Make full use of board's 8MB Flash and add companion WiFI target
ElectroMW Feb 22, 2026
8ee4867
Merge pull request #1795 from DanielNovak/fix-packetqueue-millis-wrap…
ripplebiz Feb 23, 2026
2e0fa3e
Merge pull request #1794 from accumulator/heltec_wireless_tracker_com…
ripplebiz Feb 23, 2026
9c31856
Merge pull request #1792 from ElectroMW/feature/t-beam-supreme-improv…
ripplebiz Feb 23, 2026
05e7b68
Merge branch 'dev' into multibyte-paths
Feb 23, 2026
a66773b
* CommonCLI: added "get/set path.hash.mode "
Feb 23, 2026
e52d57c
* companion: new pref: path_hash_mode (0..2)
Feb 23, 2026
5b0884a
* added CMD_SET_PATH_HASH_MODE
Feb 23, 2026
45564ba
* Dispatcher bug fixes
Feb 23, 2026
213d085
* revert CMD_SEND_SELF_ADVERT, use _prefs.path_hash_mode
Feb 23, 2026
9d5c486
* room server fix
Feb 23, 2026
9f4eeee
Added build flags for M5Stack Unit C6L
callum5892 Feb 23, 2026
f7c8cf1
Merge pull request #1808 from callum5892/dev
liamcottle Feb 23, 2026
b14879c
* CMD_GET_ADVERT_PATH bug fix
Feb 24, 2026
b777a7c
Update default preset to EU/UK (Narrow)
recrof Feb 24, 2026
f4748a7
* misc
Feb 24, 2026
15cce12
Add basic sanity test github PR workflow
weebl2000 Feb 25, 2026
e6e87fb
Merge pull request #1838 from weebl2000/github_workflows_sanitycheck
liamcottle Feb 25, 2026
8737c64
* Packet::copyPath() fix
Feb 25, 2026
def0188
Merge branch 'dev' into multibyte-paths
Feb 25, 2026
5280433
Merge pull request #1820 from recrof/patch-1
ripplebiz Feb 26, 2026
ca81f64
Merge branch 'multibyte-paths' into dev
Feb 26, 2026
b67decf
* bug fix: Packet::writeTo(), Packet::readFrom()
Feb 26, 2026
eee42c5
Merge pull request #1569 from IoTThinks/MCdev-Fixed-Incorrect-Release…
liamcottle Feb 28, 2026
8ad17d1
`gps sync` reply: fill buffer with text
enricolorenzoni59 Feb 28, 2026
06ab9f7
Merge pull request #1871 from enricolorenzoni59/gps-sync-reply
fdlamotte Feb 28, 2026
329e408
Hold GC1109 PA_POWER during deep sleep for LNA RX wake
weebl2000 Feb 6, 2026
2bb6f63
Add 1ms delay after powering PA (cold-boot)
weebl2000 Feb 8, 2026
d9e6722
prefs is 5 char length :nerd:
weebl2000 Feb 25, 2026
70f1ad4
Fix RAK3401 SKY66122-11 FEM control: enable CSD/CPS for proper PA and…
weebl2000 Feb 24, 2026
ac2aa03
Add SX126X_REGISTER_PATCH for RAK3401
weebl2000 Feb 25, 2026
5a5568e
Drive CTX low first
weebl2000 Feb 26, 2026
49d8313
Fix pin mapping & TX switch (it's DIO2)
weebl2000 Feb 27, 2026
f81ec4b
fix agc reset
weebl2000 Feb 19, 2026
a2dc2eb
when doing AGC reset, call Calibrate(0x7F)
weebl2000 Feb 19, 2026
9106ab4
reset noise_floor sampling after agc reset
weebl2000 Feb 19, 2026
b2032e1
make it more dry
weebl2000 Feb 19, 2026
f54948e
Also implement LR11x10 AGC reset
weebl2000 Feb 21, 2026
85f764a
Calibrate configured frequency for AGC reset
weebl2000 Feb 21, 2026
9bae9d0
fix comment, we know the band now after checking LR1110 user manual
weebl2000 Feb 21, 2026
59d9770
Add GPS support Heltec Wireless Tracker v1.x
Jan 9, 2026
8a9a0dc
Fix GPS +8mA power leak when disabled (nRF52)
weebl2000 Feb 9, 2026
0056674
Add configurable max hops filter for auto-add contacts
wbijen Mar 2, 2026
c016db8
Address PR review: subtract-1 encoding and clamp max_hops
wbijen Mar 3, 2026
2cb0877
Clarify comment wording: 1 = direct (0 hops)
wbijen Mar 3, 2026
1d190ad
Clamp max_hops to 64 to cover full protocol hop range (0-63)
wbijen Mar 3, 2026
6431cd2
Merge pull request #1900 from wbijen/feature/contact-filter-by-hops
ripplebiz Mar 3, 2026
bbd621b
Merge pull request #1351 from weebl2000/heltec_wireless_tracker_gps
liamcottle Mar 3, 2026
67779ad
Merge pull request #1600 from weebl2000/heltec_deep_sleep_lna
liamcottle Mar 3, 2026
d7ad890
Merge pull request #1633 from weebl2000/fix/gps-uart-power-leak
liamcottle Mar 3, 2026
ba3d9e2
Merge pull request #1836 from weebl2000/fix-rak3401-sky66122-11-fem
liamcottle Mar 3, 2026
7c594eb
Merge pull request #1743 from weebl2000/fixagcreset
ripplebiz Mar 3, 2026
cdd3d5f
Merge pull request #1841 from weebl2000/nit-prefs
liamcottle Mar 3, 2026
d960571
Merge remote-tracking branch 'origin/dev' into feat/user-btn-wake-up
weebl2000 Mar 4, 2026
d076ba2
fix user button wakeup
weebl2000 Mar 4, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
45 changes: 45 additions & 0 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
{
"name": "MeshCore",
"image": "mcr.microsoft.com/devcontainers/python:3-bookworm",
"features": {
"ghcr.io/rocker-org/devcontainer-features/apt-packages:1": {
"packages": [
"sudo"
]
}
},
"runArgs": [
"--privileged",
"--network=host",
"--volume=/dev/bus/usb:/dev/bus/usb:ro",
// arch tty* is owned by uucp (986)
// debian tty* is owned by dialout (20)
"--group-add=20",
"--group-add=986"
],
"postCreateCommand": {
"platformio": "pipx install platformio"
},
"customizations": {
"vscode": {
"settings": {
"platformio-ide.disablePIOHomeStartup": true,
"editor.formatOnSave": false,
"workbench.colorCustomizations": {
"titleBar.activeBackground": "#0d1a2b",
"titleBar.activeForeground": "#ffffff",
"titleBar.inactiveBackground": "#0d1a2b99",
"titleBar.inactiveForeground": "#ffffff99"
}
},
"extensions": [
"platformio.platformio-ide",
"github.vscode-github-actions",
"GitHub.vscode-pull-request-github"
],
"unwantedRecommendations": [
"ms-vscode.cpptools-extension-pack"
]
}
}
}
43 changes: 43 additions & 0 deletions .github/workflows/pr-build-check.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
name: PR Build Check

on:
pull_request:
branches: [main, dev]
paths:
- 'src/**'
- 'examples/**'
- 'variants/**'
- 'platformio.ini'
- '.github/workflows/pr-build-check.yml'

jobs:
build:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
environment:
# ESP32-S3 (most common platform)
- Heltec_v3_companion_radio_ble
- Heltec_v3_repeater
- Heltec_v3_room_server
# nRF52
- RAK_4631_companion_radio_ble
- RAK_4631_repeater
- RAK_4631_room_server
# RP2040
- PicoW_repeater
# STM32
- wio-e5-mini_repeater
# ESP32-C6
- LilyGo_Tlora_C6_repeater_

steps:
- name: Clone Repo
uses: actions/checkout@v4

- name: Setup Build Environment
uses: ./.github/actions/setup-build-environment

- name: Build ${{ matrix.environment }}
run: pio run -e ${{ matrix.environment }}
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -14,3 +14,5 @@ cmake-*
.cache
.ccls
compile_commands.json
.venv/
venv/
6 changes: 4 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,9 +39,11 @@ For developers;
- Clone and open the MeshCore repository in Visual Studio Code.
- See the example applications you can modify and run:
- [Companion Radio](./examples/companion_radio) - For use with an external chat app, over BLE, USB or WiFi.
- [KISS Modem](./examples/kiss_modem) - Serial KISS protocol bridge for host applications. ([protocol docs](./docs/kiss_modem_protocol.md))
- [Simple Repeater](./examples/simple_repeater) - Extends network coverage by relaying messages.
- [Simple Room Server](./examples/simple_room_server) - A simple BBS server for shared Posts.
- [Simple Secure Chat](./examples/simple_secure_chat) - Secure terminal based text communication between devices.
- [Simple Sensor](./examples/simple_sensor) - Remote sensor node with telemetry and alerting.

The Simple Secure Chat example can be interacted with through the Serial Monitor in Visual Studio Code, or with a Serial USB Terminal on Android.

Expand Down Expand Up @@ -89,7 +91,7 @@ Please submit PR's using 'dev' as the base branch!
For minor changes just submit your PR and I'll try to review it, but for anything more 'impactful' please open an Issue first and start a discussion. Is better to sound out what it is you want to achieve first, and try to come to a consensus on what the best approach is, especially when it impacts the structure or architecture of this codebase.

Here are some general principals you should try to adhere to:
* Keep it simple. Please, don't think like a high-level lang programmer. Think embedded, and keep code concise, without any unecessary layers.
* Keep it simple. Please, don't think like a high-level lang programmer. Think embedded, and keep code concise, without any unnecessary layers.
* No dynamic memory allocation, except during setup/begin functions.
* Use the same brace and indenting style that's in the core source modules. (A .clang-format is prob going to be added soon, but please do NOT retroactively re-format existing code. This just creates unnecessary diffs that make finding problems harder)

Expand All @@ -106,7 +108,7 @@ There are a number of fairly major features in the pipeline, with no particular
- [ ] Core + Apps: support for LZW message compression
- [ ] Core: dynamic CR (Coding Rate) for weak vs strong hops
- [ ] Core: new framework for hosting multiple virtual nodes on one physical device
- [ ] V2 protocol spec: discussion and concensus around V2 packet protocol, including path hashes, new encryption specs, etc
- [ ] V2 protocol spec: discussion and consensus around V2 packet protocol, including path hashes, new encryption specs, etc

## 📞 Get Support

Expand Down
198 changes: 198 additions & 0 deletions arch/nrf52/extra_scripts/patch_bluefruit.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,198 @@
"""
Bluefruit BLE Patch Script

Patches Bluefruit library to fix semaphore leak bug that causes device lockup
when BLE central disconnects unexpectedly (e.g., going out of range, supervision timeout).

Patches applied:
1. BLEConnection.h: Add _hvn_qsize member to track semaphore queue size
2. BLEConnection.cpp: Store hvn_qsize and restore semaphore on disconnect

Bug description:
- When a BLE central disconnects unexpectedly (reason=8 supervision timeout),
the BLE_GATTS_EVT_HVN_TX_COMPLETE event may never fire
- This leaves the _hvn_sem counting semaphore in a decremented state
- Since BLEConnection objects are reused (destructor never called), the
semaphore count is never restored
- Eventually all semaphore counts are exhausted and notify() blocks/fails

"""

from pathlib import Path

Import("env") # pylint: disable=undefined-variable


def _patch_ble_connection_header(source: Path) -> bool:
"""
Add _hvn_qsize member variable to BLEConnection class.

This is needed to restore the semaphore to its correct count on disconnect.

Returns True if patch was applied or already applied, False on error.
"""
try:
content = source.read_text()

# Check if already patched
if "_hvn_qsize" in content:
return True # Already patched

# Find the location to insert - after _phy declaration
original_pattern = ''' uint8_t _phy;

uint8_t _role;'''

patched_pattern = ''' uint8_t _phy;
uint8_t _hvn_qsize;

uint8_t _role;'''

if original_pattern not in content:
print("Bluefruit patch: WARNING - BLEConnection.h pattern not found")
return False

content = content.replace(original_pattern, patched_pattern)
source.write_text(content)

# Verify
if "_hvn_qsize" not in source.read_text():
return False

return True
except Exception as e:
print(f"Bluefruit patch: ERROR patching BLEConnection.h: {e}")
return False


def _patch_ble_connection_source(source: Path) -> bool:
"""
Patch BLEConnection.cpp to:
1. Store hvn_qsize in constructor
2. Restore _hvn_sem semaphore to full count on disconnect

Returns True if patch was applied or already applied, False on error.
"""
try:
content = source.read_text()

# Check if already patched (look for the restore loop)
if "uxSemaphoreGetCount(_hvn_sem)" in content:
return True # Already patched

# Patch 1: Store queue size in constructor
constructor_original = ''' _hvn_sem = xSemaphoreCreateCounting(hvn_qsize, hvn_qsize);'''

constructor_patched = ''' _hvn_qsize = hvn_qsize;
_hvn_sem = xSemaphoreCreateCounting(hvn_qsize, hvn_qsize);'''

if constructor_original not in content:
print("Bluefruit patch: WARNING - BLEConnection.cpp constructor pattern not found")
return False

content = content.replace(constructor_original, constructor_patched)

# Patch 2: Restore semaphore on disconnect
disconnect_original = ''' case BLE_GAP_EVT_DISCONNECTED:
// mark as disconnected
_connected = false;
break;'''

disconnect_patched = ''' case BLE_GAP_EVT_DISCONNECTED:
// Restore notification semaphore to full count
// This fixes lockup when disconnect occurs with notifications in flight
while (uxSemaphoreGetCount(_hvn_sem) < _hvn_qsize) {
xSemaphoreGive(_hvn_sem);
}
// Release indication semaphore if waiting
if (_hvc_sem) {
_hvc_received = false;
xSemaphoreGive(_hvc_sem);
}
// mark as disconnected
_connected = false;
break;'''

if disconnect_original not in content:
print("Bluefruit patch: WARNING - BLEConnection.cpp disconnect pattern not found")
return False

content = content.replace(disconnect_original, disconnect_patched)
source.write_text(content)

# Verify
verify_content = source.read_text()
if "uxSemaphoreGetCount(_hvn_sem)" not in verify_content:
return False
if "_hvn_qsize = hvn_qsize" not in verify_content:
return False

return True
except Exception as e:
print(f"Bluefruit patch: ERROR patching BLEConnection.cpp: {e}")
return False


def _apply_bluefruit_patches(target, source, env): # pylint: disable=unused-argument
framework_path = env.get("PLATFORMFW_DIR")
if not framework_path:
framework_path = env.PioPlatform().get_package_dir("framework-arduinoadafruitnrf52")

if not framework_path:
print("Bluefruit patch: ERROR - framework directory not found")
env.Exit(1)
return

framework_dir = Path(framework_path)
bluefruit_lib = framework_dir / "libraries" / "Bluefruit52Lib" / "src"
patch_failed = False

# Patch BLEConnection.h
conn_header = bluefruit_lib / "BLEConnection.h"
if conn_header.exists():
before = conn_header.read_text()
success = _patch_ble_connection_header(conn_header)
after = conn_header.read_text()

if success:
if before != after:
print("Bluefruit patch: OK - Applied BLEConnection.h fix (added _hvn_qsize member)")
else:
print("Bluefruit patch: OK - BLEConnection.h already patched")
else:
print("Bluefruit patch: FAILED - BLEConnection.h")
patch_failed = True
else:
print(f"Bluefruit patch: ERROR - BLEConnection.h not found at {conn_header}")
patch_failed = True

# Patch BLEConnection.cpp
conn_source = bluefruit_lib / "BLEConnection.cpp"
if conn_source.exists():
before = conn_source.read_text()
success = _patch_ble_connection_source(conn_source)
after = conn_source.read_text()

if success:
if before != after:
print("Bluefruit patch: OK - Applied BLEConnection.cpp fix (restore semaphore on disconnect)")
else:
print("Bluefruit patch: OK - BLEConnection.cpp already patched")
else:
print("Bluefruit patch: FAILED - BLEConnection.cpp")
patch_failed = True
else:
print(f"Bluefruit patch: ERROR - BLEConnection.cpp not found at {conn_source}")
patch_failed = True

if patch_failed:
print("Bluefruit patch: CRITICAL - Patch failed! Build aborted.")
env.Exit(1)


# Register the patch to run before build
bluefruit_action = env.VerboseAction(_apply_bluefruit_patches, "Applying Bluefruit BLE patches...")
env.AddPreAction("$BUILD_DIR/${PROGNAME}.elf", bluefruit_action)

# Also run immediately to patch before any compilation
_apply_bluefruit_patches(None, None, env)
39 changes: 39 additions & 0 deletions boards/ESP32-S3-WROOM-1-N4.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
{
"build": {
"arduino": {
"ldscript": "esp32s3_out.ld"
},
"core": "esp32",
"extra_flags": [
"-D ARDUINO_USB_CDC_ON_BOOT=0",
"-D ARDUINO_USB_MSC_ON_BOOT=0",
"-D ARDUINO_USB_DFU_ON_BOOT=0",
"-D ARDUINO_USB_MODE=0",
"-D ARDUINO_RUNNING_CORE=1",
"-D ARDUINO_EVENT_RUNNING_CORE=1"
],
"f_cpu": "240000000L",
"f_flash": "80000000L",
"flash_mode": "qio",
"hwids": [["0x303A", "0x1001"]],
"mcu": "esp32s3",
"variant": "ESP32-S3-WROOM-1-N4"
},
"connectivity": ["wifi", "bluetooth"],
"debug": {
"default_tool": "esp-builtin",
"onboard_tools": ["esp-builtin"],
"openocd_target": "esp32s3.cfg"
},
"frameworks": ["arduino", "espidf"],
"name": "ESP32-S3-WROOM-1-N4 (4 MB Flash, No PSRAM)",
"upload": {
"flash_size": "4MB",
"maximum_ram_size": 524288,
"maximum_size": 4194304,
"require_upload_port": true,
"speed": 921600
},
"url": "https://www.espressif.com/sites/default/files/documentation/esp32-s3-wroom-1_wroom-1u_datasheet_en.pdf",
"vendor": "Espressif"
}
Loading