From c1839733170dd9c9b98265aea18e1b3ba81d2c48 Mon Sep 17 00:00:00 2001 From: Garth Vander Houwen Date: Sat, 24 Feb 2024 11:19:17 -0800 Subject: [PATCH 001/454] Update config.proto Update proto comments --- meshtastic/config.proto | 28 +++++++++++----------------- 1 file changed, 11 insertions(+), 17 deletions(-) diff --git a/meshtastic/config.proto b/meshtastic/config.proto index 7ebbe45..7505f7d 100644 --- a/meshtastic/config.proto +++ b/meshtastic/config.proto @@ -350,30 +350,27 @@ message Config { */ message PowerConfig { /* - * If set, we are powered from a low-current source (i.e. solar), so even if it looks like we have power flowing in - * we should try to minimize power consumption as much as possible. - * YOU DO NOT NEED TO SET THIS IF YOU'VE set is_router (it is implied in that case). - * Advanced Option + * Description: Will sleep everything as much as possible, for the tracker and sensor role this will also include the lora radio. + * Don't use this setting if you want to use your device with the phone apps or are using a device without a user button. + * Technical Details: Works for ESP32 devices and NRF52 devices in the Sensor or Tracker roles */ bool is_power_saving = 1; /* - * If non-zero, the device will fully power off this many seconds after external power is removed. + * Description: If non-zero, the device will fully power off this many seconds after external power is removed. */ uint32 on_battery_shutdown_after_secs = 2; /* * Ratio of voltage divider for battery pin eg. 3.20 (R1=100k, R2=220k) * Overrides the ADC_MULTIPLIER defined in variant for battery voltage calculation. - * Should be set to floating point value between 2 and 4 - * Fixes issues on Heltec v2 + * Should be set to floating point value between 2 and 6 */ float adc_multiplier_override = 3; /* - * Wait Bluetooth Seconds - * The number of seconds for to wait before turning off BLE in No Bluetooth states - * 0 for default of 1 minute + * Description: The number of seconds for to wait before turning off BLE in No Bluetooth states + * Technical Details: ESP32 Only 0 for default of 1 minute */ uint32 wait_bluetooth_secs = 4; @@ -386,17 +383,14 @@ message Config { uint32 sds_secs = 6; /* - * Light Sleep Seconds - * In light sleep the CPU is suspended, LoRa radio is on, BLE is off an GPS is on - * ESP32 Only - * 0 for default of 300 + * Description: In light sleep the CPU is suspended, LoRa radio is on, BLE is off an GPS is on + * Technical Details: ESP32 Only 0 for default of 300 */ uint32 ls_secs = 7; /* - * Minimum Wake Seconds - * While in light sleep when we receive packets on the LoRa radio we will wake and handle them and stay awake in no BLE mode for this value - * 0 for default of 10 seconds + * Description: While in light sleep when we receive packets on the LoRa radio we will wake and handle them and stay awake in no BLE mode for this value + * Technical Details: ESP32 Only 0 for default of 10 seconds */ uint32 min_wake_secs = 8; From cd9dddb1993c55451de4e519bc2abe0000aa72f6 Mon Sep 17 00:00:00 2001 From: Garth Vander Houwen Date: Sat, 24 Feb 2024 16:33:43 -0800 Subject: [PATCH 002/454] Update config.proto --- meshtastic/config.proto | 1 + 1 file changed, 1 insertion(+) diff --git a/meshtastic/config.proto b/meshtastic/config.proto index 7505f7d..56282b4 100644 --- a/meshtastic/config.proto +++ b/meshtastic/config.proto @@ -364,6 +364,7 @@ message Config { /* * Ratio of voltage divider for battery pin eg. 3.20 (R1=100k, R2=220k) * Overrides the ADC_MULTIPLIER defined in variant for battery voltage calculation. + * https://meshtastic.org/docs/configuration/radio/power/#adc-multiplier-override * Should be set to floating point value between 2 and 6 */ float adc_multiplier_override = 3; From 61de46ab06f195890e3bdc5460082d88366c5688 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20G=C3=B6ttgens?= Date: Tue, 9 Apr 2024 14:01:40 +0200 Subject: [PATCH 003/454] Add fieldfor Air quality index (VOC for other sensors) --- meshtastic/telemetry.options | 2 +- meshtastic/telemetry.proto | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/meshtastic/telemetry.options b/meshtastic/telemetry.options index 6c80df9..2fe657c 100644 --- a/meshtastic/telemetry.options +++ b/meshtastic/telemetry.options @@ -1,4 +1,4 @@ # options for nanopb # https://jpa.kapsi.fi/nanopb/docs/reference.html#proto-file-options - +*EnvironmentMetrics.iaq int_size:16 \ No newline at end of file diff --git a/meshtastic/telemetry.proto b/meshtastic/telemetry.proto index a822c5d..0eb59cd 100644 --- a/meshtastic/telemetry.proto +++ b/meshtastic/telemetry.proto @@ -66,6 +66,12 @@ message EnvironmentMetrics { * Current measured (To be depreciated in favor of PowerMetrics in Meshtastic 3.x) */ float current = 6; + + /* + * relative scale IAQ value as measured by Bosch BME680 . value 0-500. + * Belongs to Air Quality but is not particle but VOC measurement. Other VOC values can also be put in here. + */ + uint32 iaq = 7; } /* From 4051bdbee05fe9b695249e38a1664b4e3fae8c22 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Wed, 10 Apr 2024 07:07:37 -0500 Subject: [PATCH 004/454] Add uptime seconds --- meshtastic/telemetry.proto | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/meshtastic/telemetry.proto b/meshtastic/telemetry.proto index 0eb59cd..ed48589 100644 --- a/meshtastic/telemetry.proto +++ b/meshtastic/telemetry.proto @@ -31,6 +31,11 @@ message DeviceMetrics { * Percent of airtime for transmission used within the last hour. */ float air_util_tx = 4; + + /* + * How long the device has been running since the last reboot (in seconds) + */ + uint32 uptime_seconds = 5; } /* From a650d05aab7cc02801b4b4bbac7bdde6e9898459 Mon Sep 17 00:00:00 2001 From: S5NC <145265251+S5NC@users.noreply.github.com> Date: Mon, 15 Apr 2024 20:30:25 +0100 Subject: [PATCH 005/454] Update mesh.proto --- meshtastic/mesh.proto | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index ade29d8..c6d28ce 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -510,6 +510,11 @@ enum HardwareModel { */ TD_LORAC = 60; + /* + * CDEBYTE EoRa-S3 board using their own MM modules, clone of LILYGO T3S3 + */ + CDEBYTE_EORA_S3 = 61; + /* * ------------------------------------------------------------------------------------------------------------------------------------------ * Reserved ID For developing private Ports. These will show up in live traffic sparsely, so we can use a high number. Keep it within 8 bits. From bd70a9a96ebcc88c20eb5fecd0f7971c9f21604b Mon Sep 17 00:00:00 2001 From: Andrew Yong Date: Sat, 20 Apr 2024 13:24:10 +0800 Subject: [PATCH 006/454] Add status_led_off to support turning status LED off (dark mode) Signed-off-by: Andrew Yong --- meshtastic/config.proto | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/meshtastic/config.proto b/meshtastic/config.proto index f83d220..e884ca6 100644 --- a/meshtastic/config.proto +++ b/meshtastic/config.proto @@ -185,6 +185,11 @@ message Config { * POSIX Timezone definition string from https://github.com/nayarsystems/posix_tz_db/blob/master/zones.csv. */ string tzdef = 11; + + /* + * If true, inhibit blinking LED at LED_PIN regularly + */ + bool status_led_off = 12; } /* From 6a8677c29371f80b236c1e0762660fce31439b24 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20G=C3=B6ttgens?= Date: Sat, 20 Apr 2024 16:20:28 +0200 Subject: [PATCH 007/454] Support RCWL-9620 --- meshtastic/telemetry.proto | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/meshtastic/telemetry.proto b/meshtastic/telemetry.proto index ed48589..e472e3b 100644 --- a/meshtastic/telemetry.proto +++ b/meshtastic/telemetry.proto @@ -77,6 +77,11 @@ message EnvironmentMetrics { * Belongs to Air Quality but is not particle but VOC measurement. Other VOC values can also be put in here. */ uint32 iaq = 7; + + /* + * RCWL9620 Doppler Radar Distance Sensor, used for water level detection. Float value in mm. + */ + float water_level = 8; } /* @@ -294,4 +299,9 @@ enum TelemetrySensorType { * BMP085/BMP180 High accuracy temperature and pressure (older Version of BMP280) */ BMP085 = 15; + + /* + * RCWL-9620 Doppler Radar Distance Sensor, used for water level detection + */ + RCWL9620 = 16; } From bb07ddba10fbe19fc004f0cbb67a1433c0696b0f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20G=C3=B6ttgens?= Date: Sat, 20 Apr 2024 16:54:41 +0200 Subject: [PATCH 008/454] rename value to "distance" --- meshtastic/telemetry.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meshtastic/telemetry.proto b/meshtastic/telemetry.proto index e472e3b..fe9eecf 100644 --- a/meshtastic/telemetry.proto +++ b/meshtastic/telemetry.proto @@ -81,7 +81,7 @@ message EnvironmentMetrics { /* * RCWL9620 Doppler Radar Distance Sensor, used for water level detection. Float value in mm. */ - float water_level = 8; + float distance = 8; } /* From aa0413204f947f7a9308e7a9018438e350b3077f Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Sat, 20 Apr 2024 12:48:09 -0500 Subject: [PATCH 009/454] Rebrand as heartbeat led and add more explicit description --- meshtastic/config.proto | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/meshtastic/config.proto b/meshtastic/config.proto index e884ca6..43e8c6e 100644 --- a/meshtastic/config.proto +++ b/meshtastic/config.proto @@ -187,9 +187,9 @@ message Config { string tzdef = 11; /* - * If true, inhibit blinking LED at LED_PIN regularly + * If true, disable the default blinking LED (LED_PIN) behavior on the device */ - bool status_led_off = 12; + bool led_heartbeat_disabled = 12; } /* From ef2502fb3a0aa350314222bd9ff4bf726d7f3c1c Mon Sep 17 00:00:00 2001 From: SCWhite Date: Tue, 23 Apr 2024 18:10:02 +0800 Subject: [PATCH 010/454] add HardwareModel: TWC_MESH_V4 --- meshtastic/mesh.proto | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index c6d28ce..e884fbb 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -515,6 +515,11 @@ enum HardwareModel { */ CDEBYTE_EORA_S3 = 61; +/* + * TWC_MESH_V4 + * Adafruit NRF52840 feather express with SX1262, SSD1306 OLED and NEO6M GPS + */ + TWC_MESH_V4 = 62; /* * ------------------------------------------------------------------------------------------------------------------------------------------ * Reserved ID For developing private Ports. These will show up in live traffic sparsely, so we can use a high number. Keep it within 8 bits. From 112f1fdcd0195020a126d84f67cf9ba0b351edd8 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Mon, 29 Apr 2024 19:35:02 -0500 Subject: [PATCH 011/454] Added mute channel into module settings --- meshtastic/channel.proto | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/meshtastic/channel.proto b/meshtastic/channel.proto index d2ec81a..16c8c19 100644 --- a/meshtastic/channel.proto +++ b/meshtastic/channel.proto @@ -96,6 +96,12 @@ message ModuleSettings { * Bits of precision for the location sent in position packets. */ uint32 position_precision = 1; + + /* + * Controls whether or not the phone / clients should mute the current channel + * Useful for noisy public channels you don't necessarily want to disable + */ + bool is_client_muted = 2; } /* From 12fd8c7e3f1c5e428033546f4961699334620b45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20G=C3=B6ttgens?= Date: Sat, 4 May 2024 20:37:16 +0200 Subject: [PATCH 012/454] add wiphone --- meshtastic/mesh.proto | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index e884fbb..24c471a 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -319,6 +319,11 @@ enum HardwareModel { */ LORA_TYPE = 19; + /* + * wiphone https://www.wiphone.io/ + */ + WIPHONE = 20; + /* * B&Q Consulting Station Edition G1: https://uniteng.com/wiki/doku.php?id=meshtastic:station */ From df36597cbf2d8cf84bc0d61482d9f682ec24ee2d Mon Sep 17 00:00:00 2001 From: vardas Date: Sun, 5 May 2024 14:55:33 +0300 Subject: [PATCH 013/454] New variant PROMICRO_DIY --- meshtastic/mesh.proto | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 24c471a..195ffa6 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -525,6 +525,12 @@ enum HardwareModel { * Adafruit NRF52840 feather express with SX1262, SSD1306 OLED and NEO6M GPS */ TWC_MESH_V4 = 62; + + /* + * PROMICRO_DIY_M(M) + * Promicro NRF52840 with SX1262/LLCC68, SSD1306 OLED and NEO6M GPS + */ + PROMICRO_DIY = 63; /* * ------------------------------------------------------------------------------------------------------------------------------------------ * Reserved ID For developing private Ports. These will show up in live traffic sparsely, so we can use a high number. Keep it within 8 bits. From 7eab4648793ce1585a70a8fb032e06894de7a36e Mon Sep 17 00:00:00 2001 From: vardas Date: Sun, 5 May 2024 16:34:11 +0300 Subject: [PATCH 014/454] Renaming --- meshtastic/mesh.proto | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 195ffa6..279f222 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -527,10 +527,10 @@ enum HardwareModel { TWC_MESH_V4 = 62; /* - * PROMICRO_DIY_M(M) + * NRF52_PROMICRO_DIY * Promicro NRF52840 with SX1262/LLCC68, SSD1306 OLED and NEO6M GPS */ - PROMICRO_DIY = 63; + NRF52_PROMICRO_DIY = 63; /* * ------------------------------------------------------------------------------------------------------------------------------------------ * Reserved ID For developing private Ports. These will show up in live traffic sparsely, so we can use a high number. Keep it within 8 bits. From edbf510ef7f6b544b9c2d35c5c21f5693b7bd58b Mon Sep 17 00:00:00 2001 From: pr000t <20946964+pr000t@users.noreply.github.com> Date: Sun, 5 May 2024 17:19:54 +0200 Subject: [PATCH 015/454] Update telemetry.proto Add Sensirion SHT4X sensors --- meshtastic/telemetry.proto | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/meshtastic/telemetry.proto b/meshtastic/telemetry.proto index fe9eecf..d6b2388 100644 --- a/meshtastic/telemetry.proto +++ b/meshtastic/telemetry.proto @@ -304,4 +304,9 @@ enum TelemetrySensorType { * RCWL-9620 Doppler Radar Distance Sensor, used for water level detection */ RCWL9620 = 16; + + /* + * Sensirion High accuracy temperature and humidity + */ + SHT4X = 17; } From 5f6dc3a1a83adda33701cd9cd0c5c2d69633dd94 Mon Sep 17 00:00:00 2001 From: Jorge Castillo Date: Wed, 8 May 2024 22:20:18 -0400 Subject: [PATCH 016/454] add veml7700 ambient light readings to the env merics --- meshtastic/telemetry.proto | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/meshtastic/telemetry.proto b/meshtastic/telemetry.proto index d6b2388..4661cd6 100644 --- a/meshtastic/telemetry.proto +++ b/meshtastic/telemetry.proto @@ -82,6 +82,23 @@ message EnvironmentMetrics { * RCWL9620 Doppler Radar Distance Sensor, used for water level detection. Float value in mm. */ float distance = 8; + + /* + * VEML7700 high accuracy ambient light(Lux) digital 16-bit resolution sensor. + */ + float lux = 9; + + /* + * VEML7700 raw white light data digital 16-bit resolution sensor. + */ + uint32 white = 10; + + /* + * VEML7700 raw ALS data digital 16-bit resolution sensor. + */ + uint32 ALS = 11; + + } /* @@ -309,4 +326,8 @@ enum TelemetrySensorType { * Sensirion High accuracy temperature and humidity */ SHT4X = 17; -} + /* + * VEML7700 high accuracy ambient light(Lux) digital 16-bit resolution sensor. + */ + VEML7700 = 18; +} \ No newline at end of file From 71f3d68db56fb335c78211443b6cff3d661adb03 Mon Sep 17 00:00:00 2001 From: Jorge Castillo Date: Tue, 14 May 2024 16:43:15 -0400 Subject: [PATCH 017/454] Update telemetry.proto to include VEML7700 high accuracy white light(irradiance) sensor --- meshtastic/telemetry.proto | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/meshtastic/telemetry.proto b/meshtastic/telemetry.proto index 4661cd6..734683a 100644 --- a/meshtastic/telemetry.proto +++ b/meshtastic/telemetry.proto @@ -89,16 +89,9 @@ message EnvironmentMetrics { float lux = 9; /* - * VEML7700 raw white light data digital 16-bit resolution sensor. + * VEML7700 high accuracy white light(irradiance) not calibrated digital 16-bit resolution sensor. */ - uint32 white = 10; - - /* - * VEML7700 raw ALS data digital 16-bit resolution sensor. - */ - uint32 ALS = 11; - - + float white_lux = 10; } /* From 0a84f48e849401b7f9b6c222da865a7b350766fc Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Wed, 15 May 2024 07:07:22 -0500 Subject: [PATCH 018/454] More RAK / Adafruit sensors --- meshtastic/telemetry.proto | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/meshtastic/telemetry.proto b/meshtastic/telemetry.proto index 734683a..052a5a9 100644 --- a/meshtastic/telemetry.proto +++ b/meshtastic/telemetry.proto @@ -319,8 +319,29 @@ enum TelemetrySensorType { * Sensirion High accuracy temperature and humidity */ SHT4X = 17; + /* * VEML7700 high accuracy ambient light(Lux) digital 16-bit resolution sensor. */ VEML7700 = 18; + + /* + * MLX90632 non-contact IR temperature sensor. + */ + MLX90632 = 19; + + /* + * TI OPT3001 Ambient Light Sensor + */ + OPT3001 = 20; + + /* + * Lite On LTR-390UV-01 UV Light Sensor + */ + LTR390UV = 21; + + /* + * AMS TSL25911FN RGB Light Sensor + */ + TSL25911FN = 22; } \ No newline at end of file From 1b0b61a76e66fc65d0821efae1f4eab6ac6f4209 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20G=C3=B6ttgens?= Date: Thu, 16 May 2024 15:36:04 +0200 Subject: [PATCH 019/454] protobufs for https://github.com/meshtastic/firmware/issues/3885 --- meshtastic/module_config.proto | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/meshtastic/module_config.proto b/meshtastic/module_config.proto index 36a2b4b..8215e01 100644 --- a/meshtastic/module_config.proto +++ b/meshtastic/module_config.proto @@ -254,6 +254,17 @@ message ModuleConfig { */ uint32 paxcounter_update_interval = 2; + + /* + * WiFi RSSI threshold. Defaults to -80 + */ + int32 wifi_threshold = 3; + + /* + * BLE RSSI threshold. Defaults to -80 + */ + int32 ble_threshold = 4; + } /* From 7c533e810b78f31ce0e541018e7ee54f926c4003 Mon Sep 17 00:00:00 2001 From: tuxphone <67556506+tuxphone@users.noreply.github.com> Date: Wed, 22 May 2024 14:19:07 +0200 Subject: [PATCH 020/454] Synchronize ham short_name length with meshtastic user short_name length --- meshtastic/admin.options | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/meshtastic/admin.options b/meshtastic/admin.options index 1d582e2..4804d89 100644 --- a/meshtastic/admin.options +++ b/meshtastic/admin.options @@ -8,5 +8,5 @@ *AdminMessage.get_ringtone_response max_size:231 *HamParameters.call_sign max_size:8 -*HamParameters.short_name max_size:6 -*NodeRemoteHardwarePinsResponse.node_remote_hardware_pins max_count:16 \ No newline at end of file +*HamParameters.short_name max_size:5 +*NodeRemoteHardwarePinsResponse.node_remote_hardware_pins max_count:16 From bacd654744f1cc905aef92aafb96d1c537663312 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20Gjels=C3=B8?= <36234524+gjelsoe@users.noreply.github.com> Date: Sat, 25 May 2024 09:01:20 +0200 Subject: [PATCH 021/454] Update mesh.proto RadioMaster 900 Bandit Nano ID, https://www.radiomasterrc.com/products/bandit-nano-expresslrs-rf-module --- meshtastic/mesh.proto | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 279f222..682b0f8 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -531,6 +531,13 @@ enum HardwareModel { * Promicro NRF52840 with SX1262/LLCC68, SSD1306 OLED and NEO6M GPS */ NRF52_PROMICRO_DIY = 63; + + /* + * RadioMaster 900 Bandit Nano, https://www.radiomasterrc.com/products/bandit-nano-expresslrs-rf-module + * ESP32-D0WDQ6 With SX1276/SKY66122, SSD1306 OLED and No GPS + */ + RADIOMASTER_900_BANDIT_NANO = 64 + /* * ------------------------------------------------------------------------------------------------------------------------------------------ * Reserved ID For developing private Ports. These will show up in live traffic sparsely, so we can use a high number. Keep it within 8 bits. From 3cb2b01cf74f8eb226834980a1a7e15a8cdcd8c7 Mon Sep 17 00:00:00 2001 From: Jurriaan Pruis Date: Sun, 26 May 2024 11:44:41 +0200 Subject: [PATCH 022/454] Fix invalid protobuf The mesh.proto file was broken, was missing a semicolon. --- meshtastic/mesh.proto | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 682b0f8..3139b9a 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -520,7 +520,7 @@ enum HardwareModel { */ CDEBYTE_EORA_S3 = 61; -/* + /* * TWC_MESH_V4 * Adafruit NRF52840 feather express with SX1262, SSD1306 OLED and NEO6M GPS */ @@ -536,7 +536,7 @@ enum HardwareModel { * RadioMaster 900 Bandit Nano, https://www.radiomasterrc.com/products/bandit-nano-expresslrs-rf-module * ESP32-D0WDQ6 With SX1276/SKY66122, SSD1306 OLED and No GPS */ - RADIOMASTER_900_BANDIT_NANO = 64 + RADIOMASTER_900_BANDIT_NANO = 64; /* * ------------------------------------------------------------------------------------------------------------------------------------------ From 4ef9dd400091b75dcf2e6867d771b1959bfc1993 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Thu, 30 May 2024 06:53:03 -0500 Subject: [PATCH 023/454] Added to_callsign to atak GeoChat --- meshtastic/atak.options | 3 ++- meshtastic/atak.proto | 5 +++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/meshtastic/atak.options b/meshtastic/atak.options index c341400..6baa7ea 100644 --- a/meshtastic/atak.options +++ b/meshtastic/atak.options @@ -3,4 +3,5 @@ *Status.battery int_size:8 *PLI.course int_size:16 *GeoChat.message max_size:200 -*GeoChat.to max_size:120 \ No newline at end of file +*GeoChat.to max_size:120 +*GeoChat.to_callsign max_size:120 diff --git a/meshtastic/atak.proto b/meshtastic/atak.proto index 199f06b..83996a4 100644 --- a/meshtastic/atak.proto +++ b/meshtastic/atak.proto @@ -56,6 +56,11 @@ message GeoChat { * Uid recipient of the message */ optional string to = 2; + + /* + * Callsign of the recipient for the message + */ + optional string to_callsign = 2; } /* From 7fbaa3c74cda31f9da034980e1367f4d1874aaa4 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Thu, 30 May 2024 06:54:38 -0500 Subject: [PATCH 024/454] SpaghettiO --- meshtastic/atak.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meshtastic/atak.proto b/meshtastic/atak.proto index 83996a4..ccde335 100644 --- a/meshtastic/atak.proto +++ b/meshtastic/atak.proto @@ -60,7 +60,7 @@ message GeoChat { /* * Callsign of the recipient for the message */ - optional string to_callsign = 2; + optional string to_callsign = 3; } /* From ad3cc2d295cbbc2d674d48d975ee6c3b3949cc74 Mon Sep 17 00:00:00 2001 From: Alexander Smyslov <37107500+alexander-smyslov@users.noreply.github.com> Date: Fri, 31 May 2024 12:24:41 +0200 Subject: [PATCH 025/454] Update telemetry.proto add support AHT10 --- meshtastic/telemetry.proto | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/meshtastic/telemetry.proto b/meshtastic/telemetry.proto index 052a5a9..87e7755 100644 --- a/meshtastic/telemetry.proto +++ b/meshtastic/telemetry.proto @@ -344,4 +344,9 @@ enum TelemetrySensorType { * AMS TSL25911FN RGB Light Sensor */ TSL25911FN = 22; -} \ No newline at end of file + + /* + * AHT10 Integrated temperature and humidity sensor + */ + AHT10 = 23; +} From 1e8fa54a05326494c9101068df23f9c39f147c1a Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Mon, 3 Jun 2024 14:57:21 -0500 Subject: [PATCH 026/454] Chunked payload for PoC binary transfer --- meshtastic/mesh.options | 4 ++++ meshtastic/mesh.proto | 48 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+) diff --git a/meshtastic/mesh.options b/meshtastic/mesh.options index aedfe99..6dcd248 100644 --- a/meshtastic/mesh.options +++ b/meshtastic/mesh.options @@ -59,3 +59,7 @@ *MqttClientProxyMessage.topic max_size:60 *MqttClientProxyMessage.data max_size:435 *MqttClientProxyMessage.text max_size:435 + +*ChunkedPayload.chunk_count int_size:16 +*ChunkedPayload.chunk_index int_size:16 +*ChunkedPayload.payload_chunk max_size:228 diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 279f222..214eb57 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -1626,3 +1626,51 @@ message NodeRemoteHardwarePin { */ RemoteHardwarePin pin = 2; } + +message ChunkedPayload { + /* + * The ID of the entire payload + */ + uint32 payload_id = 1; + + /* + * The total number of chunks in the payload + */ + uint32 chunk_count = 2; + + /* + * The current chunk index in the total + */ + uint32 chunk_index = 3; + + /* + * The binary data of the current chunk + */ + bytes payload_chunk = 4; +} + +/* + * Responses to a ChunkedPayload request + */ +message ChunkedPayloadResponse { + /* + * The ID of the entire payload + */ + uint32 payload_id = 1; + + oneof payload_variant { + /* + * Request to transfer chunked payload + */ + bool request_transfer = 2; + + /* + * Accept the transfer chunked payload + */ + bool accept_transfer = 3; + /* + * Request missing indexes in the chunked payload + */ + repeated uint32 resend_chunks = 4; + } +} \ No newline at end of file From 5f879edb72fc94633cd5e3278fff1a7f7f9d0b28 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Mon, 3 Jun 2024 15:21:28 -0500 Subject: [PATCH 027/454] More lux options, wind speed, and direction as well as DF Robot lark support --- meshtastic/telemetry.options | 3 ++- meshtastic/telemetry.proto | 26 ++++++++++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/meshtastic/telemetry.options b/meshtastic/telemetry.options index 2fe657c..72aba92 100644 --- a/meshtastic/telemetry.options +++ b/meshtastic/telemetry.options @@ -1,4 +1,5 @@ # options for nanopb # https://jpa.kapsi.fi/nanopb/docs/reference.html#proto-file-options -*EnvironmentMetrics.iaq int_size:16 \ No newline at end of file +*EnvironmentMetrics.iaq int_size:16 +*EnvironmentMetrics.wind_direction int_size:16 \ No newline at end of file diff --git a/meshtastic/telemetry.proto b/meshtastic/telemetry.proto index 87e7755..42c5a93 100644 --- a/meshtastic/telemetry.proto +++ b/meshtastic/telemetry.proto @@ -92,6 +92,27 @@ message EnvironmentMetrics { * VEML7700 high accuracy white light(irradiance) not calibrated digital 16-bit resolution sensor. */ float white_lux = 10; + + /* + * Infrared lux + */ + float ir_lux = 11; + + /* + * Ultraviolet lux + */ + float uv_lux = 12; + + /* + * Wind direction in degrees + * 0 degrees = North, 90 = East, etc... + */ + uint32 wind_direction = 13; + + /* + * Wind speed in m/s + */ + float wind_speed = 14; } /* @@ -349,4 +370,9 @@ enum TelemetrySensorType { * AHT10 Integrated temperature and humidity sensor */ AHT10 = 23; + + /* + * DFRobot Lark Weather station (temperature, humidity, pressure, wind speed and direction) + */ + DFROBOT_LARK = 24; } From 574aeb5b496cec182a38da68f0c496aa3b0c4c0c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20G=C3=B6ttgens?= Date: Tue, 4 Jun 2024 14:54:28 +0200 Subject: [PATCH 028/454] Update mesh.proto --- meshtastic/mesh.proto | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index f3406e4..3b79931 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -324,6 +324,11 @@ enum HardwareModel { */ WIPHONE = 20; + /* + * WIO Tracker WM1110 family from Seeed Studio. Includes wio-1110-tracker and wio-1110-sdk + */ + WIO_WM1110 = 21; + /* * B&Q Consulting Station Edition G1: https://uniteng.com/wiki/doku.php?id=meshtastic:station */ @@ -1680,4 +1685,4 @@ message ChunkedPayloadResponse { */ repeated uint32 resend_chunks = 4; } -} \ No newline at end of file +} From 492753200dff3845a3c12c18b120e8452b2b0678 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20G=C3=B6ttgens?= Date: Tue, 4 Jun 2024 15:15:40 +0200 Subject: [PATCH 029/454] (maybe?) fix repeated oneof --- meshtastic/mesh.proto | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index f3406e4..098f19f 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -1656,6 +1656,13 @@ message ChunkedPayload { bytes payload_chunk = 4; } +/* + * Wrapper message for broken repeated oneof support + */ +message resend_chunks { + repeated uint32 chunks = 1; +} + /* * Responses to a ChunkedPayload request */ @@ -1678,6 +1685,6 @@ message ChunkedPayloadResponse { /* * Request missing indexes in the chunked payload */ - repeated uint32 resend_chunks = 4; + resend_chunks resend_chunks = 4; } -} \ No newline at end of file +} From 8c8048798c1b1773b9d8f2c32eb3f4c9e72f8218 Mon Sep 17 00:00:00 2001 From: Jonathan Bennett Date: Tue, 11 Jun 2024 12:23:03 -0500 Subject: [PATCH 030/454] Add compass_orientation (#515) * add compass_orientation We have rudimentary compass support in a branch. This would add a setting to correct the output when the sensor is oriented differently than the screen. --- meshtastic/config.proto | 47 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/meshtastic/config.proto b/meshtastic/config.proto index 43e8c6e..04adb5b 100644 --- a/meshtastic/config.proto +++ b/meshtastic/config.proto @@ -650,6 +650,53 @@ message Config { * Should we wake the screen up on accelerometer detected motion or tap */ bool wake_on_tap_or_motion = 10; + + enum CompassOrientation { + /* + * The compass and the display are in the same orientation. + */ + DEGREES_0 = 0; + + /* + * Rotate the compass by 90 degrees. + */ + DEGREES_90 = 1; + + /* + * Rotate the compass by 180 degrees. + */ + DEGREES_180 = 2; + + /* + * Rotate the compass by 270 degrees. + */ + DEGREES_270 = 3; + + /* + * Don't rotate the compass, but invert the result. + */ + DEGREES_0_INVERTED = 4; + + /* + * Rotate the compass by 90 degrees and invert. + */ + DEGREES_90_INVERTED = 5; + + /* + * Rotate the compass by 180 degrees and invert. + */ + DEGREES_180_INVERTED = 6; + + /* + * Rotate the compass by 270 degrees and invert. + */ + DEGREES_270_INVERTED = 7; + } + + /* + * Indicates how to rotate or invert the compass output to accurate display on the display. + */ + CompassOrientation compass_orientation = 11; } /* From aa08ca2bdcd119baa9fb3da3efab0bd7f4b041bd Mon Sep 17 00:00:00 2001 From: Heltec-Aaron-Lee Date: Wed, 12 Jun 2024 19:25:00 +0800 Subject: [PATCH 031/454] Add Heltec Capsule Sensor V3 --- meshtastic/mesh.proto | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 15ea42c..0f2ae25 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -542,6 +542,11 @@ enum HardwareModel { * ESP32-D0WDQ6 With SX1276/SKY66122, SSD1306 OLED and No GPS */ RADIOMASTER_900_BANDIT_NANO = 64; + + /* + * Heltec Capsule Sensor V3 with ESP32-S3 CPU, Portable LoRa device that can replace GNSS modules or sensors + */ + HELTEC_CAPSULE_SENSOR_V3 = 65; /* * ------------------------------------------------------------------------------------------------------------------------------------------ From 95e94d5af0ebe0c99913ada156f9f4c636a47db2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20G=C3=B6ttgens?= Date: Thu, 13 Jun 2024 14:39:08 +0200 Subject: [PATCH 032/454] add NAU7802 protobufs --- meshtastic/telemetry.proto | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/meshtastic/telemetry.proto b/meshtastic/telemetry.proto index 42c5a93..76135e7 100644 --- a/meshtastic/telemetry.proto +++ b/meshtastic/telemetry.proto @@ -375,4 +375,24 @@ enum TelemetrySensorType { * DFRobot Lark Weather station (temperature, humidity, pressure, wind speed and direction) */ DFROBOT_LARK = 24; + + /* + * NAU7802 Scale Chip or compatible + */ + NAU7802 = 25; +} + +/* + * NAU7802 Telemetry configuration, for saving to flash + */ +message Nau7802Config { + /* + * The offset setting for the NAU7802 + */ + int32 zeroOffset = 1; + + /* + * The calibration factor for the NAU7802 + */ + float calibrationFactor = 2; } From c18265dfbf3778ff9fd54d7e01fc96b2c0de4455 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20G=C3=B6ttgens?= Date: Thu, 13 Jun 2024 16:08:34 +0200 Subject: [PATCH 033/454] dang manual changes --- meshtastic/telemetry.proto | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/meshtastic/telemetry.proto b/meshtastic/telemetry.proto index 76135e7..f23d8fb 100644 --- a/meshtastic/telemetry.proto +++ b/meshtastic/telemetry.proto @@ -113,6 +113,11 @@ message EnvironmentMetrics { * Wind speed in m/s */ float wind_speed = 14; + + /* + * Weight in KG + */ + float weight = 15; } /* From f168b0a95a3e7487b8a30448838d81c11bfb4abd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20G=C3=B6ttgens?= Date: Sat, 15 Jun 2024 14:44:27 +0200 Subject: [PATCH 034/454] add admin message for calibration. --- meshtastic/admin.proto | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/meshtastic/admin.proto b/meshtastic/admin.proto index 3b227d8..9ddf856 100644 --- a/meshtastic/admin.proto +++ b/meshtastic/admin.proto @@ -241,6 +241,11 @@ message AdminMessage { */ string delete_file_request = 22; + /* + * Set zero and offset for scale chips + */ + uint32 set_scale = 23; + /* * Set the owner for this node */ From 09f453ed870beb8a979a2a5e436516d7bfbcef44 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20G=C3=B6ttgens?= Date: Sun, 16 Jun 2024 14:03:00 +0200 Subject: [PATCH 035/454] add RAK2560 outdoor node --- meshtastic/mesh.proto | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 0f2ae25..e8b5205 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -329,6 +329,11 @@ enum HardwareModel { */ WIO_WM1110 = 21; + /* + * RAK2560 Solar base station based on RAK4630 + */ + RAK2560 = 22; + /* * B&Q Consulting Station Edition G1: https://uniteng.com/wiki/doku.php?id=meshtastic:station */ From 22c137c269a0f91607032bed102c72a4653c631a Mon Sep 17 00:00:00 2001 From: Andrew Yong Date: Tue, 18 Jun 2024 21:47:22 +0800 Subject: [PATCH 036/454] Add Heltec HRU-3601 A product built around the HT-CT62 module (ESP32-C3 CPU and SX1262 LoRa) and SKUs with various sensors. A separate variant is needed due to re-use of GPIOs for LEDs, user button, power gating to the I2C peripheral, etc. https://heltec.org/project/hru-3601/ Signed-off-by: Andrew Yong --- meshtastic/mesh.proto | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index e8b5205..bfefd00 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -334,6 +334,11 @@ enum HardwareModel { */ RAK2560 = 22; + /* + * Heltec HRU-3601: https://heltec.org/project/hru-3601/ + */ + HELTEC_HRU_3601 = 23; + /* * B&Q Consulting Station Edition G1: https://uniteng.com/wiki/doku.php?id=meshtastic:station */ From ad08d08124457344075a40f0564bd4d66b4a706a Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Wed, 19 Jun 2024 07:22:59 -0500 Subject: [PATCH 037/454] BLE Device Logging --- meshtastic/config.proto | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/meshtastic/config.proto b/meshtastic/config.proto index 04adb5b..7805f71 100644 --- a/meshtastic/config.proto +++ b/meshtastic/config.proto @@ -990,6 +990,11 @@ message Config { * Specified PIN for PairingMode.FixedPin */ uint32 fixed_pin = 3; + + /* + * Enables device (serial style logs) over Bluetooth + */ + bool device_logging_enabled = 4; } /* From 97138a78dcb82ba16cc93790b590a445f26a7abc Mon Sep 17 00:00:00 2001 From: geeksville Date: Fri, 21 Jun 2024 15:02:05 -0700 Subject: [PATCH 038/454] PowerMon initial protobufs for https://github.com/meshtastic/firmware/issues/4136 --- meshtastic/config.proto | 6 +++++ meshtastic/powermon.proto | 54 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+) create mode 100644 meshtastic/powermon.proto diff --git a/meshtastic/config.proto b/meshtastic/config.proto index 7805f71..391cb7d 100644 --- a/meshtastic/config.proto +++ b/meshtastic/config.proto @@ -409,6 +409,12 @@ message Config { * I2C address of INA_2XX to use for reading device battery voltage */ uint32 device_battery_ina_address = 9; + + /* + * If non-zero, we want powermon log outputs. With the particular (bitfield) sources enabled. + * Note: we picked an ID of 32 so that lower more efficient IDs can be used for more frequently used options. + */ + uint64 powermon_enables = 32; } /* diff --git a/meshtastic/powermon.proto b/meshtastic/powermon.proto new file mode 100644 index 0000000..8f328b5 --- /dev/null +++ b/meshtastic/powermon.proto @@ -0,0 +1,54 @@ +syntax = "proto3"; + +option csharp_namespace = "Meshtastic.Protobufs"; +option go_package = "github.com/meshtastic/go/generated"; +option java_outer_classname = "PowerMonProtos"; +option java_package = "com.geeksville.mesh"; +option swift_prefix = ""; + +package meshtastic.PowerMon; + +/* Any significant power changing event in meshtastic should be tagged with a powermon state transition. + If you are making new meshtastic features feel free to add new entries at the end of this definition. +*/ +enum State { + None = 0; + + CPU_DeepSleep = 0x01; + CPU_LightSleep = 0x02; + + /* + The external Vext1 power is on. Many boards have auxillary power rails that the CPU turns on only + occasionally. In cases where that rail has multiple devices on it we usually want to have logging on + the state of that rail as an independent record. + For instance on the Heltec Tracker 1.1 board, this rail is the power source for the GPS and screen. + */ + Vext1_On = 0x04; + + Lora_RXOn = 0x08; + Lora_TXOn = 0x10; + Lora_RXActive = 0x20; + BT_On = 0x40; + LED_On = 0x80; + + Screen_On = 0x100; + Screen_Drawing = 0x200; + Wifi_On = 0x400; + + /* + GPS is actively trying to find our location + See GPSPowerState for more details + */ + GPS_Active = 0x800; +} + +/* + the log messages will be short and complete (see PowerMon.Event in the protobufs for details). + something like "PwrMon,C,0x00001234,REASON" where the hex number is the bitmask of all current states. + (We use a bitmask for states so that if a log message gets lost it won't be fatal) +*/ +message Event { + + // Bitwise-OR of States + optional uint64 states = 1; +} \ No newline at end of file From a82df2239a9dc4b9d43debeb4e87135b13784ca5 Mon Sep 17 00:00:00 2001 From: geeksville Date: Fri, 21 Jun 2024 16:07:04 -0700 Subject: [PATCH 039/454] Move our namespace into a fake message so the linter doesn't yell. --- meshtastic/powermon.proto | 72 +++++++++++++++++++-------------------- 1 file changed, 35 insertions(+), 37 deletions(-) diff --git a/meshtastic/powermon.proto b/meshtastic/powermon.proto index 8f328b5..7e23bc4 100644 --- a/meshtastic/powermon.proto +++ b/meshtastic/powermon.proto @@ -6,49 +6,47 @@ option java_outer_classname = "PowerMonProtos"; option java_package = "com.geeksville.mesh"; option swift_prefix = ""; -package meshtastic.PowerMon; +package meshtastic; -/* Any significant power changing event in meshtastic should be tagged with a powermon state transition. - If you are making new meshtastic features feel free to add new entries at the end of this definition. +/* Note: There are no 'PowerMon' messages normally in use (PowerMons are sent only as structured logs - slogs). +But we wrap our State enum in this message to effectively nest a namespace (without our linter yelling at us) */ -enum State { - None = 0; - - CPU_DeepSleep = 0x01; - CPU_LightSleep = 0x02; - - /* - The external Vext1 power is on. Many boards have auxillary power rails that the CPU turns on only - occasionally. In cases where that rail has multiple devices on it we usually want to have logging on - the state of that rail as an independent record. - For instance on the Heltec Tracker 1.1 board, this rail is the power source for the GPS and screen. +message PowerMon { + /* Any significant power changing event in meshtastic should be tagged with a powermon state transition. + If you are making new meshtastic features feel free to add new entries at the end of this definition. */ - Vext1_On = 0x04; + enum State { + None = 0; - Lora_RXOn = 0x08; - Lora_TXOn = 0x10; - Lora_RXActive = 0x20; - BT_On = 0x40; - LED_On = 0x80; + CPU_DeepSleep = 0x01; + CPU_LightSleep = 0x02; - Screen_On = 0x100; - Screen_Drawing = 0x200; - Wifi_On = 0x400; + /* + The external Vext1 power is on. Many boards have auxillary power rails that the CPU turns on only + occasionally. In cases where that rail has multiple devices on it we usually want to have logging on + the state of that rail as an independent record. + For instance on the Heltec Tracker 1.1 board, this rail is the power source for the GPS and screen. - /* - GPS is actively trying to find our location - See GPSPowerState for more details - */ - GPS_Active = 0x800; -} + The log messages will be short and complete (see PowerMon.Event in the protobufs for details). + something like "S:PM:C,0x00001234,REASON" where the hex number is the bitmask of all current states. + (We use a bitmask for states so that if a log message gets lost it won't be fatal) + */ + Vext1_On = 0x04; -/* - the log messages will be short and complete (see PowerMon.Event in the protobufs for details). - something like "PwrMon,C,0x00001234,REASON" where the hex number is the bitmask of all current states. - (We use a bitmask for states so that if a log message gets lost it won't be fatal) -*/ -message Event { + Lora_RXOn = 0x08; + Lora_TXOn = 0x10; + Lora_RXActive = 0x20; + BT_On = 0x40; + LED_On = 0x80; - // Bitwise-OR of States - optional uint64 states = 1; + Screen_On = 0x100; + Screen_Drawing = 0x200; + Wifi_On = 0x400; + + /* + GPS is actively trying to find our location + See GPSPowerState for more details + */ + GPS_Active = 0x800; + } } \ No newline at end of file From bcdef8996c6a2aa06462d2cbb0c6a79662bbe421 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Mon, 24 Jun 2024 19:37:52 -0500 Subject: [PATCH 040/454] Add FileInfo packet to FromRadio --- meshtastic/mesh.options | 2 ++ meshtastic/mesh.proto | 20 ++++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/meshtastic/mesh.options b/meshtastic/mesh.options index 6dcd248..1ae14d6 100644 --- a/meshtastic/mesh.options +++ b/meshtastic/mesh.options @@ -43,6 +43,8 @@ *LogRecord.message max_size:64 *LogRecord.source max_size:8 +*FileInfo.file_name max_size:228 + # MyMessage.name max_size:40 # or fixed_length or fixed_count, or max_count diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index bfefd00..bb12854 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -1459,9 +1459,29 @@ message FromRadio { * MQTT Client Proxy Message (device sending to client / phone for publishing to MQTT) */ MqttClientProxyMessage mqttClientProxyMessage = 14; + + /* + * File system manifest messages + */ + FileInfo fileInfo = 15; } } +/* + * Individual File info for the device + */ +message FileInfo { + /* + * The fully qualified path of the file + */ + string file_name = 1; + + /* + * The size of the file in bytes + */ + uint32 size_bytes = 2; +} + /* * Packets/commands to the radio will be written (reliably) to the toRadio characteristic. * Once the write completes the phone can assume it is handled. From c25e0c4e0ba99a5e2e94a1ca7313f999bf794fbd Mon Sep 17 00:00:00 2001 From: Kevin Hester Date: Thu, 27 Jun 2024 09:35:11 -0700 Subject: [PATCH 041/454] Add PowerStress agent support to PowerMon --- meshtastic/portnums.proto | 5 ++++ meshtastic/powermon.proto | 52 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 57 insertions(+) diff --git a/meshtastic/portnums.proto b/meshtastic/portnums.proto index 5808eb7..a8517c7 100644 --- a/meshtastic/portnums.proto +++ b/meshtastic/portnums.proto @@ -196,6 +196,11 @@ enum PortNum { */ MAP_REPORT_APP = 73; + /* + * PowerStress based monitoring support (for automated power consumption testing) + */ + POWERSTRESS_APP = 74; + /* * Private applications should use portnums >= 256. * To simplify initial development and testing you can use "PRIVATE_APP" diff --git a/meshtastic/powermon.proto b/meshtastic/powermon.proto index 7e23bc4..5f65b51 100644 --- a/meshtastic/powermon.proto +++ b/meshtastic/powermon.proto @@ -49,4 +49,56 @@ message PowerMon { */ GPS_Active = 0x800; } +} + + +/* + * PowerStress testing support via the C++ PowerStress module + */ +message PowerStressMessage { + /* + * What operation would we like the UUT to perform. + note: senders should probably set want_response in their request packets, so that they can know when the state + machine has started processing their request + */ + enum Opcode { + /* + * Unset/unused + */ + UNSET = 0; + + PRINT_INFO = 1; // Print board version slog and send an ack that we are alive and ready to process commands + FORCE_QUIET = 2; // Try to turn off all automatic processing of packets, screen, sleeping, etc (to make it easier to measure in isolation) + END_QUIET = 3; // Stop powerstress processing - probably by just rebooting the board + + SCREEN_ON = 16; // Turn the screen on + SCREEN_OFF = 17; // Turn the screen off + + CPU_IDLE = 32; // Let the CPU run but we assume mostly idling for num_seconds + CPU_DEEPSLEEP = 33; // Force deep sleep for FIXME seconds + CPU_FULLON = 34; // Spin the CPU as fast as possible for num_seconds + + LED_ON = 48; // Turn the LED on for num_seconds (and leave it on - for baseline power measurement purposes) + LED_OFF = 49; // Force the LED off for num_seconds + + LORA_OFF = 64; // Completely turn off the LORA radio for num_seconds + LORA_TX = 65; // Send Lora packets for num_seconds + LORA_RX = 66; // Receive Lora packets for num_seconds (node will be mostly just listening, unless an external agent is helping stress this by sending packets on the current channel) + + BT_OFF = 80; // Turn off the BT radio for num_seconds + BT_ON = 81; // Turn on the BT radio for num_seconds + + WIFI_OFF = 96; // Turn off the WIFI radio for num_seconds + WIFI_ON = 97; // Turn on the WIFI radio for num_seconds + + GPS_OFF = 112; // Turn off the GPS radio for num_seconds + GPS_ON = 113; // Turn on the GPS radio for num_seconds + } + + /* + * What type of HardwareMessage is this? + */ + Opcode cmd = 1; + + float num_seconds = 2; } \ No newline at end of file From 9d747b6cf08e2762fdf9530173a7ff825b9daa90 Mon Sep 17 00:00:00 2001 From: Kevin Hester Date: Thu, 27 Jun 2024 19:50:59 -0700 Subject: [PATCH 042/454] Now that we use LogRecord, increase the field sizes to reasonable values Note: this change is 'free' because LogRecord is only used in a union inside of FromRadio and FromRadio is already larger than this. --- meshtastic/mesh.options | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/meshtastic/mesh.options b/meshtastic/mesh.options index 1ae14d6..7075e2d 100644 --- a/meshtastic/mesh.options +++ b/meshtastic/mesh.options @@ -40,8 +40,8 @@ *Routing.variant anonymous_oneof:true -*LogRecord.message max_size:64 -*LogRecord.source max_size:8 +*LogRecord.message max_size:384 +*LogRecord.source max_size:32 *FileInfo.file_name max_size:228 From 06ceb3e21d2d8101f1b8a6aeb617e77968cefee5 Mon Sep 17 00:00:00 2001 From: Heltec-Aaron-Lee Date: Fri, 28 Jun 2024 16:29:17 +0800 Subject: [PATCH 043/454] Add Heltec new boards --- meshtastic/mesh.proto | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index bb12854..1f3148b 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -558,6 +558,27 @@ enum HardwareModel { */ HELTEC_CAPSULE_SENSOR_V3 = 65; + /* + * Heltec Vision Master T190 with ESP32-S3 CPU, and a 1.90 inch TFT display + */ + HELTEC_VISION_MASTER_T190 = 66; + + /* + * Heltec Vision Master E213 with ESP32-S3 CPU, and a 2.13 inch E-Ink display + */ + HELTEC_VISION_MASTER_E213 = 67; + + /* + * Heltec Vision Master E290 with ESP32-S3 CPU, and a 2.9 inch E-Ink display + */ + HELTEC_VISION_MASTER_E290 = 68; + + /* + * Heltec Mesh Node T114 borad with nRF52840 CPU, and a 1.14 inch TFT display, Ultimate low-power design, + * specifically adapted for the Meshtatic project + */ + HELTEC_MESH_NODE_T114 = 69; + /* * ------------------------------------------------------------------------------------------------------------------------------------------ * Reserved ID For developing private Ports. These will show up in live traffic sparsely, so we can use a high number. Keep it within 8 bits. From 17a96375307c1d200c1b69f5a1a2fc731db03e75 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Fri, 28 Jun 2024 10:06:50 -0500 Subject: [PATCH 044/454] Deprecate router client --- meshtastic/config.proto | 2 ++ 1 file changed, 2 insertions(+) diff --git a/meshtastic/config.proto b/meshtastic/config.proto index 391cb7d..7f4a5dc 100644 --- a/meshtastic/config.proto +++ b/meshtastic/config.proto @@ -37,7 +37,9 @@ message Config { /* * Description: Combination of both ROUTER and CLIENT. Not for mobile devices. + * Deprecated in v2.3.15 because improper usage is impacting public meshes: Use ROUTER or CLIENT instead. */ + [deprecated = true] ROUTER_CLIENT = 3; /* From fcf0fddab860a00d2ccb97323963e49fbf545af5 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Fri, 28 Jun 2024 10:24:51 -0500 Subject: [PATCH 045/454] Same line --- meshtastic/config.proto | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/meshtastic/config.proto b/meshtastic/config.proto index 7f4a5dc..50c7539 100644 --- a/meshtastic/config.proto +++ b/meshtastic/config.proto @@ -39,8 +39,8 @@ message Config { * Description: Combination of both ROUTER and CLIENT. Not for mobile devices. * Deprecated in v2.3.15 because improper usage is impacting public meshes: Use ROUTER or CLIENT instead. */ - [deprecated = true] - ROUTER_CLIENT = 3; + + ROUTER_CLIENT = 3 [deprecated = true]; /* * Description: Infrastructure node for extending network coverage by relaying messages with minimal overhead. Not visible in Nodes list. From 827ed60577e0c33f53dd4ce1dacd7bb77dc53209 Mon Sep 17 00:00:00 2001 From: Blake McAnally Date: Fri, 28 Jun 2024 21:37:08 -0500 Subject: [PATCH 046/454] remove unnecessary import --- meshtastic/deviceonly.proto | 1 - 1 file changed, 1 deletion(-) diff --git a/meshtastic/deviceonly.proto b/meshtastic/deviceonly.proto index eef59a7..9c700db 100644 --- a/meshtastic/deviceonly.proto +++ b/meshtastic/deviceonly.proto @@ -5,7 +5,6 @@ package meshtastic; import "meshtastic/channel.proto"; import "meshtastic/localonly.proto"; import "meshtastic/mesh.proto"; -import "meshtastic/module_config.proto"; import "meshtastic/telemetry.proto"; import "nanopb.proto"; From 0891eeb9e117a37f73d7e6fcfdcc69cbbdc5eab3 Mon Sep 17 00:00:00 2001 From: Heltec-Aaron-Lee Date: Mon, 1 Jul 2024 14:10:05 +0800 Subject: [PATCH 047/454] Fix spelling issue --- meshtastic/mesh.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 1f3148b..c2b46f0 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -574,7 +574,7 @@ enum HardwareModel { HELTEC_VISION_MASTER_E290 = 68; /* - * Heltec Mesh Node T114 borad with nRF52840 CPU, and a 1.14 inch TFT display, Ultimate low-power design, + * Heltec Mesh Node T114 board with nRF52840 CPU, and a 1.14 inch TFT display, Ultimate low-power design, * specifically adapted for the Meshtatic project */ HELTEC_MESH_NODE_T114 = 69; From 940395c81e53e85f8f47a7af071180287b978acc Mon Sep 17 00:00:00 2001 From: GUVWAF Date: Sat, 6 Jul 2024 10:05:21 +0200 Subject: [PATCH 048/454] Add bool to StoreForward config to set it as server --- meshtastic/module_config.proto | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/meshtastic/module_config.proto b/meshtastic/module_config.proto index 8215e01..82fba65 100644 --- a/meshtastic/module_config.proto +++ b/meshtastic/module_config.proto @@ -468,6 +468,11 @@ message ModuleConfig { * TODO: REPLACE */ uint32 history_return_window = 5; + + /* + * Set to true to let this node act as a server that stores received messages and resends them upon request. + */ + bool is_server = 6; } /* From b2dd7a5562611820ac550f960d91cc999a995730 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20Gjels=C3=B8?= <36234524+gjelsoe@users.noreply.github.com> Date: Tue, 9 Jul 2024 18:06:29 +0200 Subject: [PATCH 049/454] Disable PA FAN Disable the build-in PA FAN using pin define in RF95_FAN_EN for use in "Low Traffic" areas where cooling of PA it not necessary. --- meshtastic/config.proto | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/meshtastic/config.proto b/meshtastic/config.proto index 50c7539..d3756b5 100644 --- a/meshtastic/config.proto +++ b/meshtastic/config.proto @@ -953,6 +953,11 @@ message Config { */ float override_frequency = 14; + /* + * If true, disable the build-in PA FAN using pin define in RF95_FAN_EN. + */ + bool pa_fan_disabled = 15; + /* * For testing it is useful sometimes to force a node to never listen to * particular other nodes (simulating radio out of range). All nodenums listed From 29f8011bce30c91e6fed416c5354b7dec01bfbaf Mon Sep 17 00:00:00 2001 From: Tavis Date: Tue, 9 Jul 2024 21:50:10 -1000 Subject: [PATCH 050/454] add ws85 serialmodule mode, add gust,lull to env teleme --- meshtastic/module_config.proto | 2 ++ meshtastic/telemetry.proto | 10 ++++++++++ 2 files changed, 12 insertions(+) diff --git a/meshtastic/module_config.proto b/meshtastic/module_config.proto index 82fba65..3879373 100644 --- a/meshtastic/module_config.proto +++ b/meshtastic/module_config.proto @@ -304,6 +304,8 @@ message ModuleConfig { NMEA = 4; // NMEA messages specifically tailored for CalTopo CALTOPO = 5; + // Ecowitt WS85 weather station + WS85 = 6; } /* diff --git a/meshtastic/telemetry.proto b/meshtastic/telemetry.proto index f23d8fb..5610e37 100644 --- a/meshtastic/telemetry.proto +++ b/meshtastic/telemetry.proto @@ -118,6 +118,16 @@ message EnvironmentMetrics { * Weight in KG */ float weight = 15; + + /* + * Wind gust in m/s + */ + float wind_gust = 15; + + /* + * Wind lull in m/s + */ + float wind_lull = 16; } /* From 7370460a591f80e3ca462df1f36ceeac452c4dc5 Mon Sep 17 00:00:00 2001 From: Tavis Date: Wed, 10 Jul 2024 09:09:32 -1000 Subject: [PATCH 051/454] fix tag index. whoops, duh. --- meshtastic/telemetry.proto | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/meshtastic/telemetry.proto b/meshtastic/telemetry.proto index 5610e37..8ffbeb2 100644 --- a/meshtastic/telemetry.proto +++ b/meshtastic/telemetry.proto @@ -122,12 +122,12 @@ message EnvironmentMetrics { /* * Wind gust in m/s */ - float wind_gust = 15; + float wind_gust = 16; /* * Wind lull in m/s */ - float wind_lull = 16; + float wind_lull = 17; } /* From 38a3a4a8bfc0071283f36aa484e26cf40be31cf4 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Mon, 22 Jul 2024 09:01:59 -0500 Subject: [PATCH 052/454] Sensecap indicator --- meshtastic/mesh.proto | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index c2b46f0..ff7182a 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -578,6 +578,11 @@ enum HardwareModel { * specifically adapted for the Meshtatic project */ HELTEC_MESH_NODE_T114 = 69; + + /* + * Sensecap Indicator from Seeed Studio. ESP32-S3 device with TFT and RP2040 coprocessor + */ + SENSECAP_INDICATOR = 70; /* * ------------------------------------------------------------------------------------------------------------------------------------------ From ff1aa723d1d47cf7d2651954a1960b41c596f3a2 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Fri, 26 Jul 2024 06:25:03 -0500 Subject: [PATCH 053/454] Add t1000-e hw model --- meshtastic/mesh.proto | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index ff7182a..8a3e86f 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -583,6 +583,11 @@ enum HardwareModel { * Sensecap Indicator from Seeed Studio. ESP32-S3 device with TFT and RP2040 coprocessor */ SENSECAP_INDICATOR = 70; + + /* + * Seeed studio T1000-E tracker card. NRF52840 w/ LR1110 radio, GPS, button, buzzer, and sensors. + */ + TRACKER_T1000_E = 71; /* * ------------------------------------------------------------------------------------------------------------------------------------------ From 9902e65bf29a73a12179ead437bbeee2b97b8a2e Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Tue, 30 Jul 2024 07:07:18 -0500 Subject: [PATCH 054/454] LogRecord over serial enabled --- meshtastic/config.proto | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/meshtastic/config.proto b/meshtastic/config.proto index d3756b5..0500b8b 100644 --- a/meshtastic/config.proto +++ b/meshtastic/config.proto @@ -192,6 +192,11 @@ message Config { * If true, disable the default blinking LED (LED_PIN) behavior on the device */ bool led_heartbeat_disabled = 12; + + /* + * Enable LogRecord messages over Serial for API connections + */ + bool logrecord_serial_enabled = 13; } /* From c4110a44220f0f96baa10a45defc3b0e5735ab73 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Tue, 30 Jul 2024 14:24:43 -0500 Subject: [PATCH 055/454] Revert "LogRecord over serial enabled" --- meshtastic/config.proto | 5 ----- 1 file changed, 5 deletions(-) diff --git a/meshtastic/config.proto b/meshtastic/config.proto index 0500b8b..d3756b5 100644 --- a/meshtastic/config.proto +++ b/meshtastic/config.proto @@ -192,11 +192,6 @@ message Config { * If true, disable the default blinking LED (LED_PIN) behavior on the device */ bool led_heartbeat_disabled = 12; - - /* - * Enable LogRecord messages over Serial for API connections - */ - bool logrecord_serial_enabled = 13; } /* From 4d3efb56d88af3380196f242d896599b2defc803 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Wed, 31 Jul 2024 10:42:35 -0500 Subject: [PATCH 056/454] New factory reset (device) admin command and make distinction about existing command that only config / device state is removed --- meshtastic/admin.proto | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/meshtastic/admin.proto b/meshtastic/admin.proto index 9ddf856..12fe0c7 100644 --- a/meshtastic/admin.proto +++ b/meshtastic/admin.proto @@ -316,6 +316,11 @@ message AdminMessage { */ bool commit_edit_settings = 65; + /* + * Tell the node to factory reset config everything; all device state and configuration will be returned to factory defaults and BLE bonds will be cleared. + */ + int32 factory_reset_device = 94; + /* * Tell the node to reboot into the OTA Firmware in this many seconds (or <0 to cancel reboot) * Only Implemented for ESP32 Devices. This needs to be issued to send a new main firmware via bluetooth. @@ -339,9 +344,9 @@ message AdminMessage { int32 shutdown_seconds = 98; /* - * Tell the node to factory reset, all device settings will be returned to factory defaults. + * Tell the node to factory reset config; all device state and configuration will be returned to factory defaults; BLE bonds will be preserved. */ - int32 factory_reset = 99; + int32 factory_reset_config = 99; /* * Tell the node to reset the nodedb. From 25df63b0a0143b1b7840aec0f0bf733491a94fe3 Mon Sep 17 00:00:00 2001 From: David <2941290+dhskinner@users.noreply.github.com> Date: Sat, 3 Aug 2024 13:37:03 +1000 Subject: [PATCH 057/454] Update telemetry.proto --- meshtastic/telemetry.proto | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/meshtastic/telemetry.proto b/meshtastic/telemetry.proto index 8ffbeb2..f3ab552 100644 --- a/meshtastic/telemetry.proto +++ b/meshtastic/telemetry.proto @@ -395,6 +395,21 @@ enum TelemetrySensorType { * NAU7802 Scale Chip or compatible */ NAU7802 = 25; + + /* + * BMP3XX High accuracy temperature and pressure + */ + BMP3XX = 26; + + /* + * ICM-20948 9-Axis digital motion processor + */ + ICM20948 = 27; + + /* + * MAX17048 1S lipo battery sensor (voltage, state of charge, time to go) + */ + MAX17048 = 28; } /* From 77ed84c7af42e3aaff84250d8921366d8347b527 Mon Sep 17 00:00:00 2001 From: Kevin Hester Date: Mon, 5 Aug 2024 14:27:31 -0700 Subject: [PATCH 058/454] Add new critical fault codes for flash corruption for https://github.com/meshtastic/firmware/issues/4184 --- meshtastic/mesh.proto | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 8a3e86f..c8bd2ef 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -1291,6 +1291,19 @@ enum CriticalErrorCode { * If this occurs on your board, please post in the forum so that we can ask you to collect some information to allow fixing this bug */ RADIO_SPI_BUG = 11; + + /* + * Corruption was detected on the flash filesystem but we were able to repair things. + * If you see this failure in the field please post in the forum because we are interested in seeing if this is occurring in the field. + */ + FLASH_CORRUPTION_RECOVERABLE = 12; + + /* + * Corruption was detected on the flash filesystem but we were unable to repair things. + * NOTE: Your node will probably need to be reconfigured the next time it reboots (it will lose the region code etc...) + * If you see this failure in the field please post in the forum because we are interested in seeing if this is occurring in the field. + */ + FLASH_CORRUPTION_UNRECOVERABLE = 13; } /* From d867039e464e52978fecee0f77e4ea42d8f543a7 Mon Sep 17 00:00:00 2001 From: GUVWAF Date: Sun, 11 Aug 2024 16:22:43 +0200 Subject: [PATCH 059/454] Add RAK3172 and Wio-E5 STM32WL-based hardware models --- meshtastic/mesh.proto | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index c8bd2ef..708532b 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -589,6 +589,16 @@ enum HardwareModel { */ TRACKER_T1000_E = 71; + /* + * RAK3172 STM32WLE5 Module (https://store.rakwireless.com/products/wisduo-lpwan-module-rak3172) + */ + RAK3172 = 72; + + /* + * Seeed Studio Wio-E5 (either mini or Dev kit) using STM32WL chip. + */ + WIO_E5 = 73; + /* * ------------------------------------------------------------------------------------------------------------------------------------------ * Reserved ID For developing private Ports. These will show up in live traffic sparsely, so we can use a high number. Keep it within 8 bits. From 26c144b2ba07425f595a2d13cf8dd3bea0d6a456 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20Gjels=C3=B8?= <36234524+gjelsoe@users.noreply.github.com> Date: Mon, 12 Aug 2024 17:41:21 +0200 Subject: [PATCH 060/454] New Device, Radio Master Bandit Support for RadioMaster Bandit "Big Brother" --- meshtastic/mesh.proto | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 708532b..7d07066 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -599,6 +599,12 @@ enum HardwareModel { */ WIO_E5 = 73; + /* + * RadioMaster 900 Bandit, https://www.radiomasterrc.com/products/bandit-expresslrs-rf-module + * SSD1306 OLED and No GPS + */ + RADIOMASTER_900_BANDIT = 74; + /* * ------------------------------------------------------------------------------------------------------------------------------------------ * Reserved ID For developing private Ports. These will show up in live traffic sparsely, so we can use a high number. Keep it within 8 bits. From deb05e9514cf1071cfc7fd3b6ab31ae83a661ea3 Mon Sep 17 00:00:00 2001 From: Jonathan Bennett Date: Tue, 13 Aug 2024 18:04:12 -0500 Subject: [PATCH 061/454] Remove dos-style formatting from telemetry.proto --- meshtastic/telemetry.proto | 856 ++++++++++++++++++------------------- 1 file changed, 428 insertions(+), 428 deletions(-) diff --git a/meshtastic/telemetry.proto b/meshtastic/telemetry.proto index f3ab552..98404cf 100644 --- a/meshtastic/telemetry.proto +++ b/meshtastic/telemetry.proto @@ -1,428 +1,428 @@ -syntax = "proto3"; - -package meshtastic; - -option csharp_namespace = "Meshtastic.Protobufs"; -option go_package = "github.com/meshtastic/go/generated"; -option java_outer_classname = "TelemetryProtos"; -option java_package = "com.geeksville.mesh"; -option swift_prefix = ""; - -/* - * Key native device metrics such as battery level - */ -message DeviceMetrics { - /* - * 0-100 (>100 means powered) - */ - uint32 battery_level = 1; - - /* - * Voltage measured - */ - float voltage = 2; - - /* - * Utilization for the current channel, including well formed TX, RX and malformed RX (aka noise). - */ - float channel_utilization = 3; - - /* - * Percent of airtime for transmission used within the last hour. - */ - float air_util_tx = 4; - - /* - * How long the device has been running since the last reboot (in seconds) - */ - uint32 uptime_seconds = 5; -} - -/* - * Weather station or other environmental metrics - */ -message EnvironmentMetrics { - /* - * Temperature measured - */ - float temperature = 1; - - /* - * Relative humidity percent measured - */ - float relative_humidity = 2; - - /* - * Barometric pressure in hPA measured - */ - float barometric_pressure = 3; - - /* - * Gas resistance in MOhm measured - */ - float gas_resistance = 4; - - /* - * Voltage measured (To be depreciated in favor of PowerMetrics in Meshtastic 3.x) - */ - float voltage = 5; - - /* - * Current measured (To be depreciated in favor of PowerMetrics in Meshtastic 3.x) - */ - float current = 6; - - /* - * relative scale IAQ value as measured by Bosch BME680 . value 0-500. - * Belongs to Air Quality but is not particle but VOC measurement. Other VOC values can also be put in here. - */ - uint32 iaq = 7; - - /* - * RCWL9620 Doppler Radar Distance Sensor, used for water level detection. Float value in mm. - */ - float distance = 8; - - /* - * VEML7700 high accuracy ambient light(Lux) digital 16-bit resolution sensor. - */ - float lux = 9; - - /* - * VEML7700 high accuracy white light(irradiance) not calibrated digital 16-bit resolution sensor. - */ - float white_lux = 10; - - /* - * Infrared lux - */ - float ir_lux = 11; - - /* - * Ultraviolet lux - */ - float uv_lux = 12; - - /* - * Wind direction in degrees - * 0 degrees = North, 90 = East, etc... - */ - uint32 wind_direction = 13; - - /* - * Wind speed in m/s - */ - float wind_speed = 14; - - /* - * Weight in KG - */ - float weight = 15; - - /* - * Wind gust in m/s - */ - float wind_gust = 16; - - /* - * Wind lull in m/s - */ - float wind_lull = 17; -} - -/* - * Power Metrics (voltage / current / etc) - */ -message PowerMetrics { - /* - * Voltage (Ch1) - */ - float ch1_voltage = 1; - - /* - * Current (Ch1) - */ - float ch1_current = 2; - - /* - * Voltage (Ch2) - */ - float ch2_voltage = 3; - - /* - * Current (Ch2) - */ - float ch2_current = 4; - - /* - * Voltage (Ch3) - */ - float ch3_voltage = 5; - - /* - * Current (Ch3) - */ - float ch3_current = 6; -} - -/* - * Air quality metrics - */ -message AirQualityMetrics { - /* - * Concentration Units Standard PM1.0 - */ - uint32 pm10_standard = 1; - - /* - * Concentration Units Standard PM2.5 - */ - uint32 pm25_standard = 2; - - /* - * Concentration Units Standard PM10.0 - */ - uint32 pm100_standard = 3; - - /* - * Concentration Units Environmental PM1.0 - */ - uint32 pm10_environmental = 4; - - /* - * Concentration Units Environmental PM2.5 - */ - uint32 pm25_environmental = 5; - - /* - * Concentration Units Environmental PM10.0 - */ - uint32 pm100_environmental = 6; - - /* - * 0.3um Particle Count - */ - uint32 particles_03um = 7; - - /* - * 0.5um Particle Count - */ - uint32 particles_05um = 8; - - /* - * 1.0um Particle Count - */ - uint32 particles_10um = 9; - - /* - * 2.5um Particle Count - */ - uint32 particles_25um = 10; - - /* - * 5.0um Particle Count - */ - uint32 particles_50um = 11; - - /* - * 10.0um Particle Count - */ - uint32 particles_100um = 12; -} - -/* - * Types of Measurements the telemetry module is equipped to handle - */ -message Telemetry { - /* - * Seconds since 1970 - or 0 for unknown/unset - */ - fixed32 time = 1; - - oneof variant { - /* - * Key native device metrics such as battery level - */ - DeviceMetrics device_metrics = 2; - - /* - * Weather station or other environmental metrics - */ - EnvironmentMetrics environment_metrics = 3; - - /* - * Air quality metrics - */ - AirQualityMetrics air_quality_metrics = 4; - - /* - * Power Metrics - */ - PowerMetrics power_metrics = 5; - } -} - -/* - * Supported I2C Sensors for telemetry in Meshtastic - */ -enum TelemetrySensorType { - /* - * No external telemetry sensor explicitly set - */ - SENSOR_UNSET = 0; - - /* - * High accuracy temperature, pressure, humidity - */ - BME280 = 1; - - /* - * High accuracy temperature, pressure, humidity, and air resistance - */ - BME680 = 2; - - /* - * Very high accuracy temperature - */ - MCP9808 = 3; - - /* - * Moderate accuracy current and voltage - */ - INA260 = 4; - - /* - * Moderate accuracy current and voltage - */ - INA219 = 5; - - /* - * High accuracy temperature and pressure - */ - BMP280 = 6; - - /* - * High accuracy temperature and humidity - */ - SHTC3 = 7; - - /* - * High accuracy pressure - */ - LPS22 = 8; - - /* - * 3-Axis magnetic sensor - */ - QMC6310 = 9; - - /* - * 6-Axis inertial measurement sensor - */ - QMI8658 = 10; - - /* - * 3-Axis magnetic sensor - */ - QMC5883L = 11; - - /* - * High accuracy temperature and humidity - */ - SHT31 = 12; - - /* - * PM2.5 air quality sensor - */ - PMSA003I = 13; - - /* - * INA3221 3 Channel Voltage / Current Sensor - */ - INA3221 = 14; - - /* - * BMP085/BMP180 High accuracy temperature and pressure (older Version of BMP280) - */ - BMP085 = 15; - - /* - * RCWL-9620 Doppler Radar Distance Sensor, used for water level detection - */ - RCWL9620 = 16; - - /* - * Sensirion High accuracy temperature and humidity - */ - SHT4X = 17; - - /* - * VEML7700 high accuracy ambient light(Lux) digital 16-bit resolution sensor. - */ - VEML7700 = 18; - - /* - * MLX90632 non-contact IR temperature sensor. - */ - MLX90632 = 19; - - /* - * TI OPT3001 Ambient Light Sensor - */ - OPT3001 = 20; - - /* - * Lite On LTR-390UV-01 UV Light Sensor - */ - LTR390UV = 21; - - /* - * AMS TSL25911FN RGB Light Sensor - */ - TSL25911FN = 22; - - /* - * AHT10 Integrated temperature and humidity sensor - */ - AHT10 = 23; - - /* - * DFRobot Lark Weather station (temperature, humidity, pressure, wind speed and direction) - */ - DFROBOT_LARK = 24; - - /* - * NAU7802 Scale Chip or compatible - */ - NAU7802 = 25; - - /* - * BMP3XX High accuracy temperature and pressure - */ - BMP3XX = 26; - - /* - * ICM-20948 9-Axis digital motion processor - */ - ICM20948 = 27; - - /* - * MAX17048 1S lipo battery sensor (voltage, state of charge, time to go) - */ - MAX17048 = 28; -} - -/* - * NAU7802 Telemetry configuration, for saving to flash - */ -message Nau7802Config { - /* - * The offset setting for the NAU7802 - */ - int32 zeroOffset = 1; - - /* - * The calibration factor for the NAU7802 - */ - float calibrationFactor = 2; -} +syntax = "proto3"; + +package meshtastic; + +option csharp_namespace = "Meshtastic.Protobufs"; +option go_package = "github.com/meshtastic/go/generated"; +option java_outer_classname = "TelemetryProtos"; +option java_package = "com.geeksville.mesh"; +option swift_prefix = ""; + +/* + * Key native device metrics such as battery level + */ +message DeviceMetrics { + /* + * 0-100 (>100 means powered) + */ + uint32 battery_level = 1; + + /* + * Voltage measured + */ + float voltage = 2; + + /* + * Utilization for the current channel, including well formed TX, RX and malformed RX (aka noise). + */ + float channel_utilization = 3; + + /* + * Percent of airtime for transmission used within the last hour. + */ + float air_util_tx = 4; + + /* + * How long the device has been running since the last reboot (in seconds) + */ + uint32 uptime_seconds = 5; +} + +/* + * Weather station or other environmental metrics + */ +message EnvironmentMetrics { + /* + * Temperature measured + */ + float temperature = 1; + + /* + * Relative humidity percent measured + */ + float relative_humidity = 2; + + /* + * Barometric pressure in hPA measured + */ + float barometric_pressure = 3; + + /* + * Gas resistance in MOhm measured + */ + float gas_resistance = 4; + + /* + * Voltage measured (To be depreciated in favor of PowerMetrics in Meshtastic 3.x) + */ + float voltage = 5; + + /* + * Current measured (To be depreciated in favor of PowerMetrics in Meshtastic 3.x) + */ + float current = 6; + + /* + * relative scale IAQ value as measured by Bosch BME680 . value 0-500. + * Belongs to Air Quality but is not particle but VOC measurement. Other VOC values can also be put in here. + */ + uint32 iaq = 7; + + /* + * RCWL9620 Doppler Radar Distance Sensor, used for water level detection. Float value in mm. + */ + float distance = 8; + + /* + * VEML7700 high accuracy ambient light(Lux) digital 16-bit resolution sensor. + */ + float lux = 9; + + /* + * VEML7700 high accuracy white light(irradiance) not calibrated digital 16-bit resolution sensor. + */ + float white_lux = 10; + + /* + * Infrared lux + */ + float ir_lux = 11; + + /* + * Ultraviolet lux + */ + float uv_lux = 12; + + /* + * Wind direction in degrees + * 0 degrees = North, 90 = East, etc... + */ + uint32 wind_direction = 13; + + /* + * Wind speed in m/s + */ + float wind_speed = 14; + + /* + * Weight in KG + */ + float weight = 15; + + /* + * Wind gust in m/s + */ + float wind_gust = 16; + + /* + * Wind lull in m/s + */ + float wind_lull = 17; +} + +/* + * Power Metrics (voltage / current / etc) + */ +message PowerMetrics { + /* + * Voltage (Ch1) + */ + float ch1_voltage = 1; + + /* + * Current (Ch1) + */ + float ch1_current = 2; + + /* + * Voltage (Ch2) + */ + float ch2_voltage = 3; + + /* + * Current (Ch2) + */ + float ch2_current = 4; + + /* + * Voltage (Ch3) + */ + float ch3_voltage = 5; + + /* + * Current (Ch3) + */ + float ch3_current = 6; +} + +/* + * Air quality metrics + */ +message AirQualityMetrics { + /* + * Concentration Units Standard PM1.0 + */ + uint32 pm10_standard = 1; + + /* + * Concentration Units Standard PM2.5 + */ + uint32 pm25_standard = 2; + + /* + * Concentration Units Standard PM10.0 + */ + uint32 pm100_standard = 3; + + /* + * Concentration Units Environmental PM1.0 + */ + uint32 pm10_environmental = 4; + + /* + * Concentration Units Environmental PM2.5 + */ + uint32 pm25_environmental = 5; + + /* + * Concentration Units Environmental PM10.0 + */ + uint32 pm100_environmental = 6; + + /* + * 0.3um Particle Count + */ + uint32 particles_03um = 7; + + /* + * 0.5um Particle Count + */ + uint32 particles_05um = 8; + + /* + * 1.0um Particle Count + */ + uint32 particles_10um = 9; + + /* + * 2.5um Particle Count + */ + uint32 particles_25um = 10; + + /* + * 5.0um Particle Count + */ + uint32 particles_50um = 11; + + /* + * 10.0um Particle Count + */ + uint32 particles_100um = 12; +} + +/* + * Types of Measurements the telemetry module is equipped to handle + */ +message Telemetry { + /* + * Seconds since 1970 - or 0 for unknown/unset + */ + fixed32 time = 1; + + oneof variant { + /* + * Key native device metrics such as battery level + */ + DeviceMetrics device_metrics = 2; + + /* + * Weather station or other environmental metrics + */ + EnvironmentMetrics environment_metrics = 3; + + /* + * Air quality metrics + */ + AirQualityMetrics air_quality_metrics = 4; + + /* + * Power Metrics + */ + PowerMetrics power_metrics = 5; + } +} + +/* + * Supported I2C Sensors for telemetry in Meshtastic + */ +enum TelemetrySensorType { + /* + * No external telemetry sensor explicitly set + */ + SENSOR_UNSET = 0; + + /* + * High accuracy temperature, pressure, humidity + */ + BME280 = 1; + + /* + * High accuracy temperature, pressure, humidity, and air resistance + */ + BME680 = 2; + + /* + * Very high accuracy temperature + */ + MCP9808 = 3; + + /* + * Moderate accuracy current and voltage + */ + INA260 = 4; + + /* + * Moderate accuracy current and voltage + */ + INA219 = 5; + + /* + * High accuracy temperature and pressure + */ + BMP280 = 6; + + /* + * High accuracy temperature and humidity + */ + SHTC3 = 7; + + /* + * High accuracy pressure + */ + LPS22 = 8; + + /* + * 3-Axis magnetic sensor + */ + QMC6310 = 9; + + /* + * 6-Axis inertial measurement sensor + */ + QMI8658 = 10; + + /* + * 3-Axis magnetic sensor + */ + QMC5883L = 11; + + /* + * High accuracy temperature and humidity + */ + SHT31 = 12; + + /* + * PM2.5 air quality sensor + */ + PMSA003I = 13; + + /* + * INA3221 3 Channel Voltage / Current Sensor + */ + INA3221 = 14; + + /* + * BMP085/BMP180 High accuracy temperature and pressure (older Version of BMP280) + */ + BMP085 = 15; + + /* + * RCWL-9620 Doppler Radar Distance Sensor, used for water level detection + */ + RCWL9620 = 16; + + /* + * Sensirion High accuracy temperature and humidity + */ + SHT4X = 17; + + /* + * VEML7700 high accuracy ambient light(Lux) digital 16-bit resolution sensor. + */ + VEML7700 = 18; + + /* + * MLX90632 non-contact IR temperature sensor. + */ + MLX90632 = 19; + + /* + * TI OPT3001 Ambient Light Sensor + */ + OPT3001 = 20; + + /* + * Lite On LTR-390UV-01 UV Light Sensor + */ + LTR390UV = 21; + + /* + * AMS TSL25911FN RGB Light Sensor + */ + TSL25911FN = 22; + + /* + * AHT10 Integrated temperature and humidity sensor + */ + AHT10 = 23; + + /* + * DFRobot Lark Weather station (temperature, humidity, pressure, wind speed and direction) + */ + DFROBOT_LARK = 24; + + /* + * NAU7802 Scale Chip or compatible + */ + NAU7802 = 25; + + /* + * BMP3XX High accuracy temperature and pressure + */ + BMP3XX = 26; + + /* + * ICM-20948 9-Axis digital motion processor + */ + ICM20948 = 27; + + /* + * MAX17048 1S lipo battery sensor (voltage, state of charge, time to go) + */ + MAX17048 = 28; +} + +/* + * NAU7802 Telemetry configuration, for saving to flash + */ +message Nau7802Config { + /* + * The offset setting for the NAU7802 + */ + int32 zeroOffset = 1; + + /* + * The calibration factor for the NAU7802 + */ + float calibrationFactor = 2; +} From 5b7a39da33aee26544ff6dda57ad77671775779a Mon Sep 17 00:00:00 2001 From: pdxlocations Date: Tue, 13 Aug 2024 16:09:49 -0700 Subject: [PATCH 062/454] add scanAndSelect, cardkb, and serialkb --- meshtastic/module_config.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meshtastic/module_config.proto b/meshtastic/module_config.proto index 3879373..5d0d288 100644 --- a/meshtastic/module_config.proto +++ b/meshtastic/module_config.proto @@ -658,7 +658,7 @@ message ModuleConfig { /* * Input event origin accepted by the canned message module. - * Can be e.g. "rotEnc1", "upDownEnc1" or keyword "_any" + * Can be e.g. "rotEnc1", "upDownEnc1", "scanAndSelect", "cardkb", "serialkb", or keyword "_any" */ string allow_input_source = 10; From 666b481ae02f1f88ec30f10a2d80184b31c0fc4e Mon Sep 17 00:00:00 2001 From: Jonathan Bennett Date: Tue, 13 Aug 2024 18:12:39 -0500 Subject: [PATCH 063/454] Remove dos-style formatting from telemetry.proto (#554) --- meshtastic/telemetry.proto | 856 ++++++++++++++++++------------------- 1 file changed, 428 insertions(+), 428 deletions(-) diff --git a/meshtastic/telemetry.proto b/meshtastic/telemetry.proto index f3ab552..98404cf 100644 --- a/meshtastic/telemetry.proto +++ b/meshtastic/telemetry.proto @@ -1,428 +1,428 @@ -syntax = "proto3"; - -package meshtastic; - -option csharp_namespace = "Meshtastic.Protobufs"; -option go_package = "github.com/meshtastic/go/generated"; -option java_outer_classname = "TelemetryProtos"; -option java_package = "com.geeksville.mesh"; -option swift_prefix = ""; - -/* - * Key native device metrics such as battery level - */ -message DeviceMetrics { - /* - * 0-100 (>100 means powered) - */ - uint32 battery_level = 1; - - /* - * Voltage measured - */ - float voltage = 2; - - /* - * Utilization for the current channel, including well formed TX, RX and malformed RX (aka noise). - */ - float channel_utilization = 3; - - /* - * Percent of airtime for transmission used within the last hour. - */ - float air_util_tx = 4; - - /* - * How long the device has been running since the last reboot (in seconds) - */ - uint32 uptime_seconds = 5; -} - -/* - * Weather station or other environmental metrics - */ -message EnvironmentMetrics { - /* - * Temperature measured - */ - float temperature = 1; - - /* - * Relative humidity percent measured - */ - float relative_humidity = 2; - - /* - * Barometric pressure in hPA measured - */ - float barometric_pressure = 3; - - /* - * Gas resistance in MOhm measured - */ - float gas_resistance = 4; - - /* - * Voltage measured (To be depreciated in favor of PowerMetrics in Meshtastic 3.x) - */ - float voltage = 5; - - /* - * Current measured (To be depreciated in favor of PowerMetrics in Meshtastic 3.x) - */ - float current = 6; - - /* - * relative scale IAQ value as measured by Bosch BME680 . value 0-500. - * Belongs to Air Quality but is not particle but VOC measurement. Other VOC values can also be put in here. - */ - uint32 iaq = 7; - - /* - * RCWL9620 Doppler Radar Distance Sensor, used for water level detection. Float value in mm. - */ - float distance = 8; - - /* - * VEML7700 high accuracy ambient light(Lux) digital 16-bit resolution sensor. - */ - float lux = 9; - - /* - * VEML7700 high accuracy white light(irradiance) not calibrated digital 16-bit resolution sensor. - */ - float white_lux = 10; - - /* - * Infrared lux - */ - float ir_lux = 11; - - /* - * Ultraviolet lux - */ - float uv_lux = 12; - - /* - * Wind direction in degrees - * 0 degrees = North, 90 = East, etc... - */ - uint32 wind_direction = 13; - - /* - * Wind speed in m/s - */ - float wind_speed = 14; - - /* - * Weight in KG - */ - float weight = 15; - - /* - * Wind gust in m/s - */ - float wind_gust = 16; - - /* - * Wind lull in m/s - */ - float wind_lull = 17; -} - -/* - * Power Metrics (voltage / current / etc) - */ -message PowerMetrics { - /* - * Voltage (Ch1) - */ - float ch1_voltage = 1; - - /* - * Current (Ch1) - */ - float ch1_current = 2; - - /* - * Voltage (Ch2) - */ - float ch2_voltage = 3; - - /* - * Current (Ch2) - */ - float ch2_current = 4; - - /* - * Voltage (Ch3) - */ - float ch3_voltage = 5; - - /* - * Current (Ch3) - */ - float ch3_current = 6; -} - -/* - * Air quality metrics - */ -message AirQualityMetrics { - /* - * Concentration Units Standard PM1.0 - */ - uint32 pm10_standard = 1; - - /* - * Concentration Units Standard PM2.5 - */ - uint32 pm25_standard = 2; - - /* - * Concentration Units Standard PM10.0 - */ - uint32 pm100_standard = 3; - - /* - * Concentration Units Environmental PM1.0 - */ - uint32 pm10_environmental = 4; - - /* - * Concentration Units Environmental PM2.5 - */ - uint32 pm25_environmental = 5; - - /* - * Concentration Units Environmental PM10.0 - */ - uint32 pm100_environmental = 6; - - /* - * 0.3um Particle Count - */ - uint32 particles_03um = 7; - - /* - * 0.5um Particle Count - */ - uint32 particles_05um = 8; - - /* - * 1.0um Particle Count - */ - uint32 particles_10um = 9; - - /* - * 2.5um Particle Count - */ - uint32 particles_25um = 10; - - /* - * 5.0um Particle Count - */ - uint32 particles_50um = 11; - - /* - * 10.0um Particle Count - */ - uint32 particles_100um = 12; -} - -/* - * Types of Measurements the telemetry module is equipped to handle - */ -message Telemetry { - /* - * Seconds since 1970 - or 0 for unknown/unset - */ - fixed32 time = 1; - - oneof variant { - /* - * Key native device metrics such as battery level - */ - DeviceMetrics device_metrics = 2; - - /* - * Weather station or other environmental metrics - */ - EnvironmentMetrics environment_metrics = 3; - - /* - * Air quality metrics - */ - AirQualityMetrics air_quality_metrics = 4; - - /* - * Power Metrics - */ - PowerMetrics power_metrics = 5; - } -} - -/* - * Supported I2C Sensors for telemetry in Meshtastic - */ -enum TelemetrySensorType { - /* - * No external telemetry sensor explicitly set - */ - SENSOR_UNSET = 0; - - /* - * High accuracy temperature, pressure, humidity - */ - BME280 = 1; - - /* - * High accuracy temperature, pressure, humidity, and air resistance - */ - BME680 = 2; - - /* - * Very high accuracy temperature - */ - MCP9808 = 3; - - /* - * Moderate accuracy current and voltage - */ - INA260 = 4; - - /* - * Moderate accuracy current and voltage - */ - INA219 = 5; - - /* - * High accuracy temperature and pressure - */ - BMP280 = 6; - - /* - * High accuracy temperature and humidity - */ - SHTC3 = 7; - - /* - * High accuracy pressure - */ - LPS22 = 8; - - /* - * 3-Axis magnetic sensor - */ - QMC6310 = 9; - - /* - * 6-Axis inertial measurement sensor - */ - QMI8658 = 10; - - /* - * 3-Axis magnetic sensor - */ - QMC5883L = 11; - - /* - * High accuracy temperature and humidity - */ - SHT31 = 12; - - /* - * PM2.5 air quality sensor - */ - PMSA003I = 13; - - /* - * INA3221 3 Channel Voltage / Current Sensor - */ - INA3221 = 14; - - /* - * BMP085/BMP180 High accuracy temperature and pressure (older Version of BMP280) - */ - BMP085 = 15; - - /* - * RCWL-9620 Doppler Radar Distance Sensor, used for water level detection - */ - RCWL9620 = 16; - - /* - * Sensirion High accuracy temperature and humidity - */ - SHT4X = 17; - - /* - * VEML7700 high accuracy ambient light(Lux) digital 16-bit resolution sensor. - */ - VEML7700 = 18; - - /* - * MLX90632 non-contact IR temperature sensor. - */ - MLX90632 = 19; - - /* - * TI OPT3001 Ambient Light Sensor - */ - OPT3001 = 20; - - /* - * Lite On LTR-390UV-01 UV Light Sensor - */ - LTR390UV = 21; - - /* - * AMS TSL25911FN RGB Light Sensor - */ - TSL25911FN = 22; - - /* - * AHT10 Integrated temperature and humidity sensor - */ - AHT10 = 23; - - /* - * DFRobot Lark Weather station (temperature, humidity, pressure, wind speed and direction) - */ - DFROBOT_LARK = 24; - - /* - * NAU7802 Scale Chip or compatible - */ - NAU7802 = 25; - - /* - * BMP3XX High accuracy temperature and pressure - */ - BMP3XX = 26; - - /* - * ICM-20948 9-Axis digital motion processor - */ - ICM20948 = 27; - - /* - * MAX17048 1S lipo battery sensor (voltage, state of charge, time to go) - */ - MAX17048 = 28; -} - -/* - * NAU7802 Telemetry configuration, for saving to flash - */ -message Nau7802Config { - /* - * The offset setting for the NAU7802 - */ - int32 zeroOffset = 1; - - /* - * The calibration factor for the NAU7802 - */ - float calibrationFactor = 2; -} +syntax = "proto3"; + +package meshtastic; + +option csharp_namespace = "Meshtastic.Protobufs"; +option go_package = "github.com/meshtastic/go/generated"; +option java_outer_classname = "TelemetryProtos"; +option java_package = "com.geeksville.mesh"; +option swift_prefix = ""; + +/* + * Key native device metrics such as battery level + */ +message DeviceMetrics { + /* + * 0-100 (>100 means powered) + */ + uint32 battery_level = 1; + + /* + * Voltage measured + */ + float voltage = 2; + + /* + * Utilization for the current channel, including well formed TX, RX and malformed RX (aka noise). + */ + float channel_utilization = 3; + + /* + * Percent of airtime for transmission used within the last hour. + */ + float air_util_tx = 4; + + /* + * How long the device has been running since the last reboot (in seconds) + */ + uint32 uptime_seconds = 5; +} + +/* + * Weather station or other environmental metrics + */ +message EnvironmentMetrics { + /* + * Temperature measured + */ + float temperature = 1; + + /* + * Relative humidity percent measured + */ + float relative_humidity = 2; + + /* + * Barometric pressure in hPA measured + */ + float barometric_pressure = 3; + + /* + * Gas resistance in MOhm measured + */ + float gas_resistance = 4; + + /* + * Voltage measured (To be depreciated in favor of PowerMetrics in Meshtastic 3.x) + */ + float voltage = 5; + + /* + * Current measured (To be depreciated in favor of PowerMetrics in Meshtastic 3.x) + */ + float current = 6; + + /* + * relative scale IAQ value as measured by Bosch BME680 . value 0-500. + * Belongs to Air Quality but is not particle but VOC measurement. Other VOC values can also be put in here. + */ + uint32 iaq = 7; + + /* + * RCWL9620 Doppler Radar Distance Sensor, used for water level detection. Float value in mm. + */ + float distance = 8; + + /* + * VEML7700 high accuracy ambient light(Lux) digital 16-bit resolution sensor. + */ + float lux = 9; + + /* + * VEML7700 high accuracy white light(irradiance) not calibrated digital 16-bit resolution sensor. + */ + float white_lux = 10; + + /* + * Infrared lux + */ + float ir_lux = 11; + + /* + * Ultraviolet lux + */ + float uv_lux = 12; + + /* + * Wind direction in degrees + * 0 degrees = North, 90 = East, etc... + */ + uint32 wind_direction = 13; + + /* + * Wind speed in m/s + */ + float wind_speed = 14; + + /* + * Weight in KG + */ + float weight = 15; + + /* + * Wind gust in m/s + */ + float wind_gust = 16; + + /* + * Wind lull in m/s + */ + float wind_lull = 17; +} + +/* + * Power Metrics (voltage / current / etc) + */ +message PowerMetrics { + /* + * Voltage (Ch1) + */ + float ch1_voltage = 1; + + /* + * Current (Ch1) + */ + float ch1_current = 2; + + /* + * Voltage (Ch2) + */ + float ch2_voltage = 3; + + /* + * Current (Ch2) + */ + float ch2_current = 4; + + /* + * Voltage (Ch3) + */ + float ch3_voltage = 5; + + /* + * Current (Ch3) + */ + float ch3_current = 6; +} + +/* + * Air quality metrics + */ +message AirQualityMetrics { + /* + * Concentration Units Standard PM1.0 + */ + uint32 pm10_standard = 1; + + /* + * Concentration Units Standard PM2.5 + */ + uint32 pm25_standard = 2; + + /* + * Concentration Units Standard PM10.0 + */ + uint32 pm100_standard = 3; + + /* + * Concentration Units Environmental PM1.0 + */ + uint32 pm10_environmental = 4; + + /* + * Concentration Units Environmental PM2.5 + */ + uint32 pm25_environmental = 5; + + /* + * Concentration Units Environmental PM10.0 + */ + uint32 pm100_environmental = 6; + + /* + * 0.3um Particle Count + */ + uint32 particles_03um = 7; + + /* + * 0.5um Particle Count + */ + uint32 particles_05um = 8; + + /* + * 1.0um Particle Count + */ + uint32 particles_10um = 9; + + /* + * 2.5um Particle Count + */ + uint32 particles_25um = 10; + + /* + * 5.0um Particle Count + */ + uint32 particles_50um = 11; + + /* + * 10.0um Particle Count + */ + uint32 particles_100um = 12; +} + +/* + * Types of Measurements the telemetry module is equipped to handle + */ +message Telemetry { + /* + * Seconds since 1970 - or 0 for unknown/unset + */ + fixed32 time = 1; + + oneof variant { + /* + * Key native device metrics such as battery level + */ + DeviceMetrics device_metrics = 2; + + /* + * Weather station or other environmental metrics + */ + EnvironmentMetrics environment_metrics = 3; + + /* + * Air quality metrics + */ + AirQualityMetrics air_quality_metrics = 4; + + /* + * Power Metrics + */ + PowerMetrics power_metrics = 5; + } +} + +/* + * Supported I2C Sensors for telemetry in Meshtastic + */ +enum TelemetrySensorType { + /* + * No external telemetry sensor explicitly set + */ + SENSOR_UNSET = 0; + + /* + * High accuracy temperature, pressure, humidity + */ + BME280 = 1; + + /* + * High accuracy temperature, pressure, humidity, and air resistance + */ + BME680 = 2; + + /* + * Very high accuracy temperature + */ + MCP9808 = 3; + + /* + * Moderate accuracy current and voltage + */ + INA260 = 4; + + /* + * Moderate accuracy current and voltage + */ + INA219 = 5; + + /* + * High accuracy temperature and pressure + */ + BMP280 = 6; + + /* + * High accuracy temperature and humidity + */ + SHTC3 = 7; + + /* + * High accuracy pressure + */ + LPS22 = 8; + + /* + * 3-Axis magnetic sensor + */ + QMC6310 = 9; + + /* + * 6-Axis inertial measurement sensor + */ + QMI8658 = 10; + + /* + * 3-Axis magnetic sensor + */ + QMC5883L = 11; + + /* + * High accuracy temperature and humidity + */ + SHT31 = 12; + + /* + * PM2.5 air quality sensor + */ + PMSA003I = 13; + + /* + * INA3221 3 Channel Voltage / Current Sensor + */ + INA3221 = 14; + + /* + * BMP085/BMP180 High accuracy temperature and pressure (older Version of BMP280) + */ + BMP085 = 15; + + /* + * RCWL-9620 Doppler Radar Distance Sensor, used for water level detection + */ + RCWL9620 = 16; + + /* + * Sensirion High accuracy temperature and humidity + */ + SHT4X = 17; + + /* + * VEML7700 high accuracy ambient light(Lux) digital 16-bit resolution sensor. + */ + VEML7700 = 18; + + /* + * MLX90632 non-contact IR temperature sensor. + */ + MLX90632 = 19; + + /* + * TI OPT3001 Ambient Light Sensor + */ + OPT3001 = 20; + + /* + * Lite On LTR-390UV-01 UV Light Sensor + */ + LTR390UV = 21; + + /* + * AMS TSL25911FN RGB Light Sensor + */ + TSL25911FN = 22; + + /* + * AHT10 Integrated temperature and humidity sensor + */ + AHT10 = 23; + + /* + * DFRobot Lark Weather station (temperature, humidity, pressure, wind speed and direction) + */ + DFROBOT_LARK = 24; + + /* + * NAU7802 Scale Chip or compatible + */ + NAU7802 = 25; + + /* + * BMP3XX High accuracy temperature and pressure + */ + BMP3XX = 26; + + /* + * ICM-20948 9-Axis digital motion processor + */ + ICM20948 = 27; + + /* + * MAX17048 1S lipo battery sensor (voltage, state of charge, time to go) + */ + MAX17048 = 28; +} + +/* + * NAU7802 Telemetry configuration, for saving to flash + */ +message Nau7802Config { + /* + * The offset setting for the NAU7802 + */ + int32 zeroOffset = 1; + + /* + * The calibration factor for the NAU7802 + */ + float calibrationFactor = 2; +} From eed2033cc3ce1bb730111f05826c6c8219a33d97 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Tue, 6 Aug 2024 19:29:32 -0500 Subject: [PATCH 064/454] Short turbo preset --- meshtastic/config.proto | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/meshtastic/config.proto b/meshtastic/config.proto index d3756b5..97aafcf 100644 --- a/meshtastic/config.proto +++ b/meshtastic/config.proto @@ -825,8 +825,9 @@ message Config { /* * Very Long Range - Slow + * Deprecated in 2.5: Works only with txco and is unusably slow */ - VERY_LONG_SLOW = 2; + VERY_LONG_SLOW = 2 [deprecated = true]; /* * Medium Range - Slow @@ -852,6 +853,13 @@ message Config { * Long Range - Moderately Fast */ LONG_MODERATE = 7; + + /* + * Short Range - Turbo + * This is the fastest preset and the only one with 500kHz bandwidth. + * It is not legal to use in all regions due to this wider bandwidth. + */ + SHORT_TURBO = 8; } /* From a3242bd0b4efef4d0e2ef477d781904944e01d55 Mon Sep 17 00:00:00 2001 From: Ian McEwen Date: Tue, 6 Aug 2024 17:37:33 -0700 Subject: [PATCH 065/454] Add `optional` keywords to stuff that can be "truly zero" within mesh packet payloads --- meshtastic/mesh.proto | 18 ++++---- meshtastic/module_config.proto | 1 + meshtastic/telemetry.proto | 80 +++++++++++++++++----------------- 3 files changed, 50 insertions(+), 49 deletions(-) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 7d07066..619ad92 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -23,17 +23,17 @@ message Position { * The new preferred location encoding, multiply by 1e-7 to get degrees * in floating point */ - sfixed32 latitude_i = 1; + optional sfixed32 latitude_i = 1; /* * TODO: REPLACE */ - sfixed32 longitude_i = 2; + optional sfixed32 longitude_i = 2; /* * In meters above MSL (but see issue #359) */ - int32 altitude = 3; + optional int32 altitude = 3; /* * This is usually not sent over the mesh (to save space), but it is sent @@ -122,12 +122,12 @@ message Position { /* * HAE altitude in meters - can be used instead of MSL altitude */ - sint32 altitude_hae = 9; + optional sint32 altitude_hae = 9; /* * Geoidal separation in meters */ - sint32 altitude_geoidal_separation = 10; + optional sint32 altitude_geoidal_separation = 10; /* * Horizontal, Vertical and Position Dilution of Precision, in 1/100 units @@ -163,12 +163,12 @@ message Position { * - "yaw" indicates a relative rotation about the vertical axis * TODO: REMOVE/INTEGRATE */ - uint32 ground_speed = 15; + optional uint32 ground_speed = 15; /* * TODO: REPLACE */ - uint32 ground_track = 16; + optional uint32 ground_track = 16; /* * GPS fix quality (from NMEA GxGGA statement or similar) @@ -853,12 +853,12 @@ message Waypoint { /* * latitude_i */ - sfixed32 latitude_i = 2; + optional sfixed32 latitude_i = 2; /* * longitude_i */ - sfixed32 longitude_i = 3; + optional sfixed32 longitude_i = 3; /* * Time the waypoint is to expire (epoch) diff --git a/meshtastic/module_config.proto b/meshtastic/module_config.proto index 3879373..0281415 100644 --- a/meshtastic/module_config.proto +++ b/meshtastic/module_config.proto @@ -153,6 +153,7 @@ message ModuleConfig { * Works as a sort of status heartbeat for peace of mind */ uint32 state_broadcast_secs = 3; + /* * Send ASCII bell with alert message * Useful for triggering ext. notification on bell diff --git a/meshtastic/telemetry.proto b/meshtastic/telemetry.proto index 98404cf..af0181f 100644 --- a/meshtastic/telemetry.proto +++ b/meshtastic/telemetry.proto @@ -15,27 +15,27 @@ message DeviceMetrics { /* * 0-100 (>100 means powered) */ - uint32 battery_level = 1; + optional uint32 battery_level = 1; /* * Voltage measured */ - float voltage = 2; + optional float voltage = 2; /* * Utilization for the current channel, including well formed TX, RX and malformed RX (aka noise). */ - float channel_utilization = 3; + optional float channel_utilization = 3; /* * Percent of airtime for transmission used within the last hour. */ - float air_util_tx = 4; + optional float air_util_tx = 4; /* * How long the device has been running since the last reboot (in seconds) */ - uint32 uptime_seconds = 5; + optional uint32 uptime_seconds = 5; } /* @@ -45,89 +45,89 @@ message EnvironmentMetrics { /* * Temperature measured */ - float temperature = 1; + optional float temperature = 1; /* * Relative humidity percent measured */ - float relative_humidity = 2; + optional float relative_humidity = 2; /* * Barometric pressure in hPA measured */ - float barometric_pressure = 3; + optional float barometric_pressure = 3; /* * Gas resistance in MOhm measured */ - float gas_resistance = 4; + optional float gas_resistance = 4; /* * Voltage measured (To be depreciated in favor of PowerMetrics in Meshtastic 3.x) */ - float voltage = 5; + optional float voltage = 5; /* * Current measured (To be depreciated in favor of PowerMetrics in Meshtastic 3.x) */ - float current = 6; + optional float current = 6; /* * relative scale IAQ value as measured by Bosch BME680 . value 0-500. * Belongs to Air Quality but is not particle but VOC measurement. Other VOC values can also be put in here. */ - uint32 iaq = 7; + optional uint32 iaq = 7; /* * RCWL9620 Doppler Radar Distance Sensor, used for water level detection. Float value in mm. */ - float distance = 8; + optional float distance = 8; /* * VEML7700 high accuracy ambient light(Lux) digital 16-bit resolution sensor. */ - float lux = 9; + optional float lux = 9; /* * VEML7700 high accuracy white light(irradiance) not calibrated digital 16-bit resolution sensor. */ - float white_lux = 10; + optional float white_lux = 10; /* * Infrared lux */ - float ir_lux = 11; + optional float ir_lux = 11; /* * Ultraviolet lux */ - float uv_lux = 12; + optional float uv_lux = 12; /* * Wind direction in degrees * 0 degrees = North, 90 = East, etc... */ - uint32 wind_direction = 13; + optional uint32 wind_direction = 13; /* * Wind speed in m/s */ - float wind_speed = 14; + optional float wind_speed = 14; /* * Weight in KG */ - float weight = 15; + optional float weight = 15; /* * Wind gust in m/s */ - float wind_gust = 16; + optional float wind_gust = 16; /* * Wind lull in m/s */ - float wind_lull = 17; + optional float wind_lull = 17; } /* @@ -137,32 +137,32 @@ message PowerMetrics { /* * Voltage (Ch1) */ - float ch1_voltage = 1; + optional float ch1_voltage = 1; /* * Current (Ch1) */ - float ch1_current = 2; + optional float ch1_current = 2; /* * Voltage (Ch2) */ - float ch2_voltage = 3; + optional float ch2_voltage = 3; /* * Current (Ch2) */ - float ch2_current = 4; + optional float ch2_current = 4; /* * Voltage (Ch3) */ - float ch3_voltage = 5; + optional float ch3_voltage = 5; /* * Current (Ch3) */ - float ch3_current = 6; + optional float ch3_current = 6; } /* @@ -172,62 +172,62 @@ message AirQualityMetrics { /* * Concentration Units Standard PM1.0 */ - uint32 pm10_standard = 1; + optional uint32 pm10_standard = 1; /* * Concentration Units Standard PM2.5 */ - uint32 pm25_standard = 2; + optional uint32 pm25_standard = 2; /* * Concentration Units Standard PM10.0 */ - uint32 pm100_standard = 3; + optional uint32 pm100_standard = 3; /* * Concentration Units Environmental PM1.0 */ - uint32 pm10_environmental = 4; + optional uint32 pm10_environmental = 4; /* * Concentration Units Environmental PM2.5 */ - uint32 pm25_environmental = 5; + optional uint32 pm25_environmental = 5; /* * Concentration Units Environmental PM10.0 */ - uint32 pm100_environmental = 6; + optional uint32 pm100_environmental = 6; /* * 0.3um Particle Count */ - uint32 particles_03um = 7; + optional uint32 particles_03um = 7; /* * 0.5um Particle Count */ - uint32 particles_05um = 8; + optional uint32 particles_05um = 8; /* * 1.0um Particle Count */ - uint32 particles_10um = 9; + optional uint32 particles_10um = 9; /* * 2.5um Particle Count */ - uint32 particles_25um = 10; + optional uint32 particles_25um = 10; /* * 5.0um Particle Count */ - uint32 particles_50um = 11; + optional uint32 particles_50um = 11; /* * 10.0um Particle Count */ - uint32 particles_100um = 12; + optional uint32 particles_100um = 12; } /* From e9b83744e29d4037d7f2dc7989541016924bfb4a Mon Sep 17 00:00:00 2001 From: Jonathan Bennett Date: Sun, 4 Aug 2024 22:36:33 -0500 Subject: [PATCH 066/454] Adds public_key and private_key for PKI co-authored-by: edinnen --- meshtastic/mesh.options | 2 ++ meshtastic/mesh.proto | 12 ++++++++++++ 2 files changed, 14 insertions(+) diff --git a/meshtastic/mesh.options b/meshtastic/mesh.options index 7075e2d..32a3104 100644 --- a/meshtastic/mesh.options +++ b/meshtastic/mesh.options @@ -3,6 +3,8 @@ *macaddr max_size:6 fixed_length:true # macaddrs *id max_size:16 # node id strings +*public_key max_size:32 # public key +*private_key max_size:32 # private key *User.long_name max_size:40 *User.short_name max_size:5 diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 619ad92..19f93e2 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -681,6 +681,12 @@ message User { * Indicates that the user's role in the mesh */ Config.DeviceConfig.Role role = 7; + + /* + * The public key of the user's device. + * This is sent out to other nodes on the mesh to allow them to compute a shared secret key. + */ + bytes public_key = 8; } /* @@ -1345,6 +1351,12 @@ message MyNodeInfo { * Phone/PC apps should compare this to their build number and if too low tell the user they must update their app */ uint32 min_app_version = 11; + + /* + * The private key of the device. + * This is used to create a shared key with a remote device. + */ + bytes private_key = 12; } /* From bc465e6522d442b47064d015daf49051fd65ba6f Mon Sep 17 00:00:00 2001 From: Jonathan Bennett Date: Mon, 5 Aug 2024 12:04:21 -0500 Subject: [PATCH 067/454] Add the key used to PKI decrypt to MeshPacket --- meshtastic/mesh.proto | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 19f93e2..cbf73dc 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -1127,6 +1127,16 @@ message MeshPacket { * When receiving a packet, the difference between hop_start and hop_limit gives how many hops it traveled. */ uint32 hop_start = 15; + + /* + * Records the public key the packet was encrypted with, if applicable. + */ + bytes public_key = 16; + + /* + * Indicates whether the packet was en/decrypted using PKI + */ + bool pki_encrypted = 17; } /* From adb2ff256b52f3c7a34fbc1fd828cf42e0062e12 Mon Sep 17 00:00:00 2001 From: Jonathan Bennett Date: Tue, 6 Aug 2024 20:35:38 -0500 Subject: [PATCH 068/454] Re-org some settings into a new SecurityConfig proto --- meshtastic/config.options | 4 ++++ meshtastic/config.proto | 48 ++++++++++++++++++++++++++++++++++++--- meshtastic/mesh.options | 1 - meshtastic/mesh.proto | 6 ----- 4 files changed, 49 insertions(+), 10 deletions(-) diff --git a/meshtastic/config.options b/meshtastic/config.options index 22dcc88..704d141 100644 --- a/meshtastic/config.options +++ b/meshtastic/config.options @@ -15,3 +15,7 @@ *LoRaConfig.channel_num int_size:16 *PowerConfig.device_battery_ina_address int_size:8 + +*SecurityConfig.public_key max_size:32 +*SecurityConfig.private_key max_size:32 +*SecurityConfig.admin_key max_size:32 diff --git a/meshtastic/config.proto b/meshtastic/config.proto index 97aafcf..cd3575a 100644 --- a/meshtastic/config.proto +++ b/meshtastic/config.proto @@ -135,14 +135,16 @@ message Config { /* * Disabling this will disable the SerialConsole by not initilizing the StreamAPI + * Moved to SecurityConfig */ - bool serial_enabled = 2; + bool serial_enabled = 2[deprecated = true]; /* * By default we turn off logging as soon as an API client connects (to keep shared serial link quiet). * Set this to true to leave the debug log outputting even when API is active. + * Moved to SecurityConfig */ - bool debug_log_enabled = 3; + bool debug_log_enabled = 3[deprecated = true]; /* * For boards without a hard wired button, this is the pin number that will be used @@ -175,8 +177,9 @@ message Config { /* * If true, device is considered to be "managed" by a mesh administrator * Clients should then limit available configuration and administrative options inside the user interface + * Moved to SecurityConfig */ - bool is_managed = 9; + bool is_managed = 9[deprecated = true]; /* * Disables the triple-press of user button to enable or disable GPS @@ -1018,6 +1021,44 @@ message Config { bool device_logging_enabled = 4; } + message SecurityConfig { + + /* + * The public key of the user's device. + * This is sent out to other nodes on the mesh to allow them to compute a shared secret key. + */ + bytes public_key = 1; + + /* + * The private key of the device. + * This is used to create a shared key with a remote device. + */ + bytes private_key = 2; + + /* + * This is the public key authorized to send admin messages to this node + */ + bytes admin_key = 3; + + /* + * If true, device is considered to be "managed" by a mesh administrator + * Clients should then limit available configuration and administrative options inside the user interface + */ + bool is_managed = 4; + + /* + * Disabling this will disable the SerialConsole by not initilizing the StreamAPI + */ + bool serial_enabled = 5; + + /* + * By default we turn off logging as soon as an API client connects (to keep shared serial link quiet). + * Set this to true to leave the debug log outputting even when API is active. + */ + bool debug_log_enabled = 6; + + } + /* * Payload Variant */ @@ -1029,5 +1070,6 @@ message Config { DisplayConfig display = 5; LoRaConfig lora = 6; BluetoothConfig bluetooth = 7; + SecurityConfig security = 8; } } diff --git a/meshtastic/mesh.options b/meshtastic/mesh.options index 32a3104..872e310 100644 --- a/meshtastic/mesh.options +++ b/meshtastic/mesh.options @@ -4,7 +4,6 @@ *macaddr max_size:6 fixed_length:true # macaddrs *id max_size:16 # node id strings *public_key max_size:32 # public key -*private_key max_size:32 # private key *User.long_name max_size:40 *User.short_name max_size:5 diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index cbf73dc..095caa8 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -1361,12 +1361,6 @@ message MyNodeInfo { * Phone/PC apps should compare this to their build number and if too low tell the user they must update their app */ uint32 min_app_version = 11; - - /* - * The private key of the device. - * This is used to create a shared key with a remote device. - */ - bytes private_key = 12; } /* From ecc4d42053eccebec1676977c5e19444f61d72c2 Mon Sep 17 00:00:00 2001 From: Jonathan Bennett Date: Tue, 6 Aug 2024 20:52:57 -0500 Subject: [PATCH 069/454] Also move device_logging_enabled from bluetooth to SecurityConfig --- meshtastic/config.proto | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/meshtastic/config.proto b/meshtastic/config.proto index cd3575a..6c77f4e 100644 --- a/meshtastic/config.proto +++ b/meshtastic/config.proto @@ -1017,8 +1017,9 @@ message Config { /* * Enables device (serial style logs) over Bluetooth + * Moved to SecurityConfig */ - bool device_logging_enabled = 4; + bool device_logging_enabled = 4[deprecated = true]; } message SecurityConfig { @@ -1057,6 +1058,11 @@ message Config { */ bool debug_log_enabled = 6; + /* + * Enables device (serial style logs) over Bluetooth + * Moved to SecurityConfig + */ + bool bluetooth_logging_enabled = 7; } /* From 6cde2e267209a8ccac9a3dce7913d24632339e8f Mon Sep 17 00:00:00 2001 From: Jonathan Bennett Date: Tue, 6 Aug 2024 21:01:46 -0500 Subject: [PATCH 070/454] Add SecurityConfig to Localonly --- meshtastic/localonly.proto | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/meshtastic/localonly.proto b/meshtastic/localonly.proto index 9694d7b..bcb2796 100644 --- a/meshtastic/localonly.proto +++ b/meshtastic/localonly.proto @@ -58,6 +58,11 @@ message LocalConfig { * NodeDB.cpp in the device code. */ uint32 version = 8; + + /* + * The part of the config that is specific to Security settings + */ + Config.SecurityConfig security = 9; } message LocalModuleConfig { From 684d1faf8edff8a30d23e79b079876d6b5d48ec8 Mon Sep 17 00:00:00 2001 From: Jonathan Bennett Date: Wed, 7 Aug 2024 09:28:57 -0500 Subject: [PATCH 071/454] Add admin_channel_enabled to the security config --- meshtastic/config.proto | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/meshtastic/config.proto b/meshtastic/config.proto index 6c77f4e..32ae91b 100644 --- a/meshtastic/config.proto +++ b/meshtastic/config.proto @@ -1063,6 +1063,11 @@ message Config { * Moved to SecurityConfig */ bool bluetooth_logging_enabled = 7; + + /* + * Enables incoming admin control over the "admin" channel + */ + bool admin_channel_enabled = 8 [default = false]; } /* From 04a3b65a946d273870c5c0fe1b7729f1c37c6642 Mon Sep 17 00:00:00 2001 From: Jonathan Bennett Date: Wed, 7 Aug 2024 09:38:52 -0500 Subject: [PATCH 072/454] No default for you, Proto3 --- meshtastic/config.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meshtastic/config.proto b/meshtastic/config.proto index 32ae91b..8cb77f0 100644 --- a/meshtastic/config.proto +++ b/meshtastic/config.proto @@ -1067,7 +1067,7 @@ message Config { /* * Enables incoming admin control over the "admin" channel */ - bool admin_channel_enabled = 8 [default = false]; + bool admin_channel_enabled = 8; } /* From c979c1ac8f9bd65eb4d48272ccc687418245a0e9 Mon Sep 17 00:00:00 2001 From: Garth Vander Houwen Date: Thu, 8 Aug 2024 06:55:51 -0700 Subject: [PATCH 073/454] Update config.proto Update comments to match discord conversation --- meshtastic/config.proto | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/meshtastic/config.proto b/meshtastic/config.proto index 8cb77f0..83e9dd4 100644 --- a/meshtastic/config.proto +++ b/meshtastic/config.proto @@ -1026,46 +1026,45 @@ message Config { /* * The public key of the user's device. - * This is sent out to other nodes on the mesh to allow them to compute a shared secret key. + * Sent out to other nodes on the mesh to allow them to compute a shared secret key. */ bytes public_key = 1; /* * The private key of the device. - * This is used to create a shared key with a remote device. + * Used to create a shared key with a remote device. */ bytes private_key = 2; /* - * This is the public key authorized to send admin messages to this node + * The public key authorized to send admin messages to this node. */ bytes admin_key = 3; /* - * If true, device is considered to be "managed" by a mesh administrator - * Clients should then limit available configuration and administrative options inside the user interface + * If true, device is considered to be "managed" by a mesh administrator via admin messages + * Device is managed by a mesh administrator. */ bool is_managed = 4; /* - * Disabling this will disable the SerialConsole by not initilizing the StreamAPI + * Serial Console over the Stream API." */ bool serial_enabled = 5; /* * By default we turn off logging as soon as an API client connects (to keep shared serial link quiet). - * Set this to true to leave the debug log outputting even when API is active. + * Output live debug logging over serial. */ bool debug_log_enabled = 6; /* * Enables device (serial style logs) over Bluetooth - * Moved to SecurityConfig */ bool bluetooth_logging_enabled = 7; /* - * Enables incoming admin control over the "admin" channel + * Allow incoming device control over the insecure legacy admin channel. */ bool admin_channel_enabled = 8; } From d7ce4f30faecd5873dc19d2c138057027446373b Mon Sep 17 00:00:00 2001 From: Garth Vander Houwen Date: Thu, 8 Aug 2024 08:10:02 -0700 Subject: [PATCH 074/454] Update config.proto update api name --- meshtastic/config.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meshtastic/config.proto b/meshtastic/config.proto index 83e9dd4..47900e6 100644 --- a/meshtastic/config.proto +++ b/meshtastic/config.proto @@ -1056,7 +1056,7 @@ message Config { * By default we turn off logging as soon as an API client connects (to keep shared serial link quiet). * Output live debug logging over serial. */ - bool debug_log_enabled = 6; + bool debug_log_api_enabled = 6; /* * Enables device (serial style logs) over Bluetooth From 66a6d11f7fd035c063c55aa7ac5fde946152a1b1 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Thu, 8 Aug 2024 06:52:25 -0500 Subject: [PATCH 075/454] Add client notification fromradio message --- meshtastic/mesh.options | 2 ++ meshtastic/mesh.proto | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/meshtastic/mesh.options b/meshtastic/mesh.options index 872e310..9730a6e 100644 --- a/meshtastic/mesh.options +++ b/meshtastic/mesh.options @@ -46,6 +46,8 @@ *FileInfo.file_name max_size:228 +*ClientNotification.message max_size:400 + # MyMessage.name max_size:40 # or fixed_length or fixed_count, or max_count diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 095caa8..de07aea 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -1540,9 +1540,41 @@ message FromRadio { * File system manifest messages */ FileInfo fileInfo = 15; + + /* + * Notification message to the client + */ + ClientNotification clientNotification = 16; } } +/* + * A notification message from the device to the client + * To be used for important messages that should to be displayed to the user + * in the form of push notifications or validation messages when saving + * invalid configuration. + */ +message ClientNotification { + /* + * The id of the packet we're notifying in response to + */ + optional uint32 reply_id = 1; + + /* + * Seconds since 1970 - or 0 for unknown/unset + */ + fixed32 time = 2; + + /* + * The level type of notification + */ + LogRecord.Level level = 3; + /* + * The message body of the notification + */ + string message = 4; +} + /* * Individual File info for the device */ From 000e9dcd38456592de762667c16b9007fbf07958 Mon Sep 17 00:00:00 2001 From: Jonathan Bennett Date: Sat, 10 Aug 2024 22:58:01 -0500 Subject: [PATCH 076/454] Add SECURITY_CONFIG to admin.proto (#547) --- meshtastic/admin.proto | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/meshtastic/admin.proto b/meshtastic/admin.proto index 12fe0c7..1c637c9 100644 --- a/meshtastic/admin.proto +++ b/meshtastic/admin.proto @@ -58,6 +58,11 @@ message AdminMessage { * TODO: REPLACE */ BLUETOOTH_CONFIG = 6; + + /* + * TODO: REPLACE + */ + SECURITY_CONFIG = 7; } /* From 1ff2e736ca9e0e25cb9d565acb195b36630a95bc Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Sun, 11 Aug 2024 09:22:27 -0500 Subject: [PATCH 077/454] UserLite --- meshtastic/deviceonly.options | 5 ++++ meshtastic/deviceonly.proto | 47 ++++++++++++++++++++++++++++++++++- 2 files changed, 51 insertions(+), 1 deletion(-) diff --git a/meshtastic/deviceonly.options b/meshtastic/deviceonly.options index e9477a0..6f53317 100644 --- a/meshtastic/deviceonly.options +++ b/meshtastic/deviceonly.options @@ -14,3 +14,8 @@ *NodeInfoLite.channel int_size:8 *NodeInfoLite.hops_away int_size:8 + +*UserLite.long_name max_size:40 +*UserLite.short_name max_size:5 +*UserLite.public_key max_size:32 # public key +*UserLite.macaddr max_size:6 fixed_length:true diff --git a/meshtastic/deviceonly.proto b/meshtastic/deviceonly.proto index 9c700db..b3fb440 100644 --- a/meshtastic/deviceonly.proto +++ b/meshtastic/deviceonly.proto @@ -6,6 +6,7 @@ import "meshtastic/channel.proto"; import "meshtastic/localonly.proto"; import "meshtastic/mesh.proto"; import "meshtastic/telemetry.proto"; +import "meshtastic/config.proto"; import "nanopb.proto"; option csharp_namespace = "Meshtastic.Protobufs"; @@ -51,6 +52,50 @@ message PositionLite { Position.LocSource location_source = 5; } +message UserLite { + /* + * This is the addr of the radio. + */ + bytes macaddr = 1 [deprecated = true]; + + /* + * A full name for this user, i.e. "Kevin Hester" + */ + string long_name = 2; + + /* + * A VERY short name, ideally two characters. + * Suitable for a tiny OLED screen + */ + string short_name = 3; + + /* + * TBEAM, HELTEC, etc... + * Starting in 1.2.11 moved to hw_model enum in the NodeInfo object. + * Apps will still need the string here for older builds + * (so OTA update can find the right image), but if the enum is available it will be used instead. + */ + HardwareModel hw_model = 4; + + /* + * In some regions Ham radio operators have different bandwidth limitations than others. + * If this user is a licensed operator, set this flag. + * Also, "long_name" should be their licence number. + */ + bool is_licensed = 5; + + /* + * Indicates that the user's role in the mesh + */ + Config.DeviceConfig.Role role = 6; + + /* + * The public key of the user's device. + * This is sent out to other nodes on the mesh to allow them to compute a shared secret key. + */ + bytes public_key = 7; +} + message NodeInfoLite { /* * The node number @@ -60,7 +105,7 @@ message NodeInfoLite { /* * The user info for this node */ - User user = 2; + UserLite user = 2; /* * This position data. Note: before 1.2.14 we would also store the last time we've heard from this node in position.time, that is no longer true. From f03121f440ea38aa9fbdde5923eebbd97206032d Mon Sep 17 00:00:00 2001 From: Jonathan Bennett Date: Mon, 12 Aug 2024 18:11:07 -0500 Subject: [PATCH 078/454] Add NONE_PKI error message --- meshtastic/mesh.proto | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index de07aea..bb4fab3 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -769,6 +769,11 @@ message Routing { * (i.e you did not send the request on the required bound channel) */ NOT_AUTHORIZED = 33; + + /* + * This message is not a failure, and indicates that the message was sent via PKI + */ + NONE_PKI = 34; } oneof variant { From f007d1d71932c66f445a531e4b4de13b4c33687e Mon Sep 17 00:00:00 2001 From: Jonathan Bennett Date: Tue, 13 Aug 2024 11:44:48 -0500 Subject: [PATCH 079/454] Rename NONE_PKI to PKI_FAILED --- meshtastic/mesh.proto | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index bb4fab3..9de4c2c 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -771,9 +771,9 @@ message Routing { NOT_AUTHORIZED = 33; /* - * This message is not a failure, and indicates that the message was sent via PKI + * The client specified a PKI transport, but the node was unable to send the packet using PKI (and did not send the message at all) */ - NONE_PKI = 34; + PKI_FAILED = 34; } oneof variant { From 8b5b2faf662b364754809f923271022f4f1492ed Mon Sep 17 00:00:00 2001 From: Jonathan Bennett Date: Wed, 14 Aug 2024 15:31:46 -0500 Subject: [PATCH 080/454] Add PKI_UNKNOWN_PUBKEY (#557) --- meshtastic/mesh.proto | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 9de4c2c..6679c73 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -774,6 +774,11 @@ message Routing { * The client specified a PKI transport, but the node was unable to send the packet using PKI (and did not send the message at all) */ PKI_FAILED = 34; + + /* + * The receiving node does not have a Public Key to decode with + */ + PKI_UNKNOWN_PUBKEY = 35; } oneof variant { From 97cd687e825e8920ea1d2b4ecee4749f5b3c27ab Mon Sep 17 00:00:00 2001 From: John Milton Date: Thu, 15 Aug 2024 13:51:20 -0400 Subject: [PATCH 081/454] Add board enum for RP2040_FEATHER_RFM95; variants/feather_rp2040_rfm95. --- meshtastic/mesh.proto | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 7d07066..b0c6a67 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -605,6 +605,15 @@ enum HardwareModel { */ RADIOMASTER_900_BANDIT = 74; + /* + * RP2040_FEATHER_RFM95 + * Adafruit Feather RP2040 with RFM95 LoRa Radio RFM95 with SX1272, SSD1306 OLED + * https://www.adafruit.com/product/5714 + * https://www.adafruit.com/product/326 + * + */ +RP2040_FEATHER_RFM95 = 75; + /* * ------------------------------------------------------------------------------------------------------------------------------------------ * Reserved ID For developing private Ports. These will show up in live traffic sparsely, so we can use a high number. Keep it within 8 bits. From 2d7f6d12d93f8bf0d156e5d8c4e7e9df66083853 Mon Sep 17 00:00:00 2001 From: John Milton Date: Thu, 15 Aug 2024 14:00:06 -0400 Subject: [PATCH 082/454] add ther other Adafruit displauy and a comment about A0. --- meshtastic/mesh.proto | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index b0c6a67..91490be 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -610,7 +610,9 @@ enum HardwareModel { * Adafruit Feather RP2040 with RFM95 LoRa Radio RFM95 with SX1272, SSD1306 OLED * https://www.adafruit.com/product/5714 * https://www.adafruit.com/product/326 - * + * https://www.adafruit.com/product/938 + * ^^^ short A0 to switch to I2C address 0x3C + * */ RP2040_FEATHER_RFM95 = 75; From 06d7ca5821460b33f9d66b11323aa53965389699 Mon Sep 17 00:00:00 2001 From: Jonathan Bennett Date: Thu, 15 Aug 2024 16:32:42 -0500 Subject: [PATCH 083/454] Adds Admin session_passkey to prevent replay of admin packets (#558) * Adds Admin session_passkey to prevent replay of admin packets * Update comment on admin_passkey --- meshtastic/admin.options | 2 ++ meshtastic/admin.proto | 8 ++++++++ 2 files changed, 10 insertions(+) diff --git a/meshtastic/admin.options b/meshtastic/admin.options index 4804d89..022c4fd 100644 --- a/meshtastic/admin.options +++ b/meshtastic/admin.options @@ -1,5 +1,7 @@ *AdminMessage.payload_variant anonymous_oneof:true +*AdminMessage.session_passkey max_size:8 + *AdminMessage.set_canned_message_module_messages max_size:201 *AdminMessage.get_canned_message_module_messages_response max_size:201 *AdminMessage.delete_file_request max_size:201 diff --git a/meshtastic/admin.proto b/meshtastic/admin.proto index 1c637c9..c461ffe 100644 --- a/meshtastic/admin.proto +++ b/meshtastic/admin.proto @@ -20,6 +20,14 @@ option swift_prefix = ""; * (Prior to 1.2 these operations were done via special ToRadio operations) */ message AdminMessage { + + /* + * The node generates this key and sends it with any get_x_response packets. + * The client MUST include the same key with any set_x commands. Key expires after 300 seconds. + * Prevents replay attacks for admin messages. + */ + bytes session_passkey = 101; + /* * TODO: REPLACE */ From ceb1170e2c929fb7429208cb8adf50e198568a03 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Thu, 15 Aug 2024 20:41:11 -0500 Subject: [PATCH 084/454] Local device mesh stats --- meshtastic/telemetry.options | 5 +++- meshtastic/telemetry.proto | 48 ++++++++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+), 1 deletion(-) diff --git a/meshtastic/telemetry.options b/meshtastic/telemetry.options index 72aba92..073412a 100644 --- a/meshtastic/telemetry.options +++ b/meshtastic/telemetry.options @@ -2,4 +2,7 @@ # https://jpa.kapsi.fi/nanopb/docs/reference.html#proto-file-options *EnvironmentMetrics.iaq int_size:16 -*EnvironmentMetrics.wind_direction int_size:16 \ No newline at end of file +*EnvironmentMetrics.wind_direction int_size:16 + +*LocalStats.num_online_nodes int_size:16 +*LocalStats.num_total_nodes int_size:16 diff --git a/meshtastic/telemetry.proto b/meshtastic/telemetry.proto index af0181f..6ca8db3 100644 --- a/meshtastic/telemetry.proto +++ b/meshtastic/telemetry.proto @@ -230,6 +230,49 @@ message AirQualityMetrics { optional uint32 particles_100um = 12; } +/* + * Local device mesh statistics + */ +message LocalStats { + /* + * How long the device has been running since the last reboot (in seconds) + */ + uint32 uptime_seconds = 1; + /* + * Utilization for the current channel, including well formed TX, RX and malformed RX (aka noise). + */ + float channel_utilization = 2; + /* + * Percent of airtime for transmission used within the last hour. + */ + float air_util_tx = 3; + + /* + * Number of packets sent + */ + uint32 num_packets_tx = 4; + + /* + * Number of packets received good + */ + uint32 num_packets_rx = 5; + + /* + * Number of packets received that are malformed or violate the protocol + */ + uint32 num_packets_rx_bad = 6; + + /* + * Number of nodes online (in the past 2 hours) + */ + uint32 num_online_nodes = 7; + + /* + * Number of nodes total + */ + uint32 num_total_nodes = 8; +} + /* * Types of Measurements the telemetry module is equipped to handle */ @@ -259,6 +302,11 @@ message Telemetry { * Power Metrics */ PowerMetrics power_metrics = 5; + + /* + * Local device mesh statistics + */ + LocalStats local_stats = 6; } } From d2a88c9ddc6f8b233507ca7c28e433748ad76660 Mon Sep 17 00:00:00 2001 From: Mark Trevor Birss Date: Fri, 16 Aug 2024 09:52:25 +0200 Subject: [PATCH 085/454] Update mesh.proto --- meshtastic/mesh.proto | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 7d07066..925baf8 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -605,6 +605,11 @@ enum HardwareModel { */ RADIOMASTER_900_BANDIT = 74; + /* + * Minewsemi ME25LS01 (ME25LE01_V1.0). NRF52840 w/ LR1110 radio, buttons and leds and pins. + */ + ME25LS01_4Y10TD = 75; + /* * ------------------------------------------------------------------------------------------------------------------------------------------ * Reserved ID For developing private Ports. These will show up in live traffic sparsely, so we can use a high number. Keep it within 8 bits. From 6a53f766bc7005615bc8ac202af0c122ac795ffc Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Fri, 16 Aug 2024 18:21:01 -0500 Subject: [PATCH 086/454] Set time only admin message --- meshtastic/admin.proto | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/meshtastic/admin.proto b/meshtastic/admin.proto index c461ffe..c2c09cd 100644 --- a/meshtastic/admin.proto +++ b/meshtastic/admin.proto @@ -318,6 +318,12 @@ message AdminMessage { */ bool remove_fixed_position = 42; + /* + * Set time only on the node + * Convenience method to set the time on the node (as NTP quality) without any other position data + */ + uint32 set_time_only = 43; + /* * Begins an edit transaction for config, module config, owner, and channel settings changes * This will delay the standard *implicit* save to the file system and subsequent reboot behavior until committed (commit_edit_settings) From 8ac99eefe8d7b38b4ecdba9ef5858d6bcb3ba537 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Fri, 16 Aug 2024 18:31:16 -0500 Subject: [PATCH 087/454] Fixed --- meshtastic/admin.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meshtastic/admin.proto b/meshtastic/admin.proto index c2c09cd..821fac3 100644 --- a/meshtastic/admin.proto +++ b/meshtastic/admin.proto @@ -322,7 +322,7 @@ message AdminMessage { * Set time only on the node * Convenience method to set the time on the node (as NTP quality) without any other position data */ - uint32 set_time_only = 43; + fixed32 set_time_only = 43; /* * Begins an edit transaction for config, module config, owner, and channel settings changes From 59d035a37dbeadb28db97acce5f738ba52ee9d3a Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Fri, 16 Aug 2024 18:49:23 -0500 Subject: [PATCH 088/454] net --- meshtastic/admin.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meshtastic/admin.proto b/meshtastic/admin.proto index 821fac3..37553d2 100644 --- a/meshtastic/admin.proto +++ b/meshtastic/admin.proto @@ -320,7 +320,7 @@ message AdminMessage { /* * Set time only on the node - * Convenience method to set the time on the node (as NTP quality) without any other position data + * Convenience method to set the time on the node (as Net quality) without any other position data */ fixed32 set_time_only = 43; From 7171332c99b884afde4eb436003f097c8fdf8d30 Mon Sep 17 00:00:00 2001 From: GUVWAF Date: Sat, 17 Aug 2024 14:27:32 +0200 Subject: [PATCH 089/454] Add route back and SNR lists to RouteDiscovery for traceroute --- meshtastic/mesh.options | 7 ++++++- meshtastic/mesh.proto | 21 ++++++++++++++++++--- meshtastic/portnums.proto | 4 ++-- 3 files changed, 26 insertions(+), 6 deletions(-) diff --git a/meshtastic/mesh.options b/meshtastic/mesh.options index 9730a6e..541e4c9 100644 --- a/meshtastic/mesh.options +++ b/meshtastic/mesh.options @@ -9,6 +9,11 @@ *User.short_name max_size:5 *RouteDiscovery.route max_count:8 +*RouteDiscovery.snr_towards max_count:8 +*RouteDiscovery.snr_towards int_size:8 +*RouteDiscovery.route_back max_count:8 +*RouteDiscovery.snr_back max_count:8 +*RouteDiscovery.snr_back int_size:8 # note: this payload length is ONLY the bytes that are sent inside of the Data protobuf (excluding protobuf overhead). The 16 byte header is # outside of this envelope @@ -67,4 +72,4 @@ *ChunkedPayload.chunk_count int_size:16 *ChunkedPayload.chunk_index int_size:16 -*ChunkedPayload.payload_chunk max_size:228 +*ChunkedPayload.payload_chunk max_size:228 \ No newline at end of file diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 4076bec..aaf5adb 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -695,13 +695,28 @@ message User { } /* - * A message used in our Dynamic Source Routing protocol (RFC 4728 based) + * A message used in a traceroute */ message RouteDiscovery { /* - * The list of nodenums this packet has visited so far + * The list of nodenums this packet has visited so far to the destination. */ repeated fixed32 route = 1; + + /* + * The list of SNRs (in dB, scaled by 4) in the route towards the destination. + */ + repeated int32 snr_towards = 2; + + /* + * The list of nodenums the packet has visited on the way back from the destination. + */ + repeated fixed32 route_back = 3; + + /* + * The list of SNRs (in dB, scaled by 4) in the route back from the destination. + */ + repeated int32 snr_back = 4; } /* @@ -1850,4 +1865,4 @@ message ChunkedPayloadResponse { */ resend_chunks resend_chunks = 4; } -} +} \ No newline at end of file diff --git a/meshtastic/portnums.proto b/meshtastic/portnums.proto index a8517c7..1f8cdb9 100644 --- a/meshtastic/portnums.proto +++ b/meshtastic/portnums.proto @@ -174,7 +174,7 @@ enum PortNum { /* * Provides a traceroute functionality to show the route a packet towards - * a certain destination would take on the mesh. + * a certain destination would take on the mesh. Contains a RouteDiscovery message as payload. * ENCODING: Protobuf */ TRACEROUTE_APP = 70; @@ -218,4 +218,4 @@ enum PortNum { * Currently we limit port nums to no higher than this value */ MAX = 511; -} +} \ No newline at end of file From e6561cc17c6df56398e7a707a5b9addecf7d8b10 Mon Sep 17 00:00:00 2001 From: John Milton Date: Mon, 19 Aug 2024 14:56:19 -0400 Subject: [PATCH 090/454] Update mesh.proto enum upstream collision, switch to the next free. --- meshtastic/mesh.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 91490be..93919b1 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -614,7 +614,7 @@ enum HardwareModel { * ^^^ short A0 to switch to I2C address 0x3C * */ -RP2040_FEATHER_RFM95 = 75; +RP2040_FEATHER_RFM95 = 76; /* * ------------------------------------------------------------------------------------------------------------------------------------------ From 68b946291e5b55a01111a15611d9a11919bf7517 Mon Sep 17 00:00:00 2001 From: Jonathan Bennett Date: Mon, 19 Aug 2024 14:01:19 -0500 Subject: [PATCH 091/454] Adds a blank config for fetching a remote admin session key --- meshtastic/admin.proto | 5 +++++ meshtastic/config.proto | 6 ++++++ 2 files changed, 11 insertions(+) diff --git a/meshtastic/admin.proto b/meshtastic/admin.proto index 37553d2..48d3392 100644 --- a/meshtastic/admin.proto +++ b/meshtastic/admin.proto @@ -71,6 +71,11 @@ message AdminMessage { * TODO: REPLACE */ SECURITY_CONFIG = 7; + + /* + * + */ + SESSIONKEY_CONFIG = 8; } /* diff --git a/meshtastic/config.proto b/meshtastic/config.proto index 47900e6..33fbd16 100644 --- a/meshtastic/config.proto +++ b/meshtastic/config.proto @@ -1069,6 +1069,11 @@ message Config { bool admin_channel_enabled = 8; } + /* + * Blank config request, strictly for getting the session key + */ + message SessionkeyConfig {} + /* * Payload Variant */ @@ -1081,5 +1086,6 @@ message Config { LoRaConfig lora = 6; BluetoothConfig bluetooth = 7; SecurityConfig security = 8; + SessionkeyConfig sessionkey = 9; } } From 183ba970a7a71de7a81541b74c413543523417d2 Mon Sep 17 00:00:00 2001 From: Kevin Hester Date: Tue, 20 Aug 2024 13:36:32 -0700 Subject: [PATCH 092/454] remove deprecated serial/bt logging options and unify in the new security option. Per discussion in https://github.com/meshtastic/firmware/issues/4375 no need to preserve the old options when changing to this new simpler single boolean because they were newish, rarely used and only for 'advanced' developers. --- meshtastic/config.proto | 22 ++-------------------- 1 file changed, 2 insertions(+), 20 deletions(-) diff --git a/meshtastic/config.proto b/meshtastic/config.proto index 33fbd16..2f734b7 100644 --- a/meshtastic/config.proto +++ b/meshtastic/config.proto @@ -139,13 +139,6 @@ message Config { */ bool serial_enabled = 2[deprecated = true]; - /* - * By default we turn off logging as soon as an API client connects (to keep shared serial link quiet). - * Set this to true to leave the debug log outputting even when API is active. - * Moved to SecurityConfig - */ - bool debug_log_enabled = 3[deprecated = true]; - /* * For boards without a hard wired button, this is the pin number that will be used * Boards that have more than one button can swap the function with this one. defaults to BUTTON_PIN if defined. @@ -1014,12 +1007,6 @@ message Config { * Specified PIN for PairingMode.FixedPin */ uint32 fixed_pin = 3; - - /* - * Enables device (serial style logs) over Bluetooth - * Moved to SecurityConfig - */ - bool device_logging_enabled = 4[deprecated = true]; } message SecurityConfig { @@ -1054,15 +1041,10 @@ message Config { /* * By default we turn off logging as soon as an API client connects (to keep shared serial link quiet). - * Output live debug logging over serial. + * Output live debug logging over serial or bluetooth is set to true. */ bool debug_log_api_enabled = 6; - /* - * Enables device (serial style logs) over Bluetooth - */ - bool bluetooth_logging_enabled = 7; - /* * Allow incoming device control over the insecure legacy admin channel. */ @@ -1088,4 +1070,4 @@ message Config { SecurityConfig security = 8; SessionkeyConfig sessionkey = 9; } -} +} \ No newline at end of file From b15c081cb314c7407205ebe98b0f6d4345ae80bd Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Wed, 21 Aug 2024 06:51:56 -0500 Subject: [PATCH 093/454] Shut up buf... nobody like your nagging --- .github/workflows/pull_request.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index 11232ca..179d09a 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -22,6 +22,7 @@ jobs: - name: Push to schema registry uses: bufbuild/buf-push-action@v1.2.0 + if: ${{ github.event_name != 'pull_request_target' && github.event_name != 'pull_request' }} with: buf_token: ${{ secrets.BUF_TOKEN }} draft: ${{ github.ref_name != 'master'}} From 17043d6f3ac1887788b9aa851081fe82dddb7a3f Mon Sep 17 00:00:00 2001 From: Jonathan Bennett Date: Sun, 25 Aug 2024 21:55:51 -0500 Subject: [PATCH 094/454] Make admin_key repeated max count 1, for future expansion --- meshtastic/config.options | 1 + meshtastic/config.proto | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/meshtastic/config.options b/meshtastic/config.options index 704d141..ecd4679 100644 --- a/meshtastic/config.options +++ b/meshtastic/config.options @@ -19,3 +19,4 @@ *SecurityConfig.public_key max_size:32 *SecurityConfig.private_key max_size:32 *SecurityConfig.admin_key max_size:32 +*SecurityConfig.admin_key max_count:1 diff --git a/meshtastic/config.proto b/meshtastic/config.proto index 2f734b7..66d149f 100644 --- a/meshtastic/config.proto +++ b/meshtastic/config.proto @@ -1026,7 +1026,7 @@ message Config { /* * The public key authorized to send admin messages to this node. */ - bytes admin_key = 3; + repeated bytes admin_key = 3; /* * If true, device is considered to be "managed" by a mesh administrator via admin messages From b575b137e298a09f7e3d30673ae3066f4de360a5 Mon Sep 17 00:00:00 2001 From: Junhuang Date: Thu, 29 Aug 2024 10:10:04 +0800 Subject: [PATCH 095/454] =?UTF-8?q?Be=20available=20for=20=20M5=20corebasi?= =?UTF-8?q?c2.7=E3=80=81core2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- meshtastic/mesh.proto | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 661881d..225c097 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -620,7 +620,9 @@ enum HardwareModel { * */ RP2040_FEATHER_RFM95 = 76; - + /* M5 esp32 based MCU modules with enclosure, TFT and LORA Shields. All Variants (Basic, Core, Fire, Core2, Paper) https://m5stack.com/ */ + M5STACK_COREBASIC=77; + M5STACK_CORE2=78; /* * ------------------------------------------------------------------------------------------------------------------------------------------ * Reserved ID For developing private Ports. These will show up in live traffic sparsely, so we can use a high number. Keep it within 8 bits. From 2d5ffbb61f693586881fa7e8ee30ca7c64c11da3 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Fri, 30 Aug 2024 07:30:26 -0500 Subject: [PATCH 096/454] Custom i2c sensor telemetry --- meshtastic/telemetry.proto | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/meshtastic/telemetry.proto b/meshtastic/telemetry.proto index 6ca8db3..5c8bc5f 100644 --- a/meshtastic/telemetry.proto +++ b/meshtastic/telemetry.proto @@ -458,6 +458,16 @@ enum TelemetrySensorType { * MAX17048 1S lipo battery sensor (voltage, state of charge, time to go) */ MAX17048 = 28; + + /* + * MAX17048 1S lipo battery sensor (voltage, state of charge, time to go) + */ + MAX17048 = 28; + + /* + * Custom I2C sensor implementation based on https://github.com/meshtastic/i2c-sensor + */ + CUSTOM_SENSOR = 29; } /* From 8c01df356a42f16de24058ad71bcbcd85be91a02 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Fri, 30 Aug 2024 07:31:08 -0500 Subject: [PATCH 097/454] Update telemetry.proto --- meshtastic/telemetry.proto | 5 ----- 1 file changed, 5 deletions(-) diff --git a/meshtastic/telemetry.proto b/meshtastic/telemetry.proto index 5c8bc5f..d4e80a8 100644 --- a/meshtastic/telemetry.proto +++ b/meshtastic/telemetry.proto @@ -459,11 +459,6 @@ enum TelemetrySensorType { */ MAX17048 = 28; - /* - * MAX17048 1S lipo battery sensor (voltage, state of charge, time to go) - */ - MAX17048 = 28; - /* * Custom I2C sensor implementation based on https://github.com/meshtastic/i2c-sensor */ From 77fc95a9ab90561787e258526f879946016ae067 Mon Sep 17 00:00:00 2001 From: GUVWAF Date: Fri, 30 Aug 2024 19:58:30 +0200 Subject: [PATCH 098/454] Add new MeshPacket priority HIGH --- meshtastic/mesh.proto | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 225c097..824ae65 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -1020,6 +1020,11 @@ message MeshPacket { */ RELIABLE = 70; + /* + * Higher priority for specific message types (portnums) to distinguish between other reliable packets. + */ + HIGH = 100; + /* * Ack/naks are sent with very high priority to ensure that retransmission * stops as soon as possible From 90f73ed100d00bd5b16475fe522137b93ba0c40c Mon Sep 17 00:00:00 2001 From: GUVWAF Date: Sun, 1 Sep 2024 15:35:52 +0200 Subject: [PATCH 099/454] Add RESPONSE priority for responses to a request --- meshtastic/mesh.proto | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 824ae65..23d2b9c 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -1020,6 +1020,12 @@ message MeshPacket { */ RELIABLE = 70; + /* + * If priority is unset but the packet is a response to a request, we want it to get there relatively quickly. + * Furthermore, responses stop relaying packets directed to a node early. + */ + RESPONSE = 80; + /* * Higher priority for specific message types (portnums) to distinguish between other reliable packets. */ From 583784692c02b996bd89be3d7e9c3d305a67ba0a Mon Sep 17 00:00:00 2001 From: Riley Nielsen Date: Mon, 2 Sep 2024 11:19:52 -0700 Subject: [PATCH 100/454] Add CO2, SCD4X --- meshtastic/telemetry.proto | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/meshtastic/telemetry.proto b/meshtastic/telemetry.proto index d4e80a8..72bb418 100644 --- a/meshtastic/telemetry.proto +++ b/meshtastic/telemetry.proto @@ -128,6 +128,11 @@ message EnvironmentMetrics { * Wind lull in m/s */ optional float wind_lull = 17; + + /* + * CO2 measurement in ppm + */ + optional uint32 co2 = 18; } /* @@ -463,6 +468,11 @@ enum TelemetrySensorType { * Custom I2C sensor implementation based on https://github.com/meshtastic/i2c-sensor */ CUSTOM_SENSOR = 29; + + /* + * SCD40/SCD41 CO2, humidity, temperature sensor + */ + SCD4X = 30; } /* From 30eb05a8a97a216d602e50b3c38d6086ba52cd5d Mon Sep 17 00:00:00 2001 From: Jonathan Bennett Date: Wed, 4 Sep 2024 14:30:54 -0500 Subject: [PATCH 101/454] Adds OKToMqtt bool to data --- meshtastic/mesh.proto | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 23d2b9c..4dfdac0 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -888,6 +888,11 @@ message Data { * a message a heart or poop emoji. */ fixed32 emoji = 8; + + /* + * Defaults to false. Indicates the user approves the packet being uploaded to MQTT. + */ + bool OKToMqtt = 9; } /* @@ -1889,4 +1894,4 @@ message ChunkedPayloadResponse { */ resend_chunks resend_chunks = 4; } -} \ No newline at end of file +} From fce5ab584fecd0113d168e792af894b8b63afb1a Mon Sep 17 00:00:00 2001 From: Jonathan Bennett Date: Fri, 6 Sep 2024 11:57:23 -0500 Subject: [PATCH 102/454] Rename ok_to_mqtt and add config --- meshtastic/config.proto | 7 ++++++- meshtastic/mesh.proto | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/meshtastic/config.proto b/meshtastic/config.proto index 66d149f..0ad0b26 100644 --- a/meshtastic/config.proto +++ b/meshtastic/config.proto @@ -973,6 +973,11 @@ message Config { * If true, the device will not process any packets received via LoRa that passed via MQTT anywhere on the path towards it. */ bool ignore_mqtt = 104; + + /* + * Sets the ok_to_mqtt bit on outgoing packets + */ + bool config_ok_to_mqtt = 105; } message BluetoothConfig { @@ -1070,4 +1075,4 @@ message Config { SecurityConfig security = 8; SessionkeyConfig sessionkey = 9; } -} \ No newline at end of file +} diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 4dfdac0..ed2e3aa 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -892,7 +892,7 @@ message Data { /* * Defaults to false. Indicates the user approves the packet being uploaded to MQTT. */ - bool OKToMqtt = 9; + optional bool ok_to_mqtt = 9; } /* From 0acaec6eff00e748beeae89148093221f131cd9c Mon Sep 17 00:00:00 2001 From: Jonathan Bennett Date: Fri, 6 Sep 2024 18:27:22 -0500 Subject: [PATCH 103/454] Move ok_to_mqtt from flag to bitfield (#574) --- meshtastic/mesh.options | 3 ++- meshtastic/mesh.proto | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/meshtastic/mesh.options b/meshtastic/mesh.options index 541e4c9..cb85daa 100644 --- a/meshtastic/mesh.options +++ b/meshtastic/mesh.options @@ -18,6 +18,7 @@ # note: this payload length is ONLY the bytes that are sent inside of the Data protobuf (excluding protobuf overhead). The 16 byte header is # outside of this envelope *Data.payload max_size:237 +*Data.bitfield int_size:8 *NodeInfo.channel int_size:8 *NodeInfo.hops_away int_size:8 @@ -72,4 +73,4 @@ *ChunkedPayload.chunk_count int_size:16 *ChunkedPayload.chunk_index int_size:16 -*ChunkedPayload.payload_chunk max_size:228 \ No newline at end of file +*ChunkedPayload.payload_chunk max_size:228 diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index ed2e3aa..ae8631b 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -890,9 +890,9 @@ message Data { fixed32 emoji = 8; /* - * Defaults to false. Indicates the user approves the packet being uploaded to MQTT. + * Bitfield for extra flags. First use is to indicate that user approves the packet being uploaded to MQTT. */ - optional bool ok_to_mqtt = 9; + optional uint32 bitfield = 9; } /* From a883cfe739aa7d531777809c83160908244a29a0 Mon Sep 17 00:00:00 2001 From: andrekir Date: Sat, 14 Sep 2024 23:15:15 -0300 Subject: [PATCH 104/454] add fixed_position, ringtone, and canned_messages to `DeviceProfile` --- meshtastic/clientonly.options | 4 +++- meshtastic/clientonly.proto | 16 ++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/meshtastic/clientonly.options b/meshtastic/clientonly.options index bc98b39..c47944a 100644 --- a/meshtastic/clientonly.options +++ b/meshtastic/clientonly.options @@ -1,2 +1,4 @@ *DeviceProfile.long_name max_size:40 -*DeviceProfile.short_name max_size:5 \ No newline at end of file +*DeviceProfile.short_name max_size:5 +*DeviceProfile.ringtone max_size:231 +*DeviceProfile.canned_messages max_size:201 \ No newline at end of file diff --git a/meshtastic/clientonly.proto b/meshtastic/clientonly.proto index b1a27b1..2b919ef 100644 --- a/meshtastic/clientonly.proto +++ b/meshtastic/clientonly.proto @@ -3,6 +3,7 @@ syntax = "proto3"; package meshtastic; import "meshtastic/localonly.proto"; +import "meshtastic/mesh.proto"; option csharp_namespace = "Meshtastic.Protobufs"; option go_package = "github.com/meshtastic/go/generated"; @@ -39,4 +40,19 @@ message DeviceProfile { * The ModuleConfig of the node */ optional LocalModuleConfig module_config = 5; + + /* + * Fixed position data + */ + optional Position fixed_position = 6; + + /* + * Ringtone for ExternalNotification + */ + optional string ringtone = 7; + + /* + * Predefined messages for CannedMessage + */ + optional string canned_messages = 8; } From 84a60f4e62228a15c7b5a149f93fbe430d7555f4 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Sun, 15 Sep 2024 19:24:15 -0500 Subject: [PATCH 105/454] Add generic detail payload variant to TAKPacket --- meshtastic/atak.options | 1 + meshtastic/atak.proto | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/meshtastic/atak.options b/meshtastic/atak.options index 6baa7ea..cec1ca3 100644 --- a/meshtastic/atak.options +++ b/meshtastic/atak.options @@ -5,3 +5,4 @@ *GeoChat.message max_size:200 *GeoChat.to max_size:120 *GeoChat.to_callsign max_size:120 +*TAKPacket.detail max_size:220 \ No newline at end of file diff --git a/meshtastic/atak.proto b/meshtastic/atak.proto index ccde335..2fbc2e5 100644 --- a/meshtastic/atak.proto +++ b/meshtastic/atak.proto @@ -40,6 +40,12 @@ message TAKPacket { * ATAK GeoChat message */ GeoChat chat = 6; + + /* + * Generic CoT detail XML + * May be compressed / truncated by the sender + */ + bytes detail = 7; } } From 0347af720cb0c195a629d5f35dd538df25c6f1fb Mon Sep 17 00:00:00 2001 From: Jacob Powers <5566081+powersjcb@users.noreply.github.com> Date: Mon, 16 Sep 2024 20:19:41 -0600 Subject: [PATCH 106/454] Update deviceonly.proto --- meshtastic/deviceonly.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meshtastic/deviceonly.proto b/meshtastic/deviceonly.proto index b3fb440..91367bf 100644 --- a/meshtastic/deviceonly.proto +++ b/meshtastic/deviceonly.proto @@ -141,7 +141,7 @@ message NodeInfoLite { /* * Number of hops away from us this node is (0 if adjacent) */ - uint32 hops_away = 9; + optional uint32 hops_away = 9; /* * True if node is in our favorites list From 292538b8fbc237d0736a77f6a4479437787c9ebd Mon Sep 17 00:00:00 2001 From: Jacob Powers <5566081+powersjcb@users.noreply.github.com> Date: Mon, 16 Sep 2024 20:20:45 -0600 Subject: [PATCH 107/454] Update mesh.proto --- meshtastic/mesh.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index ae8631b..1dab94a 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -1306,7 +1306,7 @@ message NodeInfo { /* * Number of hops away from us this node is (0 if adjacent) */ - uint32 hops_away = 9; + optional uint32 hops_away = 9; /* * True if node is in our favorites list From a5cf8b5ac38cf541ee27ab99237788f1e91355d6 Mon Sep 17 00:00:00 2001 From: Jonathan Bennett Date: Mon, 16 Sep 2024 21:36:03 -0500 Subject: [PATCH 108/454] More Admin Errors --- meshtastic/mesh.proto | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index ae8631b..227d3a7 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -811,7 +811,17 @@ message Routing { /* * The receiving node does not have a Public Key to decode with */ - PKI_UNKNOWN_PUBKEY = 35; + PKI_UNKNOWN_PUBKEY = 35; + + /* + * Admin packet otherwise checks out, but uses a bogus or expired session key + */ + ADMIN_BAD_SESSION_KEY = 36; + + /* + * Admin packet sent using PKC, but not from a public key on the admin key list + */ + ADMIN_PUBLIC_KEY_UNAUTHORIZED = 37; } oneof variant { From c5108cfd6bbc59adef44575dcec3067cbfbfeac1 Mon Sep 17 00:00:00 2001 From: Jonathan Bennett Date: Mon, 16 Sep 2024 21:52:43 -0500 Subject: [PATCH 109/454] Update max_count of admin_key to 3 (#575) --- meshtastic/config.options | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meshtastic/config.options b/meshtastic/config.options index ecd4679..9310cf0 100644 --- a/meshtastic/config.options +++ b/meshtastic/config.options @@ -19,4 +19,4 @@ *SecurityConfig.public_key max_size:32 *SecurityConfig.private_key max_size:32 *SecurityConfig.admin_key max_size:32 -*SecurityConfig.admin_key max_count:1 +*SecurityConfig.admin_key max_count:3 From cc2f12bc7a3c2c5ba2940651affe16a09aaecd78 Mon Sep 17 00:00:00 2001 From: Jonathan Bennett Date: Tue, 17 Sep 2024 17:30:02 -0500 Subject: [PATCH 110/454] Adds the hasPKC bool to device metadata capabilities --- meshtastic/mesh.proto | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 6a487e7..4997a12 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -1828,6 +1828,11 @@ message DeviceMetadata { * Has Remote Hardware enabled */ bool hasRemoteHardware = 10; + + /* + * Has PKC capabilities + */ + bool hasPKC = 11; } /* From c4636e0232bf0fc214d6848d4eace9d3d4bbb985 Mon Sep 17 00:00:00 2001 From: Augusto Zanellato Date: Thu, 19 Sep 2024 21:48:47 +0200 Subject: [PATCH 111/454] Add DetectionSensorConfig.broadcast_all_state_transitions --- meshtastic/module_config.proto | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/meshtastic/module_config.proto b/meshtastic/module_config.proto index 9945e1b..2385700 100644 --- a/meshtastic/module_config.proto +++ b/meshtastic/module_config.proto @@ -183,6 +183,13 @@ message ModuleConfig { * Only applicable if the board uses pull-up resistors on the pin */ bool use_pullup = 8; + + /* + * Whether or not all the state transition should be broadcasted. + * Causes an additional message to be sent to mesh when detection state goes + * back to false. + */ + bool broadcast_all_state_transitions = 9; } /* From 3ff3dab75dbd58378660a41303d0cd7e3e444912 Mon Sep 17 00:00:00 2001 From: Augusto Zanellato Date: Fri, 20 Sep 2024 00:37:28 +0200 Subject: [PATCH 112/454] DetectionSensor: make triggering more flexible --- meshtastic/module_config.proto | 39 ++++++++++++++++++++++------------ 1 file changed, 25 insertions(+), 14 deletions(-) diff --git a/meshtastic/module_config.proto b/meshtastic/module_config.proto index 2385700..504826e 100644 --- a/meshtastic/module_config.proto +++ b/meshtastic/module_config.proto @@ -137,20 +137,39 @@ message ModuleConfig { * Detection Sensor Module Config */ message DetectionSensorConfig { + + enum TriggerType { + // Event is triggered if pin is low + LOGIC_LOW = 0; + // Event is triggered if pin is high + LOGIC_HIGH = 1; + // Event is triggered when pin goes high to low + FALLING_EDGE = 2; + // Event is triggered when pin goes low to high + RISING_EDGE = 3; + // Event is triggered on every pin state change, low is considered to be + // "active" + EITHER_EDGE_ACTIVE_LOW = 4; + // Event is triggered on every pin state change, high is considered to be + // "active" + EITHER_EDGE_ACTIVE_HIGH = 5; + } /* * Whether the Module is enabled */ bool enabled = 1; /* - * Interval in seconds of how often we can send a message to the mesh when a state change is detected + * Interval in seconds of how often we can send a message to the mesh when a + * trigger event is detected */ uint32 minimum_broadcast_secs = 2; /* - * Interval in seconds of how often we should send a message to the mesh with the current state regardless of changes - * When set to 0, only state changes will be broadcasted - * Works as a sort of status heartbeat for peace of mind + * Interval in seconds of how often we should send a message to the mesh + * with the current state regardless of trigger events When set to 0, only + * trigger events will be broadcasted Works as a sort of status heartbeat + * for peace of mind */ uint32 state_broadcast_secs = 3; @@ -173,23 +192,15 @@ message ModuleConfig { uint32 monitor_pin = 6; /* - * Whether or not the GPIO pin state detection is triggered on HIGH (1) - * Otherwise LOW (0) + * The type of trigger event to be used */ - bool detection_triggered_high = 7; + TriggerType detection_trigger_type = 7; /* * Whether or not use INPUT_PULLUP mode for GPIO pin * Only applicable if the board uses pull-up resistors on the pin */ bool use_pullup = 8; - - /* - * Whether or not all the state transition should be broadcasted. - * Causes an additional message to be sent to mesh when detection state goes - * back to false. - */ - bool broadcast_all_state_transitions = 9; } /* From a711a17d471ca8d6f61074e5a24cffdc348e5451 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20G=C3=B6ttgens?= Date: Sat, 21 Sep 2024 11:54:41 +0200 Subject: [PATCH 113/454] heltec-wireless-bridge --- meshtastic/mesh.proto | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 4997a12..f49084d 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -338,6 +338,11 @@ enum HardwareModel { * Heltec HRU-3601: https://heltec.org/project/hru-3601/ */ HELTEC_HRU_3601 = 23; + + /* + * Heltec Wireless Bridge + */ + HELTEC_WIRELESS_BRIDGE = 24; /* * B&Q Consulting Station Edition G1: https://uniteng.com/wiki/doku.php?id=meshtastic:station From 9dbb2ae4efef6bc0bb763b264385df2a5c01ffac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20G=C3=B6ttgens?= Date: Sat, 21 Sep 2024 14:54:52 +0200 Subject: [PATCH 114/454] Pico2 --- meshtastic/mesh.proto | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index f49084d..512df17 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -624,10 +624,15 @@ enum HardwareModel { * ^^^ short A0 to switch to I2C address 0x3C * */ -RP2040_FEATHER_RFM95 = 76; + RP2040_FEATHER_RFM95 = 76; + /* M5 esp32 based MCU modules with enclosure, TFT and LORA Shields. All Variants (Basic, Core, Fire, Core2, Paper) https://m5stack.com/ */ M5STACK_COREBASIC=77; M5STACK_CORE2=78; + + /* Pico2 with Waveshare Hat, same as Pico */ + RPI_PICO2=79; + /* * ------------------------------------------------------------------------------------------------------------------------------------------ * Reserved ID For developing private Ports. These will show up in live traffic sparsely, so we can use a high number. Keep it within 8 bits. From c12bb5beea54bd7243ca1c7de7be9a670c8670d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20BOU=C3=89?= Date: Sun, 22 Sep 2024 15:47:28 +0200 Subject: [PATCH 115/454] Add support for M5Stack CoreS3 variant --- meshtastic/mesh.proto | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 512df17..2f196a1 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -432,7 +432,7 @@ enum HardwareModel { DR_DEV = 41; /* - * M5 esp32 based MCU modules with enclosure, TFT and LORA Shields. All Variants (Basic, Core, Fire, Core2, Paper) https://m5stack.com/ + * M5 esp32 based MCU modules with enclosure, TFT and LORA Shields. All Variants (Basic, Core, Fire, Core2, CoreS3, Paper) https://m5stack.com/ */ M5STACK = 42; @@ -626,9 +626,10 @@ enum HardwareModel { */ RP2040_FEATHER_RFM95 = 76; - /* M5 esp32 based MCU modules with enclosure, TFT and LORA Shields. All Variants (Basic, Core, Fire, Core2, Paper) https://m5stack.com/ */ + /* M5 esp32 based MCU modules with enclosure, TFT and LORA Shields. All Variants (Basic, Core, Fire, Core2, CoreS3, Paper) https://m5stack.com/ */ M5STACK_COREBASIC=77; M5STACK_CORE2=78; + M5STACK_CORES3=80; /* Pico2 with Waveshare Hat, same as Pico */ RPI_PICO2=79; From 67f9d80eb2db49eed3bf940a2c1500111e4b2b48 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20G=C3=B6ttgens?= Date: Sun, 22 Sep 2024 17:21:09 +0200 Subject: [PATCH 116/454] Update mesh.proto For our own sanity, please keep the numerical order --- meshtastic/mesh.proto | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 2f196a1..e599a3d 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -629,10 +629,12 @@ enum HardwareModel { /* M5 esp32 based MCU modules with enclosure, TFT and LORA Shields. All Variants (Basic, Core, Fire, Core2, CoreS3, Paper) https://m5stack.com/ */ M5STACK_COREBASIC=77; M5STACK_CORE2=78; - M5STACK_CORES3=80; /* Pico2 with Waveshare Hat, same as Pico */ RPI_PICO2=79; + + /* M5 esp32 based MCU modules with enclosure, TFT and LORA Shields. All Variants (Basic, Core, Fire, Core2, CoreS3, Paper) https://m5stack.com/ */ + M5STACK_CORES3=80; /* * ------------------------------------------------------------------------------------------------------------------------------------------ From 206e046e3421f264acfce6179dd4ae6d6194eb59 Mon Sep 17 00:00:00 2001 From: Augusto Zanellato Date: Tue, 24 Sep 2024 11:10:35 +0200 Subject: [PATCH 117/454] set detection_trigger_type max_size --- meshtastic/module_config.options | 1 + 1 file changed, 1 insertion(+) diff --git a/meshtastic/module_config.options b/meshtastic/module_config.options index 68aba7c..fdde1b3 100644 --- a/meshtastic/module_config.options +++ b/meshtastic/module_config.options @@ -26,3 +26,4 @@ *DetectionSensorConfig.monitor_pin int_size:8 *DetectionSensorConfig.name max_size:20 +*DetectionSensorConfig.detection_trigger_type max_size:8 From 7ef4ee191a7fae80590fbd868bf6972d5f0b9914 Mon Sep 17 00:00:00 2001 From: Dylanliacc Date: Tue, 24 Sep 2024 18:26:48 +0800 Subject: [PATCH 118/454] feat: add seeed xiao s3 --- meshtastic/mesh.proto | 2 ++ 1 file changed, 2 insertions(+) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index e599a3d..e593dcb 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -636,6 +636,8 @@ enum HardwareModel { /* M5 esp32 based MCU modules with enclosure, TFT and LORA Shields. All Variants (Basic, Core, Fire, Core2, CoreS3, Paper) https://m5stack.com/ */ M5STACK_CORES3=80; + /* Seeed XIAO S3 DK + M5STACK_CORES3=81; /* * ------------------------------------------------------------------------------------------------------------------------------------------ * Reserved ID For developing private Ports. These will show up in live traffic sparsely, so we can use a high number. Keep it within 8 bits. From fb9a48dae761b5cbfc4efeba3e9f6d58599a0a69 Mon Sep 17 00:00:00 2001 From: Tom Fifield Date: Tue, 24 Sep 2024 19:20:54 +0800 Subject: [PATCH 119/454] fix typos --- meshtastic/mesh.proto | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index e593dcb..0d40601 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -636,8 +636,8 @@ enum HardwareModel { /* M5 esp32 based MCU modules with enclosure, TFT and LORA Shields. All Variants (Basic, Core, Fire, Core2, CoreS3, Paper) https://m5stack.com/ */ M5STACK_CORES3=80; - /* Seeed XIAO S3 DK - M5STACK_CORES3=81; + /* Seeed XIAO S3 DK*/ + SEEED_XIAO_S3=81; /* * ------------------------------------------------------------------------------------------------------------------------------------------ * Reserved ID For developing private Ports. These will show up in live traffic sparsely, so we can use a high number. Keep it within 8 bits. From dfccd4fba420d4a5963a5ddd9fc56e4a64935ae0 Mon Sep 17 00:00:00 2001 From: Mark Trevor Birss Date: Wed, 25 Sep 2024 09:05:02 +0200 Subject: [PATCH 120/454] Update mesh.proto --- meshtastic/mesh.proto | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 0d40601..10b00f9 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -638,6 +638,12 @@ enum HardwareModel { /* Seeed XIAO S3 DK*/ SEEED_XIAO_S3=81; + + /* + * Nordic nRF52840+Semtech SX1262 LoRa BLE Combo Module. nRF52840+SX1262 MS24SF1 + */ + MS24SF1=82; + /* * ------------------------------------------------------------------------------------------------------------------------------------------ * Reserved ID For developing private Ports. These will show up in live traffic sparsely, so we can use a high number. Keep it within 8 bits. From f6c9aeb4f1761c4e7f9d47830f0369c8dc25dc6b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20G=C3=B6ttgens?= Date: Sat, 28 Sep 2024 13:29:52 +0200 Subject: [PATCH 121/454] Add TLora-C6 --- meshtastic/mesh.proto | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 10b00f9..6b9be53 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -627,22 +627,27 @@ enum HardwareModel { RP2040_FEATHER_RFM95 = 76; /* M5 esp32 based MCU modules with enclosure, TFT and LORA Shields. All Variants (Basic, Core, Fire, Core2, CoreS3, Paper) https://m5stack.com/ */ - M5STACK_COREBASIC=77; - M5STACK_CORE2=78; + M5STACK_COREBASIC = 77; + M5STACK_CORE2 = 78; /* Pico2 with Waveshare Hat, same as Pico */ - RPI_PICO2=79; + RPI_PICO2 = 79; /* M5 esp32 based MCU modules with enclosure, TFT and LORA Shields. All Variants (Basic, Core, Fire, Core2, CoreS3, Paper) https://m5stack.com/ */ - M5STACK_CORES3=80; + M5STACK_CORES3 = 80; /* Seeed XIAO S3 DK*/ - SEEED_XIAO_S3=81; + SEEED_XIAO_S3 = 81; /* * Nordic nRF52840+Semtech SX1262 LoRa BLE Combo Module. nRF52840+SX1262 MS24SF1 */ - MS24SF1=82; + MS24SF1 = 82; + + /* + * Lilygo TLora-C6 with the new ESP32-C6 MCU + */ + TLORA_C6 = 83; /* * ------------------------------------------------------------------------------------------------------------------------------------------ From 61d7ca65652dfe832ead74719700d3d33d6bae7c Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Mon, 30 Sep 2024 17:16:49 -0500 Subject: [PATCH 122/454] Update description --- meshtastic/atak.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meshtastic/atak.proto b/meshtastic/atak.proto index 2fbc2e5..5dc08c9 100644 --- a/meshtastic/atak.proto +++ b/meshtastic/atak.proto @@ -43,7 +43,7 @@ message TAKPacket { /* * Generic CoT detail XML - * May be compressed / truncated by the sender + * May be compressed / truncated by the sender (EUD) */ bytes detail = 7; } From 94ef58cbf276d85f099ba13105ad918168e9dc8f Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Wed, 2 Oct 2024 06:03:55 -0500 Subject: [PATCH 123/454] Add health telemetry --- meshtastic/module_config.proto | 12 ++++++++++++ meshtastic/telemetry.options | 3 +++ meshtastic/telemetry.proto | 30 ++++++++++++++++++++++++++++++ 3 files changed, 45 insertions(+) diff --git a/meshtastic/module_config.proto b/meshtastic/module_config.proto index 504826e..5f5bc1e 100644 --- a/meshtastic/module_config.proto +++ b/meshtastic/module_config.proto @@ -579,6 +579,18 @@ message ModuleConfig { * air quality metrics to the mesh */ bool power_screen_enabled = 10; + + /* + * Preferences for the (Health) Telemetry Module + * Enable/Disable the telemetry measurement module measurement collection + */ + bool health_measurement_enabled = 3; + + /* + * Interval in seconds of how often we should try to send our + * health metrics to the mesh + */ + uint32 health_update_interval = 2; } /* diff --git a/meshtastic/telemetry.options b/meshtastic/telemetry.options index 073412a..79b1f12 100644 --- a/meshtastic/telemetry.options +++ b/meshtastic/telemetry.options @@ -6,3 +6,6 @@ *LocalStats.num_online_nodes int_size:16 *LocalStats.num_total_nodes int_size:16 + +*HealthMetrics.heart_bpm int_size:8 +*HealthMetrics.spO2 int_size:8 diff --git a/meshtastic/telemetry.proto b/meshtastic/telemetry.proto index d4e80a8..799708e 100644 --- a/meshtastic/telemetry.proto +++ b/meshtastic/telemetry.proto @@ -273,6 +273,26 @@ message LocalStats { uint32 num_total_nodes = 8; } +/* + * Health telemetry metrics + */ + message HealthMetrics { + /* + * Heart rate (beats per minute) + */ + optional uint32 heart_bpm = 1; + + /* + * SpO2 (blood oxygen saturation) level + */ + optional uint32 spO2 = 2; + + /* + * Body temperature in degrees Celsius + */ + optional float temperature = 3; +} + /* * Types of Measurements the telemetry module is equipped to handle */ @@ -307,6 +327,11 @@ message Telemetry { * Local device mesh statistics */ LocalStats local_stats = 6; + + /* + * Health telemetry metrics + */ + HealthMetrics health_metrics = 7; } } @@ -463,6 +488,11 @@ enum TelemetrySensorType { * Custom I2C sensor implementation based on https://github.com/meshtastic/i2c-sensor */ CUSTOM_SENSOR = 29; + + /* + * MAX30102 Pulse Oximeter and Heart-Rate Sensor + */ + MAX30102 = 30; } /* From c0708735f5e7c9ad6e13c89cf5b9c25d5ce6b6eb Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Wed, 2 Oct 2024 06:05:43 -0500 Subject: [PATCH 124/454] Tag numbers --- meshtastic/module_config.proto | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/meshtastic/module_config.proto b/meshtastic/module_config.proto index 5f5bc1e..ed22661 100644 --- a/meshtastic/module_config.proto +++ b/meshtastic/module_config.proto @@ -584,13 +584,13 @@ message ModuleConfig { * Preferences for the (Health) Telemetry Module * Enable/Disable the telemetry measurement module measurement collection */ - bool health_measurement_enabled = 3; + bool health_measurement_enabled = 11; /* * Interval in seconds of how often we should try to send our * health metrics to the mesh */ - uint32 health_update_interval = 2; + uint32 health_update_interval = 12; } /* From b52e08eb97f0dfe4540a7b3716b535606c74d6fd Mon Sep 17 00:00:00 2001 From: GUVWAF Date: Wed, 2 Oct 2024 20:29:12 +0200 Subject: [PATCH 125/454] Add duplicate received, relayed and canceled relayed packets to LocalStats --- meshtastic/telemetry.proto | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/meshtastic/telemetry.proto b/meshtastic/telemetry.proto index 799708e..c4d7ea5 100644 --- a/meshtastic/telemetry.proto +++ b/meshtastic/telemetry.proto @@ -253,7 +253,7 @@ message LocalStats { uint32 num_packets_tx = 4; /* - * Number of packets received good + * Number of packets received (both good and bad) */ uint32 num_packets_rx = 5; @@ -271,6 +271,23 @@ message LocalStats { * Number of nodes total */ uint32 num_total_nodes = 8; + + /* + * Number of received packets that were duplicates (due to multiple nodes relaying). + * If this number is high, there are nodes in the mesh relaying packets when it's unnecessary, for example due to the ROUTER/REPEATER role. + */ + uint32 num_rx_dupe = 9; + + /* + * Number of packets we transmitted that were a relay for others (not originating from ourselves). + */ + uint32 num_tx_relay = 10; + + /* + * Number of times we canceled a packet to be relayed, because someone else did it before us. + * This will always be zero for ROUTERs/REPEATERs. If this number is high, some other node(s) is/are relaying faster than you. + */ + uint32 num_tx_relay_canceled = 11; } /* From 08876d1c25e86f219f9dfdf41c5bed650fa47e35 Mon Sep 17 00:00:00 2001 From: Tom Fifield Date: Thu, 3 Oct 2024 16:25:33 +0800 Subject: [PATCH 126/454] Add MLX90614 non-contact IR temperature sensor. Mentioned in https://github.com/meshtastic/firmware/issues/4738 as being most appropriate for sensing animal temperature. Also, according to https://www.sparkfun.com/products/retired/14569, a replacement for the apparently retired MLX90632 --- meshtastic/telemetry.proto | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/meshtastic/telemetry.proto b/meshtastic/telemetry.proto index c4d7ea5..94aaf39 100644 --- a/meshtastic/telemetry.proto +++ b/meshtastic/telemetry.proto @@ -510,6 +510,13 @@ enum TelemetrySensorType { * MAX30102 Pulse Oximeter and Heart-Rate Sensor */ MAX30102 = 30; + + /* + * MLX90614 non-contact IR temperature sensor. + */ + MLX90614 = 31; + + /* } /* From dd8619f7865a7117039e3eab86b3c635b768950a Mon Sep 17 00:00:00 2001 From: Tom Fifield Date: Thu, 3 Oct 2024 19:41:34 +0800 Subject: [PATCH 127/454] Typo fix --- meshtastic/telemetry.proto | 2 -- 1 file changed, 2 deletions(-) diff --git a/meshtastic/telemetry.proto b/meshtastic/telemetry.proto index 94aaf39..c3b896b 100644 --- a/meshtastic/telemetry.proto +++ b/meshtastic/telemetry.proto @@ -515,8 +515,6 @@ enum TelemetrySensorType { * MLX90614 non-contact IR temperature sensor. */ MLX90614 = 31; - - /* } /* From d983fef9e47106f6c2e55b6fcae219d99eb5ac60 Mon Sep 17 00:00:00 2001 From: Tom Fifield Date: Sat, 5 Oct 2024 13:45:41 +0800 Subject: [PATCH 128/454] Add RegionCodes for Philippines Required by https://github.com/meshtastic/firmware/pull/4951 --- meshtastic/config.proto | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/meshtastic/config.proto b/meshtastic/config.proto index 0ad0b26..54f1be7 100644 --- a/meshtastic/config.proto +++ b/meshtastic/config.proto @@ -802,6 +802,21 @@ message Config { * Singapore 923mhz */ SG_923 = 18; + + /* + * Philippines 433mhz + */ + PH_433 = 19; + + /* + * Philippines 868mhz + */ + PH_868 = 20; + + /* + * Philippines 915mhz + */ + PH_915 = 21; } /* From 29b19dfd79eb914f05321e2964337babeffb2e4d Mon Sep 17 00:00:00 2001 From: Tom Fifield Date: Sun, 6 Oct 2024 19:49:17 +0800 Subject: [PATCH 129/454] Add health_screen_enabled and fix comments health_screen_enabled will be used for turning on/off the screen for health telemetry. Also fixed some commands on other existing variables that were incorrect. --- meshtastic/module_config.proto | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/meshtastic/module_config.proto b/meshtastic/module_config.proto index ed22661..933d142 100644 --- a/meshtastic/module_config.proto +++ b/meshtastic/module_config.proto @@ -563,20 +563,18 @@ message ModuleConfig { uint32 air_quality_interval = 7; /* - * Interval in seconds of how often we should try to send our - * air quality metrics to the mesh + * Enable/disable Power metrics */ bool power_measurement_enabled = 8; /* * Interval in seconds of how often we should try to send our - * air quality metrics to the mesh + * power metrics to the mesh */ uint32 power_update_interval = 9; /* - * Interval in seconds of how often we should try to send our - * air quality metrics to the mesh + * Enable/Disable the power measurement module on-device display */ bool power_screen_enabled = 10; @@ -591,6 +589,11 @@ message ModuleConfig { * health metrics to the mesh */ uint32 health_update_interval = 12; + + /* + * Enable/Disable the health telemetry module on-device display + */ + bool health_screen_enabled = 13; } /* From 27072c08380e0555d44e979aded47acef49e92eb Mon Sep 17 00:00:00 2001 From: Riley Nielsen Date: Mon, 7 Oct 2024 17:43:15 -0700 Subject: [PATCH 130/454] Update telemetry.proto --- meshtastic/telemetry.proto | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/meshtastic/telemetry.proto b/meshtastic/telemetry.proto index c3b896b..5dd810b 100644 --- a/meshtastic/telemetry.proto +++ b/meshtastic/telemetry.proto @@ -228,6 +228,11 @@ message AirQualityMetrics { * 10.0um Particle Count */ optional uint32 particles_100um = 12; + + /* + * 10.0um Particle Count + */ + optional uint32 co2 = 13; } /* @@ -512,9 +517,14 @@ enum TelemetrySensorType { MAX30102 = 30; /* - * MLX90614 non-contact IR temperature sensor. + * MLX90614 non-contact IR temperature sensor */ MLX90614 = 31; + + /* + * SCD40/SCD41 CO2, humidity, temperature sensor + */ + SCD4X = 32; } /* From c28a677d7dba56295b74ca1c08cb66515c5b1af9 Mon Sep 17 00:00:00 2001 From: mverch67 Date: Wed, 9 Oct 2024 12:49:09 +0200 Subject: [PATCH 131/454] device-ui persistency --- meshtastic/admin.proto | 21 +++++ meshtastic/device_ui.options | 5 ++ meshtastic/device_ui.proto | 167 +++++++++++++++++++++++++++++++++++ meshtastic/mesh.proto | 6 ++ 4 files changed, 199 insertions(+) create mode 100644 meshtastic/device_ui.options create mode 100644 meshtastic/device_ui.proto diff --git a/meshtastic/admin.proto b/meshtastic/admin.proto index 48d3392..17009c4 100644 --- a/meshtastic/admin.proto +++ b/meshtastic/admin.proto @@ -7,6 +7,7 @@ import "meshtastic/config.proto"; import "meshtastic/connection_status.proto"; import "meshtastic/mesh.proto"; import "meshtastic/module_config.proto"; +import "meshtastic/device_ui.proto"; option csharp_namespace = "Meshtastic.Protobufs"; option go_package = "github.com/meshtastic/go/generated"; @@ -76,6 +77,11 @@ message AdminMessage { * */ SESSIONKEY_CONFIG = 8; + + /* + * device-ui config + */ + DEVICEUI_CONFIG = 9; } /* @@ -376,6 +382,21 @@ message AdminMessage { * Tell the node to reset the nodedb. */ int32 nodedb_reset = 100; + + /* + * Tell the node to send the stored ui data. + */ + bool get_ui_config_request = 102; + + /* + * reply stored device ui data. + */ + DeviceUIConfig get_ui_config_response = 103; + + /* + * Tell the node to store UI data persistently. + */ + DeviceUIConfig store_ui_config = 104; } } diff --git a/meshtastic/device_ui.options b/meshtastic/device_ui.options new file mode 100644 index 0000000..0982a74 --- /dev/null +++ b/meshtastic/device_ui.options @@ -0,0 +1,5 @@ +*DeviceUIConfig.screen_brightness int_size:8 +*DeviceUIConfig.screen_timeout int_size:16 +*NodeFilter.node_name max_size:16 +*NodeFilter.hopys_away int_size:8 +*NodeHighlight.node_name max_size:16 diff --git a/meshtastic/device_ui.proto b/meshtastic/device_ui.proto new file mode 100644 index 0000000..ab0c83b --- /dev/null +++ b/meshtastic/device_ui.proto @@ -0,0 +1,167 @@ +syntax = "proto3"; + +package meshtastic; + +option csharp_namespace = "Meshtastic.Protobufs"; +option go_package = "github.com/meshtastic/go/generated"; +option java_outer_classname = "LocalOnlyProtos"; +option java_package = "com.geeksville.mesh"; +option swift_prefix = ""; + +/* + * Protobuf structures for device-ui persistency + */ + +message DeviceUIConfig { + /* + * TFT display brightness 1..255 + */ + uint32 screen_brightness = 1; + + /* + * Screen timeout 0..900 + */ + uint32 screen_timeout = 2; + + /* + * Screen lock enabled + */ + bool screen_lock = 3; + + /* + * Color theme + */ + Theme theme = 4; + + /* + * Audible message alert enabled + */ + bool alert_enabled = 5; + + /* + * Localization + */ + Language language = 6; + + /* + * Node list filter + */ + NodeFilter node_filter = 7; + + /* + * Node list highlightening + */ + NodeHighlight node_highlight = 8; +} + + +message NodeFilter { + /* + * Filter unknown nodes + */ + bool switch_unknown = 1; + + /* + * Filter offline nodes + */ + bool switch_offline = 2; + + /* + * Filter nodes w/o public key + */ + bool switch_public_key = 3; + + /* + * Filter based on hops away + */ + int32 hopys_away = 4; + + /* + * Filter nodes w/o position + */ + bool switch_position = 5; + + /* + * Filter nodes by matching name string + */ + string node_name = 6; + +} + +message NodeHighlight { + /* + * Hightlight nodes w/ active chat + */ + bool switch_chat = 1; + + /* + * Highlight nodes w/ position + */ + bool switch_position = 2; + + /* + * Highlight nodes w/ telemetry data + */ + bool switch_telemetry = 3; + + /* + * Highlight nodes w/ iaq data + */ + bool switch_iaq = 4; + + /* + * Highlight nodes by matching name string + */ + string node_name = 5; + +} + +enum Theme { + /* + * Dark + */ + DARK = 0; + /* + * Light + */ + LIGHT = 1; + /* + * Red + */ + RED = 2; +} + +/* + * Localization + */ +enum Language { + /* + * English + */ + ENGLISH = 0; + + /* + * French + */ + FRENCH = 1; + + /* + * German + */ + GERMAN = 2; + + /* + * Italian + */ + ITALIAN = 3; + + /* + * Portuguese + */ + PORTUGUESE = 4; + + /* + * Spanish + */ + SPANISH = 5; +} \ No newline at end of file diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 6b9be53..172f286 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -8,6 +8,7 @@ import "meshtastic/module_config.proto"; import "meshtastic/portnums.proto"; import "meshtastic/telemetry.proto"; import "meshtastic/xmodem.proto"; +import "meshtastic/device_ui.proto"; option csharp_namespace = "Meshtastic.Protobufs"; option go_package = "github.com/meshtastic/go/generated"; @@ -1640,6 +1641,11 @@ message FromRadio { * Notification message to the client */ ClientNotification clientNotification = 16; + + /* + * Persistent data for device-ui + */ + DeviceUIConfig deviceuiConfig = 17; } } From 901ce4c1c42e04e6daa9fcf10db4965ea56550d3 Mon Sep 17 00:00:00 2001 From: mverch67 Date: Wed, 9 Oct 2024 22:52:55 +0200 Subject: [PATCH 132/454] renumbering getter/setter --- meshtastic/admin.proto | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/meshtastic/admin.proto b/meshtastic/admin.proto index 17009c4..f6d2014 100644 --- a/meshtastic/admin.proto +++ b/meshtastic/admin.proto @@ -335,6 +335,21 @@ message AdminMessage { */ fixed32 set_time_only = 43; + /* + * Tell the node to send the stored ui data. + */ + bool get_ui_config_request = 102; + + /* + * Reply stored device ui data. + */ + DeviceUIConfig get_ui_config_response = 103; + + /* + * Tell the node to store UI data persistently. + */ + DeviceUIConfig store_ui_config = 104; + /* * Begins an edit transaction for config, module config, owner, and channel settings changes * This will delay the standard *implicit* save to the file system and subsequent reboot behavior until committed (commit_edit_settings) @@ -382,21 +397,6 @@ message AdminMessage { * Tell the node to reset the nodedb. */ int32 nodedb_reset = 100; - - /* - * Tell the node to send the stored ui data. - */ - bool get_ui_config_request = 102; - - /* - * reply stored device ui data. - */ - DeviceUIConfig get_ui_config_response = 103; - - /* - * Tell the node to store UI data persistently. - */ - DeviceUIConfig store_ui_config = 104; } } From 19993f75cea4c802ef8bb15ddd17c326cdeee0ff Mon Sep 17 00:00:00 2001 From: mverch67 Date: Wed, 9 Oct 2024 22:53:02 +0200 Subject: [PATCH 133/454] typo --- meshtastic/device_ui.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meshtastic/device_ui.proto b/meshtastic/device_ui.proto index ab0c83b..21d7d23 100644 --- a/meshtastic/device_ui.proto +++ b/meshtastic/device_ui.proto @@ -74,7 +74,7 @@ message NodeFilter { /* * Filter based on hops away */ - int32 hopys_away = 4; + int32 hops_away = 4; /* * Filter nodes w/o position From 50a87ef3aa69372d4618dd42b2dd1bcb0a917269 Mon Sep 17 00:00:00 2001 From: mverch67 Date: Wed, 9 Oct 2024 22:56:10 +0200 Subject: [PATCH 134/454] I should goto sleep --- meshtastic/admin.proto | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/meshtastic/admin.proto b/meshtastic/admin.proto index f6d2014..0f665e7 100644 --- a/meshtastic/admin.proto +++ b/meshtastic/admin.proto @@ -338,17 +338,17 @@ message AdminMessage { /* * Tell the node to send the stored ui data. */ - bool get_ui_config_request = 102; + bool get_ui_config_request = 44; /* * Reply stored device ui data. */ - DeviceUIConfig get_ui_config_response = 103; + DeviceUIConfig get_ui_config_response = 45; /* * Tell the node to store UI data persistently. */ - DeviceUIConfig store_ui_config = 104; + DeviceUIConfig store_ui_config = 46; /* * Begins an edit transaction for config, module config, owner, and channel settings changes From cb37f8ce6162ccecd544b43c3b1ad9df095bdfa8 Mon Sep 17 00:00:00 2001 From: mverch67 Date: Wed, 9 Oct 2024 23:10:03 +0200 Subject: [PATCH 135/454] rewording --- meshtastic/device_ui.proto | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/meshtastic/device_ui.proto b/meshtastic/device_ui.proto index 21d7d23..82474b6 100644 --- a/meshtastic/device_ui.proto +++ b/meshtastic/device_ui.proto @@ -59,17 +59,17 @@ message NodeFilter { /* * Filter unknown nodes */ - bool switch_unknown = 1; + bool unknown_switch = 1; /* * Filter offline nodes */ - bool switch_offline = 2; + bool offline_switch = 2; /* * Filter nodes w/o public key */ - bool switch_public_key = 3; + bool public_key_switch = 3; /* * Filter based on hops away @@ -79,7 +79,7 @@ message NodeFilter { /* * Filter nodes w/o position */ - bool switch_position = 5; + bool position_switch = 5; /* * Filter nodes by matching name string @@ -92,22 +92,22 @@ message NodeHighlight { /* * Hightlight nodes w/ active chat */ - bool switch_chat = 1; + bool chat_switch = 1; /* * Highlight nodes w/ position */ - bool switch_position = 2; + bool position_switch = 2; /* * Highlight nodes w/ telemetry data */ - bool switch_telemetry = 3; + bool telemetry_switch = 3; /* * Highlight nodes w/ iaq data */ - bool switch_iaq = 4; + bool iaq_switch = 4; /* * Highlight nodes by matching name string From 70a52e77d325247ff6b4dfd8a0fed1050708c927 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Thu, 10 Oct 2024 06:14:55 -0500 Subject: [PATCH 136/454] Update device_ui.options --- meshtastic/device_ui.options | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meshtastic/device_ui.options b/meshtastic/device_ui.options index 0982a74..64ca59c 100644 --- a/meshtastic/device_ui.options +++ b/meshtastic/device_ui.options @@ -1,5 +1,5 @@ *DeviceUIConfig.screen_brightness int_size:8 *DeviceUIConfig.screen_timeout int_size:16 *NodeFilter.node_name max_size:16 -*NodeFilter.hopys_away int_size:8 +*NodeFilter.hops_away int_size:8 *NodeHighlight.node_name max_size:16 From 99280a1a1e03823b4366eebfd9ef3f5750da6870 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20G=C3=B6ttgens?= Date: Fri, 11 Oct 2024 11:55:56 +0200 Subject: [PATCH 137/454] Update config.proto --- meshtastic/config.proto | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/meshtastic/config.proto b/meshtastic/config.proto index 54f1be7..63df3a1 100644 --- a/meshtastic/config.proto +++ b/meshtastic/config.proto @@ -126,6 +126,11 @@ message Config { * but takes it step further by also ignoring messages from nodenums not in the node's known list (NodeDB) */ KNOWN_ONLY = 3; + + /* + * Only permitted for SENSOR, TRACKER and TAK_TRACKER roles, this will inhibit all rebroadcasts, not unlike CLIENT_MUTE role. + */ + NONE = 4; } /* From 3990520748751d5d5ed44b6e53aabbd943e0f83d Mon Sep 17 00:00:00 2001 From: Andre K Date: Sat, 12 Oct 2024 06:27:59 -0300 Subject: [PATCH 138/454] fix device_ui Java outer classname --- meshtastic/device_ui.proto | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/meshtastic/device_ui.proto b/meshtastic/device_ui.proto index 82474b6..a90e08d 100644 --- a/meshtastic/device_ui.proto +++ b/meshtastic/device_ui.proto @@ -4,7 +4,7 @@ package meshtastic; option csharp_namespace = "Meshtastic.Protobufs"; option go_package = "github.com/meshtastic/go/generated"; -option java_outer_classname = "LocalOnlyProtos"; +option java_outer_classname = "DeviceUIProtos"; option java_package = "com.geeksville.mesh"; option swift_prefix = ""; @@ -164,4 +164,4 @@ enum Language { * Spanish */ SPANISH = 5; -} \ No newline at end of file +} From 1842d2203b9a876c6ae7d76bb7efa7acf4f553ef Mon Sep 17 00:00:00 2001 From: mverch67 Date: Sun, 13 Oct 2024 11:43:34 +0200 Subject: [PATCH 139/454] device-ui: more languages --- meshtastic/device_ui.proto | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/meshtastic/device_ui.proto b/meshtastic/device_ui.proto index 82474b6..53b7894 100644 --- a/meshtastic/device_ui.proto +++ b/meshtastic/device_ui.proto @@ -164,4 +164,24 @@ enum Language { * Spanish */ SPANISH = 5; -} \ No newline at end of file + + /* + * Swedish + */ + SWEDISH = 6; + + /* + * Finnish + */ + FINNISH = 7; + + /* + * Polish + */ + POLISH = 8; + + /* + * Turkish + */ + TURKISH = 9; + } \ No newline at end of file From 7e6177dcd64208586cc5535b9e8682b85f018ce8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20G=C3=B6ttgens?= Date: Mon, 14 Oct 2024 19:44:45 +0200 Subject: [PATCH 140/454] remove oem.proto --- meshtastic/deviceonly.options | 4 --- meshtastic/deviceonly.proto | 68 ----------------------------------- 2 files changed, 72 deletions(-) diff --git a/meshtastic/deviceonly.options b/meshtastic/deviceonly.options index 6f53317..82dffcf 100644 --- a/meshtastic/deviceonly.options +++ b/meshtastic/deviceonly.options @@ -6,10 +6,6 @@ *ChannelFile.channels max_count:8 -*OEMStore.oem_text max_size:40 -*OEMStore.oem_icon_bits max_size:2048 -*OEMStore.oem_aes_key max_size:32 - *DeviceState.node_remote_hardware_pins max_count:12 *NodeInfoLite.channel int_size:8 diff --git a/meshtastic/deviceonly.proto b/meshtastic/deviceonly.proto index 91367bf..76bdfa8 100644 --- a/meshtastic/deviceonly.proto +++ b/meshtastic/deviceonly.proto @@ -3,7 +3,6 @@ syntax = "proto3"; package meshtastic; import "meshtastic/channel.proto"; -import "meshtastic/localonly.proto"; import "meshtastic/mesh.proto"; import "meshtastic/telemetry.proto"; import "meshtastic/config.proto"; @@ -150,27 +149,6 @@ message NodeInfoLite { bool is_favorite = 10; } -/* - * Font sizes for the device screen - */ -enum ScreenFonts { - /* - * TODO: REPLACE - */ - FONT_SMALL = 0; - - /* - * TODO: REPLACE - */ - FONT_MEDIUM = 1; - - /* - * TODO: REPLACE - */ - FONT_LARGE = 2; -} - - /* * This message is never sent over the wire, but it is used for serializing DB * state to flash in the device code @@ -254,49 +232,3 @@ message ChannelFile { */ uint32 version = 2; } - -/* - * This can be used for customizing the firmware distribution. If populated, - * show a secondary bootup screen with custom logo and text for 2.5 seconds. - */ -message OEMStore { - /* - * The Logo width in Px - */ - uint32 oem_icon_width = 1; - - /* - * The Logo height in Px - */ - uint32 oem_icon_height = 2; - - /* - * The Logo in XBM bytechar format - */ - bytes oem_icon_bits = 3; - - /* - * Use this font for the OEM text. - */ - ScreenFonts oem_font = 4; - - /* - * Use this font for the OEM text. - */ - string oem_text = 5; - - /* - * The default device encryption key, 16 or 32 byte - */ - bytes oem_aes_key = 6; - - /* - * A Preset LocalConfig to apply during factory reset - */ - LocalConfig oem_local_config = 7; - - /* - * A Preset LocalModuleConfig to apply during factory reset - */ - LocalModuleConfig oem_local_module_config = 8; -} From 1ab8611a31318c1052e0f9441019e0f63d9c4138 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Fri, 18 Oct 2024 05:45:19 -0500 Subject: [PATCH 141/454] Add uint64 device id --- meshtastic/mesh.proto | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 172f286..a48adbc 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -1457,6 +1457,11 @@ message MyNodeInfo { * Phone/PC apps should compare this to their build number and if too low tell the user they must update their app */ uint32 min_app_version = 11; + + /* + * Unique hardware identifier for this device + */ + uint64 device_id = 12; } /* From e09bd361a47c6e9a43baf79c57db9c766b39c885 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Mon, 21 Oct 2024 05:05:25 -0500 Subject: [PATCH 142/454] Add rebroadcast mode to ignore non-standard portnum traffic --- meshtastic/config.proto | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/meshtastic/config.proto b/meshtastic/config.proto index 63df3a1..47edfa0 100644 --- a/meshtastic/config.proto +++ b/meshtastic/config.proto @@ -131,6 +131,12 @@ message Config { * Only permitted for SENSOR, TRACKER and TAK_TRACKER roles, this will inhibit all rebroadcasts, not unlike CLIENT_MUTE role. */ NONE = 4; + + /* + * Ignores packets from non-standard portnums such as: TAK, RangeTest, PaxCounter, etc. + * Only rebroadcasts packets with standard portnums: NodeInfo, Text, Position, Telemetry, and Routing. + */ + CORE_PORTNUMS_ONLY = 5; } /* From ea6eb85d6ef6b9e97fb4c4fbdebe9a79aadbce6f Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Mon, 21 Oct 2024 14:48:31 -0500 Subject: [PATCH 143/454] Expand to 128 bit bytes --- meshtastic/mesh.options | 1 + meshtastic/mesh.proto | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/meshtastic/mesh.options b/meshtastic/mesh.options index cb85daa..4e335d2 100644 --- a/meshtastic/mesh.options +++ b/meshtastic/mesh.options @@ -25,6 +25,7 @@ # Big enough for 1.2.28.568032c-d *MyNodeInfo.firmware_version max_size:18 +*MyNodeInfo.device_id max_size:16 *MyNodeInfo.air_period_tx max_count:8 *MyNodeInfo.air_period_rx max_count:8 diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index a48adbc..f53ef96 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -1461,7 +1461,7 @@ message MyNodeInfo { /* * Unique hardware identifier for this device */ - uint64 device_id = 12; + bytes device_id = 12; } /* From 2f400a078ea673aa74266da80357a52d75a49036 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Wed, 23 Oct 2024 09:48:18 -0500 Subject: [PATCH 144/454] Fix RTTL size mismatch --- meshtastic/admin.options | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/meshtastic/admin.options b/meshtastic/admin.options index 022c4fd..f6f6c49 100644 --- a/meshtastic/admin.options +++ b/meshtastic/admin.options @@ -6,8 +6,8 @@ *AdminMessage.get_canned_message_module_messages_response max_size:201 *AdminMessage.delete_file_request max_size:201 -*AdminMessage.set_ringtone_message max_size:231 -*AdminMessage.get_ringtone_response max_size:231 +*AdminMessage.set_ringtone_message max_size:230 +*AdminMessage.get_ringtone_response max_size:230 *HamParameters.call_sign max_size:8 *HamParameters.short_name max_size:5 From d91f614dc49c8653502a3da3acbd28e0906c0102 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Wed, 23 Oct 2024 09:55:45 -0500 Subject: [PATCH 145/454] Extend device instead of shrink admin --- meshtastic/admin.options | 4 ++-- meshtastic/rtttl.options | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/meshtastic/admin.options b/meshtastic/admin.options index f6f6c49..022c4fd 100644 --- a/meshtastic/admin.options +++ b/meshtastic/admin.options @@ -6,8 +6,8 @@ *AdminMessage.get_canned_message_module_messages_response max_size:201 *AdminMessage.delete_file_request max_size:201 -*AdminMessage.set_ringtone_message max_size:230 -*AdminMessage.get_ringtone_response max_size:230 +*AdminMessage.set_ringtone_message max_size:231 +*AdminMessage.get_ringtone_response max_size:231 *HamParameters.call_sign max_size:8 *HamParameters.short_name max_size:5 diff --git a/meshtastic/rtttl.options b/meshtastic/rtttl.options index 1ae0c2f..171e426 100644 --- a/meshtastic/rtttl.options +++ b/meshtastic/rtttl.options @@ -1 +1 @@ -*RTTTLConfig.ringtone max_size:230 +*RTTTLConfig.ringtone max_size:231 From 619bd44654b6d3a5ed9351a0fb58d64b37b382d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20G=C3=B6ttgens?= Date: Thu, 24 Oct 2024 14:36:57 +0200 Subject: [PATCH 146/454] add device ui to config roll --- meshtastic/config.proto | 3 +++ 1 file changed, 3 insertions(+) diff --git a/meshtastic/config.proto b/meshtastic/config.proto index 47edfa0..aaf340b 100644 --- a/meshtastic/config.proto +++ b/meshtastic/config.proto @@ -2,6 +2,8 @@ syntax = "proto3"; package meshtastic; +import "meshtastic/device_ui.proto"; + option csharp_namespace = "Meshtastic.Protobufs"; option go_package = "github.com/meshtastic/go/generated"; option java_outer_classname = "ConfigProtos"; @@ -1100,5 +1102,6 @@ message Config { BluetoothConfig bluetooth = 7; SecurityConfig security = 8; SessionkeyConfig sessionkey = 9; + DeviceUIConfig device_ui = 10; } } From f0df8545ad776fc20e4497b446e088aa7ecc71eb Mon Sep 17 00:00:00 2001 From: mverch67 Date: Sat, 26 Oct 2024 15:03:39 +0200 Subject: [PATCH 147/454] version control, new languages, lock and alert parameters --- meshtastic/device_ui.options | 2 ++ meshtastic/device_ui.proto | 63 +++++++++++++++++++++++++++++------- 2 files changed, 53 insertions(+), 12 deletions(-) diff --git a/meshtastic/device_ui.options b/meshtastic/device_ui.options index 64ca59c..e66f385 100644 --- a/meshtastic/device_ui.options +++ b/meshtastic/device_ui.options @@ -1,5 +1,7 @@ *DeviceUIConfig.screen_brightness int_size:8 *DeviceUIConfig.screen_timeout int_size:16 +*DeviceUIConfig.pin_code int_size:32 +*DeviceUIConfig.ring_tone_id int_size:8 *NodeFilter.node_name max_size:16 *NodeFilter.hops_away int_size:8 *NodeHighlight.node_name max_size:16 diff --git a/meshtastic/device_ui.proto b/meshtastic/device_ui.proto index 4457bfb..38481d2 100644 --- a/meshtastic/device_ui.proto +++ b/meshtastic/device_ui.proto @@ -13,45 +13,54 @@ option swift_prefix = ""; */ message DeviceUIConfig { + /* + * A version integer used to invalidate saved files when we make incompatible changes. + */ + uint32 version = 1; + /* * TFT display brightness 1..255 */ - uint32 screen_brightness = 1; + uint32 screen_brightness = 2; /* * Screen timeout 0..900 */ - uint32 screen_timeout = 2; + uint32 screen_timeout = 3; /* - * Screen lock enabled + * Screen/Settings lock enabled */ - bool screen_lock = 3; + bool screen_lock = 4; + bool settings_lock = 5; + uint32 pin_code = 6; /* * Color theme */ - Theme theme = 4; + Theme theme = 7; /* - * Audible message alert enabled + * Audible message, banner and ring tone */ - bool alert_enabled = 5; + bool alert_enabled = 8; + bool banner_enabled = 9; + uint32 ring_tone_id = 10; /* * Localization */ - Language language = 6; + Language language = 11; /* * Node list filter */ - NodeFilter node_filter = 7; + NodeFilter node_filter = 12; /* - * Node list highlightening + * Node list highlightening */ - NodeHighlight node_highlight = 8; + NodeHighlight node_highlight = 13; } @@ -184,5 +193,35 @@ enum Language { * Turkish */ TURKISH = 9; -} + + /* + * Serbian + */ + SERBIAN = 10; + + /* + * Russian + */ + RUSSIAN = 11; + + /* + * Dutch + */ + DUTCH = 12; + + /* + * Greek + */ + GREEK = 13; + + /* + * Simplified Chinese (experimental) + */ + SIMPLIFIED_CHINESE = 30; + + /* + * Traditional Chinese (experimental) + */ + TRADITIONAL_CHINESE = 31; + } From 545ba74f71305759e54aebc9207c3426f26c549b Mon Sep 17 00:00:00 2001 From: mverch67 Date: Sun, 27 Oct 2024 13:11:01 +0100 Subject: [PATCH 148/454] remove default int_size:32 --- meshtastic/device_ui.options | 1 - 1 file changed, 1 deletion(-) diff --git a/meshtastic/device_ui.options b/meshtastic/device_ui.options index e66f385..65be467 100644 --- a/meshtastic/device_ui.options +++ b/meshtastic/device_ui.options @@ -1,6 +1,5 @@ *DeviceUIConfig.screen_brightness int_size:8 *DeviceUIConfig.screen_timeout int_size:16 -*DeviceUIConfig.pin_code int_size:32 *DeviceUIConfig.ring_tone_id int_size:8 *NodeFilter.node_name max_size:16 *NodeFilter.hops_away int_size:8 From 015202aead5f6807d63537c58f4cb6525f19e56f Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Sat, 2 Nov 2024 05:46:54 -0500 Subject: [PATCH 149/454] Update mesh.proto --- meshtastic/mesh.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index f53ef96..ca3f6c6 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -17,7 +17,7 @@ option java_package = "com.geeksville.mesh"; option swift_prefix = ""; /* - * a gps position + * A GPS Position */ message Position { /* From 8a38aa93cb21940505eb6716d8037a29f6d89e0c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20G=C3=B6ttgens?= Date: Sun, 3 Nov 2024 23:00:40 +0100 Subject: [PATCH 150/454] add hardware environment --- meshtastic/mesh.proto | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index ca3f6c6..14363ea 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -1870,6 +1870,11 @@ message DeviceMetadata { * Has PKC capabilities */ bool hasPKC = 11; + + /* + * Device firmware environment string + */ + string hw_env = 12; } /* From 9f45c61bb7520ea13513035262848b7c1cc4b4b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20G=C3=B6ttgens?= Date: Sun, 3 Nov 2024 23:02:24 +0100 Subject: [PATCH 151/454] current max size is 35 --- meshtastic/mesh.options | 1 + 1 file changed, 1 insertion(+) diff --git a/meshtastic/mesh.options b/meshtastic/mesh.options index 4e335d2..76c4a40 100644 --- a/meshtastic/mesh.options +++ b/meshtastic/mesh.options @@ -67,6 +67,7 @@ *NeighborInfo.neighbors max_count:10 *DeviceMetadata.firmware_version max_size:18 +*DeviceMetadata.hw_env max_size:40 *MqttClientProxyMessage.topic max_size:60 *MqttClientProxyMessage.data max_size:435 From b227a1ca72688d318cc6daef42ea642d7283b8ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20G=C3=B6ttgens?= Date: Sun, 3 Nov 2024 23:07:25 +0100 Subject: [PATCH 152/454] rename to pio_env --- meshtastic/mesh.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 14363ea..9560593 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -1874,7 +1874,7 @@ message DeviceMetadata { /* * Device firmware environment string */ - string hw_env = 12; + string pio_env = 12; } /* From 254fbdac6acb7796bbee19fd5b84f5f1e216a9b7 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Sun, 3 Nov 2024 16:17:03 -0600 Subject: [PATCH 153/454] pio --- meshtastic/mesh.options | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meshtastic/mesh.options b/meshtastic/mesh.options index 76c4a40..424d8c4 100644 --- a/meshtastic/mesh.options +++ b/meshtastic/mesh.options @@ -67,7 +67,7 @@ *NeighborInfo.neighbors max_count:10 *DeviceMetadata.firmware_version max_size:18 -*DeviceMetadata.hw_env max_size:40 +*DeviceMetadata.pio_env max_size:40 *MqttClientProxyMessage.topic max_size:60 *MqttClientProxyMessage.data max_size:435 From e505f6051e350dadcc2220131b01a56c98848e5a Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Sun, 3 Nov 2024 19:45:10 -0600 Subject: [PATCH 154/454] Move PIO env to mynodeinfo --- meshtastic/mesh.options | 2 +- meshtastic/mesh.proto | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/meshtastic/mesh.options b/meshtastic/mesh.options index 424d8c4..f474988 100644 --- a/meshtastic/mesh.options +++ b/meshtastic/mesh.options @@ -26,6 +26,7 @@ # Big enough for 1.2.28.568032c-d *MyNodeInfo.firmware_version max_size:18 *MyNodeInfo.device_id max_size:16 +*MyNodeInfo.pio_env max_size:40 *MyNodeInfo.air_period_tx max_count:8 *MyNodeInfo.air_period_rx max_count:8 @@ -67,7 +68,6 @@ *NeighborInfo.neighbors max_count:10 *DeviceMetadata.firmware_version max_size:18 -*DeviceMetadata.pio_env max_size:40 *MqttClientProxyMessage.topic max_size:60 *MqttClientProxyMessage.data max_size:435 diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 9560593..348be8d 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -1462,6 +1462,11 @@ message MyNodeInfo { * Unique hardware identifier for this device */ bytes device_id = 12; + + /* + * The PlatformIO environment used to build this firmware + */ + string pio_env = 13; } /* @@ -1870,11 +1875,6 @@ message DeviceMetadata { * Has PKC capabilities */ bool hasPKC = 11; - - /* - * Device firmware environment string - */ - string pio_env = 12; } /* From b399bf0f6aacc70dd5aa8df961ef4abdefb6bc4a Mon Sep 17 00:00:00 2001 From: andrekir Date: Sun, 3 Nov 2024 08:43:16 -0300 Subject: [PATCH 155/454] add bit field to `DeviceMetadata` for excluded modules --- meshtastic/mesh.proto | 83 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index ca3f6c6..e07a711 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -1870,6 +1870,89 @@ message DeviceMetadata { * Has PKC capabilities */ bool hasPKC = 11; + + /* + * Bit field of boolean for excluded modules + * (bitwise OR of ExcludedModules) + */ + uint32 excluded_modules = 12; +} + +/* + * Enum for modules excluded from a device's configuration. + * Each value represents a ModuleConfigType that can be toggled as excluded + * by setting its corresponding bit in the `excluded_modules` bitmask field. + */ +enum ExcludedModules { + /* + * Default value of 0 indicates no modules are excluded. + */ + EXCLUDED_NONE = 0x0000; + + /* + * MQTT module + */ + MQTT_CONFIG = 0x0001; + + /* + * Serial module + */ + SERIAL_CONFIG = 0x0002; + + /* + * External Notification module + */ + EXTNOTIF_CONFIG = 0x0004; + + /* + * Store and Forward module + */ + STOREFORWARD_CONFIG = 0x0008; + + /* + * Range Test module + */ + RANGETEST_CONFIG = 0x0010; + + /* + * Telemetry module + */ + TELEMETRY_CONFIG = 0x0020; + + /* + * Canned Message module + */ + CANNEDMSG_CONFIG = 0x0040; + + /* + * Audio module + */ + AUDIO_CONFIG = 0x0080; + + /* + * Remote Hardware module + */ + REMOTEHARDWARE_CONFIG = 0x0100; + + /* + * Neighbor Info module + */ + NEIGHBORINFO_CONFIG = 0x0200; + + /* + * Ambient Lighting module + */ + AMBIENTLIGHTING_CONFIG = 0x0400; + + /* + * Detection Sensor module + */ + DETECTIONSENSOR_CONFIG = 0x0800; + + /* + * Paxcounter module + */ + PAXCOUNTER_CONFIG = 0x1000; } /* From 034a18143632d4cf17e0acfff66915646f217c27 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Thu, 7 Nov 2024 06:17:39 -0600 Subject: [PATCH 156/454] Direct neighbor for clarity --- meshtastic/device_only/deviceonly.proto | 235 ++++++++++++++++++++++++ meshtastic/deviceonly.proto | 2 +- meshtastic/mesh.proto | 6 +- 3 files changed, 239 insertions(+), 4 deletions(-) create mode 100644 meshtastic/device_only/deviceonly.proto diff --git a/meshtastic/device_only/deviceonly.proto b/meshtastic/device_only/deviceonly.proto new file mode 100644 index 0000000..b199bc3 --- /dev/null +++ b/meshtastic/device_only/deviceonly.proto @@ -0,0 +1,235 @@ +syntax = "proto3"; + +package meshtastic; + +import "channel.proto"; +import "localonly.proto"; +import "mesh.proto"; +import "telemetry.proto"; +import "config.proto"; +import "nanopb.proto"; + +option csharp_namespace = "Meshtastic.Protobufs"; +option go_package = "github.com/meshtastic/go/generated"; +option java_outer_classname = "DeviceOnly"; +option java_package = "com.geeksville.mesh"; +option swift_prefix = ""; +option (nanopb_fileopt).include = ""; + + +/* + * Position with static location information only for NodeDBLite + */ +message PositionLite { + /* + * The new preferred location encoding, multiply by 1e-7 to get degrees + * in floating point + */ + sfixed32 latitude_i = 1; + + /* + * TODO: REPLACE + */ + sfixed32 longitude_i = 2; + + /* + * In meters above MSL (but see issue #359) + */ + int32 altitude = 3; + + /* + * This is usually not sent over the mesh (to save space), but it is sent + * from the phone so that the local device can set its RTC If it is sent over + * the mesh (because there are devices on the mesh without GPS), it will only + * be sent by devices which has a hardware GPS clock. + * seconds since 1970 + */ + fixed32 time = 4; + + /* + * TODO: REPLACE + */ + Position.LocSource location_source = 5; +} + +message UserLite { + /* + * This is the addr of the radio. + */ + bytes macaddr = 1 [deprecated = true]; + + /* + * A full name for this user, i.e. "Kevin Hester" + */ + string long_name = 2; + + /* + * A VERY short name, ideally two characters. + * Suitable for a tiny OLED screen + */ + string short_name = 3; + + /* + * TBEAM, HELTEC, etc... + * Starting in 1.2.11 moved to hw_model enum in the NodeInfo object. + * Apps will still need the string here for older builds + * (so OTA update can find the right image), but if the enum is available it will be used instead. + */ + HardwareModel hw_model = 4; + + /* + * In some regions Ham radio operators have different bandwidth limitations than others. + * If this user is a licensed operator, set this flag. + * Also, "long_name" should be their licence number. + */ + bool is_licensed = 5; + + /* + * Indicates that the user's role in the mesh + */ + Config.DeviceConfig.Role role = 6; + + /* + * The public key of the user's device. + * This is sent out to other nodes on the mesh to allow them to compute a shared secret key. + */ + bytes public_key = 7; +} + +message NodeInfoLite { + /* + * The node number + */ + uint32 num = 1; + + /* + * The user info for this node + */ + UserLite user = 2; + + /* + * This position data. Note: before 1.2.14 we would also store the last time we've heard from this node in position.time, that is no longer true. + * Position.time now indicates the last time we received a POSITION from that node. + */ + PositionLite position = 3; + + /* + * Returns the Signal-to-noise ratio (SNR) of the last received message, + * as measured by the receiver. Return SNR of the last received message in dB + */ + float snr = 4; + + /* + * Set to indicate the last time we received a packet from this node + */ + fixed32 last_heard = 5; + /* + * The latest device metrics for the node. + */ + DeviceMetrics device_metrics = 6; + + /* + * local channel index we heard that node on. Only populated if its not the default channel. + */ + uint32 channel = 7; + + /* + * True if we witnessed the node over MQTT instead of LoRA transport + */ + bool via_mqtt = 8; + + /* + * Number of hops away from us this node is (0 if direct neighbor) + */ + optional uint32 hops_away = 9; + + /* + * True if node is in our favorites list + * Persists between NodeDB internal clean ups + */ + bool is_favorite = 10; +} + +/* + * This message is never sent over the wire, but it is used for serializing DB + * state to flash in the device code + * FIXME, since we write this each time we enter deep sleep (and have infinite + * flash) it would be better to use some sort of append only data structure for + * the receive queue and use the preferences store for the other stuff + */ +message DeviceState { + /* + * Read only settings/info about this node + */ + MyNodeInfo my_node = 2; + + /* + * My owner info + */ + User owner = 3; + + /* + * Received packets saved for delivery to the phone + */ + repeated MeshPacket receive_queue = 5; + + /* + * A version integer used to invalidate old save files when we make + * incompatible changes This integer is set at build time and is private to + * NodeDB.cpp in the device code. + */ + uint32 version = 8; + + /* + * We keep the last received text message (only) stored in the device flash, + * so we can show it on the screen. + * Might be null + */ + MeshPacket rx_text_message = 7; + + /* + * Used only during development. + * Indicates developer is testing and changes should never be saved to flash. + * Deprecated in 2.3.1 + */ + bool no_save = 9 [deprecated = true]; + + /* + * Some GPS receivers seem to have bogus settings from the factory, so we always do one factory reset. + */ + bool did_gps_reset = 11; + + /* + * We keep the last received waypoint stored in the device flash, + * so we can show it on the screen. + * Might be null + */ + MeshPacket rx_waypoint = 12; + + /* + * The mesh's nodes with their available gpio pins for RemoteHardware module + */ + repeated NodeRemoteHardwarePin node_remote_hardware_pins = 13; + + /* + * New lite version of NodeDB to decrease memory footprint + */ + repeated NodeInfoLite node_db_lite = 14 [(nanopb).callback_datatype = "std::vector"]; +} + +/* + * The on-disk saved channels + */ +message ChannelFile { + /* + * The channels our node knows about + */ + repeated Channel channels = 1; + + /* + * A version integer used to invalidate old save files when we make + * incompatible changes This integer is set at build time and is private to + * NodeDB.cpp in the device code. + */ + uint32 version = 2; +} diff --git a/meshtastic/deviceonly.proto b/meshtastic/deviceonly.proto index 76bdfa8..d08c605 100644 --- a/meshtastic/deviceonly.proto +++ b/meshtastic/deviceonly.proto @@ -138,7 +138,7 @@ message NodeInfoLite { bool via_mqtt = 8; /* - * Number of hops away from us this node is (0 if adjacent) + * Number of hops away from us this node is (0 if direct neighbor) */ optional uint32 hops_away = 9; diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 8fa16aa..1fca39f 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -1177,7 +1177,7 @@ message MeshPacket { float rx_snr = 8; /* - * If unset treated as zero (no forwarding, send to adjacent nodes only) + * If unset treated as zero (no forwarding, send to direct neighbor nodes only) * if 1, allow hopping through one node, etc... * For our usecase real world topologies probably have a max of about 3. * This field is normally placed into a few of bits in the header. @@ -1317,7 +1317,7 @@ message NodeInfo { /* * TODO: REMOVE/INTEGRATE * Not currently used (till full DSR deployment?) Our current preferred node node for routing - might be the same as num if - * we are adjacent Or zero if we don't yet know a route to this node. + * we are direct neighbor or zero if we don't yet know a route to this node. * fixed32 next_hop = 5; */ @@ -1341,7 +1341,7 @@ message NodeInfo { bool via_mqtt = 8; /* - * Number of hops away from us this node is (0 if adjacent) + * Number of hops away from us this node is (0 if direct neighbor) */ optional uint32 hops_away = 9; From c2a3834e2400e419a1665c7395d2172bb9ccc7f9 Mon Sep 17 00:00:00 2001 From: GUVWAF Date: Thu, 7 Nov 2024 18:44:15 +0100 Subject: [PATCH 157/454] Add bool to enable LoRa transport for NeighborInfo --- meshtastic/module_config.proto | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/meshtastic/module_config.proto b/meshtastic/module_config.proto index 933d142..f208d42 100644 --- a/meshtastic/module_config.proto +++ b/meshtastic/module_config.proto @@ -128,9 +128,14 @@ message ModuleConfig { /* * Interval in seconds of how often we should try to send our - * Neighbor Info to the mesh + * Neighbor Info (minimum is 14400, i.e., 4 hours) */ uint32 update_interval = 2; + + /* + * Whether in addition to sending it to MQTT and the PhoneAPI, our NeighborInfo should be transmitted over LoRa. + */ + bool transmit_over_lora = 3; } /* From 2978b625879b6c5b4d43ab8290e1cea85b59c347 Mon Sep 17 00:00:00 2001 From: GUVWAF Date: Thu, 7 Nov 2024 19:11:14 +0100 Subject: [PATCH 158/454] LoRa transport not available on the default channel --- meshtastic/module_config.proto | 1 + 1 file changed, 1 insertion(+) diff --git a/meshtastic/module_config.proto b/meshtastic/module_config.proto index f208d42..040b604 100644 --- a/meshtastic/module_config.proto +++ b/meshtastic/module_config.proto @@ -134,6 +134,7 @@ message ModuleConfig { /* * Whether in addition to sending it to MQTT and the PhoneAPI, our NeighborInfo should be transmitted over LoRa. + * Note that this is not available on a channel with default key and name. */ bool transmit_over_lora = 3; } From 04f21f5c7238b8e02f794d9282c4786752634b3c Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Sat, 9 Nov 2024 05:21:30 -0600 Subject: [PATCH 159/454] Remove duplicate file --- meshtastic/device_only/deviceonly.proto | 235 ------------------------ 1 file changed, 235 deletions(-) delete mode 100644 meshtastic/device_only/deviceonly.proto diff --git a/meshtastic/device_only/deviceonly.proto b/meshtastic/device_only/deviceonly.proto deleted file mode 100644 index b199bc3..0000000 --- a/meshtastic/device_only/deviceonly.proto +++ /dev/null @@ -1,235 +0,0 @@ -syntax = "proto3"; - -package meshtastic; - -import "channel.proto"; -import "localonly.proto"; -import "mesh.proto"; -import "telemetry.proto"; -import "config.proto"; -import "nanopb.proto"; - -option csharp_namespace = "Meshtastic.Protobufs"; -option go_package = "github.com/meshtastic/go/generated"; -option java_outer_classname = "DeviceOnly"; -option java_package = "com.geeksville.mesh"; -option swift_prefix = ""; -option (nanopb_fileopt).include = ""; - - -/* - * Position with static location information only for NodeDBLite - */ -message PositionLite { - /* - * The new preferred location encoding, multiply by 1e-7 to get degrees - * in floating point - */ - sfixed32 latitude_i = 1; - - /* - * TODO: REPLACE - */ - sfixed32 longitude_i = 2; - - /* - * In meters above MSL (but see issue #359) - */ - int32 altitude = 3; - - /* - * This is usually not sent over the mesh (to save space), but it is sent - * from the phone so that the local device can set its RTC If it is sent over - * the mesh (because there are devices on the mesh without GPS), it will only - * be sent by devices which has a hardware GPS clock. - * seconds since 1970 - */ - fixed32 time = 4; - - /* - * TODO: REPLACE - */ - Position.LocSource location_source = 5; -} - -message UserLite { - /* - * This is the addr of the radio. - */ - bytes macaddr = 1 [deprecated = true]; - - /* - * A full name for this user, i.e. "Kevin Hester" - */ - string long_name = 2; - - /* - * A VERY short name, ideally two characters. - * Suitable for a tiny OLED screen - */ - string short_name = 3; - - /* - * TBEAM, HELTEC, etc... - * Starting in 1.2.11 moved to hw_model enum in the NodeInfo object. - * Apps will still need the string here for older builds - * (so OTA update can find the right image), but if the enum is available it will be used instead. - */ - HardwareModel hw_model = 4; - - /* - * In some regions Ham radio operators have different bandwidth limitations than others. - * If this user is a licensed operator, set this flag. - * Also, "long_name" should be their licence number. - */ - bool is_licensed = 5; - - /* - * Indicates that the user's role in the mesh - */ - Config.DeviceConfig.Role role = 6; - - /* - * The public key of the user's device. - * This is sent out to other nodes on the mesh to allow them to compute a shared secret key. - */ - bytes public_key = 7; -} - -message NodeInfoLite { - /* - * The node number - */ - uint32 num = 1; - - /* - * The user info for this node - */ - UserLite user = 2; - - /* - * This position data. Note: before 1.2.14 we would also store the last time we've heard from this node in position.time, that is no longer true. - * Position.time now indicates the last time we received a POSITION from that node. - */ - PositionLite position = 3; - - /* - * Returns the Signal-to-noise ratio (SNR) of the last received message, - * as measured by the receiver. Return SNR of the last received message in dB - */ - float snr = 4; - - /* - * Set to indicate the last time we received a packet from this node - */ - fixed32 last_heard = 5; - /* - * The latest device metrics for the node. - */ - DeviceMetrics device_metrics = 6; - - /* - * local channel index we heard that node on. Only populated if its not the default channel. - */ - uint32 channel = 7; - - /* - * True if we witnessed the node over MQTT instead of LoRA transport - */ - bool via_mqtt = 8; - - /* - * Number of hops away from us this node is (0 if direct neighbor) - */ - optional uint32 hops_away = 9; - - /* - * True if node is in our favorites list - * Persists between NodeDB internal clean ups - */ - bool is_favorite = 10; -} - -/* - * This message is never sent over the wire, but it is used for serializing DB - * state to flash in the device code - * FIXME, since we write this each time we enter deep sleep (and have infinite - * flash) it would be better to use some sort of append only data structure for - * the receive queue and use the preferences store for the other stuff - */ -message DeviceState { - /* - * Read only settings/info about this node - */ - MyNodeInfo my_node = 2; - - /* - * My owner info - */ - User owner = 3; - - /* - * Received packets saved for delivery to the phone - */ - repeated MeshPacket receive_queue = 5; - - /* - * A version integer used to invalidate old save files when we make - * incompatible changes This integer is set at build time and is private to - * NodeDB.cpp in the device code. - */ - uint32 version = 8; - - /* - * We keep the last received text message (only) stored in the device flash, - * so we can show it on the screen. - * Might be null - */ - MeshPacket rx_text_message = 7; - - /* - * Used only during development. - * Indicates developer is testing and changes should never be saved to flash. - * Deprecated in 2.3.1 - */ - bool no_save = 9 [deprecated = true]; - - /* - * Some GPS receivers seem to have bogus settings from the factory, so we always do one factory reset. - */ - bool did_gps_reset = 11; - - /* - * We keep the last received waypoint stored in the device flash, - * so we can show it on the screen. - * Might be null - */ - MeshPacket rx_waypoint = 12; - - /* - * The mesh's nodes with their available gpio pins for RemoteHardware module - */ - repeated NodeRemoteHardwarePin node_remote_hardware_pins = 13; - - /* - * New lite version of NodeDB to decrease memory footprint - */ - repeated NodeInfoLite node_db_lite = 14 [(nanopb).callback_datatype = "std::vector"]; -} - -/* - * The on-disk saved channels - */ -message ChannelFile { - /* - * The channels our node knows about - */ - repeated Channel channels = 1; - - /* - * A version integer used to invalidate old save files when we make - * incompatible changes This integer is set at build time and is private to - * NodeDB.cpp in the device code. - */ - uint32 version = 2; -} From 04ea4b5b152bd05f70de0ba15a0268d0a3e080a5 Mon Sep 17 00:00:00 2001 From: Matthijs De Smedt Date: Mon, 11 Nov 2024 16:11:41 -0800 Subject: [PATCH 160/454] Add is_ignored bool to NodeInfo --- meshtastic/admin.proto | 10 ++++++++++ meshtastic/deviceonly.proto | 6 ++++++ meshtastic/mesh.proto | 6 ++++++ 3 files changed, 22 insertions(+) diff --git a/meshtastic/admin.proto b/meshtastic/admin.proto index 0f665e7..809d7c6 100644 --- a/meshtastic/admin.proto +++ b/meshtastic/admin.proto @@ -350,6 +350,16 @@ message AdminMessage { */ DeviceUIConfig store_ui_config = 46; + /* + * Set specified node-num to be ignored on the NodeDB on the device + */ + uint32 set_ignored_node = 47; + + /* + * Set specified node-num to be un-ignored on the NodeDB on the device + */ + uint32 remove_ignored_node = 48; + /* * Begins an edit transaction for config, module config, owner, and channel settings changes * This will delay the standard *implicit* save to the file system and subsequent reboot behavior until committed (commit_edit_settings) diff --git a/meshtastic/deviceonly.proto b/meshtastic/deviceonly.proto index d08c605..55aa9a7 100644 --- a/meshtastic/deviceonly.proto +++ b/meshtastic/deviceonly.proto @@ -147,6 +147,12 @@ message NodeInfoLite { * Persists between NodeDB internal clean ups */ bool is_favorite = 10; + + /* + * True if node is in our ignored list + * Persists between NodeDB internal clean ups + */ + bool is_ignored = 11; } /* diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 1fca39f..27915a2 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -1350,6 +1350,12 @@ message NodeInfo { * Persists between NodeDB internal clean ups */ bool is_favorite = 10; + + /* + * True if node is in our ignored list + * Persists between NodeDB internal clean ups + */ + bool is_ignored = 11; } /* From 6de64e11989132bdb3f60e6c6d32580d3e70ce60 Mon Sep 17 00:00:00 2001 From: mverch67 Date: Mon, 18 Nov 2024 00:01:47 +0100 Subject: [PATCH 161/454] store calibration, Norwegian language --- meshtastic/device_ui.options | 1 + meshtastic/device_ui.proto | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/meshtastic/device_ui.options b/meshtastic/device_ui.options index 65be467..55edcae 100644 --- a/meshtastic/device_ui.options +++ b/meshtastic/device_ui.options @@ -1,6 +1,7 @@ *DeviceUIConfig.screen_brightness int_size:8 *DeviceUIConfig.screen_timeout int_size:16 *DeviceUIConfig.ring_tone_id int_size:8 +*DeviceUIConfig.calibration_data max_size:16 *NodeFilter.node_name max_size:16 *NodeFilter.hops_away int_size:8 *NodeHighlight.node_name max_size:16 diff --git a/meshtastic/device_ui.proto b/meshtastic/device_ui.proto index 38481d2..b586fed 100644 --- a/meshtastic/device_ui.proto +++ b/meshtastic/device_ui.proto @@ -61,6 +61,11 @@ message DeviceUIConfig { * Node list highlightening */ NodeHighlight node_highlight = 13; + + /* + * 8 integers for screen calibration data + */ + bytes calibration_data = 14; } @@ -215,6 +220,11 @@ enum Language { GREEK = 13; /* + * Norwegian + */ + NORWEGIAN = 14; + + /* * Simplified Chinese (experimental) */ SIMPLIFIED_CHINESE = 30; From 739a6d4af0c68b7266a42336a77f9910d7368171 Mon Sep 17 00:00:00 2001 From: GUVWAF Date: Mon, 18 Nov 2024 18:41:09 +0100 Subject: [PATCH 162/454] Add `next_hop` and `relay_node` to MeshPacket --- meshtastic/mesh.options | 4 +++- meshtastic/mesh.proto | 14 +++++++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/meshtastic/mesh.options b/meshtastic/mesh.options index f474988..26182a2 100644 --- a/meshtastic/mesh.options +++ b/meshtastic/mesh.options @@ -38,6 +38,8 @@ *MeshPacket.hop_limit int_size:8 *MeshPacket.hop_start int_size:8 *MeshPacket.channel int_size:8 +*MeshPacket.next_hop int_size:8 +*MeshPacket.relay_node int_size:8 *QueueStatus.res int_size:8 *QueueStatus.free int_size:8 @@ -75,4 +77,4 @@ *ChunkedPayload.chunk_count int_size:16 *ChunkedPayload.chunk_index int_size:16 -*ChunkedPayload.payload_chunk max_size:228 +*ChunkedPayload.payload_chunk max_size:228 \ No newline at end of file diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 27915a2..181f27e 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -1233,6 +1233,18 @@ message MeshPacket { * Indicates whether the packet was en/decrypted using PKI */ bool pki_encrypted = 17; + + /* + * Last byte of the node number of the node that should be used as the next hop in routing. + * Set by the firmware internally, clients are not supposed to set this. + */ + uint32 next_hop = 18; + + /* + * Last byte of the node number of the node that will relay/relayed this packet. + * Set by the firmware internally, clients are not supposed to set this. + */ + uint32 relay_node = 19; } /* @@ -2040,4 +2052,4 @@ message ChunkedPayloadResponse { */ resend_chunks resend_chunks = 4; } -} +} \ No newline at end of file From 40497bf8d4cf43b2b3e579f868328c87e5e628da Mon Sep 17 00:00:00 2001 From: GUVWAF Date: Mon, 18 Nov 2024 18:41:27 +0100 Subject: [PATCH 163/454] Add `next_hop` to NodeInfoLite --- meshtastic/deviceonly.options | 3 ++- meshtastic/deviceonly.proto | 7 ++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/meshtastic/deviceonly.options b/meshtastic/deviceonly.options index 82dffcf..d6aae0c 100644 --- a/meshtastic/deviceonly.options +++ b/meshtastic/deviceonly.options @@ -10,8 +10,9 @@ *NodeInfoLite.channel int_size:8 *NodeInfoLite.hops_away int_size:8 +*NodeInfoLite.next_hop int_size:8 *UserLite.long_name max_size:40 *UserLite.short_name max_size:5 *UserLite.public_key max_size:32 # public key -*UserLite.macaddr max_size:6 fixed_length:true +*UserLite.macaddr max_size:6 fixed_length:true \ No newline at end of file diff --git a/meshtastic/deviceonly.proto b/meshtastic/deviceonly.proto index 55aa9a7..c506137 100644 --- a/meshtastic/deviceonly.proto +++ b/meshtastic/deviceonly.proto @@ -153,6 +153,11 @@ message NodeInfoLite { * Persists between NodeDB internal clean ups */ bool is_ignored = 11; + + /* + * Last byte of the node number of the node that should be used as the next hop to reach this node. + */ + uint32 next_hop = 12; } /* @@ -237,4 +242,4 @@ message ChannelFile { * NodeDB.cpp in the device code. */ uint32 version = 2; -} +} \ No newline at end of file From c38692bd11b41e369e79510f7ddd07fc8ef0f91e Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Tue, 19 Nov 2024 12:50:44 -0600 Subject: [PATCH 164/454] Add wismesh tap --- meshtastic/mesh.proto | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 181f27e..24b8474 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -650,6 +650,12 @@ enum HardwareModel { */ TLORA_C6 = 83; + /* + * WisMesh Tap + * RAK-4631 w/ TFT in injection modled case + */ + WISMESH_TAP = 84; + /* * ------------------------------------------------------------------------------------------------------------------------------------------ * Reserved ID For developing private Ports. These will show up in live traffic sparsely, so we can use a high number. Keep it within 8 bits. From c952f8a4c1c30f724743ee322dd3ec3ec2f934c4 Mon Sep 17 00:00:00 2001 From: jake-b <1012393+jake-b@users.noreply.github.com> Date: Sat, 23 Nov 2024 09:10:43 -0500 Subject: [PATCH 165/454] Support for the ClimateGuard RadSens Geiger-Muller tube (#626) Co-authored-by: Jake-B --- meshtastic/telemetry.proto | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/meshtastic/telemetry.proto b/meshtastic/telemetry.proto index 5dd810b..69a06f7 100644 --- a/meshtastic/telemetry.proto +++ b/meshtastic/telemetry.proto @@ -128,6 +128,12 @@ message EnvironmentMetrics { * Wind lull in m/s */ optional float wind_lull = 17; + + /* + * Radiation in µR/h + */ + optional float radiation = 18; + } /* @@ -525,6 +531,12 @@ enum TelemetrySensorType { * SCD40/SCD41 CO2, humidity, temperature sensor */ SCD4X = 32; + + /* + * ClimateGuard RadSens, radiation, Geiger-Muller Tube + */ + RADSENS = 33; + } /* From 5ea20fc1f774f3d5d4de301c74cd491fb30f4fb0 Mon Sep 17 00:00:00 2001 From: andrekir Date: Mon, 25 Nov 2024 12:52:24 -0300 Subject: [PATCH 166/454] update payload max length --- meshtastic/mesh.options | 4 ++-- meshtastic/mesh.proto | 2 +- meshtastic/storeforward.options | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/meshtastic/mesh.options b/meshtastic/mesh.options index 26182a2..e2c905d 100644 --- a/meshtastic/mesh.options +++ b/meshtastic/mesh.options @@ -17,7 +17,7 @@ # note: this payload length is ONLY the bytes that are sent inside of the Data protobuf (excluding protobuf overhead). The 16 byte header is # outside of this envelope -*Data.payload max_size:237 +*Data.payload max_size:233 *Data.bitfield int_size:8 *NodeInfo.channel int_size:8 @@ -62,7 +62,7 @@ # or fixed_length or fixed_count, or max_count #This value may want to be a few bytes smaller to compensate for the parent fields. -*Compressed.data max_size:237 +*Compressed.data max_size:233 *Waypoint.name max_size:30 *Waypoint.description max_size:100 diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 24b8474..b1bdd59 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -1268,7 +1268,7 @@ enum Constants { * note: this payload length is ONLY the bytes that are sent inside of the Data protobuf (excluding protobuf overhead). The 16 byte header is * outside of this envelope */ - DATA_PAYLOAD_LEN = 237; + DATA_PAYLOAD_LEN = 233; } /* diff --git a/meshtastic/storeforward.options b/meshtastic/storeforward.options index 8580aab..57a122c 100644 --- a/meshtastic/storeforward.options +++ b/meshtastic/storeforward.options @@ -1 +1 @@ -*StoreAndForward.text max_size:237 \ No newline at end of file +*StoreAndForward.text max_size:233 \ No newline at end of file From 66e7582f85cd819008db00dbcffbb4070fe14102 Mon Sep 17 00:00:00 2001 From: Jorropo Date: Mon, 25 Nov 2024 22:57:37 +0100 Subject: [PATCH 167/454] add Routastic hardware model --- meshtastic/mesh.proto | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index b1bdd59..c806f60 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -656,6 +656,14 @@ enum HardwareModel { */ WISMESH_TAP = 84; + /* + * Similar to PORTDUINO but used by Routastic devices, this is not any + * particular device and does not run Meshtastic's code but supports + * the same frame format. + * Runs on linux, see https://github.com/Jorropo/routastic + */ + ROUTASTIC = 85; + /* * ------------------------------------------------------------------------------------------------------------------------------------------ * Reserved ID For developing private Ports. These will show up in live traffic sparsely, so we can use a high number. Keep it within 8 bits. From 55a5c9c139f8e78912b5d8748de3b0abe4ebf4fd Mon Sep 17 00:00:00 2001 From: Iris <52419539+valzzu@users.noreply.github.com> Date: Mon, 9 Dec 2024 23:51:43 +0200 Subject: [PATCH 168/454] Update mesh.proto --- meshtastic/mesh.proto | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index c806f60..f4f9bef 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -664,6 +664,14 @@ enum HardwareModel { */ ROUTASTIC = 85; + /* + * Mesh-Tab esp32 based + * https://github.com/valzzu/Mesh-Tab + */ + MESH_TAB = 86; + + + /* * ------------------------------------------------------------------------------------------------------------------------------------------ * Reserved ID For developing private Ports. These will show up in live traffic sparsely, so we can use a high number. Keep it within 8 bits. @@ -2066,4 +2074,4 @@ message ChunkedPayloadResponse { */ resend_chunks resend_chunks = 4; } -} \ No newline at end of file +} From d2cedee0a075f18111341d43a3012b32c413461e Mon Sep 17 00:00:00 2001 From: Iris <52419539+valzzu@users.noreply.github.com> Date: Mon, 9 Dec 2024 23:53:09 +0200 Subject: [PATCH 169/454] added Mesh-Tab --- meshtastic/mesh.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index f4f9bef..fc0b580 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -665,7 +665,7 @@ enum HardwareModel { ROUTASTIC = 85; /* - * Mesh-Tab esp32 based + * Mesh-Tab, esp32 based * https://github.com/valzzu/Mesh-Tab */ MESH_TAB = 86; From ae684384731b6d02b4ff4bb450ddbbb4a7ee0671 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Sat, 14 Dec 2024 05:18:08 -0600 Subject: [PATCH 170/454] Add priority for new critical alert feature --- meshtastic/mesh.proto | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index fc0b580..99c267a 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -1095,6 +1095,11 @@ message MeshPacket { */ HIGH = 100; + /* + * Higher priority alert message used for critical messages which take priority over other reliable packets. + */ + ALERT = 110; + /* * Ack/naks are sent with very high priority to ensure that retransmission * stops as soon as possible From 611e3994929011b254b694f80bcb54ce4c3ec084 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Sat, 14 Dec 2024 05:19:25 -0600 Subject: [PATCH 171/454] Update mesh.proto --- meshtastic/mesh.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 99c267a..d03dbea 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -1096,7 +1096,7 @@ message MeshPacket { HIGH = 100; /* - * Higher priority alert message used for critical messages which take priority over other reliable packets. + * Higher priority alert message used for critical alerts which take priority over other reliable packets. */ ALERT = 110; From 0c8cdc0efaada407565a80e3693851cf1339c254 Mon Sep 17 00:00:00 2001 From: Tom Fifield Date: Sun, 15 Dec 2024 11:17:53 +1100 Subject: [PATCH 172/454] Add INA226 A high accuracy current and voltage sensor --- meshtastic/telemetry.proto | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/meshtastic/telemetry.proto b/meshtastic/telemetry.proto index 69a06f7..688abf7 100644 --- a/meshtastic/telemetry.proto +++ b/meshtastic/telemetry.proto @@ -536,6 +536,11 @@ enum TelemetrySensorType { * ClimateGuard RadSens, radiation, Geiger-Muller Tube */ RADSENS = 33; + + /* + * High accuracy current and voltage + */ + INA226 = 34; } From 0f7e5625693e4f4cfafcc9d661fa584b6e8e4352 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Tue, 17 Dec 2024 06:27:43 -0600 Subject: [PATCH 173/454] Add alert app portnum --- meshtastic/portnums.proto | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/meshtastic/portnums.proto b/meshtastic/portnums.proto index 1f8cdb9..a4b55e5 100644 --- a/meshtastic/portnums.proto +++ b/meshtastic/portnums.proto @@ -105,6 +105,11 @@ enum PortNum { */ DETECTION_SENSOR_APP = 10; + /* + * Same as Text Message but used for critical alerts. + */ + ALERT_APP = 11; + /* * Provides a 'ping' service that replies to any packet it receives. * Also serves as a small example module. From c55f120a9c1ce90c85e4826907a0b9bcb2d5f5a2 Mon Sep 17 00:00:00 2001 From: Erayd Date: Mon, 23 Dec 2024 00:14:48 +1300 Subject: [PATCH 174/454] Add the ROUTER_LATE role & supporting fields (#632) Will always rebroadcast packets, but will do so after all other modes. Intended for router nodes that are there to provide additional coverage in areas not already covered by other routers, or to bridge around problematic terrain, but should not be given priority over other routers in order to avoid unnecessarily consuming hops. --- meshtastic/config.proto | 9 +++++++++ meshtastic/mesh.proto | 7 +++++++ 2 files changed, 16 insertions(+) diff --git a/meshtastic/config.proto b/meshtastic/config.proto index aaf340b..e308529 100644 --- a/meshtastic/config.proto +++ b/meshtastic/config.proto @@ -99,6 +99,15 @@ message Config { * Uses position module configuration to determine TAK PLI broadcast interval. */ TAK_TRACKER = 10; + + /* + * Description: Will always rebroadcast packets, but will do so after all other modes. + * Technical Details: Used for router nodes that are intended to provide additional coverage + * in areas not already covered by other routers, or to bridge around problematic terrain, + * but should not be given priority over other routers in order to avoid unnecessaraily + * consuming hops. + */ + ROUTER_LATE = 11; } /* diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index d03dbea..556295f 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -1272,6 +1272,13 @@ message MeshPacket { * Set by the firmware internally, clients are not supposed to set this. */ uint32 relay_node = 19; + + /* + * *Never* sent over the radio links. + * Timestamp after which this packet may be sent. + * Set by the firmware internally, clients are not supposed to set this. + */ + uint32 tx_after = 20; } /* From fe59011ba51c11638a28d24e532d3906b46f5cac Mon Sep 17 00:00:00 2001 From: mverch67 Date: Wed, 1 Jan 2025 01:28:44 +0100 Subject: [PATCH 175/454] device-ui: add channel filter, add slovenian --- meshtastic/device_ui.options | 1 + meshtastic/device_ui.proto | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/meshtastic/device_ui.options b/meshtastic/device_ui.options index 55edcae..56b684b 100644 --- a/meshtastic/device_ui.options +++ b/meshtastic/device_ui.options @@ -4,4 +4,5 @@ *DeviceUIConfig.calibration_data max_size:16 *NodeFilter.node_name max_size:16 *NodeFilter.hops_away int_size:8 +*NodeFilter.channel int_size:8 *NodeHighlight.node_name max_size:16 diff --git a/meshtastic/device_ui.proto b/meshtastic/device_ui.proto index b586fed..b704e47 100644 --- a/meshtastic/device_ui.proto +++ b/meshtastic/device_ui.proto @@ -100,6 +100,11 @@ message NodeFilter { */ string node_name = 6; + /* + * Filter based on channel + */ + int32 channel = 7; + } message NodeHighlight { @@ -224,6 +229,11 @@ enum Language { */ NORWEGIAN = 14; + /* + * Slovenian + */ + SLOVENIAN = 15; + /* * Simplified Chinese (experimental) */ From b77d1a3bb744e741b73225bb7e4d1b68851b730d Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Sun, 5 Jan 2025 12:57:01 -0600 Subject: [PATCH 176/454] Add protocol flags to enable UDP broadcasts and other future local networking transports --- meshtastic/config.proto | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/meshtastic/config.proto b/meshtastic/config.proto index e308529..20334a9 100644 --- a/meshtastic/config.proto +++ b/meshtastic/config.proto @@ -515,6 +515,26 @@ message Config { * rsyslog Server and Port */ string rsyslog_server = 9; + + /* + * Flags for enabling/disabling network protocols + */ + uint32 enabled_protocols = 10; + + /* + * Available flags auxiliary network protocols + */ + enum ProtocolFlags { + /* + * Do not broadcast packets over any network protocol + */ + NO_BROADCAST = 0x0000; + + /* + * Enable broadcasting packets via UDP over the local network + */ + UDP_BROADCAST = 0x0001; + } } /* @@ -1113,4 +1133,4 @@ message Config { SessionkeyConfig sessionkey = 9; DeviceUIConfig device_ui = 10; } -} +} \ No newline at end of file From 9c1bf5b384cf6a4bc34b019a468f59fb779bf35d Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Tue, 7 Jan 2025 19:29:16 -0600 Subject: [PATCH 177/454] Move nodedb to it's own message (and file) --- meshtastic/deviceonly.proto | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/meshtastic/deviceonly.proto b/meshtastic/deviceonly.proto index c506137..8bb4603 100644 --- a/meshtastic/deviceonly.proto +++ b/meshtastic/deviceonly.proto @@ -220,11 +220,20 @@ message DeviceState { * The mesh's nodes with their available gpio pins for RemoteHardware module */ repeated NodeRemoteHardwarePin node_remote_hardware_pins = 13; +} + +message NodeDatabase { + /* + * A version integer used to invalidate old save files when we make + * incompatible changes This integer is set at build time and is private to + * NodeDB.cpp in the device code. + */ + uint32 version = 1; /* * New lite version of NodeDB to decrease memory footprint */ - repeated NodeInfoLite node_db_lite = 14 [(nanopb).callback_datatype = "std::vector"]; + repeated NodeInfoLite nodes = 2 [(nanopb).callback_datatype = "std::vector"]; } /* From fde27e4ef0fcee967063ba353422ed5f9a1c4790 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20G=C3=B6ttgens?= Date: Sat, 18 Jan 2025 13:30:43 +0100 Subject: [PATCH 178/454] add dfrobot gravity rain gauge (#646) --- meshtastic/telemetry.proto | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/meshtastic/telemetry.proto b/meshtastic/telemetry.proto index 688abf7..4b5b3f2 100644 --- a/meshtastic/telemetry.proto +++ b/meshtastic/telemetry.proto @@ -134,6 +134,16 @@ message EnvironmentMetrics { */ optional float radiation = 18; + /* + * Rainfall in the last hour in mm + */ + optional float rainfall_1h = 19; + + /* + * Rainfall in the last 24 hours in mm + */ + optional float rainfall_24h = 20; + } /* @@ -542,6 +552,11 @@ enum TelemetrySensorType { */ INA226 = 34; + /* + * DFRobot Gravity tipping bucket rain gauge + */ + DFROBOT_RAIN = 35; + } /* From 7f13df0e5f7cbb07f0e6f3a57c0d86ad448738db Mon Sep 17 00:00:00 2001 From: A_Ponzano Date: Sun, 19 Jan 2025 15:07:06 +0100 Subject: [PATCH 179/454] Update mesh.proto with meshlink (#644) --- meshtastic/mesh.proto | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 556295f..502e65a 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -670,6 +670,11 @@ enum HardwareModel { */ MESH_TAB = 86; + /* + * MeshLink board developed by LoraItalia. NRF52840, eByte E22900M22S (Will also come with other frequencies), 25w MPPT solar charger (5v,12v,18v selectable), support for gps, buzzer, oled or e-ink display, 10 gpios, hardware watchdog + * https://www.loraitalia.it + */ + MESHLINK = 87; /* From edc3a7bab55bcad7c32d5a6fc71a76053ef2a00a Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Fri, 31 Jan 2025 20:09:19 -0600 Subject: [PATCH 180/454] Add 12 hour clock device display config --- meshtastic/config.proto | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/meshtastic/config.proto b/meshtastic/config.proto index 20334a9..95eb13e 100644 --- a/meshtastic/config.proto +++ b/meshtastic/config.proto @@ -743,6 +743,12 @@ message Config { * Indicates how to rotate or invert the compass output to accurate display on the display. */ CompassOrientation compass_orientation = 11; + + /* + * If false (default), the device will display the time in 24-hour format on screen. + * If true, the device will display the time in 12-hour format on screen. + */ + bool use_12h_clock = 12; } /* From 068646653e8375fc145988026ad242a3cf70f7ab Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Mon, 10 Feb 2025 14:28:21 -0600 Subject: [PATCH 181/454] Comment --- meshtastic/module_config.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meshtastic/module_config.proto b/meshtastic/module_config.proto index 040b604..aa30abc 100644 --- a/meshtastic/module_config.proto +++ b/meshtastic/module_config.proto @@ -603,7 +603,7 @@ message ModuleConfig { } /* - * TODO: REPLACE + * Canned Messages Module Config */ message CannedMessageConfig { /* From 7f45a7e8d925ca24b6462ee292dbef61090f3019 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Tue, 11 Feb 2025 06:01:02 -0600 Subject: [PATCH 182/454] Decrease MQTT password size --- meshtastic/module_config.options | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meshtastic/module_config.options b/meshtastic/module_config.options index fdde1b3..bf2a5f4 100644 --- a/meshtastic/module_config.options +++ b/meshtastic/module_config.options @@ -2,7 +2,7 @@ *MQTTConfig.address max_size:64 *MQTTConfig.username max_size:64 -*MQTTConfig.password max_size:64 +*MQTTConfig.password max_size:32 *MQTTConfig.root max_size:32 *AudioConfig.ptt_pin int_size:8 From ff6fce923a24c4a26164143c236e237435fe6c76 Mon Sep 17 00:00:00 2001 From: Tom Fifield Date: Sat, 22 Feb 2025 18:05:58 +0800 Subject: [PATCH 183/454] Deprecate did_gps_reset Removed in: https://github.com/meshtastic/firmware/pull/6116 --- meshtastic/deviceonly.proto | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/meshtastic/deviceonly.proto b/meshtastic/deviceonly.proto index c506137..65d4f95 100644 --- a/meshtastic/deviceonly.proto +++ b/meshtastic/deviceonly.proto @@ -205,9 +205,10 @@ message DeviceState { bool no_save = 9 [deprecated = true]; /* - * Some GPS receivers seem to have bogus settings from the factory, so we always do one factory reset. + * Previously used to manage GPS factory resets. + * Deprecated in 2.5.23 */ - bool did_gps_reset = 11; + bool did_gps_reset = 11 [deprecated = true]; /* * We keep the last received waypoint stored in the device flash, @@ -242,4 +243,4 @@ message ChannelFile { * NodeDB.cpp in the device code. */ uint32 version = 2; -} \ No newline at end of file +} From 91f73d032691008cae84965a6b3e733d0da2ed4f Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Sun, 23 Feb 2025 06:25:35 -0600 Subject: [PATCH 184/454] Add container messages for backup prefs --- meshtastic/deviceonly.proto | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/meshtastic/deviceonly.proto b/meshtastic/deviceonly.proto index 8bb4603..43ecb0e 100644 --- a/meshtastic/deviceonly.proto +++ b/meshtastic/deviceonly.proto @@ -6,6 +6,7 @@ import "meshtastic/channel.proto"; import "meshtastic/mesh.proto"; import "meshtastic/telemetry.proto"; import "meshtastic/config.proto"; +import "meshtastic/localonly.proto"; import "nanopb.proto"; option csharp_namespace = "Meshtastic.Protobufs"; @@ -251,4 +252,34 @@ message ChannelFile { * NodeDB.cpp in the device code. */ uint32 version = 2; +} + +/* + * The on-disk backup of the node's preferences + */ + message BackupPrefs { + /* + * The version of the backup + */ + uint32 version = 1; + + /* + * The node's configuration + */ + LocalConfig config = 2; + + /* + * The node's module configuration + */ + LocalModuleConfig module_config = 3; + + /* + * The node's channels + */ + ChannelFile channels = 4; + + /* + * The node's user (owner) information + */ + User owner = 5; } \ No newline at end of file From 8b87eac4db0899d54eb11501b2a1ac76cefad6ec Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Sun, 23 Feb 2025 06:52:34 -0600 Subject: [PATCH 185/454] Name --- meshtastic/deviceonly.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meshtastic/deviceonly.proto b/meshtastic/deviceonly.proto index 43ecb0e..bb57843 100644 --- a/meshtastic/deviceonly.proto +++ b/meshtastic/deviceonly.proto @@ -257,7 +257,7 @@ message ChannelFile { /* * The on-disk backup of the node's preferences */ - message BackupPrefs { + message BackupPreferences { /* * The version of the backup */ From 2a1386b151fb379f718d51ead179960e7ab8394a Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Sun, 23 Feb 2025 08:42:31 -0600 Subject: [PATCH 186/454] Admin messages --- meshtastic/admin.proto | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/meshtastic/admin.proto b/meshtastic/admin.proto index 809d7c6..6cfe6dc 100644 --- a/meshtastic/admin.proto +++ b/meshtastic/admin.proto @@ -154,6 +154,18 @@ message AdminMessage { PAXCOUNTER_CONFIG = 12; } + enum BackupLocation { + /* + * Backup to the internal flash + */ + FLASH = 0; + + /* + * Backup to the SD card + */ + SD = 1; + } + /* * TODO: REPLACE */ @@ -270,6 +282,16 @@ message AdminMessage { */ uint32 set_scale = 23; + /* + * Backup the node's preferences + */ + BackupLocation backup_preferences = 24; + + /* + * Restore the node's preferences + */ + BackupLocation restore_preferences = 25; + /* * Set the owner for this node */ From f3a57add1ae4be78af0b74fa97f4bf03cc34890d Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Sun, 23 Feb 2025 13:06:21 -0600 Subject: [PATCH 187/454] Timestamp --- meshtastic/deviceonly.proto | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/meshtastic/deviceonly.proto b/meshtastic/deviceonly.proto index 16ab020..481bfba 100644 --- a/meshtastic/deviceonly.proto +++ b/meshtastic/deviceonly.proto @@ -264,23 +264,28 @@ message ChannelFile { */ uint32 version = 1; + /* + * The timestamp of the backup (if node has time) + */ + fixed32 timestamp = 2; + /* * The node's configuration */ - LocalConfig config = 2; + LocalConfig config = 3; /* * The node's module configuration */ - LocalModuleConfig module_config = 3; + LocalModuleConfig module_config = 4; /* * The node's channels */ - ChannelFile channels = 4; + ChannelFile channels = 5; /* * The node's user (owner) information */ - User owner = 5; + User owner = 6; } \ No newline at end of file From 2f6a133037310b0c8549b3f63dd76880a2b81fab Mon Sep 17 00:00:00 2001 From: mverch67 Date: Tue, 25 Feb 2025 00:20:33 +0100 Subject: [PATCH 188/454] map persistent UI data --- meshtastic/device_ui.options | 2 ++ meshtastic/device_ui.proto | 39 ++++++++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+) diff --git a/meshtastic/device_ui.options b/meshtastic/device_ui.options index 56b684b..5aa61d0 100644 --- a/meshtastic/device_ui.options +++ b/meshtastic/device_ui.options @@ -6,3 +6,5 @@ *NodeFilter.hops_away int_size:8 *NodeFilter.channel int_size:8 *NodeHighlight.node_name max_size:16 +*GeoPoint.zoom int_size:8 +*Map.style max_size:20 diff --git a/meshtastic/device_ui.proto b/meshtastic/device_ui.proto index b704e47..9ac40a3 100644 --- a/meshtastic/device_ui.proto +++ b/meshtastic/device_ui.proto @@ -66,6 +66,11 @@ message DeviceUIConfig { * 8 integers for screen calibration data */ bytes calibration_data = 14; + + /* + * Map related data + */ + Map map_data = 15; } @@ -135,6 +140,40 @@ message NodeHighlight { } +message GeoPoint { + /* + * Zoom level + */ + int32 zoom = 1; + + /* + * Coordinate: latitude + */ + int32 latitude = 2; + + /* + * Coordinate: longitude + */ + int32 longitude = 3; +} + +message Map { + /* + * Home coordinates + */ + GeoPoint home = 1; + + /* + * Map tile style + */ + string style = 2; + + /* + * Map scroll follows GPS + */ + bool follow_gps = 3; +} + enum Theme { /* * Dark From 79298fcdf04c1e680f5abd875233394f44ddaf7a Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Tue, 25 Feb 2025 07:26:25 -0600 Subject: [PATCH 189/454] Add remove_backup_preferences --- meshtastic/admin.proto | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/meshtastic/admin.proto b/meshtastic/admin.proto index 6cfe6dc..e9691ed 100644 --- a/meshtastic/admin.proto +++ b/meshtastic/admin.proto @@ -292,6 +292,10 @@ message AdminMessage { */ BackupLocation restore_preferences = 25; + /* + * Remove backups of the node's preferences + */ + BackupLocation remove_backup_preferences = 26; /* * Set the owner for this node */ From eb42f6d262400fb32f8c242985af1acf12d9e7a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20G=C3=B6ttgens?= Date: Sun, 2 Mar 2025 19:32:07 +0100 Subject: [PATCH 190/454] Indicator protos (#653) --- meshtastic/interdevice.options | 1 + meshtastic/interdevice.proto | 44 ++++++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 meshtastic/interdevice.options create mode 100644 meshtastic/interdevice.proto diff --git a/meshtastic/interdevice.options b/meshtastic/interdevice.options new file mode 100644 index 0000000..97df282 --- /dev/null +++ b/meshtastic/interdevice.options @@ -0,0 +1 @@ +*InterdeviceMessage.nmea max_size:1024 diff --git a/meshtastic/interdevice.proto b/meshtastic/interdevice.proto new file mode 100644 index 0000000..5b890b2 --- /dev/null +++ b/meshtastic/interdevice.proto @@ -0,0 +1,44 @@ +syntax = "proto3"; + +package meshtastic; + +option csharp_namespace = "Meshtastic.Protobufs"; +option go_package = "github.com/meshtastic/go/generated"; +option java_outer_classname = "InterdeviceProtos"; +option java_package = "com.geeksville.mesh"; +option swift_prefix = ""; + +// encapsulate up to 1k of NMEA string data + +enum MessageType { + ACK = 0; + COLLECT_INTERVAL = 160; // in ms + BEEP_ON = 161; // duration ms + BEEP_OFF = 162; // cancel prematurely + SHUTDOWN = 163; + POWER_ON = 164; + SCD41_TEMP = 176; + SCD41_HUMIDITY = 177; + SCD41_CO2 = 178; + AHT20_TEMP = 179; + AHT20_HUMIDITY = 180; + TVOC_INDEX = 181; +} + +message SensorData { + // The message type + MessageType type = 1; + // The sensor data, either as a float or an uint32 + oneof data { + float float_value = 2; + uint32 uint32_value = 3; + } +} + +message InterdeviceMessage { + // The message data + oneof data { + string nmea = 1; + SensorData sensor = 2; + } +} \ No newline at end of file From abf3fec604837c81d507f65262b84ad0058f996b Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Wed, 5 Mar 2025 13:13:49 -0600 Subject: [PATCH 191/454] Xiao nrf52 kit hw_model --- meshtastic/mesh.proto | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 502e65a..92c69b0 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -675,7 +675,11 @@ enum HardwareModel { * https://www.loraitalia.it */ MESHLINK = 87; - + + /* + * Seeed XIAO nRF52840 + Wio SX1262 kit + */ + XIAO_NRF52_KIT = 88; /* * ------------------------------------------------------------------------------------------------------------------------------------------ From 245daac0b2491af225a35c061033821d4a7c7d6a Mon Sep 17 00:00:00 2001 From: Chris Danis Date: Wed, 5 Mar 2025 16:12:33 -0500 Subject: [PATCH 192/454] telemetry: add dps310 --- meshtastic/telemetry.proto | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/meshtastic/telemetry.proto b/meshtastic/telemetry.proto index 4b5b3f2..29fdcf6 100644 --- a/meshtastic/telemetry.proto +++ b/meshtastic/telemetry.proto @@ -557,6 +557,10 @@ enum TelemetrySensorType { */ DFROBOT_RAIN = 35; + /* + * Infineon DPS310 High accuracy pressure and temperature + */ + DPS310 = 36; } /* From 0c818c0ae86a29c9a56d38538e921f301324d94b Mon Sep 17 00:00:00 2001 From: landandair Date: Thu, 6 Mar 2025 17:56:37 -0600 Subject: [PATCH 193/454] Add RNS Tunnel App Portnum - Added RNS tunnel app to Port 76 - Encoding is handled by RNS_Over_Meshtastic app --- meshtastic/portnums.proto | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/meshtastic/portnums.proto b/meshtastic/portnums.proto index a4b55e5..c711afa 100644 --- a/meshtastic/portnums.proto +++ b/meshtastic/portnums.proto @@ -206,6 +206,12 @@ enum PortNum { */ POWERSTRESS_APP = 74; + /* + * Reticulum Network Stack Tunnel App + * ENCODING: Fragmented RNS Packet. Handled by Meshtastic RNS interface + */ + RETICULUM_TUNNEL_APP = 76; + /* * Private applications should use portnums >= 256. * To simplify initial development and testing you can use "PRIVATE_APP" From d9061086e358dd4765c5b9bab95d3152600a43b3 Mon Sep 17 00:00:00 2001 From: Tom Fifield Date: Fri, 7 Mar 2025 19:52:48 +0800 Subject: [PATCH 194/454] Add RAK12035VB Soil Moisture Sensor As per @Justin-Mann , the RAK12035 is a Soil Moisture Sensor made by RAKWireless. Up to three can be connected using the wisblock architecture. --- meshtastic/telemetry.proto | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/meshtastic/telemetry.proto b/meshtastic/telemetry.proto index 29fdcf6..0a7db6a 100644 --- a/meshtastic/telemetry.proto +++ b/meshtastic/telemetry.proto @@ -561,6 +561,11 @@ enum TelemetrySensorType { * Infineon DPS310 High accuracy pressure and temperature */ DPS310 = 36; + + /* + * RAKWireless RAK12035 Soil Moisture Sensor Module + */ + DPS310 = 37; } /* From 06572741de59e16be9d205aa8ea0423cb00d17e2 Mon Sep 17 00:00:00 2001 From: Tom Fifield Date: Fri, 7 Mar 2025 19:58:18 +0800 Subject: [PATCH 195/454] Update telemetry.proto --- meshtastic/telemetry.options | 1 + meshtastic/telemetry.proto | 13 +++++++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/meshtastic/telemetry.options b/meshtastic/telemetry.options index 79b1f12..a429c3e 100644 --- a/meshtastic/telemetry.options +++ b/meshtastic/telemetry.options @@ -3,6 +3,7 @@ *EnvironmentMetrics.iaq int_size:16 *EnvironmentMetrics.wind_direction int_size:16 +*EnvironmentMetrics.soil_moisture int_size:8 *LocalStats.num_online_nodes int_size:16 *LocalStats.num_total_nodes int_size:16 diff --git a/meshtastic/telemetry.proto b/meshtastic/telemetry.proto index 0a7db6a..4b41edd 100644 --- a/meshtastic/telemetry.proto +++ b/meshtastic/telemetry.proto @@ -143,7 +143,16 @@ message EnvironmentMetrics { * Rainfall in the last 24 hours in mm */ optional float rainfall_24h = 20; - + + /* + * Soil moisture measured (% 1-100) + */ + optional uint32 soil_moisture = 21; + + /* + * Soil temperature measured (*C) + */ + optional float soil_temperature = 22; } /* @@ -565,7 +574,7 @@ enum TelemetrySensorType { /* * RAKWireless RAK12035 Soil Moisture Sensor Module */ - DPS310 = 37; + RAK12035 = 37; } /* From db4578960ece523d7a95ed88bc6ef166139d2ecc Mon Sep 17 00:00:00 2001 From: pdxlocations <117498748+pdxlocations@users.noreply.github.com> Date: Thu, 13 Mar 2025 21:32:30 -0700 Subject: [PATCH 196/454] Update NTP Server Comments change 0.pool.ntp.org to meshtastic.pool.ntp.org in NTP Server Commente --- meshtastic/config.proto | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/meshtastic/config.proto b/meshtastic/config.proto index 95eb13e..9edc77c 100644 --- a/meshtastic/config.proto +++ b/meshtastic/config.proto @@ -492,7 +492,7 @@ message Config { string wifi_psk = 4; /* - * NTP server to use if WiFi is conneced, defaults to `0.pool.ntp.org` + * NTP server to use if WiFi is conneced, defaults to `meshtastic.pool.ntp.org` */ string ntp_server = 5; @@ -1139,4 +1139,4 @@ message Config { SessionkeyConfig sessionkey = 9; DeviceUIConfig device_ui = 10; } -} \ No newline at end of file +} From 524e78869b52edc7800d497647f258b179980b03 Mon Sep 17 00:00:00 2001 From: Aleksey Vasilenko Date: Fri, 14 Mar 2025 13:31:25 +0200 Subject: [PATCH 197/454] device_ui: add Ukrainian --- meshtastic/device_ui.proto | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/meshtastic/device_ui.proto b/meshtastic/device_ui.proto index 9ac40a3..bec8200 100644 --- a/meshtastic/device_ui.proto +++ b/meshtastic/device_ui.proto @@ -273,6 +273,11 @@ enum Language { */ SLOVENIAN = 15; + /* + * Ukrainian + */ + UKRAINIAN = 16; + /* * Simplified Chinese (experimental) */ From 3d11dc97ad14da3df24ab7e6b078ba18a9aa9058 Mon Sep 17 00:00:00 2001 From: Aleksey Vasilenko Date: Fri, 14 Mar 2025 13:44:49 +0200 Subject: [PATCH 198/454] Fix empty doc to satisfy picky linters --- meshtastic/admin.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meshtastic/admin.proto b/meshtastic/admin.proto index e9691ed..f4718c1 100644 --- a/meshtastic/admin.proto +++ b/meshtastic/admin.proto @@ -74,7 +74,7 @@ message AdminMessage { SECURITY_CONFIG = 7; /* - * + * Session key config */ SESSIONKEY_CONFIG = 8; From 327ddc8261afbd4f1d261115d8214941a7cc3e01 Mon Sep 17 00:00:00 2001 From: Aleksey Vasilenko Date: Fri, 14 Mar 2025 13:55:54 +0200 Subject: [PATCH 199/454] Cleanup formatting - trim excessive spaces, add missing newlines, etc. --- meshtastic/config.proto | 16 ++++++------- meshtastic/device_ui.proto | 43 +++++++++++++++++----------------- meshtastic/deviceonly.proto | 4 ++-- meshtastic/interdevice.proto | 2 +- meshtastic/mesh.proto | 26 ++++++++++---------- meshtastic/module_config.proto | 2 +- meshtastic/portnums.proto | 2 +- meshtastic/powermon.proto | 2 +- meshtastic/telemetry.proto | 26 ++++++++++---------- 9 files changed, 61 insertions(+), 62 deletions(-) diff --git a/meshtastic/config.proto b/meshtastic/config.proto index 95eb13e..e51715f 100644 --- a/meshtastic/config.proto +++ b/meshtastic/config.proto @@ -41,7 +41,7 @@ message Config { * Description: Combination of both ROUTER and CLIENT. Not for mobile devices. * Deprecated in v2.3.15 because improper usage is impacting public meshes: Use ROUTER or CLIENT instead. */ - + ROUTER_CLIENT = 3 [deprecated = true]; /* @@ -207,7 +207,7 @@ message Config { string tzdef = 11; /* - * If true, disable the default blinking LED (LED_PIN) behavior on the device + * If true, disable the default blinking LED (LED_PIN) behavior on the device */ bool led_heartbeat_disabled = 12; } @@ -380,7 +380,7 @@ message Config { */ message PowerConfig { /* - * Description: Will sleep everything as much as possible, for the tracker and sensor role this will also include the lora radio. + * Description: Will sleep everything as much as possible, for the tracker and sensor role this will also include the lora radio. * Don't use this setting if you want to use your device with the phone apps or are using a device without a user button. * Technical Details: Works for ESP32 devices and NRF52 devices in the Sensor or Tracker roles */ @@ -434,7 +434,7 @@ message Config { * If non-zero, we want powermon log outputs. With the particular (bitfield) sources enabled. * Note: we picked an ID of 32 so that lower more efficient IDs can be used for more frequently used options. */ - uint64 powermon_enables = 32; + uint64 powermon_enables = 32; } /* @@ -850,17 +850,17 @@ message Config { * Singapore 923mhz */ SG_923 = 18; - + /* * Philippines 433mhz */ PH_433 = 19; - + /* * Philippines 868mhz */ PH_868 = 20; - + /* * Philippines 915mhz */ @@ -1139,4 +1139,4 @@ message Config { SessionkeyConfig sessionkey = 9; DeviceUIConfig device_ui = 10; } -} \ No newline at end of file +} diff --git a/meshtastic/device_ui.proto b/meshtastic/device_ui.proto index 9ac40a3..b283087 100644 --- a/meshtastic/device_ui.proto +++ b/meshtastic/device_ui.proto @@ -19,24 +19,24 @@ message DeviceUIConfig { uint32 version = 1; /* - * TFT display brightness 1..255 + * TFT display brightness 1..255 */ uint32 screen_brightness = 2; /* - * Screen timeout 0..900 + * Screen timeout 0..900 */ uint32 screen_timeout = 3; /* - * Screen/Settings lock enabled + * Screen/Settings lock enabled */ bool screen_lock = 4; bool settings_lock = 5; uint32 pin_code = 6; /* - * Color theme + * Color theme */ Theme theme = 7; @@ -48,12 +48,12 @@ message DeviceUIConfig { uint32 ring_tone_id = 10; /* - * Localization + * Localization */ Language language = 11; /* - * Node list filter + * Node list filter */ NodeFilter node_filter = 12; @@ -84,32 +84,32 @@ message NodeFilter { * Filter offline nodes */ bool offline_switch = 2; - + /* * Filter nodes w/o public key */ bool public_key_switch = 3; - + /* * Filter based on hops away */ int32 hops_away = 4; - + /* * Filter nodes w/o position */ bool position_switch = 5; - + /* * Filter nodes by matching name string */ string node_name = 6; - + /* * Filter based on channel */ int32 channel = 7; - + } message NodeHighlight { @@ -122,7 +122,7 @@ message NodeHighlight { * Highlight nodes w/ position */ bool position_switch = 2; - + /* * Highlight nodes w/ telemetry data */ @@ -132,12 +132,12 @@ message NodeHighlight { * Highlight nodes w/ iaq data */ bool iaq_switch = 4; - + /* * Highlight nodes by matching name string */ string node_name = 5; - + } message GeoPoint { @@ -147,10 +147,10 @@ message GeoPoint { int32 zoom = 1; /* - * Coordinate: latitude + * Coordinate: latitude */ int32 latitude = 2; - + /* * Coordinate: longitude */ @@ -167,7 +167,7 @@ message Map { * Map tile style */ string style = 2; - + /* * Map scroll follows GPS */ @@ -227,17 +227,17 @@ enum Language { * Swedish */ SWEDISH = 6; - + /* * Finnish */ FINNISH = 7; - + /* * Polish */ POLISH = 8; - + /* * Turkish */ @@ -283,4 +283,3 @@ enum Language { */ TRADITIONAL_CHINESE = 31; } - diff --git a/meshtastic/deviceonly.proto b/meshtastic/deviceonly.proto index 481bfba..ea6ef25 100644 --- a/meshtastic/deviceonly.proto +++ b/meshtastic/deviceonly.proto @@ -156,7 +156,7 @@ message NodeInfoLite { bool is_ignored = 11; /* - * Last byte of the node number of the node that should be used as the next hop to reach this node. + * Last byte of the node number of the node that should be used as the next hop to reach this node. */ uint32 next_hop = 12; } @@ -288,4 +288,4 @@ message ChannelFile { * The node's user (owner) information */ User owner = 6; -} \ No newline at end of file +} diff --git a/meshtastic/interdevice.proto b/meshtastic/interdevice.proto index 5b890b2..54e950f 100644 --- a/meshtastic/interdevice.proto +++ b/meshtastic/interdevice.proto @@ -41,4 +41,4 @@ message InterdeviceMessage { string nmea = 1; SensorData sensor = 2; } -} \ No newline at end of file +} diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 92c69b0..0b5fa97 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -339,7 +339,7 @@ enum HardwareModel { * Heltec HRU-3601: https://heltec.org/project/hru-3601/ */ HELTEC_HRU_3601 = 23; - + /* * Heltec Wireless Bridge */ @@ -542,7 +542,7 @@ enum HardwareModel { CDEBYTE_EORA_S3 = 61; /* - * TWC_MESH_V4 + * TWC_MESH_V4 * Adafruit NRF52840 feather express with SX1262, SSD1306 OLED and NEO6M GPS */ TWC_MESH_V4 = 62; @@ -558,27 +558,27 @@ enum HardwareModel { * ESP32-D0WDQ6 With SX1276/SKY66122, SSD1306 OLED and No GPS */ RADIOMASTER_900_BANDIT_NANO = 64; - + /* * Heltec Capsule Sensor V3 with ESP32-S3 CPU, Portable LoRa device that can replace GNSS modules or sensors */ HELTEC_CAPSULE_SENSOR_V3 = 65; - + /* * Heltec Vision Master T190 with ESP32-S3 CPU, and a 1.90 inch TFT display */ HELTEC_VISION_MASTER_T190 = 66; - + /* * Heltec Vision Master E213 with ESP32-S3 CPU, and a 2.13 inch E-Ink display */ HELTEC_VISION_MASTER_E213 = 67; - + /* * Heltec Vision Master E290 with ESP32-S3 CPU, and a 2.9 inch E-Ink display */ HELTEC_VISION_MASTER_E290 = 68; - + /* * Heltec Mesh Node T114 board with nRF52840 CPU, and a 1.14 inch TFT display, Ultimate low-power design, * specifically adapted for the Meshtatic project @@ -594,7 +594,7 @@ enum HardwareModel { * Seeed studio T1000-E tracker card. NRF52840 w/ LR1110 radio, GPS, button, buzzer, and sensors. */ TRACKER_T1000_E = 71; - + /* * RAK3172 STM32WLE5 Module (https://store.rakwireless.com/products/wisduo-lpwan-module-rak3172) */ @@ -626,7 +626,7 @@ enum HardwareModel { * */ RP2040_FEATHER_RFM95 = 76; - + /* M5 esp32 based MCU modules with enclosure, TFT and LORA Shields. All Variants (Basic, Core, Fire, Core2, CoreS3, Paper) https://m5stack.com/ */ M5STACK_COREBASIC = 77; M5STACK_CORE2 = 78; @@ -636,7 +636,7 @@ enum HardwareModel { /* M5 esp32 based MCU modules with enclosure, TFT and LORA Shields. All Variants (Basic, Core, Fire, Core2, CoreS3, Paper) https://m5stack.com/ */ M5STACK_CORES3 = 80; - + /* Seeed XIAO S3 DK*/ SEEED_XIAO_S3 = 81; @@ -1101,12 +1101,12 @@ message MeshPacket { /* * Higher priority for specific message types (portnums) to distinguish between other reliable packets. - */ + */ HIGH = 100; /* * Higher priority alert message used for critical alerts which take priority over other reliable packets. - */ + */ ALERT = 110; /* @@ -1271,7 +1271,7 @@ message MeshPacket { bool pki_encrypted = 17; /* - * Last byte of the node number of the node that should be used as the next hop in routing. + * Last byte of the node number of the node that should be used as the next hop in routing. * Set by the firmware internally, clients are not supposed to set this. */ uint32 next_hop = 18; diff --git a/meshtastic/module_config.proto b/meshtastic/module_config.proto index aa30abc..4f18d5f 100644 --- a/meshtastic/module_config.proto +++ b/meshtastic/module_config.proto @@ -136,7 +136,7 @@ message ModuleConfig { * Whether in addition to sending it to MQTT and the PhoneAPI, our NeighborInfo should be transmitted over LoRa. * Note that this is not available on a channel with default key and name. */ - bool transmit_over_lora = 3; + bool transmit_over_lora = 3; } /* diff --git a/meshtastic/portnums.proto b/meshtastic/portnums.proto index c711afa..76df5db 100644 --- a/meshtastic/portnums.proto +++ b/meshtastic/portnums.proto @@ -229,4 +229,4 @@ enum PortNum { * Currently we limit port nums to no higher than this value */ MAX = 511; -} \ No newline at end of file +} diff --git a/meshtastic/powermon.proto b/meshtastic/powermon.proto index 5f65b51..dbb89b9 100644 --- a/meshtastic/powermon.proto +++ b/meshtastic/powermon.proto @@ -101,4 +101,4 @@ message PowerStressMessage { Opcode cmd = 1; float num_seconds = 2; -} \ No newline at end of file +} diff --git a/meshtastic/telemetry.proto b/meshtastic/telemetry.proto index 4b41edd..1285b70 100644 --- a/meshtastic/telemetry.proto +++ b/meshtastic/telemetry.proto @@ -72,7 +72,7 @@ message EnvironmentMetrics { */ optional float current = 6; - /* + /* * relative scale IAQ value as measured by Bosch BME680 . value 0-500. * Belongs to Air Quality but is not particle but VOC measurement. Other VOC values can also be put in here. */ @@ -143,12 +143,12 @@ message EnvironmentMetrics { * Rainfall in the last 24 hours in mm */ optional float rainfall_24h = 20; - + /* * Soil moisture measured (% 1-100) */ optional uint32 soil_moisture = 21; - + /* * Soil temperature measured (*C) */ @@ -253,7 +253,7 @@ message AirQualityMetrics { * 10.0um Particle Count */ optional uint32 particles_100um = 12; - + /* * 10.0um Particle Count */ @@ -281,7 +281,7 @@ message LocalStats { * Number of packets sent */ uint32 num_packets_tx = 4; - + /* * Number of packets received (both good and bad) */ @@ -500,17 +500,17 @@ enum TelemetrySensorType { * AMS TSL25911FN RGB Light Sensor */ TSL25911FN = 22; - + /* * AHT10 Integrated temperature and humidity sensor */ AHT10 = 23; /* - * DFRobot Lark Weather station (temperature, humidity, pressure, wind speed and direction) + * DFRobot Lark Weather station (temperature, humidity, pressure, wind speed and direction) */ DFROBOT_LARK = 24; - + /* * NAU7802 Scale Chip or compatible */ @@ -537,15 +537,15 @@ enum TelemetrySensorType { CUSTOM_SENSOR = 29; /* - * MAX30102 Pulse Oximeter and Heart-Rate Sensor + * MAX30102 Pulse Oximeter and Heart-Rate Sensor */ MAX30102 = 30; - + /* * MLX90614 non-contact IR temperature sensor */ MLX90614 = 31; - + /* * SCD40/SCD41 CO2, humidity, temperature sensor */ @@ -555,7 +555,7 @@ enum TelemetrySensorType { * ClimateGuard RadSens, radiation, Geiger-Muller Tube */ RADSENS = 33; - + /* * High accuracy current and voltage */ @@ -570,7 +570,7 @@ enum TelemetrySensorType { * Infineon DPS310 High accuracy pressure and temperature */ DPS310 = 36; - + /* * RAKWireless RAK12035 Soil Moisture Sensor Module */ From 72a2685709529e19a2e5a7155c1e91e599e06da8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20G=C3=B6ttgens?= Date: Sat, 15 Mar 2025 11:24:58 +0100 Subject: [PATCH 200/454] Thinknodes and T-ETH --- meshtastic/mesh.proto | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 0b5fa97..50ee9b8 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -680,6 +680,19 @@ enum HardwareModel { * Seeed XIAO nRF52840 + Wio SX1262 kit */ XIAO_NRF52_KIT = 88; + + /* + * Elecrow ThinkNode M1 & M2 + * https://www.elecrow.com/wiki/ThinkNode-M1_Transceiver_Device(Meshtastic)_Power_By_nRF52840.html + * https://www.elecrow.com/wiki/ThinkNode-M2_Transceiver_Device(Meshtastic)_Power_By_NRF52840.html (this actually uses ESP32-S3) + */ + THINKNODE_M1 = 89; + THINKNODE_M2 = 90; + + /* + * Lilygo T-ETH-Elite + */ + T-ETH-ELITE = 91; /* * ------------------------------------------------------------------------------------------------------------------------------------------ From 474a5286c90e6ffb2b7481f824a599cd7b188fea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20G=C3=B6ttgens?= Date: Sat, 15 Mar 2025 11:26:16 +0100 Subject: [PATCH 201/454] woopsie --- meshtastic/mesh.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 50ee9b8..7ce744c 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -692,7 +692,7 @@ enum HardwareModel { /* * Lilygo T-ETH-Elite */ - T-ETH-ELITE = 91; + T_ETH_ELITE = 91; /* * ------------------------------------------------------------------------------------------------------------------------------------------ From fbc8234432ecf2193f76a6d1693e7b9f3fc8e449 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20G=C3=B6ttgens?= Date: Fri, 21 Mar 2025 13:31:52 +0100 Subject: [PATCH 202/454] add HRI-3621 --- meshtastic/mesh.proto | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 7ce744c..2e15118 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -693,6 +693,11 @@ enum HardwareModel { * Lilygo T-ETH-Elite */ T_ETH_ELITE = 91; + + /* + * Heltec HRI-3621 industrial probe + */ + HELTEC_SENSOR_HUB = 92; /* * ------------------------------------------------------------------------------------------------------------------------------------------ From 306cdbf472bf769fb464bc3500411021658437ec Mon Sep 17 00:00:00 2001 From: Chris LaFlash Date: Tue, 25 Mar 2025 09:32:11 -0700 Subject: [PATCH 203/454] Add go_package path for nanopb.proto --- nanopb.proto | 1 + 1 file changed, 1 insertion(+) diff --git a/nanopb.proto b/nanopb.proto index 2f27e34..1c107c1 100644 --- a/nanopb.proto +++ b/nanopb.proto @@ -9,6 +9,7 @@ syntax = "proto2"; import "google/protobuf/descriptor.proto"; +option go_package = "github.com/meshtastic/go/generated"; option java_package = "fi.kapsi.koti.jpa.nanopb"; enum FieldType { From 6d7c9e618051455ad82e184bd3a7f2ad569944f7 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Wed, 26 Mar 2025 07:27:23 -0500 Subject: [PATCH 204/454] Add is_attended to User --- meshtastic/deviceonly.proto | 5 +++++ meshtastic/mesh.proto | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/meshtastic/deviceonly.proto b/meshtastic/deviceonly.proto index ea6ef25..a988478 100644 --- a/meshtastic/deviceonly.proto +++ b/meshtastic/deviceonly.proto @@ -94,6 +94,11 @@ message UserLite { * This is sent out to other nodes on the mesh to allow them to compute a shared secret key. */ bytes public_key = 7; + + /* + * Whether or not the node is attended by a User + */ + optional bool is_attended = 8; } message NodeInfoLite { diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 2e15118..3fb0840 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -781,6 +781,11 @@ message User { * This is sent out to other nodes on the mesh to allow them to compute a shared secret key. */ bytes public_key = 8; + + /* + * Whether or not the node is attended by a User + */ + optional bool is_attended = 9; } /* From f00e96f12da48abfa9a992f8b5546fd75a370250 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Fri, 28 Mar 2025 20:12:22 -0500 Subject: [PATCH 205/454] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 9e36197..f837862 100644 --- a/README.md +++ b/README.md @@ -14,3 +14,4 @@ The [Protobuf](https://developers.google.com/protocol-buffers) message definitio ## Stats ![Alt](https://repobeats.axiom.co/api/embed/47e9ee1d81d9c0fdd2b4b5b4c673adb1756f6db5.svg "Repobeats analytics image") + From 6da320326b9f6eda36478b967b5d4853fa1b6d97 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Sun, 30 Mar 2025 08:50:59 -0500 Subject: [PATCH 206/454] Add bluetooth config to excludes --- meshtastic/mesh.proto | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 2e15118..38a9ee0 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -2037,6 +2037,11 @@ enum ExcludedModules { * Paxcounter module */ PAXCOUNTER_CONFIG = 0x1000; + + /* + * Bluetooth module + */ + BLUETOOTH_CONFIG = 0x2000; } /* From 2d2ebcd1706469f7eadd17a6b6accab1c377eaa3 Mon Sep 17 00:00:00 2001 From: Hannes Fuchs Date: Sun, 30 Mar 2025 17:00:16 +0200 Subject: [PATCH 207/454] Fix comment description of CO2 telemetry value --- meshtastic/telemetry.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meshtastic/telemetry.proto b/meshtastic/telemetry.proto index 1285b70..3ca7d07 100644 --- a/meshtastic/telemetry.proto +++ b/meshtastic/telemetry.proto @@ -255,7 +255,7 @@ message AirQualityMetrics { optional uint32 particles_100um = 12; /* - * 10.0um Particle Count + * CO2 concentration in ppm */ optional uint32 co2 = 13; } From 484d002a52bc20fa9f91ebf1b216d585c5f93a1b Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Sun, 30 Mar 2025 19:27:40 -0500 Subject: [PATCH 208/454] Add bluetooth --- meshtastic/mesh.proto | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 38a9ee0..9023294 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -2039,9 +2039,14 @@ enum ExcludedModules { PAXCOUNTER_CONFIG = 0x1000; /* - * Bluetooth module + * Bluetooth config (not technically a module, but used to indicate bluetooth capabilities) */ BLUETOOTH_CONFIG = 0x2000; + + /* + * Network config (not technically a module, but used to indicate network capabilities) + */ + NETWORK_CONFIG = 0x4000; } /* From b772c713945a33aea94e6cff03880328e7c35589 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Thu, 3 Apr 2025 19:32:17 -0500 Subject: [PATCH 209/454] Reserved fried chicken HWMODEL --- meshtastic/mesh.proto | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 9023294..bcae1de 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -699,6 +699,11 @@ enum HardwareModel { */ HELTEC_SENSOR_HUB = 92; + /* + * Reserved Fried Chicken ID for future use + */ + RESERVED_FRIED_CHICKEN = 93; + /* * ------------------------------------------------------------------------------------------------------------------------------------------ * Reserved ID For developing private Ports. These will show up in live traffic sparsely, so we can use a high number. Keep it within 8 bits. From 5a5ab103d2f6aa071fca29417475681a2cec5dcf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20G=C3=B6ttgens?= Date: Mon, 7 Apr 2025 11:46:44 +0200 Subject: [PATCH 210/454] add existing 128x64 screen setting to protos (#672) --- meshtastic/config.proto | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/meshtastic/config.proto b/meshtastic/config.proto index 06a66b8..0e51cdd 100644 --- a/meshtastic/config.proto +++ b/meshtastic/config.proto @@ -603,17 +603,17 @@ message Config { */ enum OledType { /* - * Default / Auto + * Default / Autodetect */ OLED_AUTO = 0; /* - * Default / Auto + * Default / Autodetect */ OLED_SSD1306 = 1; /* - * Default / Auto + * Default / Autodetect */ OLED_SH1106 = 2; @@ -621,6 +621,11 @@ message Config { * Can not be auto detected but set by proto. Used for 128x128 screens */ OLED_SH1107 = 3; + + /* + * Can not be auto detected but set by proto. Used for 128x64 screens + */ + OLED_SH1107_128_64 = 4; } /* From f9aa5cfd08cf14917fce54e5ebc0441b35ce32b3 Mon Sep 17 00:00:00 2001 From: "Aaron.Lee" <32860565+Heltec-Aaron-Lee@users.noreply.github.com> Date: Wed, 9 Apr 2025 19:55:20 +0800 Subject: [PATCH 211/454] Add Heltec MeshPocket definition (#673) --- meshtastic/mesh.proto | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index bcae1de..893d5aa 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -703,6 +703,11 @@ enum HardwareModel { * Reserved Fried Chicken ID for future use */ RESERVED_FRIED_CHICKEN = 93; + + /* + * Heltec Magnetic Power Bank with Meshtastic compatible + */ + HELTEC_MESH_POCKET = 94; /* * ------------------------------------------------------------------------------------------------------------------------------------------ From b982b36dfab2e96b8f8be90af891c68ebf8790c2 Mon Sep 17 00:00:00 2001 From: dylanli Date: Wed, 16 Apr 2025 15:37:53 +0800 Subject: [PATCH 212/454] add seeed solar node defination (#675) --- meshtastic/mesh.proto | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 893d5aa..7cbee78 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -709,6 +709,11 @@ enum HardwareModel { */ HELTEC_MESH_POCKET = 94; + /* + * Seeed Solar Node + */ + SEEED_SOLAR_NODE = 95; + /* * ------------------------------------------------------------------------------------------------------------------------------------------ * Reserved ID For developing private Ports. These will show up in live traffic sparsely, so we can use a high number. Keep it within 8 bits. From 27fac39141d99fe727a0a1824c5397409b1aea75 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20G=C3=B6ttgens?= Date: Thu, 17 Apr 2025 12:04:32 +0200 Subject: [PATCH 213/454] add more hwid's --- meshtastic/mesh.proto | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 7cbee78..2af5d98 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -714,6 +714,16 @@ enum HardwareModel { */ SEEED_SOLAR_NODE = 95; + /* + * NomadStar Meteor Pro https://nomadstar.ch/ + */ + NOMADSTAR_METEOR_PRO = 96; + + /* + * Elecrow CrowPanel Advance models, ESP32-S3 and TFT with SX1262 radio plugin + */ + CROWPANEL = 97; + /* * ------------------------------------------------------------------------------------------------------------------------------------------ * Reserved ID For developing private Ports. These will show up in live traffic sparsely, so we can use a high number. Keep it within 8 bits. From 81c3153396cd05a45b5f0f8e8dedb9c783d2167e Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Tue, 29 Apr 2025 06:15:31 -0500 Subject: [PATCH 214/454] Add dsstore --- .gitignore | 1 + 1 file changed, 1 insertion(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e43b0f9 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.DS_Store From 280f9d1bf8390d9011a6001a1cf75415471715e9 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Sun, 4 May 2025 06:34:23 -0500 Subject: [PATCH 215/454] Name --- meshtastic/mesh.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 3fb0840..248e283 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -785,7 +785,7 @@ message User { /* * Whether or not the node is attended by a User */ - optional bool is_attended = 9; + bool is_unmessagable = 9; } /* From 5b3bbb8f6a538a3516982ef5ffa85bcd160d8a49 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Sun, 4 May 2025 08:36:40 -0500 Subject: [PATCH 216/454] VE.Direct serial mode --- meshtastic/module_config.proto | 3 +++ 1 file changed, 3 insertions(+) diff --git a/meshtastic/module_config.proto b/meshtastic/module_config.proto index 4f18d5f..50b4640 100644 --- a/meshtastic/module_config.proto +++ b/meshtastic/module_config.proto @@ -331,6 +331,9 @@ message ModuleConfig { CALTOPO = 5; // Ecowitt WS85 weather station WS85 = 6; + // VE.Direct is a serial protocol used by Victron Energy products + // https://beta.ivc.no/wiki/index.php/Victron_VE_Direct_DIY_Cable + VE_DIRECT = 7; } /* From ecdc0a53922a36d3272bd57bae3d6d2fd685e2e3 Mon Sep 17 00:00:00 2001 From: Alexander Begoon Date: Sat, 10 May 2025 00:35:39 +0200 Subject: [PATCH 217/454] Add MAX17261 lipo battery gauge --- meshtastic/telemetry.proto | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/meshtastic/telemetry.proto b/meshtastic/telemetry.proto index 3ca7d07..68b4e5d 100644 --- a/meshtastic/telemetry.proto +++ b/meshtastic/telemetry.proto @@ -575,6 +575,11 @@ enum TelemetrySensorType { * RAKWireless RAK12035 Soil Moisture Sensor Module */ RAK12035 = 37; + + /* + * MAX17261 lipo battery gauge + */ + MAX17261 = 38; } /* From d266887bb2197a448a62b792bb6f1785888730ad Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Mon, 12 May 2025 19:27:32 -0500 Subject: [PATCH 218/454] Add contact admin message --- meshtastic/admin.proto | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/meshtastic/admin.proto b/meshtastic/admin.proto index f4718c1..0c3e40b 100644 --- a/meshtastic/admin.proto +++ b/meshtastic/admin.proto @@ -397,6 +397,11 @@ message AdminMessage { */ bool commit_edit_settings = 65; + /* + * Add a contact (User) to the nodedb + */ + Contact add_contact = 66; + /* * Tell the node to factory reset config everything; all device state and configuration will be returned to factory defaults and BLE bonds will be cleared. */ @@ -472,3 +477,15 @@ message NodeRemoteHardwarePinsResponse { */ repeated NodeRemoteHardwarePin node_remote_hardware_pins = 1; } + +message Contact { + /* + * The node number of the contact + */ + uint32 node_num = 1; + + /* + * The User of the contact + */ + User user = 2; +} \ No newline at end of file From 816595c8bbdfc3b4388e11348ccd043294d58705 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Mon, 12 May 2025 19:46:27 -0500 Subject: [PATCH 219/454] Name it --- meshtastic/admin.proto | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/meshtastic/admin.proto b/meshtastic/admin.proto index 0c3e40b..b6fc552 100644 --- a/meshtastic/admin.proto +++ b/meshtastic/admin.proto @@ -400,7 +400,7 @@ message AdminMessage { /* * Add a contact (User) to the nodedb */ - Contact add_contact = 66; + SharedContact add_contact = 66; /* * Tell the node to factory reset config everything; all device state and configuration will be returned to factory defaults and BLE bonds will be cleared. @@ -478,7 +478,7 @@ message NodeRemoteHardwarePinsResponse { repeated NodeRemoteHardwarePin node_remote_hardware_pins = 1; } -message Contact { +message SharedContact { /* * The node number of the contact */ From 4239bfc2f8275acf97b378984a73619d10ab9550 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Wed, 14 May 2025 10:38:53 -0500 Subject: [PATCH 220/454] Remove attended --- meshtastic/deviceonly.proto | 5 ----- 1 file changed, 5 deletions(-) diff --git a/meshtastic/deviceonly.proto b/meshtastic/deviceonly.proto index a988478..ea6ef25 100644 --- a/meshtastic/deviceonly.proto +++ b/meshtastic/deviceonly.proto @@ -94,11 +94,6 @@ message UserLite { * This is sent out to other nodes on the mesh to allow them to compute a shared secret key. */ bytes public_key = 7; - - /* - * Whether or not the node is attended by a User - */ - optional bool is_attended = 8; } message NodeInfoLite { From ca6ea45b527d804ededab7804f70a7ee9fd64871 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Wed, 14 May 2025 10:40:52 -0500 Subject: [PATCH 221/454] Update mesh.proto --- meshtastic/mesh.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 248e283..df02247 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -783,7 +783,7 @@ message User { bytes public_key = 8; /* - * Whether or not the node is attended by a User + * Whether or not the node can be messaged */ bool is_unmessagable = 9; } From af475e647253cc677d4c46d24eb8f2b55e0e8bda Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Wed, 14 May 2025 10:44:33 -0500 Subject: [PATCH 222/454] Also add to UserLite --- meshtastic/deviceonly.proto | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/meshtastic/deviceonly.proto b/meshtastic/deviceonly.proto index ea6ef25..9c7a664 100644 --- a/meshtastic/deviceonly.proto +++ b/meshtastic/deviceonly.proto @@ -94,6 +94,11 @@ message UserLite { * This is sent out to other nodes on the mesh to allow them to compute a shared secret key. */ bytes public_key = 7; + + /* + * Whether or not the node can be messaged + */ + bool is_unmessagable = 9; } message NodeInfoLite { From 8cb3e62a0d35d470e3d5d9950c0f1d85ccb35b22 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Wed, 14 May 2025 13:23:41 -0500 Subject: [PATCH 223/454] Optional --- meshtastic/deviceonly.proto | 2 +- meshtastic/mesh.proto | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/meshtastic/deviceonly.proto b/meshtastic/deviceonly.proto index 9c7a664..3be781f 100644 --- a/meshtastic/deviceonly.proto +++ b/meshtastic/deviceonly.proto @@ -98,7 +98,7 @@ message UserLite { /* * Whether or not the node can be messaged */ - bool is_unmessagable = 9; + optional bool is_unmessagable = 9; } message NodeInfoLite { diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 02caaac..eedc872 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -810,7 +810,7 @@ message User { /* * Whether or not the node can be messaged */ - bool is_unmessagable = 9; + optional bool is_unmessagable = 9; } /* From bd3e8b2fc80c35c8bc92f55e8b1f3afa443f3027 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Wed, 14 May 2025 13:28:57 -0500 Subject: [PATCH 224/454] Explicit map report opt-in --- meshtastic/module_config.proto | 5 +++++ meshtastic/mqtt.proto | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/meshtastic/module_config.proto b/meshtastic/module_config.proto index 50b4640..06ca899 100644 --- a/meshtastic/module_config.proto +++ b/meshtastic/module_config.proto @@ -95,6 +95,11 @@ message ModuleConfig { * Bits of precision for the location sent (default of 32 is full precision). */ uint32 position_precision = 2; + + /* + * Whether we should report our location to the map + */ + optional bool should_report_location = 3; } /* diff --git a/meshtastic/mqtt.proto b/meshtastic/mqtt.proto index 2dbc820..00c2b2e 100644 --- a/meshtastic/mqtt.proto +++ b/meshtastic/mqtt.proto @@ -103,4 +103,9 @@ message MapReport { * Number of online nodes (heard in the last 2 hours) this node has in its list that were received locally (not via MQTT) */ uint32 num_online_local_nodes = 13; + + /* + * User has opted in to share their location (map report) with the mqtt server + */ + bool has_opted_in = 14; } From 1e507865aaab8cb686e0dda03a8f095fab6eca62 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Wed, 14 May 2025 13:31:31 -0500 Subject: [PATCH 225/454] Clarification --- meshtastic/mqtt.proto | 1 + 1 file changed, 1 insertion(+) diff --git a/meshtastic/mqtt.proto b/meshtastic/mqtt.proto index 00c2b2e..7cbf5d0 100644 --- a/meshtastic/mqtt.proto +++ b/meshtastic/mqtt.proto @@ -106,6 +106,7 @@ message MapReport { /* * User has opted in to share their location (map report) with the mqtt server + * Controlled by map_report.should_report_location */ bool has_opted_in = 14; } From a8da85a73f2a016b7c27b46adb3346db99373d78 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Wed, 14 May 2025 13:32:22 -0500 Subject: [PATCH 226/454] Clarification --- meshtastic/mqtt.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meshtastic/mqtt.proto b/meshtastic/mqtt.proto index 7cbf5d0..4edf0c4 100644 --- a/meshtastic/mqtt.proto +++ b/meshtastic/mqtt.proto @@ -108,5 +108,5 @@ message MapReport { * User has opted in to share their location (map report) with the mqtt server * Controlled by map_report.should_report_location */ - bool has_opted_in = 14; + bool has_opted_report_location = 14; } From 3a35144931d64674f7978a391d0358a8d8aa5dde Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Wed, 14 May 2025 14:13:12 -0500 Subject: [PATCH 227/454] Update module_config.proto --- meshtastic/module_config.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meshtastic/module_config.proto b/meshtastic/module_config.proto index 06ca899..588def6 100644 --- a/meshtastic/module_config.proto +++ b/meshtastic/module_config.proto @@ -99,7 +99,7 @@ message ModuleConfig { /* * Whether we should report our location to the map */ - optional bool should_report_location = 3; + bool should_report_location = 3; } /* From f76d353f383a2e5de43a6f08562e499706603fc3 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Wed, 14 May 2025 14:13:51 -0500 Subject: [PATCH 228/454] Update module_config.proto --- meshtastic/module_config.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meshtastic/module_config.proto b/meshtastic/module_config.proto index 588def6..e6c1694 100644 --- a/meshtastic/module_config.proto +++ b/meshtastic/module_config.proto @@ -97,7 +97,7 @@ message ModuleConfig { uint32 position_precision = 2; /* - * Whether we should report our location to the map + * Whether we have opted-in to report our location to the map */ bool should_report_location = 3; } From 4eb0aebaef1304a5516b6fa864cb4c55daed9147 Mon Sep 17 00:00:00 2001 From: Jonathan Bennett Date: Wed, 14 May 2025 16:58:20 -0500 Subject: [PATCH 229/454] Add Linux Host Metrics (#685) * Add Linux Host Metrics * Tweak to load values --- meshtastic/telemetry.options | 4 +++ meshtastic/telemetry.proto | 51 ++++++++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+) diff --git a/meshtastic/telemetry.options b/meshtastic/telemetry.options index a429c3e..f930bcd 100644 --- a/meshtastic/telemetry.options +++ b/meshtastic/telemetry.options @@ -10,3 +10,7 @@ *HealthMetrics.heart_bpm int_size:8 *HealthMetrics.spO2 int_size:8 + +*HostMetrics.load1 int_size:16 +*HostMetrics.load5 int_size:16 +*HostMetrics.load15 int_size:16 \ No newline at end of file diff --git a/meshtastic/telemetry.proto b/meshtastic/telemetry.proto index 68b4e5d..3e4af66 100644 --- a/meshtastic/telemetry.proto +++ b/meshtastic/telemetry.proto @@ -340,6 +340,52 @@ message LocalStats { optional float temperature = 3; } +/* + * Linux host metrics + */ +message HostMetrics { + /* + * Host system uptime + */ + uint32 uptime_seconds = 1; + + /* + * Host system free memory + */ + uint64 freemem_bytes = 2; + + /* + * Host system disk space free for / + */ + uint64 diskfree1_bytes = 3; + + /* + * Secondary system disk space free + */ + optional uint64 diskfree2_bytes = 4; + + /* + * Tertiary disk space free + */ + optional uint64 diskfree3_bytes = 5; + + /* + * Host system one minute load in 1/100ths + */ + uint32 load1 = 6; + + /* + * Host system five minute load in 1/100ths + */ + uint32 load5 = 7; + + /* + * Host system fifteen minute load in 1/100ths + */ + uint32 load15 = 8; +} + + /* * Types of Measurements the telemetry module is equipped to handle */ @@ -379,6 +425,11 @@ message Telemetry { * Health telemetry metrics */ HealthMetrics health_metrics = 7; + + /* + * Linux host metrics + */ + HostMetrics host_metrics = 8; } } From 490d0123b5357f058e26aba3652be805239967aa Mon Sep 17 00:00:00 2001 From: Jonathan Bennett Date: Sat, 17 May 2025 10:23:47 -0500 Subject: [PATCH 230/454] Add the user_string to HostMetrics (#686) --- meshtastic/telemetry.proto | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/meshtastic/telemetry.proto b/meshtastic/telemetry.proto index 3e4af66..06734ae 100644 --- a/meshtastic/telemetry.proto +++ b/meshtastic/telemetry.proto @@ -383,6 +383,12 @@ message HostMetrics { * Host system fifteen minute load in 1/100ths */ uint32 load15 = 8; + + /* + * Optional User-provided string for arbitrary host system information + * that doesn't make sense as a dedicated entry. + */ + optional string user_string = 9; } From 475694e62b0fdac3469abc15c6d66d05fc9ad69a Mon Sep 17 00:00:00 2001 From: Michael Cullen Date: Sat, 17 May 2025 17:27:03 +0200 Subject: [PATCH 231/454] Add PCT2075 sensor (#687) This is a temperature sensor --- meshtastic/telemetry.proto | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/meshtastic/telemetry.proto b/meshtastic/telemetry.proto index 06734ae..bfc64dc 100644 --- a/meshtastic/telemetry.proto +++ b/meshtastic/telemetry.proto @@ -637,6 +637,11 @@ enum TelemetrySensorType { * MAX17261 lipo battery gauge */ MAX17261 = 38; + + /* + * PCT2075 Temperature Sensor + */ + PCT2075 = 39; } /* From d8b709aa5da85959a80a06a6624761678a96f9c0 Mon Sep 17 00:00:00 2001 From: Jonathan Bennett Date: Sat, 17 May 2025 12:28:08 -0500 Subject: [PATCH 232/454] Add missed max_size for optional HostMetrics string (#688) --- meshtastic/telemetry.options | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/meshtastic/telemetry.options b/meshtastic/telemetry.options index f930bcd..3c7238a 100644 --- a/meshtastic/telemetry.options +++ b/meshtastic/telemetry.options @@ -13,4 +13,5 @@ *HostMetrics.load1 int_size:16 *HostMetrics.load5 int_size:16 -*HostMetrics.load15 int_size:16 \ No newline at end of file +*HostMetrics.load15 int_size:16 +*HostMetrics.user_string max_size:200 From 2b59c7f519ab895847e2cd6316abcd2a28ba4cfb Mon Sep 17 00:00:00 2001 From: Jonathan Bennett Date: Tue, 20 May 2025 18:22:37 -0500 Subject: [PATCH 233/454] add nodeinfo bool/bitfield for is_manually_validated --- meshtastic/deviceonly.proto | 6 ++++++ meshtastic/mesh.proto | 7 +++++++ 2 files changed, 13 insertions(+) diff --git a/meshtastic/deviceonly.proto b/meshtastic/deviceonly.proto index 3be781f..623532a 100644 --- a/meshtastic/deviceonly.proto +++ b/meshtastic/deviceonly.proto @@ -164,6 +164,12 @@ message NodeInfoLite { * Last byte of the node number of the node that should be used as the next hop to reach this node. */ uint32 next_hop = 12; + + /* + * Bitfield for storing booleans. + * LSB 0 is_manually_validated + */ + uint32 bitfield = 13; } /* diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index eedc872..c2c68b5 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -1459,6 +1459,13 @@ message NodeInfo { * Persists between NodeDB internal clean ups */ bool is_ignored = 11; + + /* + * True if node public key has been validated. + * Persists between NodeDB internal clean ups + * LSB 0 of the bitfield + */ + bool is_manually_validated = 12; } /* From 08d7a07a4a94bd2ecb7e73e1bc577ca84180b745 Mon Sep 17 00:00:00 2001 From: Jonathan Bennett Date: Tue, 20 May 2025 19:25:52 -0500 Subject: [PATCH 234/454] Better name for is_key_manually_verified --- meshtastic/deviceonly.proto | 2 +- meshtastic/mesh.proto | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/meshtastic/deviceonly.proto b/meshtastic/deviceonly.proto index 623532a..acde0f1 100644 --- a/meshtastic/deviceonly.proto +++ b/meshtastic/deviceonly.proto @@ -167,7 +167,7 @@ message NodeInfoLite { /* * Bitfield for storing booleans. - * LSB 0 is_manually_validated + * LSB 0 is_key_manually_verified */ uint32 bitfield = 13; } diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index c2c68b5..74898c3 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -1465,7 +1465,7 @@ message NodeInfo { * Persists between NodeDB internal clean ups * LSB 0 of the bitfield */ - bool is_manually_validated = 12; + bool is_key_manually_verified = 12; } /* From 117ea15f6fa5a3ce4eff707653fc2f6712fadd0f Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Tue, 20 May 2025 19:41:21 -0500 Subject: [PATCH 235/454] Update mesh.proto --- meshtastic/mesh.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 74898c3..6d7798f 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -1461,7 +1461,7 @@ message NodeInfo { bool is_ignored = 11; /* - * True if node public key has been validated. + * True if node public key has been verified. * Persists between NodeDB internal clean ups * LSB 0 of the bitfield */ From 657651891ad8040b2238b203882ad14064cbf091 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Sat, 24 May 2025 06:51:16 -0500 Subject: [PATCH 236/454] Add heap free and total to local stats telemetry message --- meshtastic/telemetry.proto | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/meshtastic/telemetry.proto b/meshtastic/telemetry.proto index bfc64dc..0f2400c 100644 --- a/meshtastic/telemetry.proto +++ b/meshtastic/telemetry.proto @@ -318,6 +318,16 @@ message LocalStats { * This will always be zero for ROUTERs/REPEATERs. If this number is high, some other node(s) is/are relaying faster than you. */ uint32 num_tx_relay_canceled = 11; + + /* + * Number of bytes used in the heap + */ + uint32 heap_total_bytes = 12; + + /* + * Number of bytes free in the heap + */ + uint32 heap_free_bytes = 13; } /* From 0b815a6f93064d6fef4eb86f830a9717fd92a5c7 Mon Sep 17 00:00:00 2001 From: Xavier horwood <39760456+Xavierhorwood@users.noreply.github.com> Date: Wed, 28 May 2025 02:37:07 +1000 Subject: [PATCH 237/454] Add Ipv6 Option (#692) --- meshtastic/config.proto | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/meshtastic/config.proto b/meshtastic/config.proto index 0e51cdd..c2a4df2 100644 --- a/meshtastic/config.proto +++ b/meshtastic/config.proto @@ -521,6 +521,11 @@ message Config { */ uint32 enabled_protocols = 10; + /* + * Enable/Disable ipv6 support + */ + bool ipv6_enabled = 11; + /* * Available flags auxiliary network protocols */ From deff1ca54eb7ae8f1d63370b5d0698de3f6d9bc6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20G=C3=B6ttgens?= Date: Tue, 27 May 2025 21:34:41 +0200 Subject: [PATCH 238/454] new HWID's --- meshtastic/mesh.proto | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 6d7798f..da5a0f4 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -724,6 +724,21 @@ enum HardwareModel { */ CROWPANEL = 97; + /* + * "Lilygo" LINK32 board with sensors + */ + LINK_32 = 98; + + /* + * Seeed Tracker L1 + */ + SEEED_TRACKER_L1 = 99; + + /* + * Seeed Tracker L1 EINK driver + */ + SEEED_TRACKER_L1_EINK = 100; + /* * ------------------------------------------------------------------------------------------------------------------------------------------ * Reserved ID For developing private Ports. These will show up in live traffic sparsely, so we can use a high number. Keep it within 8 bits. From 7a256cad538b60e1e8252b624419d1b901c16801 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20G=C3=B6ttgens?= Date: Tue, 27 May 2025 22:06:12 +0200 Subject: [PATCH 239/454] Update meshtastic/mesh.proto Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- meshtastic/mesh.proto | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index da5a0f4..0fdd3f9 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -724,17 +724,17 @@ enum HardwareModel { */ CROWPANEL = 97; - /* + /** * "Lilygo" LINK32 board with sensors */ LINK_32 = 98; - /* + /** * Seeed Tracker L1 */ SEEED_TRACKER_L1 = 99; - /* + /** * Seeed Tracker L1 EINK driver */ SEEED_TRACKER_L1_EINK = 100; From fa4d98594cacd590fb55c78e8302f8ede43f1648 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20G=C3=B6ttgens?= Date: Tue, 27 May 2025 22:06:41 +0200 Subject: [PATCH 240/454] Update meshtastic/mesh.proto Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- meshtastic/mesh.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 0fdd3f9..75aa949 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -725,7 +725,7 @@ enum HardwareModel { CROWPANEL = 97; /** - * "Lilygo" LINK32 board with sensors + * Lilygo LINK32 board with sensors */ LINK_32 = 98; From 4a108827a9712d7b40254e5bd533b7d929fdd490 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20G=C3=B6ttgens?= Date: Tue, 27 May 2025 22:18:06 +0200 Subject: [PATCH 241/454] Add another one --- meshtastic/mesh.proto | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 75aa949..4ceea69 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -738,6 +738,11 @@ enum HardwareModel { * Seeed Tracker L1 EINK driver */ SEEED_TRACKER_L1_EINK = 100; + + /* + * Reserved ID for future and past use + */ + QWANTZ_TINY_ARMS = 101; /* * ------------------------------------------------------------------------------------------------------------------------------------------ From 0268354426b29af53dd891cb99217b42e3f1b43e Mon Sep 17 00:00:00 2001 From: Jonathan Bennett Date: Tue, 27 May 2025 15:33:19 -0500 Subject: [PATCH 242/454] Key validation messages (#690) * Add the transport messages for a key validation protocol --- meshtastic/admin.proto | 57 ++++++++++++++++++++++++++++++++++++++- meshtastic/mesh.options | 9 +++++++ meshtastic/mesh.proto | 44 ++++++++++++++++++++++++++++++ meshtastic/portnums.proto | 5 ++++ 4 files changed, 114 insertions(+), 1 deletion(-) diff --git a/meshtastic/admin.proto b/meshtastic/admin.proto index b6fc552..91fbb2b 100644 --- a/meshtastic/admin.proto +++ b/meshtastic/admin.proto @@ -402,6 +402,11 @@ message AdminMessage { */ SharedContact add_contact = 66; + /* + * Initiate or respond to a key verification request + */ + KeyVerificationAdmin key_verification = 67; + /* * Tell the node to factory reset config everything; all device state and configuration will be returned to factory defaults and BLE bonds will be cleared. */ @@ -488,4 +493,54 @@ message SharedContact { * The User of the contact */ User user = 2; -} \ No newline at end of file +} + + /* + * This message is used by a client to initiate or complete a key verification + */ +message KeyVerificationAdmin { + /* + * Three stages of this request. + */ + enum MessageType { + + /* + * This is the first stage, where a client initiates + */ + INITIATE_VERIFICATION = 0; + + /* + * After the nonce has been returned over the mesh, the client prompts for the security number + * And uses this message to provide it to the node. + */ + PROVIDE_SECURITY_NUMBER = 1; + + /* + * Once the user has compared the verification message, this message notifies the node. + */ + DO_VERIFY = 2; + + /* + * This is the cancel path, can be taken at any point + */ + DO_NOT_VERIFY = 3; + + } + + MessageType message_type = 1; + + /* + * The nodenum we're requesting + */ + uint32 remote_nodenum = 2; + + /* + * The nonce is used to track the connection + */ + uint64 nonce = 3; + + /* + * The 4 digit code generated by the remote node, and communicated outside the mesh + */ + optional uint32 security_number = 4; +} diff --git a/meshtastic/mesh.options b/meshtastic/mesh.options index e2c905d..49dd597 100644 --- a/meshtastic/mesh.options +++ b/meshtastic/mesh.options @@ -58,6 +58,15 @@ *ClientNotification.message max_size:400 +*KeyVerificationNumberInform.remote_longname max_size:40 +*KeyVerificationNumberRequest.remote_longname max_size:40 +*KeyVerificationFinal.remote_longname max_size:40 +*KeyVerificationFinal.verification_characters max_size:10 + +*KeyVerification.hash1 max_size:32 +*KeyVerification.hash2 max_size:32 + + # MyMessage.name max_size:40 # or fixed_length or fixed_count, or max_count diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 6d7798f..dffdf98 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -1011,6 +1011,28 @@ message Data { optional uint32 bitfield = 9; } +/* + * The actual over-the-mesh message doing KeyVerification + */ +message KeyVerification { + + /* + * random value Selected by the requesting node + */ + uint64 nonce = 1; + + /* + * The final authoritative hash, only to be sent by NodeA at the end of the handshake + */ + bytes hash1 = 2; + + /* + * The intermediary hash (actually derived from hash1), + * sent from NodeB to NodeA in response to the initial message. + */ + bytes hash2 = 3; +} + /* * Waypoint message, used to share arbitrary locations across the mesh */ @@ -1800,6 +1822,28 @@ message ClientNotification { * The message body of the notification */ string message = 4; + + oneof payload_variant { + KeyVerificationNumberInform key_verification_number_inform = 11; + KeyVerificationNumberRequest key_verification_number_request = 12; + KeyVerificationFinal key_verification_final = 13; + } +} + +message KeyVerificationNumberInform { + uint64 nonce = 1; + string remote_longname = 2; + uint32 security_number = 3; +} +message KeyVerificationNumberRequest { + uint64 nonce = 1; + string remote_longname = 2; +} +message KeyVerificationFinal { + uint64 nonce = 1; + string remote_longname = 2; + bool isSender = 3; + string verification_characters = 4; } /* diff --git a/meshtastic/portnums.proto b/meshtastic/portnums.proto index 76df5db..0203392 100644 --- a/meshtastic/portnums.proto +++ b/meshtastic/portnums.proto @@ -110,6 +110,11 @@ enum PortNum { */ ALERT_APP = 11; + /* + * Module/port for handling key verification requests. + */ + KEY_VERIFICATION_APP = 12; + /* * Provides a 'ping' service that replies to any packet it receives. * Also serves as a small example module. From 24c7a3d287a4bd269ce191827e5dabd8ce8f57a7 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Wed, 28 May 2025 06:13:31 -0500 Subject: [PATCH 243/454] WIO --- meshtastic/mesh.proto | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 2010853..4472934 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -732,12 +732,12 @@ enum HardwareModel { /** * Seeed Tracker L1 */ - SEEED_TRACKER_L1 = 99; + SEEED_WIO_TRACKER_L1 = 99; /** * Seeed Tracker L1 EINK driver */ - SEEED_TRACKER_L1_EINK = 100; + SEEED_WIO_TRACKER_L1_EINK = 100; /* * Reserved ID for future and past use From f9927457f6d69c15ba02a0c58e5bad34a1b32377 Mon Sep 17 00:00:00 2001 From: mverch67 Date: Thu, 5 Jun 2025 18:06:04 +0200 Subject: [PATCH 244/454] bulgarian language support --- meshtastic/device_ui.proto | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/meshtastic/device_ui.proto b/meshtastic/device_ui.proto index 138f5e8..1b11ada 100644 --- a/meshtastic/device_ui.proto +++ b/meshtastic/device_ui.proto @@ -278,6 +278,11 @@ enum Language { */ UKRAINIAN = 16; + /* + * Bulgarian + */ + BULGARIAN = 17; + /* * Simplified Chinese (experimental) */ From 81c4d4864361770a55320cb51c7a809fac637722 Mon Sep 17 00:00:00 2001 From: mverch67 Date: Thu, 5 Jun 2025 18:16:24 +0200 Subject: [PATCH 245/454] add T-Deck Pro and TLora Pager HW model IDs --- meshtastic/mesh.proto | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 4472934..ea183b8 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -744,6 +744,16 @@ enum HardwareModel { */ QWANTZ_TINY_ARMS = 101; + /** + * Lilygo T-Deck Pro + */ + T_DECK_PRO = 102; + + /** + * Lilygo TLora Pager + */ + T_LORA_PAGER = 103; + /* * ------------------------------------------------------------------------------------------------------------------------------------------ * Reserved ID For developing private Ports. These will show up in live traffic sparsely, so we can use a high number. Keep it within 8 bits. From 758115714f2f6989c9e8378e59e0e70eeb5c6895 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Sat, 7 Jun 2025 06:32:08 -0500 Subject: [PATCH 246/454] Added buzzer mode --- meshtastic/config.proto | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/meshtastic/config.proto b/meshtastic/config.proto index c2a4df2..48b77f0 100644 --- a/meshtastic/config.proto +++ b/meshtastic/config.proto @@ -150,6 +150,36 @@ message Config { CORE_PORTNUMS_ONLY = 5; } + /* + * Defines buzzer behavior for audio feedback + */ + enum BuzzerMode { + /* + * Default behavior. + * Buzzer is enabled for all audio feedback including button presses and alerts. + */ + ALL_ENABLED = 0; + + /* + * Disabled. + * All buzzer audio feedback is disabled. + */ + DISABLED = 1; + + /* + * Notifications Only. + * Buzzer is enabled only for notifications and alerts, but not for button presses. + * External notification config determines the specifics of the notification behavior. + */ + NOTIFICATIONS_ONLY = 2; + + /* + * Non-notification system buzzer tones only. + * Buzzer is enabled only for non-notification tones such as button presses, startup, shutdown, but not for alerts. + */ + SYSTEM_ONLY = 3; + } + /* * Sets the role of node */ @@ -210,6 +240,12 @@ message Config { * If true, disable the default blinking LED (LED_PIN) behavior on the device */ bool led_heartbeat_disabled = 12; + + /* + * Controls buzzer behavior for audio feedback + * Defaults to ENABLED + */ + BuzzerMode buzzer_mode = 13; } /* From abd60b70f0306697ea2cf82a873bf5748bc65e5f Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Sat, 7 Jun 2025 06:33:59 -0500 Subject: [PATCH 247/454] Annotation --- meshtastic/config.options | 2 ++ 1 file changed, 2 insertions(+) diff --git a/meshtastic/config.options b/meshtastic/config.options index 9310cf0..3f6d81c 100644 --- a/meshtastic/config.options +++ b/meshtastic/config.options @@ -1,5 +1,7 @@ # longest current is 45 chars, plan with a bit of buffer *DeviceConfig.tzdef max_size:65 +*DeviceConfig.buzzer_mode int_size:8 + *NetworkConfig.wifi_ssid max_size:33 *NetworkConfig.wifi_psk max_size:65 From 7c7621a39b7eff216c87da5a7b0beeea1462a60f Mon Sep 17 00:00:00 2001 From: csrutil Date: Sun, 8 Jun 2025 16:29:12 +0800 Subject: [PATCH 248/454] add protobufs for GAT562 Mesh Trial Tracker --- meshtastic/mesh.proto | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index ea183b8..03162d8 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -754,6 +754,11 @@ enum HardwareModel { */ T_LORA_PAGER = 103; + /** + * GAT562 Mesh Trial Tracker + */ + GAT562_MESH_TRIAL_TRACKER = 104; + /* * ------------------------------------------------------------------------------------------------------------------------------------------ * Reserved ID For developing private Ports. These will show up in live traffic sparsely, so we can use a high number. Keep it within 8 bits. From 9468fa39801b6e53143a7079d8e7ae0680ab1590 Mon Sep 17 00:00:00 2001 From: Jonathan Bennett Date: Wed, 11 Jun 2025 12:39:51 -0500 Subject: [PATCH 249/454] Add blank messages for ClientNotification oneof --- meshtastic/mesh.proto | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 03162d8..e58c22c 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -1862,6 +1862,8 @@ message ClientNotification { KeyVerificationNumberInform key_verification_number_inform = 11; KeyVerificationNumberRequest key_verification_number_request = 12; KeyVerificationFinal key_verification_final = 13; + DuplicatedPublicKey duplicated_public_key = 14; + LowEntropyKey low_entropy_key = 15; } } @@ -1880,7 +1882,8 @@ message KeyVerificationFinal { bool isSender = 3; string verification_characters = 4; } - +message DuplicatedPublicKey {} +message LowEntropyKey {} /* * Individual File info for the device */ From f7824eb09df989dde7537202043d20efdc6074bb Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Wed, 11 Jun 2025 17:27:19 -0500 Subject: [PATCH 250/454] Implement send_input_event --- meshtastic/admin.options | 5 +++++ meshtastic/admin.proto | 29 +++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/meshtastic/admin.options b/meshtastic/admin.options index 022c4fd..0e2df37 100644 --- a/meshtastic/admin.options +++ b/meshtastic/admin.options @@ -2,6 +2,11 @@ *AdminMessage.session_passkey max_size:8 +*InputEvent.event_code max_size:8 +*InputEvent.kb_char max_size:8 +*InputEvent.touch_x max_size:16 +*InputEvent.touch_y max_size:16 + *AdminMessage.set_canned_message_module_messages max_size:201 *AdminMessage.get_canned_message_module_messages_response max_size:201 *AdminMessage.delete_file_request max_size:201 diff --git a/meshtastic/admin.proto b/meshtastic/admin.proto index 91fbb2b..227ba49 100644 --- a/meshtastic/admin.proto +++ b/meshtastic/admin.proto @@ -166,6 +166,28 @@ message AdminMessage { SD = 1; } + /* + * Input event message to be sent to the node. + */ + message InputEvent { + /* + * The input event code + */ + uint32 event_code = 1; + /* + * Keyboard character code + */ + uint32 kb_char = 2; + /* + * The touch X coordinate + */ + uint32 touch_x = 3; + /* + * The touch Y coordinate + */ + uint32 touch_y = 4; + } + /* * TODO: REPLACE */ @@ -296,6 +318,13 @@ message AdminMessage { * Remove backups of the node's preferences */ BackupLocation remove_backup_preferences = 26; + + /* + * Send an input event to the node. + * This is used to trigger phyiscal input events like button presses, touch events, etc. + */ + InputEvent send_input_event = 27; + /* * Set the owner for this node */ From 20510c79b42bea5af76f0427c351547853c7709f Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Wed, 11 Jun 2025 18:58:40 -0500 Subject: [PATCH 251/454] Update meshtastic/admin.options Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- meshtastic/admin.options | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meshtastic/admin.options b/meshtastic/admin.options index 0e2df37..f3db113 100644 --- a/meshtastic/admin.options +++ b/meshtastic/admin.options @@ -3,7 +3,7 @@ *AdminMessage.session_passkey max_size:8 *InputEvent.event_code max_size:8 -*InputEvent.kb_char max_size:8 +*AdminMessage.InputEvent.kb_char max_size:8 *InputEvent.touch_x max_size:16 *InputEvent.touch_y max_size:16 From 3d345339354597af324e330ceca6bc3be06596f6 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Wed, 11 Jun 2025 18:59:12 -0500 Subject: [PATCH 252/454] Update meshtastic/admin.options Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- meshtastic/admin.options | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meshtastic/admin.options b/meshtastic/admin.options index f3db113..43ac44c 100644 --- a/meshtastic/admin.options +++ b/meshtastic/admin.options @@ -5,7 +5,7 @@ *InputEvent.event_code max_size:8 *AdminMessage.InputEvent.kb_char max_size:8 *InputEvent.touch_x max_size:16 -*InputEvent.touch_y max_size:16 +*AdminMessage.InputEvent.touch_y max_size:16 *AdminMessage.set_canned_message_module_messages max_size:201 *AdminMessage.get_canned_message_module_messages_response max_size:201 From 07eb2a85abdd0ee00713be573aa285c233f56c50 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Wed, 11 Jun 2025 18:59:36 -0500 Subject: [PATCH 253/454] Update admin.options --- meshtastic/admin.options | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/meshtastic/admin.options b/meshtastic/admin.options index 43ac44c..2f54135 100644 --- a/meshtastic/admin.options +++ b/meshtastic/admin.options @@ -2,9 +2,9 @@ *AdminMessage.session_passkey max_size:8 -*InputEvent.event_code max_size:8 +*AdminMessage.InputEvent.event_code max_size:8 *AdminMessage.InputEvent.kb_char max_size:8 -*InputEvent.touch_x max_size:16 +*AdminMessage.InputEvent.touch_x max_size:16 *AdminMessage.InputEvent.touch_y max_size:16 *AdminMessage.set_canned_message_module_messages max_size:201 From 579578394cf584ae6ee78df47fe3f8625d19d27e Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Wed, 11 Jun 2025 19:07:05 -0500 Subject: [PATCH 254/454] Update meshtastic/admin.proto Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- meshtastic/admin.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meshtastic/admin.proto b/meshtastic/admin.proto index 227ba49..f9e73b2 100644 --- a/meshtastic/admin.proto +++ b/meshtastic/admin.proto @@ -321,7 +321,7 @@ message AdminMessage { /* * Send an input event to the node. - * This is used to trigger phyiscal input events like button presses, touch events, etc. + * This is used to trigger physical input events like button presses, touch events, etc. */ InputEvent send_input_event = 27; From 0c112881dfb4aa24a61ee55dd4c46abbfc093717 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Wed, 11 Jun 2025 19:10:00 -0500 Subject: [PATCH 255/454] Int size --- meshtastic/admin.options | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/meshtastic/admin.options b/meshtastic/admin.options index 2f54135..4a28ff2 100644 --- a/meshtastic/admin.options +++ b/meshtastic/admin.options @@ -2,10 +2,10 @@ *AdminMessage.session_passkey max_size:8 -*AdminMessage.InputEvent.event_code max_size:8 -*AdminMessage.InputEvent.kb_char max_size:8 -*AdminMessage.InputEvent.touch_x max_size:16 -*AdminMessage.InputEvent.touch_y max_size:16 +*AdminMessage.InputEvent.event_code int_size:8 +*AdminMessage.InputEvent.kb_char int_size:8 +*AdminMessage.InputEvent.touch_x int_size:16 +*AdminMessage.InputEvent.touch_y int_size:16 *AdminMessage.set_canned_message_module_messages max_size:201 *AdminMessage.get_canned_message_module_messages_response max_size:201 From 9ccc49deaff04df724003b68b5ad1edd4aa9c91d Mon Sep 17 00:00:00 2001 From: Tom Fifield Date: Sat, 14 Jun 2025 10:29:43 +1000 Subject: [PATCH 256/454] As reported by @monkeypants, the MY_433 region is not legal in ANZ due to power limits being too high. This patch introduced an ANZ_433 region to match the requirements in Australia and New Zealand. 433.05 - 434.79 MHz, 25mW EIRP max, No duty cycle restrictions AU Low Interference Potential https://www.acma.gov.au/licences/low-interference-potential-devices-lipd-class-licence NZ General User Radio Licence for Short Range Devices https://gazette.govt.nz/notice/id/2022-go3100 Fixes https://github.com/meshtastic/firmware/issues/7032 --- meshtastic/config.proto | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/meshtastic/config.proto b/meshtastic/config.proto index 48b77f0..d587207 100644 --- a/meshtastic/config.proto +++ b/meshtastic/config.proto @@ -911,6 +911,11 @@ message Config { * Philippines 915mhz */ PH_915 = 21; + /* + * Australia / New Zealand 433MHz + */ + ANZ_433 = 22; + } /* From a1cc3e697d826ba3b00182aa8eaa4d6a521b13e7 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Sun, 15 Jun 2025 06:23:36 -0500 Subject: [PATCH 257/454] Add ability to block Shared contacts --- meshtastic/admin.proto | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/meshtastic/admin.proto b/meshtastic/admin.proto index f9e73b2..c93a964 100644 --- a/meshtastic/admin.proto +++ b/meshtastic/admin.proto @@ -522,6 +522,11 @@ message SharedContact { * The User of the contact */ User user = 2; + + /* + * Add this contact to the blocked / ignored list + */ + bool should_ignore = 3; } /* From 8d3870241b8cb2d3858e23eee02fab2c0454a2b2 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Thu, 19 Jun 2025 18:26:10 -0500 Subject: [PATCH 258/454] Update README.md --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index f837862..9e36197 100644 --- a/README.md +++ b/README.md @@ -14,4 +14,3 @@ The [Protobuf](https://developers.google.com/protocol-buffers) message definitio ## Stats ![Alt](https://repobeats.axiom.co/api/embed/47e9ee1d81d9c0fdd2b4b5b4c673adb1756f6db5.svg "Repobeats analytics image") - From 6791138f0ba2b7c471072bd4bba6cbb8bacffe2d Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Fri, 20 Jun 2025 19:31:33 -0500 Subject: [PATCH 259/454] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 9e36197..f837862 100644 --- a/README.md +++ b/README.md @@ -14,3 +14,4 @@ The [Protobuf](https://developers.google.com/protocol-buffers) message definitio ## Stats ![Alt](https://repobeats.axiom.co/api/embed/47e9ee1d81d9c0fdd2b4b5b4c673adb1756f6db5.svg "Repobeats analytics image") + From 386fa53c1596c8dfc547521f08df107f4cb3a275 Mon Sep 17 00:00:00 2001 From: oscgonfer Date: Wed, 25 Jun 2025 20:05:19 +0200 Subject: [PATCH 260/454] Add ADS1X15 voltage metrics (#711) * Add ADS1X15 voltage metrics * Add 8 channels to allow for daisy chaining of ADS1X15 --- meshtastic/telemetry.proto | 55 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/meshtastic/telemetry.proto b/meshtastic/telemetry.proto index 0f2400c..2631644 100644 --- a/meshtastic/telemetry.proto +++ b/meshtastic/telemetry.proto @@ -188,6 +188,56 @@ message PowerMetrics { * Current (Ch3) */ optional float ch3_current = 6; + + /* + * Voltage (Ch4) + */ + optional float ch4_voltage = 7; + + /* + * Current (Ch4) + */ + optional float ch4_current = 8; + + /* + * Voltage (Ch5) + */ + optional float ch5_voltage = 9; + + /* + * Current (Ch5) + */ + optional float ch5_current = 10; + + /* + * Voltage (Ch6) + */ + optional float ch6_voltage = 11; + + /* + * Current (Ch6) + */ + optional float ch6_current = 12; + + /* + * Voltage (Ch7) + */ + optional float ch7_voltage = 13; + + /* + * Current (Ch7) + */ + optional float ch7_current = 14; + + /* + * Voltage (Ch8) + */ + optional float ch8_voltage = 15; + + /* + * Current (Ch8) + */ + optional float ch8_current = 16; } /* @@ -652,6 +702,11 @@ enum TelemetrySensorType { * PCT2075 Temperature Sensor */ PCT2075 = 39; + + /* + * ADS1X15 ADC + */ + ADS1X15 = 40; } /* From efd4d5c5535c84611e3dd0d54018fe3b1ddb7e6c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20G=C3=B6ttgens?= Date: Thu, 26 Jun 2025 15:12:24 +0200 Subject: [PATCH 261/454] bring back port 77 accidentally removed --- meshtastic/portnums.proto | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/meshtastic/portnums.proto b/meshtastic/portnums.proto index 0203392..e388a6f 100644 --- a/meshtastic/portnums.proto +++ b/meshtastic/portnums.proto @@ -217,6 +217,13 @@ enum PortNum { */ RETICULUM_TUNNEL_APP = 76; + /* + * App for transporting Cayenne Low Power Payload, popular for LoRaWAN sensor nodes. Offers ability to send + * arbitrary telemetry over meshtastic that is not covered by telemetry.proto + * ENCODING: CayenneLLP + */ + CAYENNE_APP = 77; + /* * Private applications should use portnums >= 256. * To simplify initial development and testing you can use "PRIVATE_APP" From 1d05974fe41c9e1d1938c6181c26703654e3de3a Mon Sep 17 00:00:00 2001 From: "Daniel.Cao" <144674500+DanielCao0@users.noreply.github.com> Date: Thu, 26 Jun 2025 21:23:52 +0800 Subject: [PATCH 262/454] feat: add support for RAKwireless wiscore RAK3312 and Wismeshtag (#714) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add RAKwireless hardware models 1.RAK3112 2.Wismeshtag * Rename RAKwireless RAK3112 to RAK3312 in HardwareModel enum * keep ID's in sequence --------- Co-authored-by: Daniel.Cao Co-authored-by: Thomas Göttgens --- meshtastic/mesh.proto | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index e58c22c..bf0d6d6 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -758,6 +758,18 @@ enum HardwareModel { * GAT562 Mesh Trial Tracker */ GAT562_MESH_TRIAL_TRACKER = 104; + + /** + * RAKwireless WisMesh Tag + */ + WISMESH_TAG = 105; + + /** + * RAKwireless WisBlock Core RAK3312 https://docs.rakwireless.com/product-categories/wisduo/rak3112-module/overview/ + */ + RAK3312 = 106; + + /* * ------------------------------------------------------------------------------------------------------------------------------------------ From 2097da996c74a666fe5a35658128cf61f2944b0e Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Thu, 26 Jun 2025 19:35:59 -0500 Subject: [PATCH 263/454] Update regarding hw_model policies --- .github/pull_request_template.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 6eba5cc..5908107 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -10,3 +10,21 @@ - [ ] All top level messages commented - [ ] All enum members have unique descriptions + + +### New Hardware Model Acceptance Policy + +Due to limited availability and ongoing support, new Hardware Models will only be accepted by [Meshtastic Backers and Partners](https://meshtastic.com/). The Meshtastic team reserves the right to make exceptions to this policy. + +#### Alternative for Community Contributors + +You are welcome to use one of the existing DIY hardware models in your PlatformIO environment and create a pull request in the firmware project. Please note the following conditions: + +- The device will **not** be officially supported by the core Meshtastic team. +- The device will **not** appear in the [Web Flasher](https://flasher.meshtastic.org/) or Github release assets. +- You will be responsible for ongoing maintenance and support. +- Community-contributed / DIY hardware models are considered experimental and will likely have limited or no testing. + +#### Getting Official Support + +To have your hardware model officially supported and included in the Meshtastic ecosystem, consider becoming a Meshtastic Backer or Partner. Visit [meshtastic.com](https://meshtastic.com/) for more information about partnership opportunities. From 32e442a6882916cecb0462727b3aedfed5122b57 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Tue, 1 Jul 2025 20:11:29 -0500 Subject: [PATCH 264/454] Base UI display config settings --- meshtastic/device_ui.options | 3 ++- meshtastic/device_ui.proto | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/meshtastic/device_ui.options b/meshtastic/device_ui.options index 5aa61d0..67bee23 100644 --- a/meshtastic/device_ui.options +++ b/meshtastic/device_ui.options @@ -2,9 +2,10 @@ *DeviceUIConfig.screen_timeout int_size:16 *DeviceUIConfig.ring_tone_id int_size:8 *DeviceUIConfig.calibration_data max_size:16 +*DeviceUIConfig.compass_mode int_size:8 *NodeFilter.node_name max_size:16 *NodeFilter.hops_away int_size:8 *NodeFilter.channel int_size:8 *NodeHighlight.node_name max_size:16 *GeoPoint.zoom int_size:8 -*Map.style max_size:20 +*Map.style max_size:20 \ No newline at end of file diff --git a/meshtastic/device_ui.proto b/meshtastic/device_ui.proto index 1b11ada..b943600 100644 --- a/meshtastic/device_ui.proto +++ b/meshtastic/device_ui.proto @@ -71,6 +71,23 @@ message DeviceUIConfig { * Map related data */ Map map_data = 15; + + /* + * Compass mode + */ + CompassMode compass_mode = 16; + + /* + * RGB color for BaseUI + * 0xRRGGBB format, e.g. 0xFF0000 for red + */ + uint32 screen_rgb_color = 17; + + /* + * Clockface analog style + * true for analog clockface, false for digital clockface + */ + bool is_clockface_analog = 18; } @@ -174,6 +191,23 @@ message Map { bool follow_gps = 3; } +enum CompassMode { + /* + * Compass with dynamic ring and heading + */ + DYNAMIC = 0; + + /* + * Compass with fixed ring and heading + */ + FIXED_RING = 1; + + /* + * Compass with heading and freeze option + */ + FREEZE_HEADING = 2; +} + enum Theme { /* * Dark From 7069b8570dc6108d8972d18df6933d50941b133f Mon Sep 17 00:00:00 2001 From: oscgonfer Date: Wed, 2 Jul 2025 11:06:53 +0200 Subject: [PATCH 265/454] Add CO2 sensor temperature and relative humidity --- meshtastic/telemetry.proto | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/meshtastic/telemetry.proto b/meshtastic/telemetry.proto index 2631644..c39a586 100644 --- a/meshtastic/telemetry.proto +++ b/meshtastic/telemetry.proto @@ -308,6 +308,16 @@ message AirQualityMetrics { * CO2 concentration in ppm */ optional uint32 co2 = 13; + + /* + * CO2 sensor temperature in degC + */ + optional float co2_temperature = 14; + + /* + * CO2 sensor relative humidity in % + */ + optional float co2_humidity = 15; } /* From 95a1ea92301f8fe97c45d217f7aff850399524db Mon Sep 17 00:00:00 2001 From: rcarteraz Date: Wed, 2 Jul 2025 11:43:48 -0700 Subject: [PATCH 266/454] should be from, not by --- .github/pull_request_template.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 5908107..8db5e30 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -14,7 +14,7 @@ ### New Hardware Model Acceptance Policy -Due to limited availability and ongoing support, new Hardware Models will only be accepted by [Meshtastic Backers and Partners](https://meshtastic.com/). The Meshtastic team reserves the right to make exceptions to this policy. +Due to limited availability and ongoing support, new Hardware Models will only be accepted from [Meshtastic Backers and Partners](https://meshtastic.com/). The Meshtastic team reserves the right to make exceptions to this policy. #### Alternative for Community Contributors From 6c76e4ab61cde7353f6b5c33ef256480c7d4c99b Mon Sep 17 00:00:00 2001 From: Tom Fifield Date: Thu, 3 Jul 2025 11:20:41 +1000 Subject: [PATCH 267/454] Add Kazakhstan frequencies As reported by @KZ1R , Kazakhstan has frequencies in use for Lora devices that are not covered by our existing band selections. This adds * KZ_433 433.075 - 434.775 MHz <10 mW EIRP, Low Powered Devices (LPD) * KZ_863 863 - 868 MHz <25 mW EIRP, 500kHz channels allowed, must not be used at airfields Legal ref provided in https://github.com/meshtastic/firmware/issues/7204 and verified. https://www.gov.kz/memleket/entities/mdai/press/article/details/6128 Order of the Ministry of Investments and Development of the Republic of Kazakhstan No. 34 dated January 21, 2015. Published on 01 July 2024 19:03 Updated on 01 July 2024 Fixes https://github.com/meshtastic/firmware/issues/7204 --- meshtastic/config.proto | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/meshtastic/config.proto b/meshtastic/config.proto index d587207..acbc14e 100644 --- a/meshtastic/config.proto +++ b/meshtastic/config.proto @@ -915,6 +915,14 @@ message Config { * Australia / New Zealand 433MHz */ ANZ_433 = 22; + /* + * Kazakhstan 433MHz + */ + KZ_433 = 23; + /* + * Kazakhstan 863MHz + */ + KZ_863 = 24; } From 0302caa2bcdc15aee6f368fc57e78e0b85f7324e Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Mon, 7 Jul 2025 19:42:40 -0500 Subject: [PATCH 268/454] Update README.md --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index f837862..9e36197 100644 --- a/README.md +++ b/README.md @@ -14,4 +14,3 @@ The [Protobuf](https://developers.google.com/protocol-buffers) message definitio ## Stats ![Alt](https://repobeats.axiom.co/api/embed/47e9ee1d81d9c0fdd2b4b5b4c673adb1756f6db5.svg "Repobeats analytics image") - From 233961d5fba06289c070b958d2c9f92b642ad2cf Mon Sep 17 00:00:00 2001 From: Jonathan Bennett Date: Thu, 10 Jul 2025 18:58:13 -0500 Subject: [PATCH 269/454] Add ThinkNode M5 to mesh.proto --- meshtastic/mesh.proto | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index bf0d6d6..1fcc1a5 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -769,6 +769,11 @@ enum HardwareModel { */ RAK3312 = 106; + /** + * Elecrow ThinkNode M5 https://www.elecrow.com/wiki/ThinkNode_M5_Meshtastic_LoRa_Signal_Transceiver_ESP32-S3.html + */ + THINKNODE_M5 = 107; + /* From e253751637bf696cff17821ef187fb71992a321e Mon Sep 17 00:00:00 2001 From: vidplace7 Date: Sat, 12 Jul 2025 18:44:13 -0400 Subject: [PATCH 270/454] Update bufbuild GitHub Actions --- .github/workflows/ci.yml | 11 ++--- .github/workflows/create_tag.yml | 10 ++--- .github/workflows/publish.yml | 10 ++--- .github/workflows/pull_request.yml | 19 ++++----- meshtastic/admin.proto | 47 ++++++++++------------ meshtastic/config.proto | 26 ++++++------ meshtastic/device_ui.proto | 19 ++++----- meshtastic/deviceonly.proto | 7 ++-- meshtastic/interdevice.proto | 6 +-- meshtastic/mesh.proto | 64 +++++++++++++++--------------- meshtastic/module_config.proto | 2 - meshtastic/powermon.proto | 39 +++++++++--------- meshtastic/telemetry.proto | 19 +++++---- renovate.json | 6 +++ 14 files changed, 134 insertions(+), 151 deletions(-) create mode 100644 renovate.json diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1023c96..f38ad9f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -16,12 +16,9 @@ jobs: - name: Checkout code uses: actions/checkout@v4 - - name: Setup Buf - uses: bufbuild/buf-setup-action@v1.30.0 + - name: Push to schema registry + uses: bufbuild/buf-action@v1.2.0 with: github_token: ${{ github.token }} - - - name: Push to schema registry - uses: bufbuild/buf-push-action@v1.2.0 - with: - buf_token: ${{ secrets.BUF_TOKEN }} + token: ${{ secrets.BUF_TOKEN }} + push: true diff --git a/.github/workflows/create_tag.yml b/.github/workflows/create_tag.yml index e8233c7..a1e9768 100644 --- a/.github/workflows/create_tag.yml +++ b/.github/workflows/create_tag.yml @@ -58,14 +58,14 @@ jobs: token: ${{ github.token }} - name: Setup Buf - uses: bufbuild/buf-setup-action@v1.30.0 + uses: bufbuild/buf-action@v1.2.0 with: github_token: ${{ github.token }} + token: ${{ secrets.BUF_TOKEN }} + setup_only: true - name: Push to schema registry - # uses: bufbuild/buf-push-action@v1 - # with: - # buf_token: ${{ secrets.BUF_TOKEN }} + env: + BUF_TOKEN: ${{ secrets.BUF_TOKEN }} run: | - export BUF_TOKEN=${{ secrets.BUF_TOKEN }} buf push --tag ${{ steps.version.outputs.NEW_VERSION }} diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 8ea8360..70c229e 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -17,14 +17,14 @@ jobs: uses: actions/checkout@v4 - name: Setup Buf - uses: bufbuild/buf-setup-action@v1.30.0 + uses: bufbuild/buf-action@v1.2.0 with: github_token: ${{ github.token }} + token: ${{ secrets.BUF_TOKEN }} + setup_only: true - name: Push to schema registry - # uses: bufbuild/buf-push-action@v1 - # with: - # buf_token: ${{ secrets.BUF_TOKEN }} + env: + BUF_TOKEN: ${{ secrets.BUF_TOKEN }} run: | - export BUF_TOKEN=${{ secrets.BUF_TOKEN }} buf push --tag ${{ github.ref_name }} diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index 179d09a..6df3b32 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -2,6 +2,7 @@ name: pull-request permissions: contents: read + pull-requests: write on: pull_request jobs: @@ -12,17 +13,11 @@ jobs: - name: Checkout code uses: actions/checkout@v4 - - name: Setup Buf - uses: bufbuild/buf-setup-action@v1.30.0 + - name: Buf PR Checks + uses: bufbuild/buf-action@v1.2.0 with: github_token: ${{ github.token }} - - - name: Lint - uses: bufbuild/buf-lint-action@v1.1.1 - - - name: Push to schema registry - uses: bufbuild/buf-push-action@v1.2.0 - if: ${{ github.event_name != 'pull_request_target' && github.event_name != 'pull_request' }} - with: - buf_token: ${{ secrets.BUF_TOKEN }} - draft: ${{ github.ref_name != 'master'}} + token: ${{ secrets.BUF_TOKEN }} + format: true + lint: true + breaking: true diff --git a/meshtastic/admin.proto b/meshtastic/admin.proto index c93a964..0259c2a 100644 --- a/meshtastic/admin.proto +++ b/meshtastic/admin.proto @@ -5,9 +5,9 @@ package meshtastic; import "meshtastic/channel.proto"; import "meshtastic/config.proto"; import "meshtastic/connection_status.proto"; +import "meshtastic/device_ui.proto"; import "meshtastic/mesh.proto"; import "meshtastic/module_config.proto"; -import "meshtastic/device_ui.proto"; option csharp_namespace = "Meshtastic.Protobufs"; option go_package = "github.com/meshtastic/go/generated"; @@ -21,7 +21,6 @@ option swift_prefix = ""; * (Prior to 1.2 these operations were done via special ToRadio operations) */ message AdminMessage { - /* * The node generates this key and sends it with any get_x_response packets. * The client MUST include the same key with any set_x commands. Key expires after 300 seconds. @@ -529,18 +528,17 @@ message SharedContact { bool should_ignore = 3; } - /* - * This message is used by a client to initiate or complete a key verification - */ +/* + * This message is used by a client to initiate or complete a key verification + */ message KeyVerificationAdmin { /* * Three stages of this request. */ enum MessageType { - /* - * This is the first stage, where a client initiates - */ + * This is the first stage, where a client initiates + */ INITIATE_VERIFICATION = 0; /* @@ -548,33 +546,32 @@ message KeyVerificationAdmin { * And uses this message to provide it to the node. */ PROVIDE_SECURITY_NUMBER = 1; - - /* - * Once the user has compared the verification message, this message notifies the node. - */ + + /* + * Once the user has compared the verification message, this message notifies the node. + */ DO_VERIFY = 2; - /* - * This is the cancel path, can be taken at any point - */ + /* + * This is the cancel path, can be taken at any point + */ DO_NOT_VERIFY = 3; - } MessageType message_type = 1; - /* - * The nodenum we're requesting - */ + /* + * The nodenum we're requesting + */ uint32 remote_nodenum = 2; - /* - * The nonce is used to track the connection - */ + /* + * The nonce is used to track the connection + */ uint64 nonce = 3; - /* - * The 4 digit code generated by the remote node, and communicated outside the mesh - */ + /* + * The 4 digit code generated by the remote node, and communicated outside the mesh + */ optional uint32 security_number = 4; } diff --git a/meshtastic/config.proto b/meshtastic/config.proto index acbc14e..1586cd7 100644 --- a/meshtastic/config.proto +++ b/meshtastic/config.proto @@ -189,7 +189,7 @@ message Config { * Disabling this will disable the SerialConsole by not initilizing the StreamAPI * Moved to SecurityConfig */ - bool serial_enabled = 2[deprecated = true]; + bool serial_enabled = 2 [deprecated = true]; /* * For boards without a hard wired button, this is the pin number that will be used @@ -224,7 +224,7 @@ message Config { * Clients should then limit available configuration and administrative options inside the user interface * Moved to SecurityConfig */ - bool is_managed = 9[deprecated = true]; + bool is_managed = 9 [deprecated = true]; /* * Disables the triple-press of user button to enable or disable GPS @@ -470,7 +470,7 @@ message Config { * If non-zero, we want powermon log outputs. With the particular (bitfield) sources enabled. * Note: we picked an ID of 32 so that lower more efficient IDs can be used for more frequently used options. */ - uint64 powermon_enables = 32; + uint64 powermon_enables = 32; } /* @@ -783,7 +783,7 @@ message Config { * Rotate the compass by 270 degrees and invert. */ DEGREES_270_INVERTED = 7; - } + } /* * Indicates how to rotate or invert the compass output to accurate display on the display. @@ -923,7 +923,6 @@ message Config { * Kazakhstan 863MHz */ KZ_863 = 24; - } /* @@ -1137,17 +1136,16 @@ message Config { } message SecurityConfig { - - /* - * The public key of the user's device. - * Sent out to other nodes on the mesh to allow them to compute a shared secret key. - */ + /* + * The public key of the user's device. + * Sent out to other nodes on the mesh to allow them to compute a shared secret key. + */ bytes public_key = 1; - /* - * The private key of the device. - * Used to create a shared key with a remote device. - */ + /* + * The private key of the device. + * Used to create a shared key with a remote device. + */ bytes private_key = 2; /* diff --git a/meshtastic/device_ui.proto b/meshtastic/device_ui.proto index b943600..eb1e949 100644 --- a/meshtastic/device_ui.proto +++ b/meshtastic/device_ui.proto @@ -90,7 +90,6 @@ message DeviceUIConfig { bool is_clockface_analog = 18; } - message NodeFilter { /* * Filter unknown nodes @@ -126,7 +125,6 @@ message NodeFilter { * Filter based on channel */ int32 channel = 7; - } message NodeHighlight { @@ -154,7 +152,6 @@ message NodeHighlight { * Highlight nodes by matching name string */ string node_name = 5; - } message GeoPoint { @@ -163,14 +160,14 @@ message GeoPoint { */ int32 zoom = 1; - /* - * Coordinate: latitude - */ + /* + * Coordinate: latitude + */ int32 latitude = 2; - /* - * Coordinate: longitude - */ + /* + * Coordinate: longitude + */ int32 longitude = 3; } @@ -317,7 +314,7 @@ enum Language { */ BULGARIAN = 17; - /* + /* * Simplified Chinese (experimental) */ SIMPLIFIED_CHINESE = 30; @@ -326,4 +323,4 @@ enum Language { * Traditional Chinese (experimental) */ TRADITIONAL_CHINESE = 31; - } +} diff --git a/meshtastic/deviceonly.proto b/meshtastic/deviceonly.proto index acde0f1..d449373 100644 --- a/meshtastic/deviceonly.proto +++ b/meshtastic/deviceonly.proto @@ -3,10 +3,10 @@ syntax = "proto3"; package meshtastic; import "meshtastic/channel.proto"; -import "meshtastic/mesh.proto"; -import "meshtastic/telemetry.proto"; import "meshtastic/config.proto"; import "meshtastic/localonly.proto"; +import "meshtastic/mesh.proto"; +import "meshtastic/telemetry.proto"; import "nanopb.proto"; option csharp_namespace = "Meshtastic.Protobufs"; @@ -16,7 +16,6 @@ option java_package = "com.geeksville.mesh"; option swift_prefix = ""; option (nanopb_fileopt).include = ""; - /* * Position with static location information only for NodeDBLite */ @@ -269,7 +268,7 @@ message ChannelFile { /* * The on-disk backup of the node's preferences */ - message BackupPreferences { +message BackupPreferences { /* * The version of the backup */ diff --git a/meshtastic/interdevice.proto b/meshtastic/interdevice.proto index 54e950f..4616c08 100644 --- a/meshtastic/interdevice.proto +++ b/meshtastic/interdevice.proto @@ -12,9 +12,9 @@ option swift_prefix = ""; enum MessageType { ACK = 0; - COLLECT_INTERVAL = 160; // in ms - BEEP_ON = 161; // duration ms - BEEP_OFF = 162; // cancel prematurely + COLLECT_INTERVAL = 160; // in ms + BEEP_ON = 161; // duration ms + BEEP_OFF = 162; // cancel prematurely SHUTDOWN = 163; POWER_ON = 164; SCD41_TEMP = 176; diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 1fcc1a5..686bec1 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -4,11 +4,11 @@ package meshtastic; import "meshtastic/channel.proto"; import "meshtastic/config.proto"; +import "meshtastic/device_ui.proto"; import "meshtastic/module_config.proto"; import "meshtastic/portnums.proto"; import "meshtastic/telemetry.proto"; import "meshtastic/xmodem.proto"; -import "meshtastic/device_ui.proto"; option csharp_namespace = "Meshtastic.Protobufs"; option go_package = "github.com/meshtastic/go/generated"; @@ -564,22 +564,22 @@ enum HardwareModel { */ HELTEC_CAPSULE_SENSOR_V3 = 65; - /* + /* * Heltec Vision Master T190 with ESP32-S3 CPU, and a 1.90 inch TFT display */ HELTEC_VISION_MASTER_T190 = 66; - /* + /* * Heltec Vision Master E213 with ESP32-S3 CPU, and a 2.13 inch E-Ink display */ HELTEC_VISION_MASTER_E213 = 67; - /* + /* * Heltec Vision Master E290 with ESP32-S3 CPU, and a 2.9 inch E-Ink display */ HELTEC_VISION_MASTER_E290 = 68; - /* + /* * Heltec Mesh Node T114 board with nRF52840 CPU, and a 1.14 inch TFT display, Ultimate low-power design, * specifically adapted for the Meshtatic project */ @@ -590,7 +590,7 @@ enum HardwareModel { */ SENSECAP_INDICATOR = 70; - /* + /* * Seeed studio T1000-E tracker card. NRF52840 w/ LR1110 radio, GPS, button, buzzer, and sensors. */ TRACKER_T1000_E = 71; @@ -611,7 +611,7 @@ enum HardwareModel { */ RADIOMASTER_900_BANDIT = 74; - /* + /* * Minewsemi ME25LS01 (ME25LE01_V1.0). NRF52840 w/ LR1110 radio, buttons and leds and pins. */ ME25LS01_4Y10TD = 75; @@ -640,7 +640,7 @@ enum HardwareModel { /* Seeed XIAO S3 DK*/ SEEED_XIAO_S3 = 81; - /* + /* * Nordic nRF52840+Semtech SX1262 LoRa BLE Combo Module. nRF52840+SX1262 MS24SF1 */ MS24SF1 = 82; @@ -680,7 +680,7 @@ enum HardwareModel { * Seeed XIAO nRF52840 + Wio SX1262 kit */ XIAO_NRF52_KIT = 88; - + /* * Elecrow ThinkNode M1 & M2 * https://www.elecrow.com/wiki/ThinkNode-M1_Transceiver_Device(Meshtastic)_Power_By_nRF52840.html @@ -693,7 +693,7 @@ enum HardwareModel { * Lilygo T-ETH-Elite */ T_ETH_ELITE = 91; - + /* * Heltec HRI-3621 industrial probe */ @@ -703,7 +703,7 @@ enum HardwareModel { * Reserved Fried Chicken ID for future use */ RESERVED_FRIED_CHICKEN = 93; - + /* * Heltec Magnetic Power Bank with Meshtastic compatible */ @@ -724,17 +724,17 @@ enum HardwareModel { */ CROWPANEL = 97; - /** + /* * Lilygo LINK32 board with sensors */ LINK_32 = 98; - /** + /* * Seeed Tracker L1 */ SEEED_WIO_TRACKER_L1 = 99; - /** + /* * Seeed Tracker L1 EINK driver */ SEEED_WIO_TRACKER_L1_EINK = 100; @@ -743,39 +743,37 @@ enum HardwareModel { * Reserved ID for future and past use */ QWANTZ_TINY_ARMS = 101; - - /** + + /* * Lilygo T-Deck Pro */ T_DECK_PRO = 102; - /** + /* * Lilygo TLora Pager */ T_LORA_PAGER = 103; - /** + /* * GAT562 Mesh Trial Tracker */ GAT562_MESH_TRIAL_TRACKER = 104; - - /** - * RAKwireless WisMesh Tag - */ + + /* + * RAKwireless WisMesh Tag + */ WISMESH_TAG = 105; - /** - * RAKwireless WisBlock Core RAK3312 https://docs.rakwireless.com/product-categories/wisduo/rak3112-module/overview/ - */ + /* + * RAKwireless WisBlock Core RAK3312 https://docs.rakwireless.com/product-categories/wisduo/rak3112-module/overview/ + */ RAK3312 = 106; - /** - * Elecrow ThinkNode M5 https://www.elecrow.com/wiki/ThinkNode_M5_Meshtastic_LoRa_Signal_Transceiver_ESP32-S3.html - */ + /* + * Elecrow ThinkNode M5 https://www.elecrow.com/wiki/ThinkNode_M5_Meshtastic_LoRa_Signal_Transceiver_ESP32-S3.html + */ THINKNODE_M5 = 107; - - /* * ------------------------------------------------------------------------------------------------------------------------------------------ * Reserved ID For developing private Ports. These will show up in live traffic sparsely, so we can use a high number. Keep it within 8 bits. @@ -1067,7 +1065,6 @@ message Data { * The actual over-the-mesh message doing KeyVerification */ message KeyVerification { - /* * random value Selected by the requesting node */ @@ -1901,6 +1898,7 @@ message KeyVerificationFinal { } message DuplicatedPublicKey {} message LowEntropyKey {} + /* * Individual File info for the device */ @@ -2174,7 +2172,7 @@ enum ExcludedModules { */ PAXCOUNTER_CONFIG = 0x1000; - /* + /* * Bluetooth config (not technically a module, but used to indicate bluetooth capabilities) */ BLUETOOTH_CONFIG = 0x2000; @@ -2232,7 +2230,7 @@ message ChunkedPayload { * Wrapper message for broken repeated oneof support */ message resend_chunks { - repeated uint32 chunks = 1; + repeated uint32 chunks = 1; } /* diff --git a/meshtastic/module_config.proto b/meshtastic/module_config.proto index e6c1694..683ce9e 100644 --- a/meshtastic/module_config.proto +++ b/meshtastic/module_config.proto @@ -148,7 +148,6 @@ message ModuleConfig { * Detection Sensor Module Config */ message DetectionSensorConfig { - enum TriggerType { // Event is triggered if pin is low LOGIC_LOW = 0; @@ -294,7 +293,6 @@ message ModuleConfig { * BLE RSSI threshold. Defaults to -80 */ int32 ble_threshold = 4; - } /* diff --git a/meshtastic/powermon.proto b/meshtastic/powermon.proto index dbb89b9..77206f4 100644 --- a/meshtastic/powermon.proto +++ b/meshtastic/powermon.proto @@ -1,20 +1,20 @@ syntax = "proto3"; +package meshtastic; + option csharp_namespace = "Meshtastic.Protobufs"; option go_package = "github.com/meshtastic/go/generated"; option java_outer_classname = "PowerMonProtos"; option java_package = "com.geeksville.mesh"; option swift_prefix = ""; -package meshtastic; - /* Note: There are no 'PowerMon' messages normally in use (PowerMons are sent only as structured logs - slogs). -But we wrap our State enum in this message to effectively nest a namespace (without our linter yelling at us) -*/ + * But we wrap our State enum in this message to effectively nest a namespace (without our linter yelling at us) + */ message PowerMon { /* Any significant power changing event in meshtastic should be tagged with a powermon state transition. - If you are making new meshtastic features feel free to add new entries at the end of this definition. - */ + * If you are making new meshtastic features feel free to add new entries at the end of this definition. + */ enum State { None = 0; @@ -22,14 +22,14 @@ message PowerMon { CPU_LightSleep = 0x02; /* - The external Vext1 power is on. Many boards have auxillary power rails that the CPU turns on only - occasionally. In cases where that rail has multiple devices on it we usually want to have logging on - the state of that rail as an independent record. - For instance on the Heltec Tracker 1.1 board, this rail is the power source for the GPS and screen. + The external Vext1 power is on. Many boards have auxillary power rails that the CPU turns on only + occasionally. In cases where that rail has multiple devices on it we usually want to have logging on + the state of that rail as an independent record. + For instance on the Heltec Tracker 1.1 board, this rail is the power source for the GPS and screen. - The log messages will be short and complete (see PowerMon.Event in the protobufs for details). - something like "S:PM:C,0x00001234,REASON" where the hex number is the bitmask of all current states. - (We use a bitmask for states so that if a log message gets lost it won't be fatal) + The log messages will be short and complete (see PowerMon.Event in the protobufs for details). + something like "S:PM:C,0x00001234,REASON" where the hex number is the bitmask of all current states. + (We use a bitmask for states so that if a log message gets lost it won't be fatal) */ Vext1_On = 0x04; @@ -44,22 +44,21 @@ message PowerMon { Wifi_On = 0x400; /* - GPS is actively trying to find our location - See GPSPowerState for more details - */ + * GPS is actively trying to find our location + * See GPSPowerState for more details + */ GPS_Active = 0x800; } } - /* * PowerStress testing support via the C++ PowerStress module */ message PowerStressMessage { /* * What operation would we like the UUT to perform. - note: senders should probably set want_response in their request packets, so that they can know when the state - machine has started processing their request + * note: senders should probably set want_response in their request packets, so that they can know when the state + * machine has started processing their request */ enum Opcode { /* @@ -69,7 +68,7 @@ message PowerStressMessage { PRINT_INFO = 1; // Print board version slog and send an ack that we are alive and ready to process commands FORCE_QUIET = 2; // Try to turn off all automatic processing of packets, screen, sleeping, etc (to make it easier to measure in isolation) - END_QUIET = 3; // Stop powerstress processing - probably by just rebooting the board + END_QUIET = 3; // Stop powerstress processing - probably by just rebooting the board SCREEN_ON = 16; // Turn the screen on SCREEN_OFF = 17; // Turn the screen off diff --git a/meshtastic/telemetry.proto b/meshtastic/telemetry.proto index c39a586..deece46 100644 --- a/meshtastic/telemetry.proto +++ b/meshtastic/telemetry.proto @@ -130,21 +130,21 @@ message EnvironmentMetrics { optional float wind_lull = 17; /* - * Radiation in µR/h - */ + * Radiation in µR/h + */ optional float radiation = 18; /* - * Rainfall in the last hour in mm - */ + * Rainfall in the last hour in mm + */ optional float rainfall_1h = 19; - /* - * Rainfall in the last 24 hours in mm - */ + /* + * Rainfall in the last 24 hours in mm + */ optional float rainfall_24h = 20; - /* + /* * Soil moisture measured (% 1-100) */ optional uint32 soil_moisture = 21; @@ -393,7 +393,7 @@ message LocalStats { /* * Health telemetry metrics */ - message HealthMetrics { +message HealthMetrics { /* * Heart rate (beats per minute) */ @@ -461,7 +461,6 @@ message HostMetrics { optional string user_string = 9; } - /* * Types of Measurements the telemetry module is equipped to handle */ diff --git a/renovate.json b/renovate.json new file mode 100644 index 0000000..5db72dd --- /dev/null +++ b/renovate.json @@ -0,0 +1,6 @@ +{ + "$schema": "https://docs.renovatebot.com/renovate-schema.json", + "extends": [ + "config:recommended" + ] +} From 27537101a4d750d74f512e30ab84167fc2a270da Mon Sep 17 00:00:00 2001 From: vidplace7 Date: Sat, 12 Jul 2025 18:15:16 -0400 Subject: [PATCH 271/454] Add DIRECT_MSG_ONLY Buzzer mode --- meshtastic/config.proto | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/meshtastic/config.proto b/meshtastic/config.proto index 1586cd7..bc6444f 100644 --- a/meshtastic/config.proto +++ b/meshtastic/config.proto @@ -178,6 +178,13 @@ message Config { * Buzzer is enabled only for non-notification tones such as button presses, startup, shutdown, but not for alerts. */ SYSTEM_ONLY = 3; + + /* + * Direct Message notifications only. + * Buzzer is enabled only for direct messages and alerts, but not for button presses. + * External notification config determines the specifics of the notification behavior. + */ + DIRECT_MSG_ONLY = 4; } /* From 4b1ca40f5ed783f48eee4e6f962a80b9932bc3ba Mon Sep 17 00:00:00 2001 From: oscgonfer Date: Sat, 28 Jun 2025 16:24:12 +0200 Subject: [PATCH 272/454] Add additional telemetry sensor type to support two ADS1X15 at the same time --- meshtastic/telemetry.proto | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/meshtastic/telemetry.proto b/meshtastic/telemetry.proto index deece46..51c0d48 100644 --- a/meshtastic/telemetry.proto +++ b/meshtastic/telemetry.proto @@ -716,6 +716,11 @@ enum TelemetrySensorType { * ADS1X15 ADC */ ADS1X15 = 40; + + /* + * ADS1X15 ADC_ALT + */ + ADS1X15_ALT = 41; } /* From bbad395d573eaee0c70d1cea431cbb92e6389166 Mon Sep 17 00:00:00 2001 From: oscgonfer Date: Sat, 19 Jul 2025 12:08:51 +0200 Subject: [PATCH 273/454] Added formaldehyde sensor values sfa30 --- meshtastic/telemetry.proto | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/meshtastic/telemetry.proto b/meshtastic/telemetry.proto index 51c0d48..df88fb7 100644 --- a/meshtastic/telemetry.proto +++ b/meshtastic/telemetry.proto @@ -318,6 +318,19 @@ message AirQualityMetrics { * CO2 sensor relative humidity in % */ optional float co2_humidity = 15; + + /* + * Formaldehyde sensor formaldehyde concentration in ppb + */ + optional float form_formaldehyde = 16; + /* + * Formaldehyde sensor relative humidity in %RH + */ + optional float form_humidity = 17; + /* + * Formaldehyde sensor temperature in degrees Celsius + */ + optional float form_temperature = 18; } /* @@ -721,6 +734,11 @@ enum TelemetrySensorType { * ADS1X15 ADC_ALT */ ADS1X15_ALT = 41; + + /* + * Sensirion SFA30 Formaldehyde sensor + */ + SFA30 = 42; } /* From 1a6df9abfe0ce9132fd894828910347ed7a8f2d3 Mon Sep 17 00:00:00 2001 From: oscgonfer Date: Sat, 19 Jul 2025 12:10:17 +0200 Subject: [PATCH 274/454] Minor style change --- meshtastic/telemetry.proto | 2 ++ 1 file changed, 2 insertions(+) diff --git a/meshtastic/telemetry.proto b/meshtastic/telemetry.proto index df88fb7..9a2f547 100644 --- a/meshtastic/telemetry.proto +++ b/meshtastic/telemetry.proto @@ -323,10 +323,12 @@ message AirQualityMetrics { * Formaldehyde sensor formaldehyde concentration in ppb */ optional float form_formaldehyde = 16; + /* * Formaldehyde sensor relative humidity in %RH */ optional float form_humidity = 17; + /* * Formaldehyde sensor temperature in degrees Celsius */ From d238157644573d4d8cc83f3a43f3c7d13f946237 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Sun, 20 Jul 2025 06:43:57 -0500 Subject: [PATCH 275/454] Deprecate GPS format --- meshtastic/config.proto | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/meshtastic/config.proto b/meshtastic/config.proto index bc6444f..bc3c386 100644 --- a/meshtastic/config.proto +++ b/meshtastic/config.proto @@ -683,9 +683,10 @@ message Config { uint32 screen_on_secs = 1; /* + * Deprecated in 2.7.4: Unused * How the GPS coordinates are formatted on the OLED screen. */ - GpsCoordinateFormat gps_format = 2; + GpsCoordinateFormat gps_format = 2 [deprecated = true]; /* * Automatically toggles to the next page on the screen like a carousel, based the specified interval in seconds. From b2baa3da8ae6eedafb5c98a92dd4ccf09c6442c1 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Sun, 20 Jul 2025 06:47:49 -0500 Subject: [PATCH 276/454] Add RATE_LIMIT_EXCEEDED routing error --- meshtastic/mesh.proto | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 686bec1..9390cf1 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -978,6 +978,12 @@ message Routing { * Admin packet sent using PKC, but not from a public key on the admin key list */ ADMIN_PUBLIC_KEY_UNAUTHORIZED = 37; + + /* + * Airtime fairness Rate limit exceeded for a package + * This typically enforced per portnum and is used to prevent a single node from monopolizing airtime + */ + RATE_LIMIT_EXCEEDED = 38; } oneof variant { From c36e296488ccae055787b4feb1af627e4145e330 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Sun, 20 Jul 2025 06:51:57 -0500 Subject: [PATCH 277/454] Update mesh.proto --- meshtastic/mesh.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 9390cf1..d826269 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -980,7 +980,7 @@ message Routing { ADMIN_PUBLIC_KEY_UNAUTHORIZED = 37; /* - * Airtime fairness Rate limit exceeded for a package + * Airtime fairness rate limit exceeded for a packet * This typically enforced per portnum and is used to prevent a single node from monopolizing airtime */ RATE_LIMIT_EXCEEDED = 38; From 8b09ca9643254176014e211e95b34aa0ed33ac41 Mon Sep 17 00:00:00 2001 From: Tom Fifield Date: Mon, 21 Jul 2025 18:24:49 +1000 Subject: [PATCH 278/454] =?UTF-8?q?Add=20Nepal=20865=E2=80=AFMHz=20to=2086?= =?UTF-8?q?8=E2=80=AFMHz=20(#736)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit As identified by @WOD-MN , Nepal has a dedicated IoT frequency. 865 MHz to 868 MHz, no power limit, not duty cycle restrictions Machine to Machine (M2M)/Internet of Things (IoT) https://www.nta.gov.np/uploads/contents/Radio-Frequency-Policy-2080-English.pdf Firmware patch: https://github.com/meshtastic/firmware/pull/7380 --- meshtastic/config.proto | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/meshtastic/config.proto b/meshtastic/config.proto index bc3c386..66dab5e 100644 --- a/meshtastic/config.proto +++ b/meshtastic/config.proto @@ -931,6 +931,10 @@ message Config { * Kazakhstan 863MHz */ KZ_863 = 24; + /* + * Nepal 865MHz + */ + NP_865 = 25; } /* From 5f5828a6eda6d45066cc392931c7e624fb7ef941 Mon Sep 17 00:00:00 2001 From: Tom Fifield Date: Mon, 21 Jul 2025 18:28:24 +1000 Subject: [PATCH 279/454] Add BR_902, Brazil 902MHz-907.5MHz (#737) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit As reported by @barbabarros , the Brazilian government has specific support for LoRA[1] across multiple frequencies[2][3]. We currently support Brazil through the ANZ/AU915 band. However, Brazil also has another frequency available for use: 902 - 907.5 MHz , 1W power limit, no duty cycle restrictions [1] https://sistemas.anatel.gov.br/anexar-api/publico/anexos/download/a028ab5cc4e3f97442830bba0c8bd1dd [2] https://informacoes.anatel.gov.br/legislacao/resolucoes/2025/2001-resolucao-772 [3] https://informacoes.anatel.gov.br/legislacao/atos-de-certificacao-de-produtos/2017/1139-ato-14448#item10 Fixes https://github.com/meshtastic/firmware/issues/3741 Co-authored-by: Thomas Göttgens --- meshtastic/config.proto | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/meshtastic/config.proto b/meshtastic/config.proto index 66dab5e..631a6fb 100644 --- a/meshtastic/config.proto +++ b/meshtastic/config.proto @@ -919,22 +919,31 @@ message Config { * Philippines 915mhz */ PH_915 = 21; + /* * Australia / New Zealand 433MHz */ ANZ_433 = 22; + /* * Kazakhstan 433MHz */ KZ_433 = 23; + /* * Kazakhstan 863MHz */ KZ_863 = 24; + /* * Nepal 865MHz */ NP_865 = 25; + + /* + * Brazil 902MHz + */ + BR_902 = 26; } /* From ee4d9617764b651207540a9d5eb76367be6c26fb Mon Sep 17 00:00:00 2001 From: oscgonfer Date: Mon, 21 Jul 2025 11:56:28 +0200 Subject: [PATCH 280/454] SEN5X sensor definition (#723) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add additional telemetry sensor type to support two ADS1X15 at the same time * Merge master * Add metrics and units for SEN5X series * re-order not to break proto backwards comaptibility --------- Co-authored-by: Thomas Göttgens --- meshtastic/telemetry.proto | 64 +++++++++++++++++++++++++++++++------- 1 file changed, 52 insertions(+), 12 deletions(-) diff --git a/meshtastic/telemetry.proto b/meshtastic/telemetry.proto index 9a2f547..1a27673 100644 --- a/meshtastic/telemetry.proto +++ b/meshtastic/telemetry.proto @@ -245,62 +245,62 @@ message PowerMetrics { */ message AirQualityMetrics { /* - * Concentration Units Standard PM1.0 + * Concentration Units Standard PM1.0 in ug/m3 */ optional uint32 pm10_standard = 1; /* - * Concentration Units Standard PM2.5 + * Concentration Units Standard PM2.5 in ug/m3 */ optional uint32 pm25_standard = 2; /* - * Concentration Units Standard PM10.0 + * Concentration Units Standard PM10.0 in ug/m3 */ optional uint32 pm100_standard = 3; /* - * Concentration Units Environmental PM1.0 + * Concentration Units Environmental PM1.0 in ug/m3 */ optional uint32 pm10_environmental = 4; /* - * Concentration Units Environmental PM2.5 + * Concentration Units Environmental PM2.5 in ug/m3 */ optional uint32 pm25_environmental = 5; /* - * Concentration Units Environmental PM10.0 + * Concentration Units Environmental PM10.0 in ug/m3 */ optional uint32 pm100_environmental = 6; /* - * 0.3um Particle Count + * 0.3um Particle Count in #/01.l */ optional uint32 particles_03um = 7; /* - * 0.5um Particle Count + * 0.5um Particle Count in #/01.l */ optional uint32 particles_05um = 8; /* - * 1.0um Particle Count + * 1.0um Particle Count in #/01.l */ optional uint32 particles_10um = 9; /* - * 2.5um Particle Count + * 2.5um Particle Count in #/01.l */ optional uint32 particles_25um = 10; /* - * 5.0um Particle Count + * 5.0um Particle Count in #/01.l */ optional uint32 particles_50um = 11; /* - * 10.0um Particle Count + * 10.0um Particle Count in #/01.l */ optional uint32 particles_100um = 12; @@ -333,6 +333,41 @@ message AirQualityMetrics { * Formaldehyde sensor temperature in degrees Celsius */ optional float form_temperature = 18; + + /* + * Concentration Units Standard PM4.0 in ug/m3 + */ + optional uint32 pm40_standard = 19; + + /* + * 4.0um Particle Count in #/01.l + */ + optional uint32 particles_40um = 20; + + /* + * PM Sensor Temperature + */ + optional float pm_temperature = 21; + + /* + * PM Sensor humidity + */ + optional float pm_humidity = 22; + + /* + * PM Sensor VOC Index + */ + optional float pm_voc_idx = 23; + + /* + * PM Sensor NOx Index + */ + optional float pm_nox_idx = 24; + + /* + * Typical Particle Size in um + */ + optional float particles_tps = 25; } /* @@ -741,6 +776,11 @@ enum TelemetrySensorType { * Sensirion SFA30 Formaldehyde sensor */ SFA30 = 42; + + /* + * SEN5X PM SENSORS + */ + SEN5X = 43; } /* From fa02e14d8d01850336eaea0e9552aef4f08f0a40 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20G=C3=B6ttgens?= Date: Mon, 21 Jul 2025 12:06:30 +0200 Subject: [PATCH 281/454] fix typos in comments (#738) --- meshtastic/telemetry.proto | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/meshtastic/telemetry.proto b/meshtastic/telemetry.proto index 1a27673..d65432d 100644 --- a/meshtastic/telemetry.proto +++ b/meshtastic/telemetry.proto @@ -275,32 +275,32 @@ message AirQualityMetrics { optional uint32 pm100_environmental = 6; /* - * 0.3um Particle Count in #/01.l + * 0.3um Particle Count in #/0.1l */ optional uint32 particles_03um = 7; /* - * 0.5um Particle Count in #/01.l + * 0.5um Particle Count in #/0.1l */ optional uint32 particles_05um = 8; /* - * 1.0um Particle Count in #/01.l + * 1.0um Particle Count in #/0.1l */ optional uint32 particles_10um = 9; /* - * 2.5um Particle Count in #/01.l + * 2.5um Particle Count in #/0.1l */ optional uint32 particles_25um = 10; /* - * 5.0um Particle Count in #/01.l + * 5.0um Particle Count in #/0.1l */ optional uint32 particles_50um = 11; /* - * 10.0um Particle Count in #/01.l + * 10.0um Particle Count in #/0.1l */ optional uint32 particles_100um = 12; @@ -340,7 +340,7 @@ message AirQualityMetrics { optional uint32 pm40_standard = 19; /* - * 4.0um Particle Count in #/01.l + * 4.0um Particle Count in #/0.1l */ optional uint32 particles_40um = 20; From 0234126e866159052db90b3630c84aec518489e4 Mon Sep 17 00:00:00 2001 From: Jonathan Bennett Date: Mon, 21 Jul 2025 11:59:59 -0500 Subject: [PATCH 282/454] Add event enum to indicate to client if this is event firmware --- meshtastic/mesh.proto | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index d826269..c10935c 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -1627,6 +1627,31 @@ enum CriticalErrorCode { FLASH_CORRUPTION_UNRECOVERABLE = 13; } +/* + * Enum to indicate to clients whether this firmware is an event firmware build. + */ +enum EventFirmwareIndicator { + /* + * Vanilla firmware + */ + VANILLA = 0; + + /* + * Open Sauce, the maker conference held yearly in CA + */ + OPEN_SAUCE = 1; + + /* + * DEFCON, the yearly hacker conference + */ + DEFCON = 2; + + /* + * Burning Man, the yearly hippie gathering in the desert + */ + BURNING_MAN = 3; +} + /* * Unique local debugging info for this node * Note: we don't include position or the user info, because that will come in the @@ -1660,6 +1685,11 @@ message MyNodeInfo { * The PlatformIO environment used to build this firmware */ string pio_env = 13; + + /* + * The indicator for whether this device is running event firmware and which + */ + EventFirmwareIndicator event_firmware = 14; } /* From 08fbd7b987158f02b1fa1ff34a092a0a924a7e97 Mon Sep 17 00:00:00 2001 From: Jonathan Bennett Date: Mon, 21 Jul 2025 12:06:57 -0500 Subject: [PATCH 283/454] Whitespace fixes --- meshtastic/config.proto | 10 +++++----- meshtastic/mesh.proto | 4 ++-- meshtastic/telemetry.proto | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/meshtastic/config.proto b/meshtastic/config.proto index 631a6fb..1bc9bd0 100644 --- a/meshtastic/config.proto +++ b/meshtastic/config.proto @@ -919,27 +919,27 @@ message Config { * Philippines 915mhz */ PH_915 = 21; - + /* * Australia / New Zealand 433MHz */ ANZ_433 = 22; - + /* * Kazakhstan 433MHz */ KZ_433 = 23; - + /* * Kazakhstan 863MHz */ KZ_863 = 24; - + /* * Nepal 865MHz */ NP_865 = 25; - + /* * Brazil 902MHz */ diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index c10935c..6753d59 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -1639,12 +1639,12 @@ enum EventFirmwareIndicator { /* * Open Sauce, the maker conference held yearly in CA */ - OPEN_SAUCE = 1; + OPEN_SAUCE = 1; /* * DEFCON, the yearly hacker conference */ - DEFCON = 2; + DEFCON = 2; /* * Burning Man, the yearly hippie gathering in the desert diff --git a/meshtastic/telemetry.proto b/meshtastic/telemetry.proto index d65432d..3ec85b4 100644 --- a/meshtastic/telemetry.proto +++ b/meshtastic/telemetry.proto @@ -333,7 +333,7 @@ message AirQualityMetrics { * Formaldehyde sensor temperature in degrees Celsius */ optional float form_temperature = 18; - + /* * Concentration Units Standard PM4.0 in ug/m3 */ From b35702d8aefb79c634cb174ac604b500c282bb66 Mon Sep 17 00:00:00 2001 From: Jonathan Bennett Date: Mon, 21 Jul 2025 12:27:50 -0500 Subject: [PATCH 284/454] Add Hamvention --- meshtastic/mesh.proto | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 6753d59..b296915 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -1650,6 +1650,11 @@ enum EventFirmwareIndicator { * Burning Man, the yearly hippie gathering in the desert */ BURNING_MAN = 3; + + /* + * Hamvention, the Dayton amateur radio convention + */ + HAMVENTION = 4; } /* From 9cc803de0e13397d3be205f88c85a9436fe310a5 Mon Sep 17 00:00:00 2001 From: Jonathan Bennett Date: Mon, 21 Jul 2025 12:41:42 -0500 Subject: [PATCH 285/454] Further tuning --- meshtastic/mesh.proto | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index b296915..3e6ac36 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -1628,33 +1628,46 @@ enum CriticalErrorCode { } /* - * Enum to indicate to clients whether this firmware is an event firmware build. + * Enum to indicate to clients whether this firmware is a special firmware build, like an event. + * The first 16 values are reserved for non-event special firmwares, like the Smart Citizen use case. */ -enum EventFirmwareIndicator { +enum FirmwareEdition { /* * Vanilla firmware */ VANILLA = 0; + /* + * Firmware for use in the Smart Citizen environmental monitoring network + */ + SMART_CITIZEN = 1; + /* * Open Sauce, the maker conference held yearly in CA */ - OPEN_SAUCE = 1; + OPEN_SAUCE = 16; /* * DEFCON, the yearly hacker conference */ - DEFCON = 2; + DEFCON = 17; /* * Burning Man, the yearly hippie gathering in the desert */ - BURNING_MAN = 3; + BURNING_MAN = 18; /* * Hamvention, the Dayton amateur radio convention */ - HAMVENTION = 4; + HAMVENTION = 19; + + + + /* + * Placeholder for DIY and unofficial events + */ + DIY_EDITION = 127; } /* @@ -1694,7 +1707,7 @@ message MyNodeInfo { /* * The indicator for whether this device is running event firmware and which */ - EventFirmwareIndicator event_firmware = 14; + FirmwareEdition firmware_edition = 14; } /* From 898f06796b1d9af5962508cabbd4984d0ec1bce9 Mon Sep 17 00:00:00 2001 From: Jonathan Bennett Date: Mon, 21 Jul 2025 18:36:04 -0500 Subject: [PATCH 286/454] More Whitespace Co-authored-by: Austin --- meshtastic/mesh.proto | 2 -- 1 file changed, 2 deletions(-) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 3e6ac36..19b0b0e 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -1662,8 +1662,6 @@ enum FirmwareEdition { */ HAMVENTION = 19; - - /* * Placeholder for DIY and unofficial events */ From d868b86e75ae714a3893d370f9e86899c8332357 Mon Sep 17 00:00:00 2001 From: Jonathan Bennett Date: Tue, 22 Jul 2025 09:05:10 -0500 Subject: [PATCH 287/454] Keep edition smol --- meshtastic/mesh.options | 2 ++ 1 file changed, 2 insertions(+) diff --git a/meshtastic/mesh.options b/meshtastic/mesh.options index 49dd597..a6c22da 100644 --- a/meshtastic/mesh.options +++ b/meshtastic/mesh.options @@ -31,6 +31,8 @@ *MyNodeInfo.air_period_tx max_count:8 *MyNodeInfo.air_period_rx max_count:8 +*MyNodeInfo.firmware_edition int_size:8 + # Note: the actual limit (because of header bytes) on the size of encrypted payloads is 251 bytes, but I use 256 # here because we might need to fill with zeros for padding to encryption block size (16 bytes per block) *MeshPacket.encrypted max_size:256 From 1c28229e85fb329c47fc78e0b1f5324ac7000d7d Mon Sep 17 00:00:00 2001 From: Jonathan Bennett Date: Tue, 22 Jul 2025 14:20:05 -0500 Subject: [PATCH 288/454] Mark configs as deprecated that are no longer used. --- meshtastic/config.proto | 2 +- meshtastic/module_config.proto | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/meshtastic/config.proto b/meshtastic/config.proto index 1bc9bd0..321bbb2 100644 --- a/meshtastic/config.proto +++ b/meshtastic/config.proto @@ -698,7 +698,7 @@ message Config { * If this is set, the displayed compass will always point north. if unset, the old behaviour * (top of display is heading direction) is used. */ - bool compass_north_top = 4; + bool compass_north_top = 4 [deprecated = true]; /* * Flip screen vertically, for cases that mount the screen upside down diff --git a/meshtastic/module_config.proto b/meshtastic/module_config.proto index 683ce9e..1eb4c14 100644 --- a/meshtastic/module_config.proto +++ b/meshtastic/module_config.proto @@ -700,13 +700,13 @@ message ModuleConfig { /* * Enable/disable CannedMessageModule. */ - bool enabled = 9; + bool enabled = 9 [deprecated = true]; /* * Input event origin accepted by the canned message module. * Can be e.g. "rotEnc1", "upDownEnc1", "scanAndSelect", "cardkb", "serialkb", or keyword "_any" */ - string allow_input_source = 10; + string allow_input_source = 10 [deprecated = true]; /* * CannedMessageModule also sends a bell character with the messages. From 5ac10c0746fd5f4037c26d6e52ac8206d82b79c0 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Sat, 26 Jul 2025 06:39:04 -0500 Subject: [PATCH 289/454] Add nodedb_count to mynodeinfo --- meshtastic/mesh.options | 1 + meshtastic/mesh.proto | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/meshtastic/mesh.options b/meshtastic/mesh.options index a6c22da..37c9341 100644 --- a/meshtastic/mesh.options +++ b/meshtastic/mesh.options @@ -32,6 +32,7 @@ *MyNodeInfo.air_period_rx max_count:8 *MyNodeInfo.firmware_edition int_size:8 +*MyNodeInfo.nodedb_count int_size:16 # Note: the actual limit (because of header bytes) on the size of encrypted payloads is 251 bytes, but I use 256 # here because we might need to fill with zeros for padding to encryption block size (16 bytes per block) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 19b0b0e..9f96aa5 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -1706,6 +1706,12 @@ message MyNodeInfo { * The indicator for whether this device is running event firmware and which */ FirmwareEdition firmware_edition = 14; + + /* + * The number of nodes in the nodedb. + * This is used by the phone to know how many NodeInfo packets to expect on want_config + */ + uint32 nodedb_count = 15; } /* From d47de28428bd9d7c905532e20ec2b3f7a562ada2 Mon Sep 17 00:00:00 2001 From: Quency-D Date: Mon, 28 Jul 2025 16:53:29 +0800 Subject: [PATCH 290/454] Added HELTEC MeshSolar board. --- meshtastic/mesh.proto | 6 ++++++ meshtastic/module_config.proto | 3 +++ 2 files changed, 9 insertions(+) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 9f96aa5..e68c56b 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -774,6 +774,12 @@ enum HardwareModel { */ THINKNODE_M5 = 107; + /* + * MeshSolar is an integrated power management and communication solution designed for outdoor low-power devices. + * https://heltec.org/project/meshsolar/ + */ + HELTEC_MESH_SOLAR = 108; + /* * ------------------------------------------------------------------------------------------------------------------------------------------ * Reserved ID For developing private Ports. These will show up in live traffic sparsely, so we can use a high number. Keep it within 8 bits. diff --git a/meshtastic/module_config.proto b/meshtastic/module_config.proto index 683ce9e..ca2469d 100644 --- a/meshtastic/module_config.proto +++ b/meshtastic/module_config.proto @@ -337,6 +337,9 @@ message ModuleConfig { // VE.Direct is a serial protocol used by Victron Energy products // https://beta.ivc.no/wiki/index.php/Victron_VE_Direct_DIY_Cable VE_DIRECT = 7; + //Used to configure and view some parameters of MeshSolar. + //https://heltec.org/project/meshsolar/ + MS_CONFIG = 8; } /* From ee114d4e89baba458e24bfb4e0d8468a632b4391 Mon Sep 17 00:00:00 2001 From: oscgonfer Date: Mon, 28 Jul 2025 12:34:53 +0200 Subject: [PATCH 291/454] Add admin commands for SCDXX CO2 sensors --- meshtastic/admin.proto | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/meshtastic/admin.proto b/meshtastic/admin.proto index 0259c2a..ef2e25d 100644 --- a/meshtastic/admin.proto +++ b/meshtastic/admin.proto @@ -471,6 +471,11 @@ message AdminMessage { * Tell the node to reset the nodedb. */ int32 nodedb_reset = 100; + + /* + * SCDXX CO2 sensor configuration + */ + SCDXX_config scdxx_config = 102; } } @@ -575,3 +580,30 @@ message KeyVerificationAdmin { */ optional uint32 security_number = 4; } + +message SCDXX_config { + /* + * Set Automatic self-calibration enabled + */ + optional bool set_asc = 1; + + /* + * Recalibration target CO2 concentration in ppm (FRC or ASC) + */ + optional uint32 target_co2_conc = 2; + + /* + * Reference temperature in degC + */ + optional float temperature = 4; + + /* + * Altitude of sensor in meters above sea level. 0 - 3000m (overrides ambient pressure) + */ + optional uint32 altitude = 5; + + /* + * Sensor ambient pressure in Pa. 70000 - 120000 Pa (overrides altitude) + */ + optional uint32 ambient_pressure = 6; +} From e6906159512a5152d398b9765ae0b6f5593846d2 Mon Sep 17 00:00:00 2001 From: oscgonfer Date: Mon, 28 Jul 2025 21:52:49 +0200 Subject: [PATCH 292/454] Admin message for different sensor configs --- meshtastic/admin.proto | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/meshtastic/admin.proto b/meshtastic/admin.proto index ef2e25d..b329174 100644 --- a/meshtastic/admin.proto +++ b/meshtastic/admin.proto @@ -473,9 +473,9 @@ message AdminMessage { int32 nodedb_reset = 100; /* - * SCDXX CO2 sensor configuration + * Parameters and sensor configuration */ - SCDXX_config scdxx_config = 102; + SensorConfig sensor_config = 102; } } @@ -581,6 +581,13 @@ message KeyVerificationAdmin { optional uint32 security_number = 4; } +message SensorConfig { + /* + * SCDXX CO2 Sensor configuration + */ + SCDXX_config scdxx_config = 1; +} + message SCDXX_config { /* * Set Automatic self-calibration enabled From 27d40f03d2750e4bbc4d167d091b19edd27f0edf Mon Sep 17 00:00:00 2001 From: oscgonfer Date: Tue, 29 Jul 2025 14:27:08 +0200 Subject: [PATCH 293/454] Add factory reset for scdxx --- meshtastic/admin.proto | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/meshtastic/admin.proto b/meshtastic/admin.proto index b329174..65e3eac 100644 --- a/meshtastic/admin.proto +++ b/meshtastic/admin.proto @@ -613,4 +613,9 @@ message SCDXX_config { * Sensor ambient pressure in Pa. 70000 - 120000 Pa (overrides altitude) */ optional uint32 ambient_pressure = 6; + + /* + * Perform a factory reset of the sensor + */ + optional bool factory_reset = 7; } From 6a26b23faf7cb4bb221db702ab7b2ab19096dc72 Mon Sep 17 00:00:00 2001 From: oscgonfer Date: Fri, 1 Aug 2025 13:38:29 +0200 Subject: [PATCH 294/454] Add low power and change to SCD4X --- meshtastic/admin.proto | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/meshtastic/admin.proto b/meshtastic/admin.proto index 65e3eac..a981080 100644 --- a/meshtastic/admin.proto +++ b/meshtastic/admin.proto @@ -583,12 +583,12 @@ message KeyVerificationAdmin { message SensorConfig { /* - * SCDXX CO2 Sensor configuration + * SCD4X CO2 Sensor configuration */ - SCDXX_config scdxx_config = 1; + SCD4X_config scd4x_config = 1; } -message SCDXX_config { +message SCD4X_config { /* * Set Automatic self-calibration enabled */ @@ -618,4 +618,9 @@ message SCDXX_config { * Perform a factory reset of the sensor */ optional bool factory_reset = 7; + + /* + * Low Power mode for sensor + */ + optional bool low_power = 8; } From 05eee86c47304f0de859e5a79f9bfda9b0bd4a55 Mon Sep 17 00:00:00 2001 From: oscgonfer Date: Mon, 4 Aug 2025 13:23:05 +0200 Subject: [PATCH 295/454] Minor fixes on scd4x_config protobuf --- meshtastic/admin.proto | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/meshtastic/admin.proto b/meshtastic/admin.proto index a981080..3d68eea 100644 --- a/meshtastic/admin.proto +++ b/meshtastic/admin.proto @@ -597,22 +597,22 @@ message SCD4X_config { /* * Recalibration target CO2 concentration in ppm (FRC or ASC) */ - optional uint32 target_co2_conc = 2; + optional uint32 set_target_co2_conc = 2; /* * Reference temperature in degC */ - optional float temperature = 4; + optional float set_temperature = 4; /* * Altitude of sensor in meters above sea level. 0 - 3000m (overrides ambient pressure) */ - optional uint32 altitude = 5; + optional uint32 set_altitude = 5; /* * Sensor ambient pressure in Pa. 70000 - 120000 Pa (overrides altitude) */ - optional uint32 ambient_pressure = 6; + optional uint32 set_ambient_pressure = 6; /* * Perform a factory reset of the sensor @@ -620,7 +620,7 @@ message SCD4X_config { optional bool factory_reset = 7; /* - * Low Power mode for sensor + * Power mode for sensor (true for low power, false for normal) */ - optional bool low_power = 8; + optional bool set_power_mode = 8; } From e8544c529fc5a83593e206620ca795f8dadd9b96 Mon Sep 17 00:00:00 2001 From: oscgonfer Date: Mon, 4 Aug 2025 14:56:54 +0200 Subject: [PATCH 296/454] Fix protobuf definition for SCD4X --- meshtastic/admin.proto | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/meshtastic/admin.proto b/meshtastic/admin.proto index 3d68eea..f35b689 100644 --- a/meshtastic/admin.proto +++ b/meshtastic/admin.proto @@ -602,25 +602,25 @@ message SCD4X_config { /* * Reference temperature in degC */ - optional float set_temperature = 4; + optional float set_temperature = 3; /* * Altitude of sensor in meters above sea level. 0 - 3000m (overrides ambient pressure) */ - optional uint32 set_altitude = 5; + optional uint32 set_altitude = 4; /* * Sensor ambient pressure in Pa. 70000 - 120000 Pa (overrides altitude) */ - optional uint32 set_ambient_pressure = 6; + optional uint32 set_ambient_pressure = 5; /* * Perform a factory reset of the sensor */ - optional bool factory_reset = 7; + optional bool factory_reset = 6; /* * Power mode for sensor (true for low power, false for normal) */ - optional bool set_power_mode = 8; + optional bool set_power_mode = 7; } From d5b96c77e13d20c09053bde262b62e33439418d9 Mon Sep 17 00:00:00 2001 From: oscgonfer Date: Tue, 5 Aug 2025 14:03:16 +0200 Subject: [PATCH 297/454] Add protobuf for SEN5X state --- meshtastic/telemetry.proto | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/meshtastic/telemetry.proto b/meshtastic/telemetry.proto index d65432d..c9b9958 100644 --- a/meshtastic/telemetry.proto +++ b/meshtastic/telemetry.proto @@ -797,3 +797,18 @@ message Nau7802Config { */ float calibrationFactor = 2; } + +/* + * SEN5X State, for saving to flash + */ +message SEN5XState { + /* + * Last cleaning time for SEN5X + */ + int32 last_cleaning_time = 1; + + /* + * Last cleaning time for SEN5X - valid flag + */ + bool last_cleaning_valid = 2; +} From 70950c6aa8461038c1678923b2f4aae0e6ba88ad Mon Sep 17 00:00:00 2001 From: oscgonfer Date: Tue, 5 Aug 2025 17:38:48 +0200 Subject: [PATCH 298/454] Minor fix in cleaning time type --- meshtastic/telemetry.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meshtastic/telemetry.proto b/meshtastic/telemetry.proto index c9b9958..fb92189 100644 --- a/meshtastic/telemetry.proto +++ b/meshtastic/telemetry.proto @@ -805,7 +805,7 @@ message SEN5XState { /* * Last cleaning time for SEN5X */ - int32 last_cleaning_time = 1; + uint32 last_cleaning_time = 1; /* * Last cleaning time for SEN5X - valid flag From e44958478be0a81bde5fec4c1cf500c0578273bc Mon Sep 17 00:00:00 2001 From: oscgonfer Date: Thu, 7 Aug 2025 16:05:14 +0200 Subject: [PATCH 299/454] SEN5X State protobuf --- meshtastic/telemetry.proto | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/meshtastic/telemetry.proto b/meshtastic/telemetry.proto index 036ffde..0789fc5 100644 --- a/meshtastic/telemetry.proto +++ b/meshtastic/telemetry.proto @@ -811,4 +811,19 @@ message SEN5XState { * Last cleaning time for SEN5X - valid flag */ bool last_cleaning_valid = 2; + + /* + * VOC state time for SEN5X + */ + optional fixed64 voc_state = 3; + + /* + * Last VOC state time for SEN5X + */ + optional uint32 voc_time = 4; + + /* + * Last VOC state validity flag for SEN5X + */ + bool voc_valid = 5; } From 06a69c09db3017ba2f6991266112ce2b9d2670e6 Mon Sep 17 00:00:00 2001 From: oscgonfer Date: Fri, 8 Aug 2025 10:59:31 +0200 Subject: [PATCH 300/454] Add config message for sen5x --- meshtastic/admin.proto | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/meshtastic/admin.proto b/meshtastic/admin.proto index f35b689..ada357b 100644 --- a/meshtastic/admin.proto +++ b/meshtastic/admin.proto @@ -586,6 +586,11 @@ message SensorConfig { * SCD4X CO2 Sensor configuration */ SCD4X_config scd4x_config = 1; + + /* + * SEN5X PM Sensor configuration + */ + SEN5X_config sen5x_config = 2; } message SCD4X_config { @@ -624,3 +629,10 @@ message SCD4X_config { */ optional bool set_power_mode = 7; } + +message SEN5X_config { + /* + * Reference temperature in degC + */ + optional float set_temperature = 1; +} \ No newline at end of file From f5f209d9980537b0e80f51a46d01fb5558f2d4e3 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Sat, 9 Aug 2025 08:10:23 -0500 Subject: [PATCH 301/454] Add nonce to heartbeat --- meshtastic/mesh.proto | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index e68c56b..5a3e437 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -2251,7 +2251,12 @@ enum ExcludedModules { * A heartbeat message is sent to the node from the client to keep the connection alive. * This is currently only needed to keep serial connections alive, but can be used by any PhoneAPI. */ -message Heartbeat {} +message Heartbeat { + /* + * The nonce of the heartbeat message + */ + uint32 nonce = 1; +} /* * RemoteHardwarePins associated with a node From e2c0831aa3d34a58a36c2b9fdcb828e58961cbc5 Mon Sep 17 00:00:00 2001 From: Jonathan Bennett Date: Sat, 9 Aug 2025 08:53:48 -0500 Subject: [PATCH 302/454] Add transport mechanism in MeshPacket (#748) --- meshtastic/mesh.proto | 50 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 5a3e437..a8de0d8 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -1272,6 +1272,51 @@ message MeshPacket { DELAYED_DIRECT = 2; } + /* + * Enum to identify which transport mechanism this packet arrived over + */ + enum TransportMechanism { + /* + * The default case is that the node generated a packet itself + */ + TRANSPORT_INTERNAL = 0; + + /* + * Arrived via the primary LoRa radio + */ + TRANSPORT_LORA = 1; + + /* + * Arrived via a secondary LoRa radio + */ + TRANSPORT_LORA_ALT1 = 2; + + /* + * Arrived via a tertiary LoRa radio + */ + TRANSPORT_LORA_ALT2 = 3; + + /* + * Arrived via a quaternary LoRa radio + */ + TRANSPORT_LORA_ALT3 = 4; + + /* + * Arrived via an MQTT connection + */ + TRANSPORT_MQTT = 5; + + /* + * Arrived via Multicast UDP + */ + TRANSPORT_MULTICAST_UDP = 6; + + /* + * Arrived via API connection + */ + TRANSPORT_API = 7; + } + /* * The sending node number. * Note: Our crypto implementation uses this field as well. @@ -1419,6 +1464,11 @@ message MeshPacket { * Set by the firmware internally, clients are not supposed to set this. */ uint32 tx_after = 20; + + /* + * Indicates which transport mechanism this packet arrived over + */ + TransportMechanism transport_mechanism = 21; } /* From 87ba3f87040deb1e87871d308964e280caedb72b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20G=C3=B6ttgens?= Date: Fri, 15 Aug 2025 13:33:47 +0200 Subject: [PATCH 303/454] add Lilygo T-Echo Lite --- meshtastic/mesh.proto | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index a8de0d8..504b7a5 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -779,6 +779,11 @@ enum HardwareModel { * https://heltec.org/project/meshsolar/ */ HELTEC_MESH_SOLAR = 108; + + /* + * Lilygo T-Echo Lite + */ + T_ECHO_LITE = 109; /* * ------------------------------------------------------------------------------------------------------------------------------------------ From aa86e284a34848c8ef02e3f2239f573da97f28f3 Mon Sep 17 00:00:00 2001 From: Davide Cavalca Date: Mon, 18 Aug 2025 20:52:33 -0700 Subject: [PATCH 304/454] Add TSL2561 sensor --- meshtastic/telemetry.proto | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/meshtastic/telemetry.proto b/meshtastic/telemetry.proto index 3ec85b4..4f7a88e 100644 --- a/meshtastic/telemetry.proto +++ b/meshtastic/telemetry.proto @@ -781,6 +781,10 @@ enum TelemetrySensorType { * SEN5X PM SENSORS */ SEN5X = 43; + /* + * TSL2561 light sensor + */ + TSL2561 = 44; } /* From 8985852d752de3f7210f9a4a3e0923120ec438b3 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Wed, 20 Aug 2025 05:39:53 -0500 Subject: [PATCH 305/454] Default to non-square SH1107 --- meshtastic/config.proto | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/meshtastic/config.proto b/meshtastic/config.proto index 321bbb2..5214218 100644 --- a/meshtastic/config.proto +++ b/meshtastic/config.proto @@ -666,14 +666,14 @@ message Config { OLED_SH1106 = 2; /* - * Can not be auto detected but set by proto. Used for 128x128 screens + * Can not be auto detected but set by proto. Used for 128x64 screens */ OLED_SH1107 = 3; /* - * Can not be auto detected but set by proto. Used for 128x64 screens + * Can not be auto detected but set by proto. Used for 128x128 screens */ - OLED_SH1107_128_64 = 4; + OLED_SH1107_128_128 = 4; } /* From c5aeb193ca06fceb90ce1255e176554dd1a9a08f Mon Sep 17 00:00:00 2001 From: ford-jones Date: Thu, 21 Aug 2025 10:23:46 +1200 Subject: [PATCH 306/454] Rangetest cleanup configuration option --- meshtastic/module_config.proto | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/meshtastic/module_config.proto b/meshtastic/module_config.proto index b878083..7302014 100644 --- a/meshtastic/module_config.proto +++ b/meshtastic/module_config.proto @@ -530,6 +530,12 @@ message ModuleConfig { * ESP32 Only */ bool save = 3; + + /* + * Bool indicating that the node should cleanup / destroy it's RangeTest.csv file. + * ESP32 Only + */ + bool clear = 4; } /* From 51b444ec10b08c2f921768e84aef09b8c7fc6b31 Mon Sep 17 00:00:00 2001 From: oscgonfer Date: Tue, 26 Aug 2025 19:03:11 +0200 Subject: [PATCH 307/454] Add config flag for low power mode --- meshtastic/admin.proto | 5 +++++ meshtastic/telemetry.proto | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/meshtastic/admin.proto b/meshtastic/admin.proto index ada357b..a34c4aa 100644 --- a/meshtastic/admin.proto +++ b/meshtastic/admin.proto @@ -635,4 +635,9 @@ message SEN5X_config { * Reference temperature in degC */ optional float set_temperature = 1; + + /* + * One-shot mode (true for low power - one-shot mode, false for normal - contionuous mode) + */ + optional bool set_one_shot_mode = 2; } \ No newline at end of file diff --git a/meshtastic/telemetry.proto b/meshtastic/telemetry.proto index 0789fc5..93e8f21 100644 --- a/meshtastic/telemetry.proto +++ b/meshtastic/telemetry.proto @@ -826,4 +826,9 @@ message SEN5XState { * Last VOC state validity flag for SEN5X */ bool voc_valid = 5; + + /* + * Config flag for one-shot mode (see admin.proto) + */ + bool one_shot_mode = 6; } From 77b00ce690a7c447b5b274d6e9e5efc73e08a285 Mon Sep 17 00:00:00 2001 From: oscgonfer Date: Fri, 29 Aug 2025 15:28:20 +0200 Subject: [PATCH 308/454] Minor changes on VOC state array and docs --- meshtastic/admin.proto | 2 +- meshtastic/telemetry.proto | 32 ++++++++++++++++---------------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/meshtastic/admin.proto b/meshtastic/admin.proto index a34c4aa..c64306f 100644 --- a/meshtastic/admin.proto +++ b/meshtastic/admin.proto @@ -637,7 +637,7 @@ message SEN5X_config { optional float set_temperature = 1; /* - * One-shot mode (true for low power - one-shot mode, false for normal - contionuous mode) + * One-shot mode (true for low power - one-shot mode, false for normal - continuous mode) */ optional bool set_one_shot_mode = 2; } \ No newline at end of file diff --git a/meshtastic/telemetry.proto b/meshtastic/telemetry.proto index 93e8f21..32996f4 100644 --- a/meshtastic/telemetry.proto +++ b/meshtastic/telemetry.proto @@ -812,23 +812,23 @@ message SEN5XState { */ bool last_cleaning_valid = 2; - /* - * VOC state time for SEN5X - */ - optional fixed64 voc_state = 3; - - /* - * Last VOC state time for SEN5X - */ - optional uint32 voc_time = 4; - - /* - * Last VOC state validity flag for SEN5X - */ - bool voc_valid = 5; - /* * Config flag for one-shot mode (see admin.proto) */ - bool one_shot_mode = 6; + bool one_shot_mode = 3; + + /* + * Last VOC state time for SEN55 + */ + optional uint32 voc_state_time = 4; + + /* + * Last VOC state validity flag for SEN55 + */ + optional bool voc_state_valid = 5; + + /* + * VOC state array (8x uint8t) for SEN55 + */ + optional fixed64 voc_state_array = 6; } From 4c4427c4a73c86fed7dc8632188bb8be95349d81 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Fri, 29 Aug 2025 13:47:04 -0500 Subject: [PATCH 309/454] Update renovate.json From 6e0e795a83d93d5267c6d4352127c567970dbf3f Mon Sep 17 00:00:00 2001 From: ford-jones Date: Wed, 3 Sep 2025 12:01:33 +1200 Subject: [PATCH 310/454] Improved naming --- meshtastic/module_config.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meshtastic/module_config.proto b/meshtastic/module_config.proto index 7302014..f91671c 100644 --- a/meshtastic/module_config.proto +++ b/meshtastic/module_config.proto @@ -535,7 +535,7 @@ message ModuleConfig { * Bool indicating that the node should cleanup / destroy it's RangeTest.csv file. * ESP32 Only */ - bool clear = 4; + bool clear_on_reboot = 4; } /* From e0b97d6996a757328843bd759738d21546a4a53b Mon Sep 17 00:00:00 2001 From: Quency-D Date: Wed, 3 Sep 2025 13:55:36 +0800 Subject: [PATCH 311/454] add heltec v4 board. --- meshtastic/mesh.proto | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 504b7a5..7671988 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -785,6 +785,11 @@ enum HardwareModel { */ T_ECHO_LITE = 109; + /* + * New Heltec LoRA32 with ESP32-S3 CPU + */ + HELTEC_V4 = 110; + /* * ------------------------------------------------------------------------------------------------------------------------------------------ * Reserved ID For developing private Ports. These will show up in live traffic sparsely, so we can use a high number. Keep it within 8 bits. From 3347d98f04acb1ecff95b4f31dceac67f36e1262 Mon Sep 17 00:00:00 2001 From: Mike Robbins Date: Fri, 5 Sep 2025 13:18:19 -0700 Subject: [PATCH 312/454] Reserve value 12 for CLIENT_BASE in enum Config.DeviceConfig.Role --- meshtastic/config.proto | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/meshtastic/config.proto b/meshtastic/config.proto index 5214218..12c79c5 100644 --- a/meshtastic/config.proto +++ b/meshtastic/config.proto @@ -108,6 +108,14 @@ message Config { * consuming hops. */ ROUTER_LATE = 11; + + /* + * Description: Treats packets from or to favorited nodes as ROUTER, and all other packets as CLIENT. + * Technical Details: Used for stronger attic/roof nodes to distribute messages more widely + * from weaker, indoor, or less-well-positioned nodes. Recommended for users with multiple nodes + * where one CLIENT_BASE acts as a more powerful base station, such as an attic/roof node. + */ + CLIENT_BASE = 12; } /* From 74f7041b1c0585d7ac2f266264f46d6c5589228b Mon Sep 17 00:00:00 2001 From: vidplace7 Date: Sat, 6 Sep 2025 10:44:37 -0400 Subject: [PATCH 313/454] Fix formatting Who merged this? :P --- meshtastic/mesh.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 7671988..62504d0 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -779,7 +779,7 @@ enum HardwareModel { * https://heltec.org/project/meshsolar/ */ HELTEC_MESH_SOLAR = 108; - + /* * Lilygo T-Echo Lite */ From 96ef7eef7acf485510d4ded363c684148338a9ef Mon Sep 17 00:00:00 2001 From: Manuel <71137295+mverch67@users.noreply.github.com> Date: Mon, 8 Sep 2025 20:19:53 +0200 Subject: [PATCH 314/454] add Czech translation enum to MUI --- meshtastic/device_ui.proto | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/meshtastic/device_ui.proto b/meshtastic/device_ui.proto index eb1e949..b9a72ce 100644 --- a/meshtastic/device_ui.proto +++ b/meshtastic/device_ui.proto @@ -314,6 +314,11 @@ enum Language { */ BULGARIAN = 17; + /* + * Czech + */ + CZECH = 18; + /* * Simplified Chinese (experimental) */ From bb1a5d09bcaab9bf29e8cd64b9c1633ef22d3046 Mon Sep 17 00:00:00 2001 From: l0g-lab Date: Wed, 10 Sep 2025 18:20:40 -0400 Subject: [PATCH 315/454] add node_name_length option --- meshtastic/config.proto | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/meshtastic/config.proto b/meshtastic/config.proto index 12c79c5..1b88360 100644 --- a/meshtastic/config.proto +++ b/meshtastic/config.proto @@ -811,6 +811,12 @@ message Config { * If true, the device will display the time in 12-hour format on screen. */ bool use_12h_clock = 12; + + /* + * If false (default), the device will use short names for various display screens. + * If true, node names will show in long format + */ + bool use_long_node_name = 13; } /* From 550702a695bc31651c758757ccf70f0fbe9cc43c Mon Sep 17 00:00:00 2001 From: ford-jones Date: Thu, 11 Sep 2025 14:17:24 +1200 Subject: [PATCH 316/454] Added mute state to channel settings --- meshtastic/channel.proto | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/meshtastic/channel.proto b/meshtastic/channel.proto index 16c8c19..b59591e 100644 --- a/meshtastic/channel.proto +++ b/meshtastic/channel.proto @@ -86,6 +86,11 @@ message ChannelSettings { * Per-channel module settings. */ ModuleSettings module_settings = 7; + + /* + * Whether or not we should receive notifactions / alerts from this channel + */ + bool mute = 8; } /* From 638917dea8bb36b2823261c9fbc87430c859b3c3 Mon Sep 17 00:00:00 2001 From: ford-jones Date: Thu, 11 Sep 2025 17:31:36 +1200 Subject: [PATCH 317/454] Added mute state to nodedb entries --- meshtastic/admin.proto | 10 ++++++++++ meshtastic/deviceonly.proto | 10 ++++++++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/meshtastic/admin.proto b/meshtastic/admin.proto index 0259c2a..2f805ca 100644 --- a/meshtastic/admin.proto +++ b/meshtastic/admin.proto @@ -414,6 +414,16 @@ message AdminMessage { */ uint32 remove_ignored_node = 48; + /* + * Set specified node-num to be muted + */ + uint32 set_muted_node = 49; + + /* + * Set specified node-num to be heard / not-muted + */ + uint32 remove_muted_node = 50; + /* * Begins an edit transaction for config, module config, owner, and channel settings changes * This will delay the standard *implicit* save to the file system and subsequent reboot behavior until committed (commit_edit_settings) diff --git a/meshtastic/deviceonly.proto b/meshtastic/deviceonly.proto index d449373..7465399 100644 --- a/meshtastic/deviceonly.proto +++ b/meshtastic/deviceonly.proto @@ -159,16 +159,22 @@ message NodeInfoLite { */ bool is_ignored = 11; + /* + * True if node has been muted + * Persists between NodeDB internal clean ups + */ + bool is_muted = 12; + /* * Last byte of the node number of the node that should be used as the next hop to reach this node. */ - uint32 next_hop = 12; + uint32 next_hop = 13; /* * Bitfield for storing booleans. * LSB 0 is_key_manually_verified */ - uint32 bitfield = 13; + uint32 bitfield = 14; } /* From b7e0ef2ec7510d11fce39ffc2e420f3739014f0e Mon Sep 17 00:00:00 2001 From: ford-jones Date: Thu, 11 Sep 2025 20:11:16 +1200 Subject: [PATCH 318/454] Added mute state to channel settings --- meshtastic/channel.proto | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/meshtastic/channel.proto b/meshtastic/channel.proto index 16c8c19..b59591e 100644 --- a/meshtastic/channel.proto +++ b/meshtastic/channel.proto @@ -86,6 +86,11 @@ message ChannelSettings { * Per-channel module settings. */ ModuleSettings module_settings = 7; + + /* + * Whether or not we should receive notifactions / alerts from this channel + */ + bool mute = 8; } /* From 6fa4def9710522ecacb68531597ed6e464fe0e19 Mon Sep 17 00:00:00 2001 From: ford-jones Date: Thu, 11 Sep 2025 20:16:08 +1200 Subject: [PATCH 319/454] Added muted state to node info --- meshtastic/admin.proto | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/meshtastic/admin.proto b/meshtastic/admin.proto index 0259c2a..2f805ca 100644 --- a/meshtastic/admin.proto +++ b/meshtastic/admin.proto @@ -414,6 +414,16 @@ message AdminMessage { */ uint32 remove_ignored_node = 48; + /* + * Set specified node-num to be muted + */ + uint32 set_muted_node = 49; + + /* + * Set specified node-num to be heard / not-muted + */ + uint32 remove_muted_node = 50; + /* * Begins an edit transaction for config, module config, owner, and channel settings changes * This will delay the standard *implicit* save to the file system and subsequent reboot behavior until committed (commit_edit_settings) From e5abb26b83cf2eccc538a55f3532672e14d823f9 Mon Sep 17 00:00:00 2001 From: ford-jones Date: Sat, 13 Sep 2025 13:30:54 +1200 Subject: [PATCH 320/454] Make use of pre-existing channel_settings.module_settings.is_client_muted setting --- meshtastic/channel.proto | 5 ----- 1 file changed, 5 deletions(-) diff --git a/meshtastic/channel.proto b/meshtastic/channel.proto index b59591e..16c8c19 100644 --- a/meshtastic/channel.proto +++ b/meshtastic/channel.proto @@ -86,11 +86,6 @@ message ChannelSettings { * Per-channel module settings. */ ModuleSettings module_settings = 7; - - /* - * Whether or not we should receive notifactions / alerts from this channel - */ - bool mute = 8; } /* From 080fd3b0d174af36271545415687aeafd1b4131d Mon Sep 17 00:00:00 2001 From: ford-jones Date: Sat, 13 Sep 2025 17:44:41 +1200 Subject: [PATCH 321/454] Revert previous commit - this needs it's own proto --- meshtastic/channel.proto | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/meshtastic/channel.proto b/meshtastic/channel.proto index 16c8c19..0c9ff13 100644 --- a/meshtastic/channel.proto +++ b/meshtastic/channel.proto @@ -86,6 +86,13 @@ message ChannelSettings { * Per-channel module settings. */ ModuleSettings module_settings = 7; + + /* + * Whether or not we should receive notifactions / alerts through this channel + * Note: This is NOT the same as module_settings.is_client_mute which pertains + * to the device role. + */ + bool mute = 8; } /* From e8d10fe47874e248e7897eb8e3562f296606ac7a Mon Sep 17 00:00:00 2001 From: ford-jones Date: Sat, 13 Sep 2025 17:48:58 +1200 Subject: [PATCH 322/454] Remove trailing whitespace --- meshtastic/channel.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meshtastic/channel.proto b/meshtastic/channel.proto index 0c9ff13..8605d63 100644 --- a/meshtastic/channel.proto +++ b/meshtastic/channel.proto @@ -89,7 +89,7 @@ message ChannelSettings { /* * Whether or not we should receive notifactions / alerts through this channel - * Note: This is NOT the same as module_settings.is_client_mute which pertains + * Note: This is NOT the same as module_settings.is_client_mute which pertains * to the device role. */ bool mute = 8; From b90ea12cc81ce213c3763b5b25df9c11b01ffb56 Mon Sep 17 00:00:00 2001 From: Jason P Date: Sat, 13 Sep 2025 17:18:46 -0500 Subject: [PATCH 323/454] Add Maidenhead Protobuf --- meshtastic/config.proto | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/meshtastic/config.proto b/meshtastic/config.proto index 12c79c5..5a1b915 100644 --- a/meshtastic/config.proto +++ b/meshtastic/config.proto @@ -637,6 +637,12 @@ message Config { * E is the easting, N is the northing */ OSGR = 5; + + /* + Maidenhead Locator System + * Described here: https://en.wikipedia.org/wiki/Maidenhead_Locator_System + */ + MAIDENHEAD = 6; } /* From c5af2d77d80ecb24b60f399a4a49a02e824a71c6 Mon Sep 17 00:00:00 2001 From: Jason P Date: Sat, 13 Sep 2025 18:06:31 -0500 Subject: [PATCH 324/454] Fix formatting --- meshtastic/config.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meshtastic/config.proto b/meshtastic/config.proto index 5a1b915..7032013 100644 --- a/meshtastic/config.proto +++ b/meshtastic/config.proto @@ -639,7 +639,7 @@ message Config { OSGR = 5; /* - Maidenhead Locator System + * Maidenhead Locator System * Described here: https://en.wikipedia.org/wiki/Maidenhead_Locator_System */ MAIDENHEAD = 6; From 2fb76bc70b7e613ae24a615c7b9b79c04fea911b Mon Sep 17 00:00:00 2001 From: Jason P Date: Sat, 13 Sep 2025 18:07:55 -0500 Subject: [PATCH 325/454] Shorten Protobuf to match others --- meshtastic/config.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meshtastic/config.proto b/meshtastic/config.proto index 7032013..57ea98e 100644 --- a/meshtastic/config.proto +++ b/meshtastic/config.proto @@ -642,7 +642,7 @@ message Config { * Maidenhead Locator System * Described here: https://en.wikipedia.org/wiki/Maidenhead_Locator_System */ - MAIDENHEAD = 6; + MLS = 6; } /* From 314f80bc6f1bb951f37533a0cd60d9ad4356376f Mon Sep 17 00:00:00 2001 From: ford-jones Date: Sun, 14 Sep 2025 17:41:11 +1200 Subject: [PATCH 326/454] Update comment --- meshtastic/channel.proto | 2 -- 1 file changed, 2 deletions(-) diff --git a/meshtastic/channel.proto b/meshtastic/channel.proto index 8605d63..4b77242 100644 --- a/meshtastic/channel.proto +++ b/meshtastic/channel.proto @@ -89,8 +89,6 @@ message ChannelSettings { /* * Whether or not we should receive notifactions / alerts through this channel - * Note: This is NOT the same as module_settings.is_client_mute which pertains - * to the device role. */ bool mute = 8; } From 945b796a982f38171a9e0d28b5c8b1f7d53c5cd1 Mon Sep 17 00:00:00 2001 From: Jonathan Bennett Date: Mon, 15 Sep 2025 15:33:11 -0500 Subject: [PATCH 327/454] Add hardwareModel for M5stack c6l (#775) * Add hardwareModel for M5stack c6l * Update comment to match enum * Update mesh.proto --- meshtastic/mesh.proto | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 62504d0..2637a9c 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -755,9 +755,9 @@ enum HardwareModel { T_LORA_PAGER = 103; /* - * GAT562 Mesh Trial Tracker + * M5Stack Reserved */ - GAT562_MESH_TRIAL_TRACKER = 104; + M5STACK_RESERVED = 104; // 0x68 /* * RAKwireless WisMesh Tag @@ -790,6 +790,11 @@ enum HardwareModel { */ HELTEC_V4 = 110; + /* + * M5Stack C6L + */ + M5STACK_C6L = 111; + /* * ------------------------------------------------------------------------------------------------------------------------------------------ * Reserved ID For developing private Ports. These will show up in live traffic sparsely, so we can use a high number. Keep it within 8 bits. From d4d150870861b429207c7cb00b82e625601a394a Mon Sep 17 00:00:00 2001 From: WillyJL Date: Mon, 15 Sep 2025 22:49:58 +0200 Subject: [PATCH 328/454] Add hardwareModel for M5Stack Cardputer Adv --- meshtastic/mesh.proto | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 2637a9c..38000b4 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -790,11 +790,16 @@ enum HardwareModel { */ HELTEC_V4 = 110; - /* + /* * M5Stack C6L */ M5STACK_C6L = 111; + /* + * M5Stack Cardputer Adv + */ + M5STACK_CARDPUTER_ADV = 112; + /* * ------------------------------------------------------------------------------------------------------------------------------------------ * Reserved ID For developing private Ports. These will show up in live traffic sparsely, so we can use a high number. Keep it within 8 bits. From 804a06ae4eb463cfd7e25d903f2b9111221428ba Mon Sep 17 00:00:00 2001 From: Jason P Date: Tue, 16 Sep 2025 08:22:53 -0500 Subject: [PATCH 329/454] Move from DisplayConfig to Device_UI --- meshtastic/config.proto | 48 ---------------------------------- meshtastic/device_ui.proto | 53 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+), 48 deletions(-) diff --git a/meshtastic/config.proto b/meshtastic/config.proto index 57ea98e..174fafd 100644 --- a/meshtastic/config.proto +++ b/meshtastic/config.proto @@ -597,54 +597,6 @@ message Config { * Display Config */ message DisplayConfig { - /* - * How the GPS coordinates are displayed on the OLED screen. - */ - enum GpsCoordinateFormat { - /* - * GPS coordinates are displayed in the normal decimal degrees format: - * DD.DDDDDD DDD.DDDDDD - */ - DEC = 0; - - /* - * GPS coordinates are displayed in the degrees minutes seconds format: - * DD°MM'SS"C DDD°MM'SS"C, where C is the compass point representing the locations quadrant - */ - DMS = 1; - - /* - * Universal Transverse Mercator format: - * ZZB EEEEEE NNNNNNN, where Z is zone, B is band, E is easting, N is northing - */ - UTM = 2; - - /* - * Military Grid Reference System format: - * ZZB CD EEEEE NNNNN, where Z is zone, B is band, C is the east 100k square, D is the north 100k square, - * E is easting, N is northing - */ - MGRS = 3; - - /* - * Open Location Code (aka Plus Codes). - */ - OLC = 4; - - /* - * Ordnance Survey Grid Reference (the National Grid System of the UK). - * Format: AB EEEEE NNNNN, where A is the east 100k square, B is the north 100k square, - * E is the easting, N is the northing - */ - OSGR = 5; - - /* - * Maidenhead Locator System - * Described here: https://en.wikipedia.org/wiki/Maidenhead_Locator_System - */ - MLS = 6; - } - /* * Unit display preference */ diff --git a/meshtastic/device_ui.proto b/meshtastic/device_ui.proto index b9a72ce..c5dd51f 100644 --- a/meshtastic/device_ui.proto +++ b/meshtastic/device_ui.proto @@ -88,6 +88,59 @@ message DeviceUIConfig { * true for analog clockface, false for digital clockface */ bool is_clockface_analog = 18; + + /* + * How the GPS coordinates are formatted on the OLED screen. + */ + GpsCoordinateFormat gps_format = 19; + + /* + * How the GPS coordinates are displayed on the OLED screen. + */ + enum GpsCoordinateFormat { + /* + * GPS coordinates are displayed in the normal decimal degrees format: + * DD.DDDDDD DDD.DDDDDD + */ + DEC = 0; + + /* + * GPS coordinates are displayed in the degrees minutes seconds format: + * DD°MM'SS"C DDD°MM'SS"C, where C is the compass point representing the locations quadrant + */ + DMS = 1; + + /* + * Universal Transverse Mercator format: + * ZZB EEEEEE NNNNNNN, where Z is zone, B is band, E is easting, N is northing + */ + UTM = 2; + + /* + * Military Grid Reference System format: + * ZZB CD EEEEE NNNNN, where Z is zone, B is band, C is the east 100k square, D is the north 100k square, + * E is easting, N is northing + */ + MGRS = 3; + + /* + * Open Location Code (aka Plus Codes). + */ + OLC = 4; + + /* + * Ordnance Survey Grid Reference (the National Grid System of the UK). + * Format: AB EEEEE NNNNN, where A is the east 100k square, B is the north 100k square, + * E is the easting, N is the northing + */ + OSGR = 5; + + /* + * Maidenhead Locator System + * Described here: https://en.wikipedia.org/wiki/Maidenhead_Locator_System + */ + MLS = 6; + } } message NodeFilter { From 99bdcfdbfebd8cd881f44dc8e6899e4a96899da1 Mon Sep 17 00:00:00 2001 From: Jason P Date: Tue, 16 Sep 2025 08:45:08 -0500 Subject: [PATCH 330/454] Finalize move to Device_UI --- meshtastic/config.proto | 6 ------ 1 file changed, 6 deletions(-) diff --git a/meshtastic/config.proto b/meshtastic/config.proto index 174fafd..e030725 100644 --- a/meshtastic/config.proto +++ b/meshtastic/config.proto @@ -648,12 +648,6 @@ message Config { */ uint32 screen_on_secs = 1; - /* - * Deprecated in 2.7.4: Unused - * How the GPS coordinates are formatted on the OLED screen. - */ - GpsCoordinateFormat gps_format = 2 [deprecated = true]; - /* * Automatically toggles to the next page on the screen like a carousel, based the specified interval in seconds. * Potentially useful for devices without user buttons. From 375fab79d4b33c090c3be9b3b6fa869ef076c4f1 Mon Sep 17 00:00:00 2001 From: Jason P Date: Tue, 16 Sep 2025 08:56:43 -0500 Subject: [PATCH 331/454] Attempt to fix formatting issues --- meshtastic/device_ui.proto | 88 +++++++++++++++++++------------------- 1 file changed, 44 insertions(+), 44 deletions(-) diff --git a/meshtastic/device_ui.proto b/meshtastic/device_ui.proto index c5dd51f..003a1f4 100644 --- a/meshtastic/device_ui.proto +++ b/meshtastic/device_ui.proto @@ -94,53 +94,53 @@ message DeviceUIConfig { */ GpsCoordinateFormat gps_format = 19; - /* - * How the GPS coordinates are displayed on the OLED screen. + /* + * How the GPS coordinates are displayed on the OLED screen. + */ + enum GpsCoordinateFormat { + /* + * GPS coordinates are displayed in the normal decimal degrees format: + * DD.DDDDDD DDD.DDDDDD */ - enum GpsCoordinateFormat { - /* - * GPS coordinates are displayed in the normal decimal degrees format: - * DD.DDDDDD DDD.DDDDDD - */ - DEC = 0; + DEC = 0; + + /* + * GPS coordinates are displayed in the degrees minutes seconds format: + * DD°MM'SS"C DDD°MM'SS"C, where C is the compass point representing the locations quadrant + */ + DMS = 1; - /* - * GPS coordinates are displayed in the degrees minutes seconds format: - * DD°MM'SS"C DDD°MM'SS"C, where C is the compass point representing the locations quadrant - */ - DMS = 1; - - /* - * Universal Transverse Mercator format: - * ZZB EEEEEE NNNNNNN, where Z is zone, B is band, E is easting, N is northing - */ - UTM = 2; + /* + * Universal Transverse Mercator format: + * ZZB EEEEEE NNNNNNN, where Z is zone, B is band, E is easting, N is northing + */ + UTM = 2; + + /* + * Military Grid Reference System format: + * ZZB CD EEEEE NNNNN, where Z is zone, B is band, C is the east 100k square, D is the north 100k square, + * E is easting, N is northing + */ + MGRS = 3; + + /* + * Open Location Code (aka Plus Codes). + */ + OLC = 4; + + /* + * Ordnance Survey Grid Reference (the National Grid System of the UK). + * Format: AB EEEEE NNNNN, where A is the east 100k square, B is the north 100k square, + * E is the easting, N is the northing + */ + OSGR = 5; - /* - * Military Grid Reference System format: - * ZZB CD EEEEE NNNNN, where Z is zone, B is band, C is the east 100k square, D is the north 100k square, - * E is easting, N is northing - */ - MGRS = 3; - - /* - * Open Location Code (aka Plus Codes). - */ - OLC = 4; - - /* - * Ordnance Survey Grid Reference (the National Grid System of the UK). - * Format: AB EEEEE NNNNN, where A is the east 100k square, B is the north 100k square, - * E is the easting, N is the northing - */ - OSGR = 5; - - /* - * Maidenhead Locator System - * Described here: https://en.wikipedia.org/wiki/Maidenhead_Locator_System - */ - MLS = 6; - } + /* + * Maidenhead Locator System + * Described here: https://en.wikipedia.org/wiki/Maidenhead_Locator_System + */ + MLS = 6; + } } message NodeFilter { From 74b16a5bd332ec332b92cfc6d16e8778aeb3f090 Mon Sep 17 00:00:00 2001 From: Jason P Date: Tue, 16 Sep 2025 12:00:47 -0500 Subject: [PATCH 332/454] Add int_size 8 for gps_format --- meshtastic/device_ui.options | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/meshtastic/device_ui.options b/meshtastic/device_ui.options index 67bee23..a8fab46 100644 --- a/meshtastic/device_ui.options +++ b/meshtastic/device_ui.options @@ -3,9 +3,10 @@ *DeviceUIConfig.ring_tone_id int_size:8 *DeviceUIConfig.calibration_data max_size:16 *DeviceUIConfig.compass_mode int_size:8 +*DeviceUIConfig.gps_format int_size:8 *NodeFilter.node_name max_size:16 *NodeFilter.hops_away int_size:8 *NodeFilter.channel int_size:8 *NodeHighlight.node_name max_size:16 *GeoPoint.zoom int_size:8 -*Map.style max_size:20 \ No newline at end of file +*Map.style max_size:20 From 58e974544dd7a4cadab4bcabc33d84f85b4c83a4 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Thu, 18 Sep 2025 18:34:52 -0500 Subject: [PATCH 333/454] Revert "Finalize move to Device_UI" This reverts commit 99bdcfdbfebd8cd881f44dc8e6899e4a96899da1. --- meshtastic/config.proto | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/meshtastic/config.proto b/meshtastic/config.proto index e030725..174fafd 100644 --- a/meshtastic/config.proto +++ b/meshtastic/config.proto @@ -648,6 +648,12 @@ message Config { */ uint32 screen_on_secs = 1; + /* + * Deprecated in 2.7.4: Unused + * How the GPS coordinates are formatted on the OLED screen. + */ + GpsCoordinateFormat gps_format = 2 [deprecated = true]; + /* * Automatically toggles to the next page on the screen like a carousel, based the specified interval in seconds. * Potentially useful for devices without user buttons. From 1d9082b2773eb05b8f836993f24ef2a87f5fc384 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Thu, 18 Sep 2025 18:37:23 -0500 Subject: [PATCH 334/454] I changed my mind. Let's just deprecate the enum too --- meshtastic/config.proto | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/meshtastic/config.proto b/meshtastic/config.proto index 174fafd..6d114c9 100644 --- a/meshtastic/config.proto +++ b/meshtastic/config.proto @@ -597,6 +597,13 @@ message Config { * Display Config */ message DisplayConfig { + /* + * Deprecated in 2.7.4: Unused + */ + enum DeprecatedGpsCoordinateFormat { + + } + /* * Unit display preference */ @@ -652,7 +659,7 @@ message Config { * Deprecated in 2.7.4: Unused * How the GPS coordinates are formatted on the OLED screen. */ - GpsCoordinateFormat gps_format = 2 [deprecated = true]; + DeprecatedGpsCoordinateFormat gps_format = 2 [deprecated = true]; /* * Automatically toggles to the next page on the screen like a carousel, based the specified interval in seconds. From 0a0c0ab3619db46b0e95ab07785e267d7dc2a633 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Thu, 18 Sep 2025 18:49:31 -0500 Subject: [PATCH 335/454] Add device_telemetry_enabled to force opt-in of device telemetry broadcasts to the mesh --- meshtastic/module_config.proto | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/meshtastic/module_config.proto b/meshtastic/module_config.proto index f91671c..be8a693 100644 --- a/meshtastic/module_config.proto +++ b/meshtastic/module_config.proto @@ -615,6 +615,12 @@ message ModuleConfig { * Enable/Disable the health telemetry module on-device display */ bool health_screen_enabled = 13; + + /* + * Enable/Disable the device telemetry module to send metrics to the mesh + * Note: We will still send telemtry to the connected phone / client every minute over the API + */ + bool device_telemetry_enabled = 14; } /* From 6a8b80a10835acf48b2dfa2ad8aa0cc596219619 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Fri, 19 Sep 2025 08:25:43 -0500 Subject: [PATCH 336/454] Needs one value --- meshtastic/config.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meshtastic/config.proto b/meshtastic/config.proto index abd9ee0..ca6a353 100644 --- a/meshtastic/config.proto +++ b/meshtastic/config.proto @@ -601,7 +601,7 @@ message Config { * Deprecated in 2.7.4: Unused */ enum DeprecatedGpsCoordinateFormat { - + UNUSED = 0; } /* From 9b3643e4aa0da1bb50c532850b9b614da7f9d51a Mon Sep 17 00:00:00 2001 From: ford-jones Date: Tue, 23 Sep 2025 11:46:10 +1200 Subject: [PATCH 337/454] Decouple node-mute from channel-mute --- meshtastic/admin.proto | 10 ---------- meshtastic/deviceonly.proto | 6 ------ 2 files changed, 16 deletions(-) diff --git a/meshtastic/admin.proto b/meshtastic/admin.proto index 2f805ca..0259c2a 100644 --- a/meshtastic/admin.proto +++ b/meshtastic/admin.proto @@ -414,16 +414,6 @@ message AdminMessage { */ uint32 remove_ignored_node = 48; - /* - * Set specified node-num to be muted - */ - uint32 set_muted_node = 49; - - /* - * Set specified node-num to be heard / not-muted - */ - uint32 remove_muted_node = 50; - /* * Begins an edit transaction for config, module config, owner, and channel settings changes * This will delay the standard *implicit* save to the file system and subsequent reboot behavior until committed (commit_edit_settings) diff --git a/meshtastic/deviceonly.proto b/meshtastic/deviceonly.proto index 7465399..ab439e3 100644 --- a/meshtastic/deviceonly.proto +++ b/meshtastic/deviceonly.proto @@ -159,12 +159,6 @@ message NodeInfoLite { */ bool is_ignored = 11; - /* - * True if node has been muted - * Persists between NodeDB internal clean ups - */ - bool is_muted = 12; - /* * Last byte of the node number of the node that should be used as the next hop to reach this node. */ From 38f77b20f8d64d4f4a66267ecb705a92d22b0aa1 Mon Sep 17 00:00:00 2001 From: ford-jones Date: Tue, 23 Sep 2025 12:11:32 +1200 Subject: [PATCH 338/454] Fix formatting --- meshtastic/deviceonly.proto | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/meshtastic/deviceonly.proto b/meshtastic/deviceonly.proto index ab439e3..d449373 100644 --- a/meshtastic/deviceonly.proto +++ b/meshtastic/deviceonly.proto @@ -162,13 +162,13 @@ message NodeInfoLite { /* * Last byte of the node number of the node that should be used as the next hop to reach this node. */ - uint32 next_hop = 13; + uint32 next_hop = 12; /* * Bitfield for storing booleans. * LSB 0 is_key_manually_verified */ - uint32 bitfield = 14; + uint32 bitfield = 13; } /* From 08bd3380e7870837224ead1f2196c4bb194fd78b Mon Sep 17 00:00:00 2001 From: ford-jones Date: Tue, 23 Sep 2025 14:58:37 +1200 Subject: [PATCH 339/454] run buf format --- meshtastic/mesh.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 504b7a5..fb1bc46 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -779,7 +779,7 @@ enum HardwareModel { * https://heltec.org/project/meshsolar/ */ HELTEC_MESH_SOLAR = 108; - + /* * Lilygo T-Echo Lite */ From 91909ce946a3a93924bce922c1a0e2d523ca9b2b Mon Sep 17 00:00:00 2001 From: ford-jones Date: Tue, 23 Sep 2025 14:59:32 +1200 Subject: [PATCH 340/454] run buf format --- meshtastic/config.proto | 2 +- meshtastic/device_ui.proto | 20 ++++++++++---------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/meshtastic/config.proto b/meshtastic/config.proto index ca6a353..56093d7 100644 --- a/meshtastic/config.proto +++ b/meshtastic/config.proto @@ -603,7 +603,7 @@ message Config { enum DeprecatedGpsCoordinateFormat { UNUSED = 0; } - + /* * Unit display preference */ diff --git a/meshtastic/device_ui.proto b/meshtastic/device_ui.proto index 003a1f4..716db89 100644 --- a/meshtastic/device_ui.proto +++ b/meshtastic/device_ui.proto @@ -88,13 +88,13 @@ message DeviceUIConfig { * true for analog clockface, false for digital clockface */ bool is_clockface_analog = 18; - + /* * How the GPS coordinates are formatted on the OLED screen. */ GpsCoordinateFormat gps_format = 19; - /* + /* * How the GPS coordinates are displayed on the OLED screen. */ enum GpsCoordinateFormat { @@ -103,38 +103,38 @@ message DeviceUIConfig { * DD.DDDDDD DDD.DDDDDD */ DEC = 0; - - /* + + /* * GPS coordinates are displayed in the degrees minutes seconds format: * DD°MM'SS"C DDD°MM'SS"C, where C is the compass point representing the locations quadrant */ - DMS = 1; - + DMS = 1; + /* * Universal Transverse Mercator format: * ZZB EEEEEE NNNNNNN, where Z is zone, B is band, E is easting, N is northing */ UTM = 2; - + /* * Military Grid Reference System format: * ZZB CD EEEEE NNNNN, where Z is zone, B is band, C is the east 100k square, D is the north 100k square, * E is easting, N is northing */ MGRS = 3; - + /* * Open Location Code (aka Plus Codes). */ OLC = 4; - + /* * Ordnance Survey Grid Reference (the National Grid System of the UK). * Format: AB EEEEE NNNNN, where A is the east 100k square, B is the north 100k square, * E is the easting, N is the northing */ OSGR = 5; - + /* * Maidenhead Locator System * Described here: https://en.wikipedia.org/wiki/Maidenhead_Locator_System From 1a3364a8a03d4bfc93f82839f0e69b0494d5850d Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Fri, 26 Sep 2025 06:00:16 -0500 Subject: [PATCH 341/454] Deprecate REPEATER role Mark REPEATER role as deprecated in config.proto --- meshtastic/config.proto | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/meshtastic/config.proto b/meshtastic/config.proto index ca6a353..265b581 100644 --- a/meshtastic/config.proto +++ b/meshtastic/config.proto @@ -48,8 +48,9 @@ message Config { * Description: Infrastructure node for extending network coverage by relaying messages with minimal overhead. Not visible in Nodes list. * Technical Details: Mesh packets will simply be rebroadcasted over this node. Nodes configured with this role will not originate NodeInfo, Position, Telemetry * or any other packet type. They will simply rebroadcast any mesh packets on the same frequency, channel num, spread factor, and coding rate. + * Deprecated in v2.7.11 because it creates "holes" in the mesh rebroadcast chain. */ - REPEATER = 4; + REPEATER = 4 [deprecated = true]; /* * Description: Broadcasts GPS position packets as priority. From 5fa4c44d914aba67971ba15ace22e4b21af64ae5 Mon Sep 17 00:00:00 2001 From: Jonathan Bennett Date: Tue, 30 Sep 2025 13:28:36 -0500 Subject: [PATCH 342/454] Rename R1_NEO (#782) --- meshtastic/mesh.proto | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 38000b4..adfdf51 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -740,9 +740,9 @@ enum HardwareModel { SEEED_WIO_TRACKER_L1_EINK = 100; /* - * Reserved ID for future and past use + * Muzi Works R1 Neo */ - QWANTZ_TINY_ARMS = 101; + MUZI_R1_NEO = 101; /* * Lilygo T-Deck Pro From cea982891f0f4ded4e652ddb9df3589f46efdfe6 Mon Sep 17 00:00:00 2001 From: mverch67 Date: Tue, 30 Sep 2025 20:40:14 +0200 Subject: [PATCH 343/454] add T-Watch Ultra hardware model --- meshtastic/mesh.proto | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index adfdf51..59f8c10 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -800,6 +800,16 @@ enum HardwareModel { */ M5STACK_CARDPUTER_ADV = 112; + /* + * ESP32S3 main controller with GPS and TFT screen. + */ + HELTEC_WIRELESS_TRACKER_V2 = 113; + + /* + * LilyGo T-Watch Ultra + */ + T_WATCH_ULTRA = 114; + /* * ------------------------------------------------------------------------------------------------------------------------------------------ * Reserved ID For developing private Ports. These will show up in live traffic sparsely, so we can use a high number. Keep it within 8 bits. From 60c3e6600a2f4e6f49e45aeb47aafd8291a0015c Mon Sep 17 00:00:00 2001 From: Jonathan Bennett Date: Wed, 1 Oct 2025 14:40:13 -0500 Subject: [PATCH 344/454] Add manually_verified bit to SharedContact (#785) --- meshtastic/admin.proto | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/meshtastic/admin.proto b/meshtastic/admin.proto index 0259c2a..8dc1dc2 100644 --- a/meshtastic/admin.proto +++ b/meshtastic/admin.proto @@ -526,6 +526,11 @@ message SharedContact { * Add this contact to the blocked / ignored list */ bool should_ignore = 3; + + /* + * Set the IS_KEY_MANUALLY_VERIFIED bit + */ + bool manually_verified = 4; } /* From 8885b0d9f243ecf8156f3d32ad3f0664fe26ab66 Mon Sep 17 00:00:00 2001 From: mverch67 Date: Fri, 3 Oct 2025 12:24:14 +0200 Subject: [PATCH 345/454] MUI: add danish language enum --- meshtastic/device_ui.proto | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/meshtastic/device_ui.proto b/meshtastic/device_ui.proto index 716db89..5b6bb5d 100644 --- a/meshtastic/device_ui.proto +++ b/meshtastic/device_ui.proto @@ -372,6 +372,11 @@ enum Language { */ CZECH = 18; + /* + * Danish + */ + DANISH = 19; + /* * Simplified Chinese (experimental) */ From 7f1110dd7737c7884012cc899862f9d7427b9c51 Mon Sep 17 00:00:00 2001 From: GUVWAF Date: Sat, 4 Oct 2025 12:02:16 +0200 Subject: [PATCH 346/454] Add number of dropped packets to LocalStats --- meshtastic/telemetry.options | 1 + meshtastic/telemetry.proto | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/meshtastic/telemetry.options b/meshtastic/telemetry.options index 3c7238a..81d2aa8 100644 --- a/meshtastic/telemetry.options +++ b/meshtastic/telemetry.options @@ -7,6 +7,7 @@ *LocalStats.num_online_nodes int_size:16 *LocalStats.num_total_nodes int_size:16 +*LocalStats.num_tx_dropped int_size:16 *HealthMetrics.heart_bpm int_size:8 *HealthMetrics.spO2 int_size:8 diff --git a/meshtastic/telemetry.proto b/meshtastic/telemetry.proto index 4f7a88e..448adf3 100644 --- a/meshtastic/telemetry.proto +++ b/meshtastic/telemetry.proto @@ -438,6 +438,11 @@ message LocalStats { * Number of bytes free in the heap */ uint32 heap_free_bytes = 13; + + /* + * Number of packets that were dropped because the transmit queue was full. + */ + uint32 num_tx_dropped = 14; } /* From dbbd7f6b049e6a4cd5ff23e366cdc022816dce97 Mon Sep 17 00:00:00 2001 From: Phil Oliver <3497406+poliver@users.noreply.github.com> Date: Wed, 8 Oct 2025 12:33:28 -0400 Subject: [PATCH 347/454] Change java package to `org.meshtastic.proto` --- meshtastic/admin.proto | 2 +- meshtastic/apponly.proto | 2 +- meshtastic/atak.proto | 2 +- meshtastic/cannedmessages.proto | 2 +- meshtastic/channel.proto | 2 +- meshtastic/clientonly.proto | 2 +- meshtastic/config.proto | 2 +- meshtastic/connection_status.proto | 2 +- meshtastic/device_ui.proto | 2 +- meshtastic/deviceonly.proto | 2 +- meshtastic/interdevice.proto | 2 +- meshtastic/localonly.proto | 2 +- meshtastic/mesh.proto | 2 +- meshtastic/module_config.proto | 2 +- meshtastic/mqtt.proto | 2 +- meshtastic/paxcount.proto | 2 +- meshtastic/portnums.proto | 2 +- meshtastic/powermon.proto | 2 +- meshtastic/remote_hardware.proto | 2 +- meshtastic/rtttl.proto | 2 +- meshtastic/storeforward.proto | 2 +- meshtastic/telemetry.proto | 2 +- meshtastic/xmodem.proto | 2 +- 23 files changed, 23 insertions(+), 23 deletions(-) diff --git a/meshtastic/admin.proto b/meshtastic/admin.proto index 8dc1dc2..377211b 100644 --- a/meshtastic/admin.proto +++ b/meshtastic/admin.proto @@ -12,7 +12,7 @@ import "meshtastic/module_config.proto"; option csharp_namespace = "Meshtastic.Protobufs"; option go_package = "github.com/meshtastic/go/generated"; option java_outer_classname = "AdminProtos"; -option java_package = "com.geeksville.mesh"; +option java_package = "org.meshtastic.proto"; option swift_prefix = ""; /* diff --git a/meshtastic/apponly.proto b/meshtastic/apponly.proto index 100833f..2612ed6 100644 --- a/meshtastic/apponly.proto +++ b/meshtastic/apponly.proto @@ -8,7 +8,7 @@ import "meshtastic/config.proto"; option csharp_namespace = "Meshtastic.Protobufs"; option go_package = "github.com/meshtastic/go/generated"; option java_outer_classname = "AppOnlyProtos"; -option java_package = "com.geeksville.mesh"; +option java_package = "org.meshtastic.proto"; option swift_prefix = ""; /* diff --git a/meshtastic/atak.proto b/meshtastic/atak.proto index 5dc08c9..093fb59 100644 --- a/meshtastic/atak.proto +++ b/meshtastic/atak.proto @@ -5,7 +5,7 @@ package meshtastic; option csharp_namespace = "Meshtastic.Protobufs"; option go_package = "github.com/meshtastic/go/generated"; option java_outer_classname = "ATAKProtos"; -option java_package = "com.geeksville.mesh"; +option java_package = "org.meshtastic.proto"; option swift_prefix = ""; /* diff --git a/meshtastic/cannedmessages.proto b/meshtastic/cannedmessages.proto index baa5134..59f3dcc 100644 --- a/meshtastic/cannedmessages.proto +++ b/meshtastic/cannedmessages.proto @@ -5,7 +5,7 @@ package meshtastic; option csharp_namespace = "Meshtastic.Protobufs"; option go_package = "github.com/meshtastic/go/generated"; option java_outer_classname = "CannedMessageConfigProtos"; -option java_package = "com.geeksville.mesh"; +option java_package = "org.meshtastic.proto"; option swift_prefix = ""; /* diff --git a/meshtastic/channel.proto b/meshtastic/channel.proto index 4b77242..d459b62 100644 --- a/meshtastic/channel.proto +++ b/meshtastic/channel.proto @@ -5,7 +5,7 @@ package meshtastic; option csharp_namespace = "Meshtastic.Protobufs"; option go_package = "github.com/meshtastic/go/generated"; option java_outer_classname = "ChannelProtos"; -option java_package = "com.geeksville.mesh"; +option java_package = "org.meshtastic.proto"; option swift_prefix = ""; /* diff --git a/meshtastic/clientonly.proto b/meshtastic/clientonly.proto index 2b919ef..c80f428 100644 --- a/meshtastic/clientonly.proto +++ b/meshtastic/clientonly.proto @@ -8,7 +8,7 @@ import "meshtastic/mesh.proto"; option csharp_namespace = "Meshtastic.Protobufs"; option go_package = "github.com/meshtastic/go/generated"; option java_outer_classname = "ClientOnlyProtos"; -option java_package = "com.geeksville.mesh"; +option java_package = "org.meshtastic.proto"; option swift_prefix = ""; /* diff --git a/meshtastic/config.proto b/meshtastic/config.proto index f17a078..4d352c1 100644 --- a/meshtastic/config.proto +++ b/meshtastic/config.proto @@ -7,7 +7,7 @@ import "meshtastic/device_ui.proto"; option csharp_namespace = "Meshtastic.Protobufs"; option go_package = "github.com/meshtastic/go/generated"; option java_outer_classname = "ConfigProtos"; -option java_package = "com.geeksville.mesh"; +option java_package = "org.meshtastic.proto"; option swift_prefix = ""; message Config { diff --git a/meshtastic/connection_status.proto b/meshtastic/connection_status.proto index 7551596..641e916 100644 --- a/meshtastic/connection_status.proto +++ b/meshtastic/connection_status.proto @@ -5,7 +5,7 @@ package meshtastic; option csharp_namespace = "Meshtastic.Protobufs"; option go_package = "github.com/meshtastic/go/generated"; option java_outer_classname = "ConnStatusProtos"; -option java_package = "com.geeksville.mesh"; +option java_package = "org.meshtastic.proto"; option swift_prefix = ""; message DeviceConnectionStatus { diff --git a/meshtastic/device_ui.proto b/meshtastic/device_ui.proto index 5b6bb5d..28d2910 100644 --- a/meshtastic/device_ui.proto +++ b/meshtastic/device_ui.proto @@ -5,7 +5,7 @@ package meshtastic; option csharp_namespace = "Meshtastic.Protobufs"; option go_package = "github.com/meshtastic/go/generated"; option java_outer_classname = "DeviceUIProtos"; -option java_package = "com.geeksville.mesh"; +option java_package = "org.meshtastic.proto"; option swift_prefix = ""; /* diff --git a/meshtastic/deviceonly.proto b/meshtastic/deviceonly.proto index d449373..e8c7703 100644 --- a/meshtastic/deviceonly.proto +++ b/meshtastic/deviceonly.proto @@ -12,7 +12,7 @@ import "nanopb.proto"; option csharp_namespace = "Meshtastic.Protobufs"; option go_package = "github.com/meshtastic/go/generated"; option java_outer_classname = "DeviceOnly"; -option java_package = "com.geeksville.mesh"; +option java_package = "org.meshtastic.proto"; option swift_prefix = ""; option (nanopb_fileopt).include = ""; diff --git a/meshtastic/interdevice.proto b/meshtastic/interdevice.proto index 4616c08..f646368 100644 --- a/meshtastic/interdevice.proto +++ b/meshtastic/interdevice.proto @@ -5,7 +5,7 @@ package meshtastic; option csharp_namespace = "Meshtastic.Protobufs"; option go_package = "github.com/meshtastic/go/generated"; option java_outer_classname = "InterdeviceProtos"; -option java_package = "com.geeksville.mesh"; +option java_package = "org.meshtastic.proto"; option swift_prefix = ""; // encapsulate up to 1k of NMEA string data diff --git a/meshtastic/localonly.proto b/meshtastic/localonly.proto index bcb2796..50e7305 100644 --- a/meshtastic/localonly.proto +++ b/meshtastic/localonly.proto @@ -8,7 +8,7 @@ import "meshtastic/module_config.proto"; option csharp_namespace = "Meshtastic.Protobufs"; option go_package = "github.com/meshtastic/go/generated"; option java_outer_classname = "LocalOnlyProtos"; -option java_package = "com.geeksville.mesh"; +option java_package = "org.meshtastic.proto"; option swift_prefix = ""; /* diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 59f8c10..b10c780 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -13,7 +13,7 @@ import "meshtastic/xmodem.proto"; option csharp_namespace = "Meshtastic.Protobufs"; option go_package = "github.com/meshtastic/go/generated"; option java_outer_classname = "MeshProtos"; -option java_package = "com.geeksville.mesh"; +option java_package = "org.meshtastic.proto"; option swift_prefix = ""; /* diff --git a/meshtastic/module_config.proto b/meshtastic/module_config.proto index be8a693..f03e167 100644 --- a/meshtastic/module_config.proto +++ b/meshtastic/module_config.proto @@ -5,7 +5,7 @@ package meshtastic; option csharp_namespace = "Meshtastic.Protobufs"; option go_package = "github.com/meshtastic/go/generated"; option java_outer_classname = "ModuleConfigProtos"; -option java_package = "com.geeksville.mesh"; +option java_package = "org.meshtastic.proto"; option swift_prefix = ""; /* diff --git a/meshtastic/mqtt.proto b/meshtastic/mqtt.proto index 4edf0c4..616780d 100644 --- a/meshtastic/mqtt.proto +++ b/meshtastic/mqtt.proto @@ -8,7 +8,7 @@ import "meshtastic/mesh.proto"; option csharp_namespace = "Meshtastic.Protobufs"; option go_package = "github.com/meshtastic/go/generated"; option java_outer_classname = "MQTTProtos"; -option java_package = "com.geeksville.mesh"; +option java_package = "org.meshtastic.proto"; option swift_prefix = ""; /* diff --git a/meshtastic/paxcount.proto b/meshtastic/paxcount.proto index 47b2639..5084f9d 100644 --- a/meshtastic/paxcount.proto +++ b/meshtastic/paxcount.proto @@ -5,7 +5,7 @@ package meshtastic; option csharp_namespace = "Meshtastic.Protobufs"; option go_package = "github.com/meshtastic/go/generated"; option java_outer_classname = "PaxcountProtos"; -option java_package = "com.geeksville.mesh"; +option java_package = "org.meshtastic.proto"; option swift_prefix = ""; /* diff --git a/meshtastic/portnums.proto b/meshtastic/portnums.proto index e388a6f..24f0b16 100644 --- a/meshtastic/portnums.proto +++ b/meshtastic/portnums.proto @@ -5,7 +5,7 @@ package meshtastic; option csharp_namespace = "Meshtastic.Protobufs"; option go_package = "github.com/meshtastic/go/generated"; option java_outer_classname = "Portnums"; -option java_package = "com.geeksville.mesh"; +option java_package = "org.meshtastic.proto"; option swift_prefix = ""; /* diff --git a/meshtastic/powermon.proto b/meshtastic/powermon.proto index 77206f4..5973b16 100644 --- a/meshtastic/powermon.proto +++ b/meshtastic/powermon.proto @@ -5,7 +5,7 @@ package meshtastic; option csharp_namespace = "Meshtastic.Protobufs"; option go_package = "github.com/meshtastic/go/generated"; option java_outer_classname = "PowerMonProtos"; -option java_package = "com.geeksville.mesh"; +option java_package = "org.meshtastic.proto"; option swift_prefix = ""; /* Note: There are no 'PowerMon' messages normally in use (PowerMons are sent only as structured logs - slogs). diff --git a/meshtastic/remote_hardware.proto b/meshtastic/remote_hardware.proto index ba4a693..d919203 100644 --- a/meshtastic/remote_hardware.proto +++ b/meshtastic/remote_hardware.proto @@ -5,7 +5,7 @@ package meshtastic; option csharp_namespace = "Meshtastic.Protobufs"; option go_package = "github.com/meshtastic/go/generated"; option java_outer_classname = "RemoteHardware"; -option java_package = "com.geeksville.mesh"; +option java_package = "org.meshtastic.proto"; option swift_prefix = ""; /* diff --git a/meshtastic/rtttl.proto b/meshtastic/rtttl.proto index 11c8b92..06d94fc 100644 --- a/meshtastic/rtttl.proto +++ b/meshtastic/rtttl.proto @@ -5,7 +5,7 @@ package meshtastic; option csharp_namespace = "Meshtastic.Protobufs"; option go_package = "github.com/meshtastic/go/generated"; option java_outer_classname = "RTTTLConfigProtos"; -option java_package = "com.geeksville.mesh"; +option java_package = "org.meshtastic.proto"; option swift_prefix = ""; /* diff --git a/meshtastic/storeforward.proto b/meshtastic/storeforward.proto index 651eae5..a4a18b2 100644 --- a/meshtastic/storeforward.proto +++ b/meshtastic/storeforward.proto @@ -5,7 +5,7 @@ package meshtastic; option csharp_namespace = "Meshtastic.Protobufs"; option go_package = "github.com/meshtastic/go/generated"; option java_outer_classname = "StoreAndForwardProtos"; -option java_package = "com.geeksville.mesh"; +option java_package = "org.meshtastic.proto"; option swift_prefix = ""; /* diff --git a/meshtastic/telemetry.proto b/meshtastic/telemetry.proto index 448adf3..4296f1b 100644 --- a/meshtastic/telemetry.proto +++ b/meshtastic/telemetry.proto @@ -5,7 +5,7 @@ package meshtastic; option csharp_namespace = "Meshtastic.Protobufs"; option go_package = "github.com/meshtastic/go/generated"; option java_outer_classname = "TelemetryProtos"; -option java_package = "com.geeksville.mesh"; +option java_package = "org.meshtastic.proto"; option swift_prefix = ""; /* diff --git a/meshtastic/xmodem.proto b/meshtastic/xmodem.proto index 732780a..2a049d1 100644 --- a/meshtastic/xmodem.proto +++ b/meshtastic/xmodem.proto @@ -5,7 +5,7 @@ package meshtastic; option csharp_namespace = "Meshtastic.Protobufs"; option go_package = "github.com/meshtastic/go/generated"; option java_outer_classname = "XmodemProtos"; -option java_package = "com.geeksville.mesh"; +option java_package = "org.meshtastic.proto"; option swift_prefix = ""; message XModem { From e925e2b201855e223e8a859ceabceac52d05c874 Mon Sep 17 00:00:00 2001 From: Dan Ditomaso Date: Wed, 8 Oct 2025 17:39:16 -0400 Subject: [PATCH 348/454] ci: fix publish github action workflow for publishing to JSR, Cargo, and NPM --- .github/workflows/publish.yml | 124 ++++++++++++++++++++++++--- buf.gen.yaml | 10 +++ buf.yaml | 32 ++++--- packages/rust/Cargo.lock | 105 +++++++++++++++++++++++ packages/rust/Cargo.toml | 15 ++++ packages/rust/src/generated/.gitkeep | 0 packages/rust/src/lib.rs | 5 ++ packages/ts/deno.json | 15 ++++ packages/ts/deno.lock | 16 ++++ packages/ts/lib/.gitkeep | 0 packages/ts/mod.ts | 20 +++++ packages/ts/package.json | 32 +++++++ 12 files changed, 349 insertions(+), 25 deletions(-) create mode 100644 buf.gen.yaml create mode 100644 packages/rust/Cargo.lock create mode 100644 packages/rust/Cargo.toml create mode 100644 packages/rust/src/generated/.gitkeep create mode 100644 packages/rust/src/lib.rs create mode 100644 packages/ts/deno.json create mode 100644 packages/ts/deno.lock create mode 100644 packages/ts/lib/.gitkeep create mode 100644 packages/ts/mod.ts create mode 100755 packages/ts/package.json diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 70c229e..d375521 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -1,30 +1,132 @@ -name: Push new version to schema registry - -permissions: - contents: read +name: Publish to Cargo, JSR, & NPM on: push: tags: - - "**" + - "v*" + workflow_dispatch: + inputs: + version: + description: "Version to publish (e.g. v1.2.3). Used when manually dispatching." + required: false + type: string + +permissions: write-all jobs: - push_to_registry: - runs-on: ubuntu-latest - + codegen: + runs-on: ubuntu-24.04 steps: - name: Checkout code uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Show files exist + run: | + set -euxo pipefail + ls -la packages/ts || true + ls -la packages/rust || true + cat packages/ts/deno.json + cat packages/ts/package.json + cat packages/rust/Cargo.toml + + - name: Determine VERSION + run: | + set -euo pipefail + if [ "${{ github.ref_type }}" = "tag" ]; then + VERSION="${{ github.ref_name }}" + elif [ -n "${{ inputs.version || '' }}" ]; then + VERSION="${{ inputs.version }}" + else + echo "No tag ref and no 'version' input. Provide a tag (push a tag) or pass inputs.version." >&2 + exit 1 + fi + # If you don't want the leading 'v' inside files, strip it: + STRIPPED="${VERSION#v}" + echo "VERSION=$STRIPPED" >> "$GITHUB_ENV" + echo "Resolved VERSION=$STRIPPED" + + - name: Set Package Versions to current tag + run: | + set -euxo pipefail + for f in \ + packages/ts/deno.json \ + packages/ts/package.json \ + packages/rust/Cargo.toml + do + test -f "$f" || { echo "Missing $f" >&2; exit 1; } + # replace __PACKAGE_VERSION__ with env VERSION + sed -i "s/__PACKAGE_VERSION__/${VERSION//\//-}/g" "$f" + done - name: Setup Buf - uses: bufbuild/buf-action@v1.2.0 + uses: bufbuild/buf-setup-action@main with: github_token: ${{ github.token }} - token: ${{ secrets.BUF_TOKEN }} - setup_only: true + + - name: Generate code + run: buf generate + + - name: Copy license & README + run: | + cp LICENSE packages/ts + cp LICENSE packages/rust + cp README.md packages/ts + cp README.md packages/rust + + - name: Upload Rust code + uses: actions/upload-artifact@v4 + with: + name: rust_code + path: packages/rust + + - name: Upload TypeScript code + uses: actions/upload-artifact@v4 + with: + name: ts_code + path: packages/ts - name: Push to schema registry env: BUF_TOKEN: ${{ secrets.BUF_TOKEN }} run: | buf push --tag ${{ github.ref_name }} + + publish-jsr: + runs-on: ubuntu-24.04 + needs: codegen + permissions: + contents: read + id-token: write + steps: + - name: Download TypeScript code + uses: actions/download-artifact@v4 + with: + name: ts_code + - name: Remove package.json (JSR doesn’t need it) + run: rm -f package.json + - name: Set up Deno + uses: denoland/setup-deno@main + with: + deno-version: rc + - name: Publish to JSR + run: deno publish --unstable-sloppy-imports + + publish-cargo: + runs-on: ubuntu-24.04 + needs: codegen + steps: + - name: Download Rust code + uses: actions/download-artifact@v4 + with: + name: rust_code + - name: Set up Rust + uses: actions-rust-lang/setup-rust-toolchain@v1 + - name: Check Library + run: cargo check + - name: Publish to crates.io + uses: katyo/publish-crates@v2 + with: + registry-token: ${{ secrets.CARGO_TOKEN }} + ignore-unpublished-changes: true \ No newline at end of file diff --git a/buf.gen.yaml b/buf.gen.yaml new file mode 100644 index 0000000..1306002 --- /dev/null +++ b/buf.gen.yaml @@ -0,0 +1,10 @@ +version: v2 +plugins: + - remote: buf.build/bufbuild/es:v2.1.0 + out: packages/ts/lib + opt: target=ts + - remote: buf.build/community/neoeinstein-prost:v0.4.0 + out: packages/rust/src/generated + - remote: buf.build/community/neoeinstein-prost-crate:v0.4.1 + out: packages/rust/src/generated + opt: no_features diff --git a/buf.yaml b/buf.yaml index 642e538..9d85f4e 100644 --- a/buf.yaml +++ b/buf.yaml @@ -1,14 +1,18 @@ -version: v1 -name: buf.build/meshtastic/protobufs -deps: [] -build: - excludes: [] -breaking: - use: - - FILE -lint: - ignore_only: - PACKAGE_DEFINED: - - nanopb.proto - use: - - MINIMAL +version: v2 +modules: + - path: meshtastic + name: buf.build/meshtastic/protobufs + excludes: + - meshtastic/device_only/ + lint: + use: + - MINIMAL + except: + - PACKAGE_NO_IMPORT_CYCLE + disallow_comment_ignores: true + breaking: + use: + - FILE + except: + - EXTENSION_NO_DELETE + - FIELD_SAME_DEFAULT diff --git a/packages/rust/Cargo.lock b/packages/rust/Cargo.lock new file mode 100644 index 0000000..6b365f0 --- /dev/null +++ b/packages/rust/Cargo.lock @@ -0,0 +1,105 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "anyhow" +version = "1.0.89" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86fdf8605db99b54d3cd748a44c6d04df638eb5dafb219b135d0149bd0db01f6" + +[[package]] +name = "bytes" +version = "1.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "428d9aa8fbc0670b7b8d6030a7fadd0f86151cae55e4dbbece15f3780a3dfaf3" + +[[package]] +name = "either" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" + +[[package]] +name = "itertools" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +dependencies = [ + "either", +] + +[[package]] +name = "meshtastic_protobufs" +version = "2.5.5" +dependencies = [ + "prost", + "prost-types", +] + +[[package]] +name = "proc-macro2" +version = "1.0.86" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "prost" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b0487d90e047de87f984913713b85c601c05609aad5b0df4b4573fbf69aa13f" +dependencies = [ + "bytes", + "prost-derive", +] + +[[package]] +name = "prost-derive" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9552f850d5f0964a4e4d0bf306459ac29323ddfbae05e35a7c0d35cb0803cc5" +dependencies = [ + "anyhow", + "itertools", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "prost-types" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4759aa0d3a6232fb8dbdb97b61de2c20047c68aca932c7ed76da9d788508d670" +dependencies = [ + "prost", +] + +[[package]] +name = "quote" +version = "1.0.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "syn" +version = "2.0.79" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89132cd0bf050864e1d38dc3bbc07a0eb8e7530af26344d3d2bbbef83499f590" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "unicode-ident" +version = "1.0.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" diff --git a/packages/rust/Cargo.toml b/packages/rust/Cargo.toml new file mode 100644 index 0000000..ce52443 --- /dev/null +++ b/packages/rust/Cargo.toml @@ -0,0 +1,15 @@ +[package] +name = "meshtastic_protobufs" +edition = "2021" +version = "__PACKAGE_VERSION__" +description = "Meshtastic Protobuf definitions" +repository = "https://github.com/meshtastic/protobufs" +license-file = "LICENSE" +include = [ + "**/*.rs", + "Cargo.toml", +] + +[dependencies] +prost = "0.13.3" +prost-types = "0.13.3" diff --git a/packages/rust/src/generated/.gitkeep b/packages/rust/src/generated/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/packages/rust/src/lib.rs b/packages/rust/src/lib.rs new file mode 100644 index 0000000..a5bf95a --- /dev/null +++ b/packages/rust/src/lib.rs @@ -0,0 +1,5 @@ +extern crate prost; +extern crate core; +extern crate prost_types; + +include!("generated/mod.rs"); diff --git a/packages/ts/deno.json b/packages/ts/deno.json new file mode 100644 index 0000000..99b801a --- /dev/null +++ b/packages/ts/deno.json @@ -0,0 +1,15 @@ +{ + "name": "@meshtastic/protobufs", + "version": "__PACKAGE_VERSION__", + "exports": { + ".": "./mod.ts" + }, + "imports": { + "@bufbuild/protobuf": "npm:@bufbuild/protobuf@^2.2.3" + }, + "publish": { + "exclude": [ + "!lib" + ] + } +} diff --git a/packages/ts/deno.lock b/packages/ts/deno.lock new file mode 100644 index 0000000..d39f28e --- /dev/null +++ b/packages/ts/deno.lock @@ -0,0 +1,16 @@ +{ + "version": "4", + "specifiers": { + "npm:@bufbuild/protobuf@^2.2.3": "2.2.3" + }, + "npm": { + "@bufbuild/protobuf@2.2.3": { + "integrity": "sha512-tFQoXHJdkEOSwj5tRIZSPNUuXK3RaR7T1nUrPgbYX1pUbvqqaaZAsfo+NXBPsz5rZMSKVFrgK1WL8Q/MSLvprg==" + } + }, + "workspace": { + "dependencies": [ + "npm:@bufbuild/protobuf@^2.2.3" + ] + } +} diff --git a/packages/ts/lib/.gitkeep b/packages/ts/lib/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/packages/ts/mod.ts b/packages/ts/mod.ts new file mode 100644 index 0000000..b043e49 --- /dev/null +++ b/packages/ts/mod.ts @@ -0,0 +1,20 @@ +export * as Admin from "./lib/admin_pb.ts"; +export * as AppOnly from "./lib/apponly_pb.ts"; +export * as ATAK from "./lib/atak_pb.ts"; +export * as CannedMessages from "./lib/cannedmessages_pb.ts"; +export * as Channel from "./lib/channel_pb.ts"; +export * as ClientOnly from "./lib/clientonly_pb.ts"; +export * as Config from "./lib/config_pb.ts"; +export * as ConnectionStatus from "./lib/connection_status_pb.ts"; +export * as LocalOnly from "./lib/localonly_pb.ts"; +export * as Mesh from "./lib/mesh_pb.ts"; +export * as ModuleConfig from "./lib/module_config_pb.ts"; +export * as Mqtt from "./lib/mqtt_pb.ts"; +export * as PaxCount from "./lib/paxcount_pb.ts"; +export * as Portnums from "./lib/portnums_pb.ts"; +export * as PowerMon from "./lib/powermon_pb.ts"; +export * as RemoteHardware from "./lib/remote_hardware_pb.ts"; +export * as Rtttl from "./lib/rtttl_pb.ts"; +export * as StoreForward from "./lib/storeforward_pb.ts"; +export * as Telemetry from "./lib/telemetry_pb.ts"; +export * as Xmodem from "./lib/xmodem_pb.ts"; diff --git a/packages/ts/package.json b/packages/ts/package.json new file mode 100755 index 0000000..04f1162 --- /dev/null +++ b/packages/ts/package.json @@ -0,0 +1,32 @@ +{ + "name": "@meshtastic/protobufs", + "description": "Protobuf definitions for the Meshtastic project", + "version": "__PACKAGE_VERSION__", + "homepage": "https://github.com/meshtastic/protobufs", + "license": "GPLV3", + "publishConfig": { + "access": "public" + }, + "type": "module", + "main": "./dist/mod.js", + "module": "./dist/mod.js", + "types": "./dist/mod.d.ts", + "dependencies": { + "@bufbuild/protobuf": "^2.2.3" + }, + "devDependencies": { + "tsdown": "^0.13.4", + "typescript": "^5.8.3" + }, + "scripts": { + "build": "tsdown" + }, + "tsdown": { + "entry": "mod.ts", + "dts": true, + "format": [ + "esm" + ], + "splitting": false + } +} From 1db971af72f96be13fa43b051cc06429eef2a97f Mon Sep 17 00:00:00 2001 From: James Rich <2199651+jamesarich@users.noreply.github.com> Date: Wed, 8 Oct 2025 18:36:10 -0500 Subject: [PATCH 349/454] Add ignore option for FILE_OPTION_CHANGED Explicitly ignore that we changed the `java_package` - we know, bro, it was on purpose. This is to handle the `buf` build errors introduced in #788. --- buf.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/buf.yaml b/buf.yaml index 642e538..2e2da19 100644 --- a/buf.yaml +++ b/buf.yaml @@ -6,6 +6,8 @@ build: breaking: use: - FILE + ignore: + - FILE_OPTION_CHANGED lint: ignore_only: PACKAGE_DEFINED: From 9adb17d940c236625ab0bcf6fb3c4c6ddfc695e9 Mon Sep 17 00:00:00 2001 From: ford-jones Date: Sat, 11 Oct 2025 00:17:27 +1300 Subject: [PATCH 350/454] New setting for persisting favourite nodes --- meshtastic/config.proto | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/meshtastic/config.proto b/meshtastic/config.proto index f17a078..ec9d941 100644 --- a/meshtastic/config.proto +++ b/meshtastic/config.proto @@ -262,6 +262,11 @@ message Config { * Defaults to ENABLED */ BuzzerMode buzzer_mode = 13; + + /* + * When true, favourited nodes are persisted through NodeDB resets. + */ + bool preserve_favourites = 14; } /* From de145b521117cba93586c9c7c33c4f8c932df25f Mon Sep 17 00:00:00 2001 From: Jason P Date: Fri, 10 Oct 2025 08:17:29 -0500 Subject: [PATCH 351/454] Finalize channel is_muted work --- meshtastic/channel.proto | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/meshtastic/channel.proto b/meshtastic/channel.proto index d459b62..494bc40 100644 --- a/meshtastic/channel.proto +++ b/meshtastic/channel.proto @@ -86,11 +86,6 @@ message ChannelSettings { * Per-channel module settings. */ ModuleSettings module_settings = 7; - - /* - * Whether or not we should receive notifactions / alerts through this channel - */ - bool mute = 8; } /* @@ -103,10 +98,10 @@ message ModuleSettings { uint32 position_precision = 1; /* - * Controls whether or not the phone / clients should mute the current channel + * Controls whether or not the client / device should mute the current channel * Useful for noisy public channels you don't necessarily want to disable */ - bool is_client_muted = 2; + bool is_muted = 2; } /* From 38d066501125b37d866cd01ea7d97c3ef6909041 Mon Sep 17 00:00:00 2001 From: ford-jones Date: Sat, 11 Oct 2025 13:47:56 +1300 Subject: [PATCH 352/454] Use American-English spelling --- meshtastic/config.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meshtastic/config.proto b/meshtastic/config.proto index ec9d941..6f9af03 100644 --- a/meshtastic/config.proto +++ b/meshtastic/config.proto @@ -266,7 +266,7 @@ message Config { /* * When true, favourited nodes are persisted through NodeDB resets. */ - bool preserve_favourites = 14; + bool preserve_favorites = 14; } /* From 68dee221b201e99b3124be85953c834ade6f7cc1 Mon Sep 17 00:00:00 2001 From: ford-jones Date: Sun, 12 Oct 2025 17:01:32 +1300 Subject: [PATCH 353/454] Convert reset tag to bool in favor of additional settings --- meshtastic/admin.proto | 3 ++- meshtastic/config.proto | 5 ----- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/meshtastic/admin.proto b/meshtastic/admin.proto index 8dc1dc2..9dbefbd 100644 --- a/meshtastic/admin.proto +++ b/meshtastic/admin.proto @@ -469,8 +469,9 @@ message AdminMessage { /* * Tell the node to reset the nodedb. + * When true, favorites are preserved through reset. */ - int32 nodedb_reset = 100; + bool nodedb_reset = 100; } } diff --git a/meshtastic/config.proto b/meshtastic/config.proto index 6f9af03..f17a078 100644 --- a/meshtastic/config.proto +++ b/meshtastic/config.proto @@ -262,11 +262,6 @@ message Config { * Defaults to ENABLED */ BuzzerMode buzzer_mode = 13; - - /* - * When true, favourited nodes are persisted through NodeDB resets. - */ - bool preserve_favorites = 14; } /* From 1f616fff30768e34fc9603d30d6b1a0fe290e097 Mon Sep 17 00:00:00 2001 From: Paolo Leggio Date: Thu, 16 Oct 2025 13:44:32 +0200 Subject: [PATCH 354/454] Added BH1750 sensor --- meshtastic/telemetry.proto | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/meshtastic/telemetry.proto b/meshtastic/telemetry.proto index 4296f1b..88d8213 100644 --- a/meshtastic/telemetry.proto +++ b/meshtastic/telemetry.proto @@ -790,6 +790,11 @@ enum TelemetrySensorType { * TSL2561 light sensor */ TSL2561 = 44; + + /* + * BH1750 light sensor + */ + BH1750 = 45; } /* From 29242517f3f914897bb3459dc0a70a9f8d2c1303 Mon Sep 17 00:00:00 2001 From: Jonathan Bennett Date: Sat, 18 Oct 2025 13:34:41 -0500 Subject: [PATCH 355/454] Add THINKNODE_M3 identifier to mesh.proto --- meshtastic/mesh.proto | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index b10c780..2660ae5 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -810,6 +810,11 @@ enum HardwareModel { */ T_WATCH_ULTRA = 114; + /* + * Elecrow ThinkNode M3 + */ + THINKNODE_M3 = 115; + /* * ------------------------------------------------------------------------------------------------------------------------------------------ * Reserved ID For developing private Ports. These will show up in live traffic sparsely, so we can use a high number. Keep it within 8 bits. From 404532984c5a30306845aee8192bd652d99549aa Mon Sep 17 00:00:00 2001 From: Daniel Date: Fri, 31 Oct 2025 15:51:29 +0800 Subject: [PATCH 356/454] Add WISMESH_TAP_V2 and RAK3401 hardware models to mesh.proto --- meshtastic/mesh.proto | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 2660ae5..3d97750 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -815,6 +815,16 @@ enum HardwareModel { */ THINKNODE_M3 = 115; + /* + * RAK WISMESH_TAP_V2 with ESP32-S3 CPU + */ + WISMESH_TAP_V2 = 116; + + /* + * RAK3401 + */ + RAK3401 = 117; + /* * ------------------------------------------------------------------------------------------------------------------------------------------ * Reserved ID For developing private Ports. These will show up in live traffic sparsely, so we can use a high number. Keep it within 8 bits. From 29c5f6efdcb3c5f7b1c3e75ae7ad74c3d4cb6386 Mon Sep 17 00:00:00 2001 From: Andrew Mackenzie Date: Fri, 14 Nov 2025 12:05:55 +0100 Subject: [PATCH 357/454] Describe further the "to" field in MeshPacket, and the special case of when it is set top the maximum value permitted by a 32 bit integer. --- meshtastic/mesh.proto | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 3d97750..099efff 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -1371,6 +1371,10 @@ message MeshPacket { /* * The (immediate) destination for this packet + * If the value is 4,294,967,295 (maximum value of an unsigned 32bit integer), this indicates that the packet was + * not destined for a specific node, but for a channel as indicated by the value of `channel` below. + * If the value is another, this indicates that the packet was destined for a specific + * node (i.e. a kind of "Direct Message" to this node) and not broadcast on a channel. */ fixed32 to = 2; From e1b5aaedff3c06cbaf59008c2e744a3421b11c08 Mon Sep 17 00:00:00 2001 From: Jonathan Bennett Date: Tue, 18 Nov 2025 18:01:08 -0600 Subject: [PATCH 358/454] Add Device ID for RAK6421 Hat in mesh.proto --- meshtastic/mesh.proto | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 3d97750..61e1180 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -825,6 +825,11 @@ enum HardwareModel { */ RAK3401 = 117; + /* + * RAK6421 Hat+ + */ + RAK6421 = 118; + /* * ------------------------------------------------------------------------------------------------------------------------------------------ * Reserved ID For developing private Ports. These will show up in live traffic sparsely, so we can use a high number. Keep it within 8 bits. From 52fa252f1e01be87ad2f7ab17ceef7882b2a4a93 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20G=C3=B6ttgens?= Date: Fri, 21 Nov 2025 10:55:44 +0100 Subject: [PATCH 359/454] Add Thinknode M4 and M6 to the equasion (#815) --- meshtastic/mesh.proto | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 21b6329..232d34f 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -829,6 +829,16 @@ enum HardwareModel { * RAK6421 Hat+ */ RAK6421 = 118; + + /* + * Elecrow ThinkNode M4 + */ + THINKNODE_M4 = 119; + + /* + * Elecrow ThinkNode M6 + */ + THINKNODE_M6 = 120; /* * ------------------------------------------------------------------------------------------------------------------------------------------ From 45f9a558b128175a8136d175bd2f4de6a46701c4 Mon Sep 17 00:00:00 2001 From: rcarteraz Date: Fri, 5 Dec 2025 09:32:09 -0700 Subject: [PATCH 360/454] Rename RESERVED_FRIED_CHICKEN to MUZI_BASE --- meshtastic/mesh.proto | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 232d34f..468231f 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -700,9 +700,9 @@ enum HardwareModel { HELTEC_SENSOR_HUB = 92; /* - * Reserved Fried Chicken ID for future use + * Muzi Works Muzi-Base device */ - RESERVED_FRIED_CHICKEN = 93; + MUZI_BASE = 93; /* * Heltec Magnetic Power Bank with Meshtastic compatible From 6f437dd699bafa01309bc0006179cecc3b25c893 Mon Sep 17 00:00:00 2001 From: Jonathan Bennett Date: Mon, 15 Dec 2025 15:46:49 -0600 Subject: [PATCH 361/454] Add LONG_TURBO preset to config.proto Added LONG_TURBO preset for long-range communication. --- meshtastic/config.proto | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/meshtastic/config.proto b/meshtastic/config.proto index 4d352c1..d612c56 100644 --- a/meshtastic/config.proto +++ b/meshtastic/config.proto @@ -978,6 +978,14 @@ message Config { * It is not legal to use in all regions due to this wider bandwidth. */ SHORT_TURBO = 8; + + /* + * Long Range - Turbo + * This preset performs similarly to LongFast, but with 500Khz bandwidth. + * There is some debate about the legality of 250Khz channels in some regions, + * and this preset would present an unombigously legal alternative. + */ + LONG_TURBO = 9; } /* From 09219845724af1b37e8a2a7ad55b3e4d7334aa42 Mon Sep 17 00:00:00 2001 From: Jonathan Bennett Date: Mon, 15 Dec 2025 15:49:54 -0600 Subject: [PATCH 362/454] Fix typo in config.proto comment --- meshtastic/config.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meshtastic/config.proto b/meshtastic/config.proto index d612c56..b6d6a31 100644 --- a/meshtastic/config.proto +++ b/meshtastic/config.proto @@ -983,7 +983,7 @@ message Config { * Long Range - Turbo * This preset performs similarly to LongFast, but with 500Khz bandwidth. * There is some debate about the legality of 250Khz channels in some regions, - * and this preset would present an unombigously legal alternative. + * and this preset would present an unambiguously legal alternative. */ LONG_TURBO = 9; } From 2567b7aa4e0d35c40ba5dd1a03ec785a457d5a99 Mon Sep 17 00:00:00 2001 From: Jonathan Bennett Date: Mon, 15 Dec 2025 16:08:51 -0600 Subject: [PATCH 363/454] Update LONG_TURBO comment in config.proto Removed comment about legality of 250Khz channels. --- meshtastic/config.proto | 2 -- 1 file changed, 2 deletions(-) diff --git a/meshtastic/config.proto b/meshtastic/config.proto index b6d6a31..b7db6ec 100644 --- a/meshtastic/config.proto +++ b/meshtastic/config.proto @@ -982,8 +982,6 @@ message Config { /* * Long Range - Turbo * This preset performs similarly to LongFast, but with 500Khz bandwidth. - * There is some debate about the legality of 250Khz channels in some regions, - * and this preset would present an unambiguously legal alternative. */ LONG_TURBO = 9; } From aeee7f08e6f9ca47416cf5b71581aff5e3eed69b Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Mon, 15 Dec 2025 19:28:31 -0600 Subject: [PATCH 364/454] Deprecate LONG_SLOW preset Mark LONG_SLOW as deprecated in the config.proto file. --- meshtastic/config.proto | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/meshtastic/config.proto b/meshtastic/config.proto index b7db6ec..366a4e5 100644 --- a/meshtastic/config.proto +++ b/meshtastic/config.proto @@ -938,8 +938,9 @@ message Config { /* * Long Range - Slow + * Deprecated in 2.7: Unpopular slow preset. */ - LONG_SLOW = 1; + LONG_SLOW = 1 [deprecated = true]; /* * Very Long Range - Slow From fba255d1b2fcbbe98975455946bf13ae3adc15a9 Mon Sep 17 00:00:00 2001 From: Jonathan Bennett Date: Mon, 15 Dec 2025 23:21:11 -0600 Subject: [PATCH 365/454] Add Store and Forward PlusPlus --- meshtastic/mesh.options | 5 +++ meshtastic/mesh.proto | 85 +++++++++++++++++++++++++++++++++++++++ meshtastic/portnums.proto | 8 ++++ 3 files changed, 98 insertions(+) diff --git a/meshtastic/mesh.options b/meshtastic/mesh.options index 37c9341..77479ce 100644 --- a/meshtastic/mesh.options +++ b/meshtastic/mesh.options @@ -69,6 +69,11 @@ *KeyVerification.hash1 max_size:32 *KeyVerification.hash2 max_size:32 +*StoreForwardPlusPlus.message_hash max_size:32 +*StoreForwardPlusPlus.commit_hash max_size:32 +*StoreForwardPlusPlus.root_hash max_size:32 +*StoreForwardPlusPlus.message max_size:240 + # MyMessage.name max_size:40 # or fixed_length or fixed_count, or max_count diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 468231f..fa24fa3 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -1154,6 +1154,91 @@ message KeyVerification { bytes hash2 = 3; } +/* + * The actual over-the-mesh message doing store and forward++ + */ +message StoreForwardPlusPlus { + /* + * Enum of message types + */ + enum SFPP_message_type { + /* + * Send an announcement of the canonical tip of a chain + */ + CANON_ANNOUNCE = 0; + + /* + * Query whether a specific link is on the chain + */ + CHAIN_QUERY = 1; + + /* + * Request the next link in the chain + */ + LINK_REQUEST = 3; + + /* + * Provide a link to add to the chain + */ + LINK_PROVIDE = 4; + + /* + * If we must fragment, send the first half + */ + LINK_PROVIDE_FIRSTHALF = 5; + + /* + * If we must fragment, send the second half + */ + LINK_PROVIDE_SECONDHALF = 6; + } + + /* + * Which message type is this + */ + SFPP_message_type sfpp_message_type = 1; + + /* + * The hash of the specific message + */ + bytes message_hash = 2; + + /* + * The hash of a link on a chain + */ + bytes commit_hash = 3; + + /* + * the root hash of a chain + */ + bytes root_hash = 4; + + /* + * The encrypted bytes from a message + */ + bytes message = 5; + + /* + * Message ID of the contained message + */ + uint32 encapsulated_id = 6; + + /* + * Destination of the contained message + */ + uint32 encapsulated_to = 7; + + /* + * Sender of the contained message + */ + uint32 encapsulated_from = 8; + + /* + * The receive time of the message in question + */ + uint32 encapsulated_rxtime = 9; +} + /* * Waypoint message, used to share arbitrary locations across the mesh */ diff --git a/meshtastic/portnums.proto b/meshtastic/portnums.proto index 24f0b16..221f113 100644 --- a/meshtastic/portnums.proto +++ b/meshtastic/portnums.proto @@ -134,6 +134,14 @@ enum PortNum { */ PAXCOUNTER_APP = 34; + /* + * Store and Forward++ module included in the firmware + * ENCODING: protobuf + * This module is specifically for Native Linux nodes, and provides a Git-style + * chain of messages. + */ + STORE_FORWARD_PLUSPLUS_APP = 35; + /* * Provides a hardware serial interface to send and receive from the Meshtastic network. * Connect to the RX/TX pins of a device with 38400 8N1. Packets received from the Meshtastic From f6b116ef650374c2295daf66fd951ba7b44bb919 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Fri, 19 Dec 2025 19:29:37 -0600 Subject: [PATCH 366/454] Add reboot_ota_mode to AdminMessage for OTA firmware updates --- meshtastic/admin.proto | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/meshtastic/admin.proto b/meshtastic/admin.proto index 6a06407..eecb929 100644 --- a/meshtastic/admin.proto +++ b/meshtastic/admin.proto @@ -435,6 +435,11 @@ message AdminMessage { */ KeyVerificationAdmin key_verification = 67; + /* + * Tell the node to reboot into OTA mode for firmware update via BLE or WiFi (ESP32 only for now) + */ + OTAMode reboot_ota_mode = 68; + /* * Tell the node to factory reset config everything; all device state and configuration will be returned to factory defaults and BLE bonds will be cleared. */ @@ -475,6 +480,26 @@ message AdminMessage { } } +/* + * Firmware update mode for OTA updates + */ +enum OTAMode { + /* + * Do not reboot into OTA mode + */ + NO_REBOOT_OTA = 0; + + /* + * Reboot into OTA mode for BLE firmware update + */ + OTA_BLE = 1; + + /* + * Reboot into OTA mode for WiFi firmware update + */ + OTA_WIFI = 2; +} + /* * Parameters for setting up Meshtastic for ameteur radio usage */ From 8078b27a19659ace7a5458f83677f49b1ec33ca3 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Fri, 19 Dec 2025 19:35:46 -0600 Subject: [PATCH 367/454] Deprecate --- meshtastic/admin.proto | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/meshtastic/admin.proto b/meshtastic/admin.proto index eecb929..7a4e0c0 100644 --- a/meshtastic/admin.proto +++ b/meshtastic/admin.proto @@ -448,8 +448,9 @@ message AdminMessage { /* * Tell the node to reboot into the OTA Firmware in this many seconds (or <0 to cancel reboot) * Only Implemented for ESP32 Devices. This needs to be issued to send a new main firmware via bluetooth. + * Deprecated in favor of reboot_ota_mode in 2.7.17 */ - int32 reboot_ota_seconds = 95; + int32 reboot_ota_seconds = 95 [deprecated = true]; /* * This message is only supported for the simulator Portduino build. From 48ad8831204ec30e80705197a40b39f017b5f016 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Fri, 19 Dec 2025 20:11:20 -0600 Subject: [PATCH 368/454] Add buf ignores --- meshtastic/admin.proto | 1 + meshtastic/atak.proto | 1 + meshtastic/channel.proto | 1 + meshtastic/deviceonly.proto | 1 + 4 files changed, 4 insertions(+) diff --git a/meshtastic/admin.proto b/meshtastic/admin.proto index 7a4e0c0..396f6e0 100644 --- a/meshtastic/admin.proto +++ b/meshtastic/admin.proto @@ -2,6 +2,7 @@ syntax = "proto3"; package meshtastic; +/* trunk-ignore(buf-lint/COMPILE) */ import "meshtastic/channel.proto"; import "meshtastic/config.proto"; import "meshtastic/connection_status.proto"; diff --git a/meshtastic/atak.proto b/meshtastic/atak.proto index 093fb59..790c69b 100644 --- a/meshtastic/atak.proto +++ b/meshtastic/atak.proto @@ -1,5 +1,6 @@ syntax = "proto3"; +/* trunk-ignore(buf-lint/PACKAGE_DIRECTORY_MATCH) */ package meshtastic; option csharp_namespace = "Meshtastic.Protobufs"; diff --git a/meshtastic/channel.proto b/meshtastic/channel.proto index 494bc40..f49895a 100644 --- a/meshtastic/channel.proto +++ b/meshtastic/channel.proto @@ -1,5 +1,6 @@ syntax = "proto3"; +/* trunk-ignore(buf-lint/PACKAGE_DIRECTORY_MATCH) */ package meshtastic; option csharp_namespace = "Meshtastic.Protobufs"; diff --git a/meshtastic/deviceonly.proto b/meshtastic/deviceonly.proto index e8c7703..3a86719 100644 --- a/meshtastic/deviceonly.proto +++ b/meshtastic/deviceonly.proto @@ -2,6 +2,7 @@ syntax = "proto3"; package meshtastic; +/* trunk-ignore(buf-lint/COMPILE) */ import "meshtastic/channel.proto"; import "meshtastic/config.proto"; import "meshtastic/localonly.proto"; From 0ef2bdf6a321d95d4d4b7b955a308a2c2012e9d7 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Sat, 20 Dec 2025 06:41:32 -0600 Subject: [PATCH 369/454] Hopefully fix buf build --- buf.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/buf.yaml b/buf.yaml index fcf596e..9b1b26c 100644 --- a/buf.yaml +++ b/buf.yaml @@ -1,8 +1,9 @@ version: v2 modules: - - path: meshtastic + - path: . name: buf.build/meshtastic/protobufs excludes: + - .trunk/ - meshtastic/device_only/ lint: use: From f28d17eba12b4f11f09762f34b959825f3e7ed38 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Sat, 20 Dec 2025 07:14:45 -0600 Subject: [PATCH 370/454] Buf fixes --- buf.yaml | 3 +++ meshtastic/mesh.proto | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/buf.yaml b/buf.yaml index 9b1b26c..2a93588 100644 --- a/buf.yaml +++ b/buf.yaml @@ -10,6 +10,9 @@ modules: - MINIMAL except: - PACKAGE_NO_IMPORT_CYCLE + ignore_only: + PACKAGE_DEFINED: + - nanopb.proto disallow_comment_ignores: true breaking: use: diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index fa24fa3..767eb47 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -839,7 +839,7 @@ enum HardwareModel { * Elecrow ThinkNode M6 */ THINKNODE_M6 = 120; - + /* * ------------------------------------------------------------------------------------------------------------------------------------------ * Reserved ID For developing private Ports. These will show up in live traffic sparsely, so we can use a high number. Keep it within 8 bits. From c39b564ca6498d23a3002b6eaade67a69194b459 Mon Sep 17 00:00:00 2001 From: Jake-B Date: Thu, 25 Dec 2025 11:59:14 -0500 Subject: [PATCH 371/454] Added `AdminMessage.ota_hash` to verify OTA data --- meshtastic/admin.options | 1 + meshtastic/admin.proto | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/meshtastic/admin.options b/meshtastic/admin.options index 4a28ff2..d20a1a2 100644 --- a/meshtastic/admin.options +++ b/meshtastic/admin.options @@ -1,6 +1,7 @@ *AdminMessage.payload_variant anonymous_oneof:true *AdminMessage.session_passkey max_size:8 +*AdminMessage.ota_hash max_size:32 *AdminMessage.InputEvent.event_code int_size:8 *AdminMessage.InputEvent.kb_char int_size:8 diff --git a/meshtastic/admin.proto b/meshtastic/admin.proto index 396f6e0..5520446 100644 --- a/meshtastic/admin.proto +++ b/meshtastic/admin.proto @@ -479,6 +479,12 @@ message AdminMessage { * When true, favorites are preserved through reset. */ bool nodedb_reset = 100; + + /* + * A 32 byte hash of the OTA firmware. + * Used to verify the integrity of the firmware before applying an update. + */ + bytes ota_hash = 102; } } From 4b9f104a18ea43b1b2091ee2b48899fe43ad8a0b Mon Sep 17 00:00:00 2001 From: Jake-B Date: Sat, 27 Dec 2025 08:16:28 -0500 Subject: [PATCH 372/454] AdminMessage fixes for OTA --- meshtastic/admin.options | 3 ++- meshtastic/admin.proto | 28 ++++++++++++++++++++-------- 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/meshtastic/admin.options b/meshtastic/admin.options index d20a1a2..6574db5 100644 --- a/meshtastic/admin.options +++ b/meshtastic/admin.options @@ -1,7 +1,8 @@ *AdminMessage.payload_variant anonymous_oneof:true *AdminMessage.session_passkey max_size:8 -*AdminMessage.ota_hash max_size:32 + +*AdminMessage.OTAEvent.ota_hash max_size:32 *AdminMessage.InputEvent.event_code int_size:8 *AdminMessage.InputEvent.kb_char int_size:8 diff --git a/meshtastic/admin.proto b/meshtastic/admin.proto index 5520446..22cc537 100644 --- a/meshtastic/admin.proto +++ b/meshtastic/admin.proto @@ -188,6 +188,23 @@ message AdminMessage { uint32 touch_y = 4; } + /* + * User is requesting an over the air update. + * Node will reboot into the OTA loader + */ + message OTAEvent { + /* + * Tell the node to reboot into OTA mode for firmware update via BLE or WiFi (ESP32 only for now) + */ + OTAMode reboot_ota_mode = 1; + + /* + * A 32 byte hash of the OTA firmware. + * Used to verify the integrity of the firmware before applying an update. + */ + bytes ota_hash = 2; + } + /* * TODO: REPLACE */ @@ -436,11 +453,6 @@ message AdminMessage { */ KeyVerificationAdmin key_verification = 67; - /* - * Tell the node to reboot into OTA mode for firmware update via BLE or WiFi (ESP32 only for now) - */ - OTAMode reboot_ota_mode = 68; - /* * Tell the node to factory reset config everything; all device state and configuration will be returned to factory defaults and BLE bonds will be cleared. */ @@ -481,11 +493,11 @@ message AdminMessage { bool nodedb_reset = 100; /* - * A 32 byte hash of the OTA firmware. - * Used to verify the integrity of the firmware before applying an update. + * Tell the node to reset into the OTA Loader */ - bytes ota_hash = 102; + OTAEvent ota_request = 102; } + } /* From f78b3f0dcc078372c90493945155081648605699 Mon Sep 17 00:00:00 2001 From: Jonathan Bennett Date: Mon, 29 Dec 2025 07:50:01 -0600 Subject: [PATCH 373/454] Add chain_count field to mesh.proto (#828) * Add chain_count field to mesh.proto Added chain_count field to specify message position in LINK_REQUEST. * Fix formatting in mesh.proto --- meshtastic/mesh.proto | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 767eb47..4a63522 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -1237,6 +1237,11 @@ message StoreForwardPlusPlus { * The receive time of the message in question */ uint32 encapsulated_rxtime = 9; + + /* + * Used in a LINK_REQUEST to specify the message X spots back from head + */ + uint32 chain_count = 10; } /* From 64ccad6007bced889d37fa718c3894ed32cca0a3 Mon Sep 17 00:00:00 2001 From: James Rich <2199651+jamesarich@users.noreply.github.com> Date: Tue, 30 Dec 2025 10:54:27 -0600 Subject: [PATCH 374/454] Fix formatting to appease buf --- meshtastic/admin.proto | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/meshtastic/admin.proto b/meshtastic/admin.proto index 22cc537..820ef31 100644 --- a/meshtastic/admin.proto +++ b/meshtastic/admin.proto @@ -193,7 +193,7 @@ message AdminMessage { * Node will reboot into the OTA loader */ message OTAEvent { - /* + /* * Tell the node to reboot into OTA mode for firmware update via BLE or WiFi (ESP32 only for now) */ OTAMode reboot_ota_mode = 1; @@ -202,7 +202,7 @@ message AdminMessage { * A 32 byte hash of the OTA firmware. * Used to verify the integrity of the firmware before applying an update. */ - bytes ota_hash = 2; + bytes ota_hash = 2; } /* @@ -497,7 +497,6 @@ message AdminMessage { */ OTAEvent ota_request = 102; } - } /* From ef35af8af78ec3cf6c0ba004fbfbd9e0ca650d97 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Wed, 31 Dec 2025 20:42:24 -0600 Subject: [PATCH 375/454] T-Echo Plus --- meshtastic/mesh.proto | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 4a63522..72989df 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -388,9 +388,9 @@ enum HardwareModel { LORA_RELAY_V1 = 32; /* - * TODO: REPLACE + * T-Echo Plus device from LilyGo */ - NRF52840DK = 33; + T_ECHO_PLUS = 33; /* * TODO: REPLACE From 8a11244539ee6f46b72f4b277c65ca6daf949aae Mon Sep 17 00:00:00 2001 From: Jonathan Bennett Date: Thu, 1 Jan 2026 22:26:59 -0600 Subject: [PATCH 376/454] Add PKI_SEND_FAIL_PUBLIC_KEY error code Add new error code for PKI encryption failure due to missing public key. --- meshtastic/mesh.proto | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 72989df..8775d6e 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -1050,6 +1050,12 @@ message Routing { * This typically enforced per portnum and is used to prevent a single node from monopolizing airtime */ RATE_LIMIT_EXCEEDED = 38; + + /* + * PKI encryption failed, due to no public key for the remote node + * This is different from PKI_UNKNOWN_PUBKEY which indicates a failure upon receiving a packet + */ + PKI_SEND_FAIL_PUBLIC_KEY = 39; } oneof variant { From 8f95d7f451a01045f0e6ed9320634daee222e591 Mon Sep 17 00:00:00 2001 From: oscgonfer Date: Wed, 7 Jan 2026 12:35:49 +0100 Subject: [PATCH 377/454] Add module config to enable air quality on screen --- meshtastic/module_config.proto | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/meshtastic/module_config.proto b/meshtastic/module_config.proto index f91671c..534dfc0 100644 --- a/meshtastic/module_config.proto +++ b/meshtastic/module_config.proto @@ -615,6 +615,11 @@ message ModuleConfig { * Enable/Disable the health telemetry module on-device display */ bool health_screen_enabled = 13; + + /* + * Enable/Disable the air quality telemetry measurement module on-device display + */ + bool air_quality_screen_enabled = 14; } /* From c4eab768ad1b193da3794e9bd43cf81fafcded7d Mon Sep 17 00:00:00 2001 From: Jonathan Bennett Date: Wed, 7 Jan 2026 22:49:52 -0600 Subject: [PATCH 378/454] Add MESHSTICK_1262 identifier to mesh.proto --- meshtastic/mesh.proto | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 8775d6e..c05e5ea 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -840,6 +840,11 @@ enum HardwareModel { */ THINKNODE_M6 = 120; + /* + * Elecrow Meshstick 1262 + */ + MESHSTICK_1262 = 121; + /* * ------------------------------------------------------------------------------------------------------------------------------------------ * Reserved ID For developing private Ports. These will show up in live traffic sparsely, so we can use a high number. Keep it within 8 bits. From 9cb373751bb27ef6d5d0a717da43818f43a46833 Mon Sep 17 00:00:00 2001 From: Ford Jones <107664313+ford-jones@users.noreply.github.com> Date: Fri, 9 Jan 2026 17:26:36 +0000 Subject: [PATCH 379/454] Mute: Nodes (#838) * Add tags for toggling mute state * Adds mute flag to protobuf for use in clients * Adds mute flag to lite (device only) protobuf * Prefer bitmask usage over new boolean * Remove trailing newline in mesh.proto --------- Co-authored-by: Jonathan Bennett --- meshtastic/admin.proto | 5 +++++ meshtastic/deviceonly.proto | 1 + meshtastic/mesh.proto | 6 ++++++ 3 files changed, 12 insertions(+) diff --git a/meshtastic/admin.proto b/meshtastic/admin.proto index 820ef31..176d973 100644 --- a/meshtastic/admin.proto +++ b/meshtastic/admin.proto @@ -432,6 +432,11 @@ message AdminMessage { */ uint32 remove_ignored_node = 48; + /* + * Set specified node-num to be muted + */ + uint32 toggle_muted_node = 49; + /* * Begins an edit transaction for config, module config, owner, and channel settings changes * This will delay the standard *implicit* save to the file system and subsequent reboot behavior until committed (commit_edit_settings) diff --git a/meshtastic/deviceonly.proto b/meshtastic/deviceonly.proto index 3a86719..b7c377a 100644 --- a/meshtastic/deviceonly.proto +++ b/meshtastic/deviceonly.proto @@ -168,6 +168,7 @@ message NodeInfoLite { /* * Bitfield for storing booleans. * LSB 0 is_key_manually_verified + * LSB 1 is_muted */ uint32 bitfield = 13; } diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index c05e5ea..94f3830 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -1764,6 +1764,12 @@ message NodeInfo { * LSB 0 of the bitfield */ bool is_key_manually_verified = 12; + + /* + * True if node has been muted + * Persistes between NodeDB internal clean ups + */ + bool is_muted = 13; } /* From a7bbad173db14b5d77eac2a21c56424d746dc79d Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Sat, 10 Jan 2026 05:16:40 -0600 Subject: [PATCH 380/454] Format --- meshtastic/mesh.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index c05e5ea..d783890 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -844,7 +844,7 @@ enum HardwareModel { * Elecrow Meshstick 1262 */ MESHSTICK_1262 = 121; - + /* * ------------------------------------------------------------------------------------------------------------------------------------------ * Reserved ID For developing private Ports. These will show up in live traffic sparsely, so we can use a high number. Keep it within 8 bits. From 53911db9a02343632245f783c0a1cdc60b23fe49 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Sat, 10 Jan 2026 05:16:51 -0600 Subject: [PATCH 381/454] Format --- meshtastic/module_config.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meshtastic/module_config.proto b/meshtastic/module_config.proto index 6ae436e..673c298 100644 --- a/meshtastic/module_config.proto +++ b/meshtastic/module_config.proto @@ -621,7 +621,7 @@ message ModuleConfig { * Note: We will still send telemtry to the connected phone / client every minute over the API */ bool device_telemetry_enabled = 14; - + /* * Enable/Disable the air quality telemetry measurement module on-device display */ From 8816b4715dcba5daea409a988ce476426f317728 Mon Sep 17 00:00:00 2001 From: Dane Date: Sun, 11 Jan 2026 17:26:39 +1100 Subject: [PATCH 382/454] add logging modes. --- meshtastic/module_config.proto | 3 +++ 1 file changed, 3 insertions(+) diff --git a/meshtastic/module_config.proto b/meshtastic/module_config.proto index 673c298..8d59df2 100644 --- a/meshtastic/module_config.proto +++ b/meshtastic/module_config.proto @@ -340,6 +340,9 @@ message ModuleConfig { //Used to configure and view some parameters of MeshSolar. //https://heltec.org/project/meshsolar/ MS_CONFIG = 8; + //Logs mesh traffic to the serial pins, ideal for logging via openLog or similar. + LOG = 9; // includes other packets + LOGTEXT = 10; // only text (channel & DM) } /* From 76cca1402619bd0e70ebd77ac344c3ea7e680b48 Mon Sep 17 00:00:00 2001 From: Dane Date: Sun, 11 Jan 2026 17:28:18 +1100 Subject: [PATCH 383/454] formatting --- meshtastic/module_config.proto | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/meshtastic/module_config.proto b/meshtastic/module_config.proto index 8d59df2..7825937 100644 --- a/meshtastic/module_config.proto +++ b/meshtastic/module_config.proto @@ -337,10 +337,10 @@ message ModuleConfig { // VE.Direct is a serial protocol used by Victron Energy products // https://beta.ivc.no/wiki/index.php/Victron_VE_Direct_DIY_Cable VE_DIRECT = 7; - //Used to configure and view some parameters of MeshSolar. - //https://heltec.org/project/meshsolar/ + // Used to configure and view some parameters of MeshSolar. + // https://heltec.org/project/meshsolar/ MS_CONFIG = 8; - //Logs mesh traffic to the serial pins, ideal for logging via openLog or similar. + // Logs mesh traffic to the serial pins, ideal for logging via openLog or similar. LOG = 9; // includes other packets LOGTEXT = 10; // only text (channel & DM) } From 4c82a2f39d44c68a4fede369db789b1dc4167288 Mon Sep 17 00:00:00 2001 From: rcarteraz Date: Mon, 12 Jan 2026 14:02:04 -0700 Subject: [PATCH 384/454] Add T-Beam 1W --- meshtastic/mesh.proto | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 8de3a31..ca7a997 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -845,6 +845,11 @@ enum HardwareModel { */ MESHSTICK_1262 = 121; + /* + * LilyGo T-Beam 1W + */ + TBEAM_1_WATT = 122; + /* * ------------------------------------------------------------------------------------------------------------------------------------------ * Reserved ID For developing private Ports. These will show up in live traffic sparsely, so we can use a high number. Keep it within 8 bits. From 786f3bbf98507374b730688d1d648bfcbcb47c4c Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Mon, 12 Jan 2026 15:36:39 -0600 Subject: [PATCH 385/454] Fix comment formatting in mesh.proto --- meshtastic/mesh.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index ca7a997..33f81a5 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -845,7 +845,7 @@ enum HardwareModel { */ MESHSTICK_1262 = 121; - /* + /* * LilyGo T-Beam 1W */ TBEAM_1_WATT = 122; From e3d3abccc39d42d39994b2141cf7ae62a999e9dc Mon Sep 17 00:00:00 2001 From: Mike Robbins Date: Mon, 12 Jan 2026 22:19:58 -0500 Subject: [PATCH 386/454] (Updated comment only.) CLIENT_BASE now acts as ROUTER_LATE, not ROUTER --- meshtastic/config.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meshtastic/config.proto b/meshtastic/config.proto index 366a4e5..649495e 100644 --- a/meshtastic/config.proto +++ b/meshtastic/config.proto @@ -111,7 +111,7 @@ message Config { ROUTER_LATE = 11; /* - * Description: Treats packets from or to favorited nodes as ROUTER, and all other packets as CLIENT. + * Description: Treats packets from or to favorited nodes as ROUTER_LATE, and all other packets as CLIENT. * Technical Details: Used for stronger attic/roof nodes to distribute messages more widely * from weaker, indoor, or less-well-positioned nodes. Recommended for users with multiple nodes * where one CLIENT_BASE acts as a more powerful base station, such as an attic/roof node. From 6c79c8be71b8cfc693812741ecdfb8202a1f9c4c Mon Sep 17 00:00:00 2001 From: Manuel <71137295+mverch67@users.noreply.github.com> Date: Tue, 13 Jan 2026 16:20:13 +0100 Subject: [PATCH 387/454] Add T5 S3 ePaper Pro HW-Id mesh.proto --- meshtastic/mesh.proto | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 33f81a5..ecb8803 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -850,6 +850,11 @@ enum HardwareModel { */ TBEAM_1_WATT = 122; + /* + * LilyGo T5 S3 ePaper Pro (V1 and V2) + */ + T5_S3_EPAPER_PRO = 123; + /* * ------------------------------------------------------------------------------------------------------------------------------------------ * Reserved ID For developing private Ports. These will show up in live traffic sparsely, so we can use a high number. Keep it within 8 bits. From c42f97a38168faefbcfc1e8f3c1d6272cef8763f Mon Sep 17 00:00:00 2001 From: Christopher Yarbro Date: Fri, 16 Jan 2026 12:27:47 -0600 Subject: [PATCH 388/454] Add HDC1080 to telemetry protobuf --- meshtastic/telemetry.proto | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/meshtastic/telemetry.proto b/meshtastic/telemetry.proto index 88d8213..12ad55f 100644 --- a/meshtastic/telemetry.proto +++ b/meshtastic/telemetry.proto @@ -795,6 +795,11 @@ enum TelemetrySensorType { * BH1750 light sensor */ BH1750 = 45; + + /* + * HDC1080 Temperature and Humidity Sensor + */ + HDC1080 = 46; } /* From af5d147428068aad4c0f3539c77e22fe13155ba4 Mon Sep 17 00:00:00 2001 From: oscgonfer Date: Sat, 17 Jan 2026 13:12:01 +0100 Subject: [PATCH 389/454] Fix numbering in sensor config --- meshtastic/admin.proto | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/meshtastic/admin.proto b/meshtastic/admin.proto index 229d7de..9cd2ea2 100644 --- a/meshtastic/admin.proto +++ b/meshtastic/admin.proto @@ -500,12 +500,12 @@ message AdminMessage { /* * Tell the node to reset into the OTA Loader */ - OTAEvent ota_request = 101; + OTAEvent ota_request = 102; /* * Parameters and sensor configuration */ - SensorConfig sensor_config = 102; + SensorConfig sensor_config = 103; } } From 1b1dc090ef38f708a276dfb51b17de5ca06b3ade Mon Sep 17 00:00:00 2001 From: Benjamin Faershtein <119711889+RCGV1@users.noreply.github.com> Date: Sat, 17 Jan 2026 09:53:09 -0800 Subject: [PATCH 390/454] Add noise_floor float field to LocalStats message --- meshtastic/telemetry.proto | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/meshtastic/telemetry.proto b/meshtastic/telemetry.proto index 88d8213..cbe9a2d 100644 --- a/meshtastic/telemetry.proto +++ b/meshtastic/telemetry.proto @@ -439,10 +439,15 @@ message LocalStats { */ uint32 heap_free_bytes = 13; - /* - * Number of packets that were dropped because the transmit queue was full. - */ + /* + * Number of packets that were dropped because the transmit queue was full. + */ uint32 num_tx_dropped = 14; + + /* + * Noise floor value measured in dBm + */ + float noise_floor = 15; } /* From 19c48339301cfbc48d98cce6c4f07c03bee73a3b Mon Sep 17 00:00:00 2001 From: Jonathan Bennett Date: Sat, 17 Jan 2026 15:50:12 -0600 Subject: [PATCH 391/454] Add StatusMessage message and portnum (#835) --- meshtastic/mesh.options | 3 ++- meshtastic/mesh.proto | 7 +++++++ meshtastic/module_config.options | 2 ++ meshtastic/module_config.proto | 15 +++++++++++++++ meshtastic/portnums.proto | 8 ++++++++ 5 files changed, 34 insertions(+), 1 deletion(-) diff --git a/meshtastic/mesh.options b/meshtastic/mesh.options index 77479ce..1bae5eb 100644 --- a/meshtastic/mesh.options +++ b/meshtastic/mesh.options @@ -74,6 +74,7 @@ *StoreForwardPlusPlus.root_hash max_size:32 *StoreForwardPlusPlus.message max_size:240 +*StatusMessage.status max_size:80 # MyMessage.name max_size:40 # or fixed_length or fixed_count, or max_count @@ -94,4 +95,4 @@ *ChunkedPayload.chunk_count int_size:16 *ChunkedPayload.chunk_index int_size:16 -*ChunkedPayload.payload_chunk max_size:228 \ No newline at end of file +*ChunkedPayload.payload_chunk max_size:228 diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index ecb8803..3117af2 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -1311,6 +1311,13 @@ message Waypoint { fixed32 icon = 8; } +/* + * Message for node status + */ +message StatusMessage { + string status = 1; +} + /* * This message will be proxied over the PhoneAPI for the client to deliver to the MQTT server */ diff --git a/meshtastic/module_config.options b/meshtastic/module_config.options index bf2a5f4..95151b0 100644 --- a/meshtastic/module_config.options +++ b/meshtastic/module_config.options @@ -27,3 +27,5 @@ *DetectionSensorConfig.monitor_pin int_size:8 *DetectionSensorConfig.name max_size:20 *DetectionSensorConfig.detection_trigger_type max_size:8 + +*StatusMessage.node_status max_size:80 diff --git a/meshtastic/module_config.proto b/meshtastic/module_config.proto index 7825937..ac13a56 100644 --- a/meshtastic/module_config.proto +++ b/meshtastic/module_config.proto @@ -769,6 +769,16 @@ message ModuleConfig { uint32 blue = 5; } + /* + * StatusMessage config - Allows setting a status message for a node to periodically rebroadcast + */ + message StatusMessageConfig { + /* + * The actual status string + */ + string node_status = 1; + } + /* * TODO: REPLACE */ @@ -837,6 +847,11 @@ message ModuleConfig { * TODO: REPLACE */ PaxcounterConfig paxcounter = 13; + + /* + * TODO: REPLACE + */ + StatusMessageConfig statusmessage = 14; } } diff --git a/meshtastic/portnums.proto b/meshtastic/portnums.proto index 221f113..918b063 100644 --- a/meshtastic/portnums.proto +++ b/meshtastic/portnums.proto @@ -142,6 +142,14 @@ enum PortNum { */ STORE_FORWARD_PLUSPLUS_APP = 35; + /* + * Node Status module + * ENCODING: protobuf + * This module allows setting an extra string of status for a node. + * Broadcasts on change and on a timer, possibly once a day. + */ + NODE_STATUS_APP = 36; + /* * Provides a hardware serial interface to send and receive from the Meshtastic network. * Connect to the RX/TX pins of a device with 38400 8N1. Packets received from the Meshtastic From 152bab3589b62bc9d008079ab2b33316d42239b1 Mon Sep 17 00:00:00 2001 From: Steve Gilberd Date: Mon, 19 Jan 2026 18:13:18 +1300 Subject: [PATCH 392/454] Fix option name to prevent build failure in firmware --- meshtastic/module_config.options | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meshtastic/module_config.options b/meshtastic/module_config.options index 95151b0..c6158be 100644 --- a/meshtastic/module_config.options +++ b/meshtastic/module_config.options @@ -28,4 +28,4 @@ *DetectionSensorConfig.name max_size:20 *DetectionSensorConfig.detection_trigger_type max_size:8 -*StatusMessage.node_status max_size:80 +*StatusMessageConfig.node_status max_size:80 From 3193bab2c9af7bf4fbdea23bd400bcac18c2f714 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Mon, 19 Jan 2026 12:05:33 -0600 Subject: [PATCH 393/454] Change noise_floor type from float to int32 --- meshtastic/telemetry.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meshtastic/telemetry.proto b/meshtastic/telemetry.proto index cbe9a2d..4db51b7 100644 --- a/meshtastic/telemetry.proto +++ b/meshtastic/telemetry.proto @@ -447,7 +447,7 @@ message LocalStats { /* * Noise floor value measured in dBm */ - float noise_floor = 15; + int32 noise_floor = 15; } /* From 32906d5cdde821a89e9ac27fa3f2b116efe52e4f Mon Sep 17 00:00:00 2001 From: oscgonfer Date: Tue, 20 Jan 2026 09:53:48 +0100 Subject: [PATCH 394/454] Format --- meshtastic/admin.proto | 46 +++++++++++++++++++++--------------------- meshtastic/mesh.proto | 2 +- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/meshtastic/admin.proto b/meshtastic/admin.proto index 9cd2ea2..8190ca1 100644 --- a/meshtastic/admin.proto +++ b/meshtastic/admin.proto @@ -638,61 +638,61 @@ message KeyVerificationAdmin { message SensorConfig { /* - * SCD4X CO2 Sensor configuration - */ + * SCD4X CO2 Sensor configuration + */ SCD4X_config scd4x_config = 1; /* - * SEN5X PM Sensor configuration - */ + * SEN5X PM Sensor configuration + */ SEN5X_config sen5x_config = 2; } message SCD4X_config { /* - * Set Automatic self-calibration enabled - */ + * Set Automatic self-calibration enabled + */ optional bool set_asc = 1; /* - * Recalibration target CO2 concentration in ppm (FRC or ASC) - */ + * Recalibration target CO2 concentration in ppm (FRC or ASC) + */ optional uint32 set_target_co2_conc = 2; /* - * Reference temperature in degC - */ + * Reference temperature in degC + */ optional float set_temperature = 3; /* - * Altitude of sensor in meters above sea level. 0 - 3000m (overrides ambient pressure) - */ + * Altitude of sensor in meters above sea level. 0 - 3000m (overrides ambient pressure) + */ optional uint32 set_altitude = 4; /* - * Sensor ambient pressure in Pa. 70000 - 120000 Pa (overrides altitude) - */ + * Sensor ambient pressure in Pa. 70000 - 120000 Pa (overrides altitude) + */ optional uint32 set_ambient_pressure = 5; /* - * Perform a factory reset of the sensor - */ + * Perform a factory reset of the sensor + */ optional bool factory_reset = 6; /* - * Power mode for sensor (true for low power, false for normal) - */ + * Power mode for sensor (true for low power, false for normal) + */ optional bool set_power_mode = 7; } message SEN5X_config { /* - * Reference temperature in degC - */ + * Reference temperature in degC + */ optional float set_temperature = 1; /* - * One-shot mode (true for low power - one-shot mode, false for normal - continuous mode) - */ + * One-shot mode (true for low power - one-shot mode, false for normal - continuous mode) + */ optional bool set_one_shot_mode = 2; -} \ No newline at end of file +} diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index ecb8803..f620b76 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -846,7 +846,7 @@ enum HardwareModel { MESHSTICK_1262 = 121; /* - * LilyGo T-Beam 1W + * LilyGo T-Beam 1W */ TBEAM_1_WATT = 122; From 77c8329a59a9c96a61c447b5d5f1a52ca583e4f2 Mon Sep 17 00:00:00 2001 From: Jonathan Bennett Date: Tue, 20 Jan 2026 07:54:12 -0600 Subject: [PATCH 395/454] Add missed StatusMessage protobufs, mainly for config (#847) * Add missed StatusMessage protobufs, mainly for config * format fix --- meshtastic/admin.proto | 5 +++++ meshtastic/localonly.proto | 5 +++++ meshtastic/mesh.proto | 2 +- 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/meshtastic/admin.proto b/meshtastic/admin.proto index 176d973..4b6eff8 100644 --- a/meshtastic/admin.proto +++ b/meshtastic/admin.proto @@ -152,6 +152,11 @@ message AdminMessage { * TODO: REPLACE */ PAXCOUNTER_CONFIG = 12; + + /* + * TODO: REPLACE + */ + STATUSMESSAGE_CONFIG = 13; } enum BackupLocation { diff --git a/meshtastic/localonly.proto b/meshtastic/localonly.proto index 50e7305..6da79a3 100644 --- a/meshtastic/localonly.proto +++ b/meshtastic/localonly.proto @@ -131,6 +131,11 @@ message LocalModuleConfig { */ ModuleConfig.PaxcounterConfig paxcounter = 14; + /* + * StatusMessage Config + */ + ModuleConfig.StatusMessageConfig statusmessage = 15; + /* * A version integer used to invalidate old save files when we make * incompatible changes This integer is set at build time and is private to diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 3117af2..aace7d4 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -846,7 +846,7 @@ enum HardwareModel { MESHSTICK_1262 = 121; /* - * LilyGo T-Beam 1W + * LilyGo T-Beam 1W */ TBEAM_1_WATT = 122; From 441e4b48526e04983a6f72bc87402adec8afb6c6 Mon Sep 17 00:00:00 2001 From: Dan D Date: Thu, 22 Jan 2026 22:19:26 -0500 Subject: [PATCH 396/454] Refactor publish workflow with separate build jobs and dry run support - Add dry_run input for testing without publishing - Split into separate jobs: codegen, build-typescript, build-rust - Add tsdown build step for ESM-only NPM package - Create release zip artifacts for NPM, JSR, and Rust packages - Upload zip assets to GitHub releases - Use OIDC authentication for JSR publishing (npx jsr publish) - Add explicit permissions for id-token write --- .github/workflows/publish.yml | 294 ++++++++++++++++++++++++++-------- 1 file changed, 230 insertions(+), 64 deletions(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index d375521..9f00bbd 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -10,76 +10,66 @@ on: description: "Version to publish (e.g. v1.2.3). Used when manually dispatching." required: false type: string + dry_run: + description: "Dry run mode - generate artifacts without publishing" + required: false + type: boolean + default: false -permissions: write-all +permissions: + contents: write + id-token: write jobs: codegen: runs-on: ubuntu-24.04 + outputs: + version: ${{ steps.version.outputs.VERSION }} + tag: ${{ steps.version.outputs.TAG }} steps: - name: Checkout code uses: actions/checkout@v4 with: - fetch-depth: 0 + fetch-depth: 0 - - name: Show files exist - run: | - set -euxo pipefail - ls -la packages/ts || true - ls -la packages/rust || true - cat packages/ts/deno.json - cat packages/ts/package.json - cat packages/rust/Cargo.toml - - - name: Determine VERSION + - name: Determine version + id: version run: | set -euo pipefail if [ "${{ github.ref_type }}" = "tag" ]; then - VERSION="${{ github.ref_name }}" + TAG="${{ github.ref_name }}" elif [ -n "${{ inputs.version || '' }}" ]; then - VERSION="${{ inputs.version }}" + TAG="${{ inputs.version }}" else echo "No tag ref and no 'version' input. Provide a tag (push a tag) or pass inputs.version." >&2 exit 1 fi - # If you don't want the leading 'v' inside files, strip it: - STRIPPED="${VERSION#v}" - echo "VERSION=$STRIPPED" >> "$GITHUB_ENV" - echo "Resolved VERSION=$STRIPPED" - - - name: Set Package Versions to current tag - run: | - set -euxo pipefail - for f in \ - packages/ts/deno.json \ - packages/ts/package.json \ - packages/rust/Cargo.toml - do - test -f "$f" || { echo "Missing $f" >&2; exit 1; } - # replace __PACKAGE_VERSION__ with env VERSION - sed -i "s/__PACKAGE_VERSION__/${VERSION//\//-}/g" "$f" - done + VERSION="${TAG#v}" + echo "VERSION=$VERSION" >> "$GITHUB_OUTPUT" + echo "TAG=$TAG" >> "$GITHUB_OUTPUT" + echo "Resolved VERSION=$VERSION, TAG=$TAG" - name: Setup Buf uses: bufbuild/buf-setup-action@main with: github_token: ${{ github.token }} - - name: Generate code + - name: Generate protobuf code run: buf generate + - name: Set package versions + run: | + set -euxo pipefail + VERSION="${{ steps.version.outputs.VERSION }}" + for f in packages/ts/deno.json packages/ts/package.json packages/rust/Cargo.toml; do + test -f "$f" || { echo "Missing $f" >&2; exit 1; } + sed -i "s/__PACKAGE_VERSION__/${VERSION}/g" "$f" + done + - name: Copy license & README run: | - cp LICENSE packages/ts - cp LICENSE packages/rust - cp README.md packages/ts - cp README.md packages/rust - - - name: Upload Rust code - uses: actions/upload-artifact@v4 - with: - name: rust_code - path: packages/rust + cp LICENSE README.md packages/ts/ + cp LICENSE README.md packages/rust/ - name: Upload TypeScript code uses: actions/upload-artifact@v4 @@ -87,33 +77,60 @@ jobs: name: ts_code path: packages/ts - - name: Push to schema registry - env: - BUF_TOKEN: ${{ secrets.BUF_TOKEN }} - run: | - buf push --tag ${{ github.ref_name }} + - name: Upload Rust code + uses: actions/upload-artifact@v4 + with: + name: rust_code + path: packages/rust - publish-jsr: + build-typescript: runs-on: ubuntu-24.04 needs: codegen - permissions: - contents: read - id-token: write steps: - name: Download TypeScript code uses: actions/download-artifact@v4 with: name: ts_code - - name: Remove package.json (JSR doesn’t need it) - run: rm -f package.json - - name: Set up Deno - uses: denoland/setup-deno@main - with: - deno-version: rc - - name: Publish to JSR - run: deno publish --unstable-sloppy-imports - publish-cargo: + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: "22" + + - name: Install dependencies + run: npm install + + - name: Build with tsdown + run: npm run build + + - name: Show build output + run: | + echo "=== Build output ===" + ls -la + ls -la dist/ + + - name: Upload built NPM package + uses: actions/upload-artifact@v4 + with: + name: npm_package + path: | + dist/ + package.json + LICENSE + README.md + + - name: Upload JSR package + uses: actions/upload-artifact@v4 + with: + name: jsr_package + path: | + lib/ + mod.ts + deno.json + LICENSE + README.md + + build-rust: runs-on: ubuntu-24.04 needs: codegen steps: @@ -121,12 +138,161 @@ jobs: uses: actions/download-artifact@v4 with: name: rust_code - - name: Set up Rust + + - name: Setup Rust uses: actions-rust-lang/setup-rust-toolchain@v1 - - name: Check Library - run: cargo check + + - name: Build library + run: cargo build --release + + - name: Show build output + run: | + echo "=== Build output ===" + ls -la + ls -la target/release/ || true + + - name: Upload built Rust package + uses: actions/upload-artifact@v4 + with: + name: rust_package + path: | + src/ + Cargo.toml + Cargo.lock + LICENSE + README.md + + create-release-zips: + runs-on: ubuntu-24.04 + needs: [codegen, build-typescript, build-rust] + steps: + - name: Download NPM package + uses: actions/download-artifact@v4 + with: + name: npm_package + path: npm_package + + - name: Download JSR package + uses: actions/download-artifact@v4 + with: + name: jsr_package + path: jsr_package + + - name: Download Rust package + uses: actions/download-artifact@v4 + with: + name: rust_package + path: rust_package + + - name: Create zip archives + run: | + cd npm_package && zip -r ../meshtastic-protobufs-npm.zip . && cd .. + cd jsr_package && zip -r ../meshtastic-protobufs-jsr.zip . && cd .. + cd rust_package && zip -r ../meshtastic-protobufs-rust.zip . && cd .. + + - name: Upload release zips + uses: actions/upload-artifact@v4 + with: + name: release_zips + path: | + meshtastic-protobufs-npm.zip + meshtastic-protobufs-jsr.zip + meshtastic-protobufs-rust.zip + + upload-release-assets: + runs-on: ubuntu-24.04 + needs: [codegen, create-release-zips] + if: ${{ !inputs.dry_run }} + steps: + - name: Download release zips + uses: actions/download-artifact@v4 + with: + name: release_zips + + - name: Upload assets to GitHub release + uses: softprops/action-gh-release@v2 + with: + tag_name: ${{ needs.codegen.outputs.tag }} + files: | + meshtastic-protobufs-npm.zip + meshtastic-protobufs-jsr.zip + meshtastic-protobufs-rust.zip + + push-buf-registry: + runs-on: ubuntu-24.04 + needs: codegen + if: ${{ !inputs.dry_run }} + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Setup Buf + uses: bufbuild/buf-setup-action@main + with: + github_token: ${{ github.token }} + + - name: Push to schema registry + env: + BUF_TOKEN: ${{ secrets.BUF_TOKEN }} + run: buf push --tag ${{ needs.codegen.outputs.tag }} + + publish-npm: + runs-on: ubuntu-24.04 + needs: [codegen, build-typescript] + if: ${{ !inputs.dry_run }} + steps: + - name: Download NPM package + uses: actions/download-artifact@v4 + with: + name: npm_package + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: "22" + registry-url: "https://registry.npmjs.org" + + - name: Publish to NPM + run: npm publish --access public + env: + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} + + publish-jsr: + runs-on: ubuntu-24.04 + needs: [codegen, build-typescript] + if: ${{ !inputs.dry_run }} + permissions: + contents: read + id-token: write + steps: + - name: Download JSR package + uses: actions/download-artifact@v4 + with: + name: jsr_package + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: "22" + + - name: Publish to JSR + run: npx jsr publish + + publish-cargo: + runs-on: ubuntu-24.04 + needs: [codegen, build-rust] + if: ${{ !inputs.dry_run }} + steps: + - name: Download Rust package + uses: actions/download-artifact@v4 + with: + name: rust_package + + - name: Setup Rust + uses: actions-rust-lang/setup-rust-toolchain@v1 + - name: Publish to crates.io uses: katyo/publish-crates@v2 with: registry-token: ${{ secrets.CARGO_TOKEN }} - ignore-unpublished-changes: true \ No newline at end of file + ignore-unpublished-changes: true From 84f8569c9e14b27ee81e1af005faf25552d8a505 Mon Sep 17 00:00:00 2001 From: Dan D Date: Thu, 22 Jan 2026 22:21:08 -0500 Subject: [PATCH 397/454] Rename ci.yml to schema-registry.yml for clarity --- .github/workflows/{ci.yml => schema-registry.yml} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename .github/workflows/{ci.yml => schema-registry.yml} (100%) diff --git a/.github/workflows/ci.yml b/.github/workflows/schema-registry.yml similarity index 100% rename from .github/workflows/ci.yml rename to .github/workflows/schema-registry.yml From 649568805f5001240f3df0ac13167616915a7167 Mon Sep 17 00:00:00 2001 From: Dan D Date: Thu, 22 Jan 2026 22:46:18 -0500 Subject: [PATCH 398/454] Remove Rust/Cargo publishing from workflow --- .github/workflows/publish.yml | 76 ++--------------------------------- 1 file changed, 4 insertions(+), 72 deletions(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 9f00bbd..70bc637 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -1,4 +1,4 @@ -name: Publish to Cargo, JSR, & NPM +name: Publish to JSR & NPM on: push: @@ -61,15 +61,13 @@ jobs: run: | set -euxo pipefail VERSION="${{ steps.version.outputs.VERSION }}" - for f in packages/ts/deno.json packages/ts/package.json packages/rust/Cargo.toml; do + for f in packages/ts/deno.json packages/ts/package.json; do test -f "$f" || { echo "Missing $f" >&2; exit 1; } sed -i "s/__PACKAGE_VERSION__/${VERSION}/g" "$f" done - name: Copy license & README - run: | - cp LICENSE README.md packages/ts/ - cp LICENSE README.md packages/rust/ + run: cp LICENSE README.md packages/ts/ - name: Upload TypeScript code uses: actions/upload-artifact@v4 @@ -77,12 +75,6 @@ jobs: name: ts_code path: packages/ts - - name: Upload Rust code - uses: actions/upload-artifact@v4 - with: - name: rust_code - path: packages/rust - build-typescript: runs-on: ubuntu-24.04 needs: codegen @@ -130,41 +122,9 @@ jobs: LICENSE README.md - build-rust: - runs-on: ubuntu-24.04 - needs: codegen - steps: - - name: Download Rust code - uses: actions/download-artifact@v4 - with: - name: rust_code - - - name: Setup Rust - uses: actions-rust-lang/setup-rust-toolchain@v1 - - - name: Build library - run: cargo build --release - - - name: Show build output - run: | - echo "=== Build output ===" - ls -la - ls -la target/release/ || true - - - name: Upload built Rust package - uses: actions/upload-artifact@v4 - with: - name: rust_package - path: | - src/ - Cargo.toml - Cargo.lock - LICENSE - README.md - create-release-zips: runs-on: ubuntu-24.04 - needs: [codegen, build-typescript, build-rust] + needs: [codegen, build-typescript] steps: - name: Download NPM package uses: actions/download-artifact@v4 @@ -178,17 +138,10 @@ jobs: name: jsr_package path: jsr_package - - name: Download Rust package - uses: actions/download-artifact@v4 - with: - name: rust_package - path: rust_package - - name: Create zip archives run: | cd npm_package && zip -r ../meshtastic-protobufs-npm.zip . && cd .. cd jsr_package && zip -r ../meshtastic-protobufs-jsr.zip . && cd .. - cd rust_package && zip -r ../meshtastic-protobufs-rust.zip . && cd .. - name: Upload release zips uses: actions/upload-artifact@v4 @@ -197,7 +150,6 @@ jobs: path: | meshtastic-protobufs-npm.zip meshtastic-protobufs-jsr.zip - meshtastic-protobufs-rust.zip upload-release-assets: runs-on: ubuntu-24.04 @@ -216,7 +168,6 @@ jobs: files: | meshtastic-protobufs-npm.zip meshtastic-protobufs-jsr.zip - meshtastic-protobufs-rust.zip push-buf-registry: runs-on: ubuntu-24.04 @@ -277,22 +228,3 @@ jobs: - name: Publish to JSR run: npx jsr publish - - publish-cargo: - runs-on: ubuntu-24.04 - needs: [codegen, build-rust] - if: ${{ !inputs.dry_run }} - steps: - - name: Download Rust package - uses: actions/download-artifact@v4 - with: - name: rust_package - - - name: Setup Rust - uses: actions-rust-lang/setup-rust-toolchain@v1 - - - name: Publish to crates.io - uses: katyo/publish-crates@v2 - with: - registry-token: ${{ secrets.CARGO_TOKEN }} - ignore-unpublished-changes: true From 41b270cff026414277aaaf49b91ce6c9faabc6f1 Mon Sep 17 00:00:00 2001 From: Dan D Date: Thu, 22 Jan 2026 22:48:10 -0500 Subject: [PATCH 399/454] Remove Rust plugins from buf code generation --- buf.gen.yaml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/buf.gen.yaml b/buf.gen.yaml index 1306002..daec499 100644 --- a/buf.gen.yaml +++ b/buf.gen.yaml @@ -3,8 +3,3 @@ plugins: - remote: buf.build/bufbuild/es:v2.1.0 out: packages/ts/lib opt: target=ts - - remote: buf.build/community/neoeinstein-prost:v0.4.0 - out: packages/rust/src/generated - - remote: buf.build/community/neoeinstein-prost-crate:v0.4.1 - out: packages/rust/src/generated - opt: no_features From cfa561adae6bd0ad1b2cac463918378204ae91de Mon Sep 17 00:00:00 2001 From: Dan D Date: Thu, 22 Jan 2026 23:00:28 -0500 Subject: [PATCH 400/454] Add debug output to diagnose missing lib files --- .github/workflows/publish.yml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 70bc637..03506af 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -57,6 +57,13 @@ jobs: - name: Generate protobuf code run: buf generate + - name: Show generated files + run: | + echo "=== packages/ts contents ===" + ls -la packages/ts/ + echo "=== packages/ts/lib contents ===" + ls -la packages/ts/lib/ || echo "lib folder not found" + - name: Set package versions run: | set -euxo pipefail @@ -84,6 +91,15 @@ jobs: with: name: ts_code + - name: Show downloaded files + run: | + echo "=== Working directory ===" + pwd + echo "=== Contents ===" + ls -la + echo "=== lib/ contents ===" + ls -la lib/ || echo "lib folder not found" + - name: Setup Node.js uses: actions/setup-node@v4 with: From 5fced3fa927c5fb0336ef5364bc0e0e43a69e241 Mon Sep 17 00:00:00 2001 From: Dan D Date: Thu, 22 Jan 2026 23:04:17 -0500 Subject: [PATCH 401/454] Move generated protobuf files from meshtastic/ to lib/ root --- .github/workflows/publish.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 03506af..2787fc2 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -57,6 +57,9 @@ jobs: - name: Generate protobuf code run: buf generate + - name: Move generated files to lib root + run: mv packages/ts/lib/meshtastic/*_pb.ts packages/ts/lib/ + - name: Show generated files run: | echo "=== packages/ts contents ===" From c84d2440ff32f153445f2326e9ff39f56f2554b9 Mon Sep 17 00:00:00 2001 From: Dan D Date: Fri, 30 Jan 2026 15:14:46 -0500 Subject: [PATCH 402/454] Ignore generated protobuf files in packages/ts/lib/ --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index e43b0f9..265ee7c 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,4 @@ .DS_Store + +# Generated protobuf files +packages/ts/lib/ From 9f65fd00e7ba76510938a4f595d7c41f2ca65c31 Mon Sep 17 00:00:00 2001 From: Dan D Date: Fri, 30 Jan 2026 15:20:32 -0500 Subject: [PATCH 403/454] Fix comment indentation in telemetry.proto --- meshtastic/telemetry.proto | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/meshtastic/telemetry.proto b/meshtastic/telemetry.proto index 4db51b7..21a8497 100644 --- a/meshtastic/telemetry.proto +++ b/meshtastic/telemetry.proto @@ -439,9 +439,9 @@ message LocalStats { */ uint32 heap_free_bytes = 13; - /* - * Number of packets that were dropped because the transmit queue was full. - */ + /* + * Number of packets that were dropped because the transmit queue was full. + */ uint32 num_tx_dropped = 14; /* From e2daf8d914070d7b67e152e1656e737b5fc15938 Mon Sep 17 00:00:00 2001 From: Clive Blackledge Date: Mon, 19 Jan 2026 13:39:55 -0800 Subject: [PATCH 404/454] Add module traffic_management protobufs --- meshtastic/admin.proto | 5 +++ meshtastic/localonly.proto | 5 +++ meshtastic/module_config.proto | 57 ++++++++++++++++++++++++++++++++++ meshtastic/telemetry.proto | 19 ++++++++++++ 4 files changed, 86 insertions(+) diff --git a/meshtastic/admin.proto b/meshtastic/admin.proto index d622e0e..ed373a5 100644 --- a/meshtastic/admin.proto +++ b/meshtastic/admin.proto @@ -157,6 +157,11 @@ message AdminMessage { * TODO: REPLACE */ STATUSMESSAGE_CONFIG = 13; + + /* + * Traffic management module config + */ + TRAFFICMANAGEMENT_CONFIG = 14; } enum BackupLocation { diff --git a/meshtastic/localonly.proto b/meshtastic/localonly.proto index 6da79a3..50b74f7 100644 --- a/meshtastic/localonly.proto +++ b/meshtastic/localonly.proto @@ -136,6 +136,11 @@ message LocalModuleConfig { */ ModuleConfig.StatusMessageConfig statusmessage = 15; + /* + * The part of the config that is specific to the Traffic Management module + */ + ModuleConfig.TrafficManagementConfig traffic_management = 16; + /* * A version integer used to invalidate old save files when we make * incompatible changes This integer is set at build time and is private to diff --git a/meshtastic/module_config.proto b/meshtastic/module_config.proto index ac13a56..80a2b44 100644 --- a/meshtastic/module_config.proto +++ b/meshtastic/module_config.proto @@ -295,6 +295,58 @@ message ModuleConfig { int32 ble_threshold = 4; } + /* + * Config for the Traffic Management module + */ + message TrafficManagementConfig { + /* + * Master enable for traffic management + */ + bool enabled = 1; + + /* + * Dry-run mode: log actions but don't drop/modify packets + */ + bool dry_run = 2; + + /* + * Position deduplication settings + */ + bool position_dedup_enabled = 3; + uint32 position_precision_bits = 4; + uint32 position_min_interval_secs = 5; + + /* + * NodeInfo direct response settings + */ + bool nodeinfo_direct_response = 6; + uint32 nodeinfo_direct_response_min_hops = 7; + + /* + * Rate limiting settings + */ + bool rate_limit_enabled = 8; + uint32 rate_limit_window_secs = 9; + uint32 rate_limit_max_packets = 10; + + /* + * Unknown/undecryptable packet handling + */ + bool drop_unknown_enabled = 11; + uint32 unknown_packet_threshold = 12; + + /* + * Hop exhaustion for local telemetry/position + */ + bool local_only_telemetry = 13; + bool local_only_position = 14; + + /* + * Router hop preservation + */ + bool router_preserve_hops = 15; + } + /* * Serial Config */ @@ -852,6 +904,11 @@ message ModuleConfig { * TODO: REPLACE */ StatusMessageConfig statusmessage = 14; + + /* + * TODO: REPLACE + */ + TrafficManagementConfig traffic_management = 15; } } diff --git a/meshtastic/telemetry.proto b/meshtastic/telemetry.proto index 8b70ade..efcc4a4 100644 --- a/meshtastic/telemetry.proto +++ b/meshtastic/telemetry.proto @@ -450,6 +450,20 @@ message LocalStats { int32 noise_floor = 15; } +/* + * Traffic management statistics + */ +message TrafficManagementStats { + uint32 packets_inspected = 1; + uint32 position_dedup_drops = 2; + uint32 nodeinfo_cache_hits = 3; + uint32 rate_limit_drops = 4; + uint32 unknown_packet_drops = 5; + uint32 hop_exhausted_packets = 6; + uint32 dry_run_would_drop = 7; + uint32 router_hops_preserved = 8; +} + /* * Health telemetry metrics */ @@ -565,6 +579,11 @@ message Telemetry { * Linux host metrics */ HostMetrics host_metrics = 8; + + /* + * Traffic management statistics + */ + TrafficManagementStats traffic_management_stats = 9; } } From 4fbac7db2bb41253269c1712214575cb6a64e08b Mon Sep 17 00:00:00 2001 From: Clive Blackledge Date: Mon, 19 Jan 2026 15:12:50 -0800 Subject: [PATCH 405/454] Updated probufs with more comments per submit requirement. --- meshtastic/admin.proto | 2 +- meshtastic/module_config.proto | 2 +- meshtastic/telemetry.proto | 33 ++++++++++++++++++++++++++++++++- 3 files changed, 34 insertions(+), 3 deletions(-) diff --git a/meshtastic/admin.proto b/meshtastic/admin.proto index ed373a5..643e418 100644 --- a/meshtastic/admin.proto +++ b/meshtastic/admin.proto @@ -154,7 +154,7 @@ message AdminMessage { PAXCOUNTER_CONFIG = 12; /* - * TODO: REPLACE + * Traffic Management module config */ STATUSMESSAGE_CONFIG = 13; diff --git a/meshtastic/module_config.proto b/meshtastic/module_config.proto index 80a2b44..feb8481 100644 --- a/meshtastic/module_config.proto +++ b/meshtastic/module_config.proto @@ -906,7 +906,7 @@ message ModuleConfig { StatusMessageConfig statusmessage = 14; /* - * TODO: REPLACE + * Traffic management module config for mesh network optimization */ TrafficManagementConfig traffic_management = 15; } diff --git a/meshtastic/telemetry.proto b/meshtastic/telemetry.proto index efcc4a4..5dd23c1 100644 --- a/meshtastic/telemetry.proto +++ b/meshtastic/telemetry.proto @@ -451,16 +451,47 @@ message LocalStats { } /* - * Traffic management statistics + * Traffic management statistics for mesh network optimization */ message TrafficManagementStats { + /* + * Total number of packets inspected by traffic management + */ uint32 packets_inspected = 1; + + /* + * Number of position packets dropped due to deduplication + */ uint32 position_dedup_drops = 2; + + /* + * Number of NodeInfo requests answered from cache + */ uint32 nodeinfo_cache_hits = 3; + + /* + * Number of packets dropped due to rate limiting + */ uint32 rate_limit_drops = 4; + + /* + * Number of unknown/undecryptable packets dropped + */ uint32 unknown_packet_drops = 5; + + /* + * Number of packets with hop_limit exhausted for local-only broadcast + */ uint32 hop_exhausted_packets = 6; + + /* + * Number of packets that would have been dropped in dry-run mode + */ uint32 dry_run_would_drop = 7; + + /* + * Number of times router hop preservation was applied + */ uint32 router_hops_preserved = 8; } From 542285b5d0d591d8e51b2203c8dc1602f9960338 Mon Sep 17 00:00:00 2001 From: Clive Blackledge Date: Mon, 19 Jan 2026 15:14:50 -0800 Subject: [PATCH 406/454] More comments --- meshtastic/module_config.proto | 47 +++++++++++++++++++++++++++------- 1 file changed, 38 insertions(+), 9 deletions(-) diff --git a/meshtastic/module_config.proto b/meshtastic/module_config.proto index feb8481..440ef9d 100644 --- a/meshtastic/module_config.proto +++ b/meshtastic/module_config.proto @@ -296,53 +296,82 @@ message ModuleConfig { } /* - * Config for the Traffic Management module + * Config for the Traffic Management module. + * Provides packet inspection and traffic shaping for mesh network optimization. */ message TrafficManagementConfig { /* - * Master enable for traffic management + * Master enable for traffic management module */ bool enabled = 1; /* - * Dry-run mode: log actions but don't drop/modify packets + * Dry-run mode: log actions but don't actually drop or modify packets */ bool dry_run = 2; /* - * Position deduplication settings + * Enable position deduplication to drop redundant position broadcasts */ bool position_dedup_enabled = 3; + + /* + * Number of bits of precision for position deduplication (0-32) + */ uint32 position_precision_bits = 4; + + /* + * Minimum interval in seconds between position updates from the same node + */ uint32 position_min_interval_secs = 5; /* - * NodeInfo direct response settings + * Enable direct response to NodeInfo requests from local cache */ bool nodeinfo_direct_response = 6; + + /* + * Minimum hop distance from requestor before responding to NodeInfo requests + */ uint32 nodeinfo_direct_response_min_hops = 7; /* - * Rate limiting settings + * Enable per-node rate limiting to throttle chatty nodes */ bool rate_limit_enabled = 8; + + /* + * Time window in seconds for rate limiting calculations + */ uint32 rate_limit_window_secs = 9; + + /* + * Maximum packets allowed per node within the rate limit window + */ uint32 rate_limit_max_packets = 10; /* - * Unknown/undecryptable packet handling + * Enable dropping of unknown/undecryptable packets from repeat offenders */ bool drop_unknown_enabled = 11; + + /* + * Number of unknown packets before dropping from a node + */ uint32 unknown_packet_threshold = 12; /* - * Hop exhaustion for local telemetry/position + * Set hop_limit to 0 for locally-originated telemetry broadcasts */ bool local_only_telemetry = 13; + + /* + * Set hop_limit to 0 for locally-originated position broadcasts + */ bool local_only_position = 14; /* - * Router hop preservation + * Preserve hop_limit for router-to-router traffic */ bool router_preserve_hops = 15; } From 84a26030379bb6e202c95b0b8c21f2784de84316 Mon Sep 17 00:00:00 2001 From: Clive Blackledge Date: Mon, 19 Jan 2026 15:19:18 -0800 Subject: [PATCH 407/454] Minor wording updates --- meshtastic/module_config.proto | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/meshtastic/module_config.proto b/meshtastic/module_config.proto index 440ef9d..be56f42 100644 --- a/meshtastic/module_config.proto +++ b/meshtastic/module_config.proto @@ -297,7 +297,7 @@ message ModuleConfig { /* * Config for the Traffic Management module. - * Provides packet inspection and traffic shaping for mesh network optimization. + * Provides packet inspection and traffic shaping to help reduce channel utilization */ message TrafficManagementConfig { /* @@ -351,7 +351,8 @@ message ModuleConfig { uint32 rate_limit_max_packets = 10; /* - * Enable dropping of unknown/undecryptable packets from repeat offenders + * Enable dropping of unknown/undecryptable packets per rate_limit_window_secs + */ bool drop_unknown_enabled = 11; @@ -361,12 +362,12 @@ message ModuleConfig { uint32 unknown_packet_threshold = 12; /* - * Set hop_limit to 0 for locally-originated telemetry broadcasts + * Set hop_limit to 0 for telemetry broadcasts */ bool local_only_telemetry = 13; /* - * Set hop_limit to 0 for locally-originated position broadcasts + * Set hop_limit to 0 for position broadcasts */ bool local_only_position = 14; From 693aaa395b1bae4fa8423d8f9278c96c8b31d64c Mon Sep 17 00:00:00 2001 From: Clive Blackledge Date: Tue, 20 Jan 2026 23:48:48 -0800 Subject: [PATCH 408/454] Update zero_hop_telemetry / zero_hop_position --- meshtastic/module_config.proto | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/meshtastic/module_config.proto b/meshtastic/module_config.proto index be56f42..2a593e4 100644 --- a/meshtastic/module_config.proto +++ b/meshtastic/module_config.proto @@ -362,14 +362,14 @@ message ModuleConfig { uint32 unknown_packet_threshold = 12; /* - * Set hop_limit to 0 for telemetry broadcasts + * Set hop_limit to 0 for relayed telemetry broadcasts (own packets unaffected) */ - bool local_only_telemetry = 13; + bool zero_hop_telemetry = 13; /* - * Set hop_limit to 0 for position broadcasts + * Set hop_limit to 0 for relayed position broadcasts (own packets unaffected) */ - bool local_only_position = 14; + bool zero_hop_position = 14; /* * Preserve hop_limit for router-to-router traffic From 7a1b5b683d291c950f077e67182ac12c61ffe747 Mon Sep 17 00:00:00 2001 From: Clive Blackledge Date: Wed, 21 Jan 2026 19:45:11 -0800 Subject: [PATCH 409/454] Hopefully last name change --- meshtastic/module_config.proto | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/meshtastic/module_config.proto b/meshtastic/module_config.proto index 2a593e4..a7cd4e1 100644 --- a/meshtastic/module_config.proto +++ b/meshtastic/module_config.proto @@ -364,12 +364,12 @@ message ModuleConfig { /* * Set hop_limit to 0 for relayed telemetry broadcasts (own packets unaffected) */ - bool zero_hop_telemetry = 13; + bool exhaust_hop_telemetry = 13; /* * Set hop_limit to 0 for relayed position broadcasts (own packets unaffected) */ - bool zero_hop_position = 14; + bool exhaust_hop_position = 14; /* * Preserve hop_limit for router-to-router traffic From 8b0cdd20f35c6e6367ed68b05362164d7879f867 Mon Sep 17 00:00:00 2001 From: Clive Blackledge Date: Thu, 22 Jan 2026 22:44:47 -0800 Subject: [PATCH 410/454] Fixing naming for traffic_management.nodeinfo_direct_response_min_hops to traffic_management.nodeinfo_direct_response_max_hops --- meshtastic/module_config.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meshtastic/module_config.proto b/meshtastic/module_config.proto index a7cd4e1..292f01e 100644 --- a/meshtastic/module_config.proto +++ b/meshtastic/module_config.proto @@ -333,7 +333,7 @@ message ModuleConfig { /* * Minimum hop distance from requestor before responding to NodeInfo requests */ - uint32 nodeinfo_direct_response_min_hops = 7; + uint32 nodeinfo_direct_response_max_hops = 7; /* * Enable per-node rate limiting to throttle chatty nodes From 780863b1ed78c8c70c281840429d5b91e6a00084 Mon Sep 17 00:00:00 2001 From: Clive Blackledge Date: Sat, 31 Jan 2026 09:14:13 -0800 Subject: [PATCH 411/454] Removed dry_run before potential release. There was no easy way to get these metrics. --- meshtastic/module_config.proto | 31 +++++++++++++------------------ 1 file changed, 13 insertions(+), 18 deletions(-) diff --git a/meshtastic/module_config.proto b/meshtastic/module_config.proto index 292f01e..9405099 100644 --- a/meshtastic/module_config.proto +++ b/meshtastic/module_config.proto @@ -305,76 +305,71 @@ message ModuleConfig { */ bool enabled = 1; - /* - * Dry-run mode: log actions but don't actually drop or modify packets - */ - bool dry_run = 2; - /* * Enable position deduplication to drop redundant position broadcasts */ - bool position_dedup_enabled = 3; + bool position_dedup_enabled = 2; /* * Number of bits of precision for position deduplication (0-32) */ - uint32 position_precision_bits = 4; + uint32 position_precision_bits = 3; /* * Minimum interval in seconds between position updates from the same node */ - uint32 position_min_interval_secs = 5; + uint32 position_min_interval_secs = 4; /* * Enable direct response to NodeInfo requests from local cache */ - bool nodeinfo_direct_response = 6; + bool nodeinfo_direct_response = 5; /* * Minimum hop distance from requestor before responding to NodeInfo requests */ - uint32 nodeinfo_direct_response_max_hops = 7; + uint32 nodeinfo_direct_response_max_hops = 6; /* * Enable per-node rate limiting to throttle chatty nodes */ - bool rate_limit_enabled = 8; + bool rate_limit_enabled = 7; /* * Time window in seconds for rate limiting calculations */ - uint32 rate_limit_window_secs = 9; + uint32 rate_limit_window_secs = 8; /* * Maximum packets allowed per node within the rate limit window */ - uint32 rate_limit_max_packets = 10; + uint32 rate_limit_max_packets = 9; /* * Enable dropping of unknown/undecryptable packets per rate_limit_window_secs */ - bool drop_unknown_enabled = 11; + bool drop_unknown_enabled = 10; /* * Number of unknown packets before dropping from a node */ - uint32 unknown_packet_threshold = 12; + uint32 unknown_packet_threshold = 11; /* * Set hop_limit to 0 for relayed telemetry broadcasts (own packets unaffected) */ - bool exhaust_hop_telemetry = 13; + bool exhaust_hop_telemetry = 12; /* * Set hop_limit to 0 for relayed position broadcasts (own packets unaffected) */ - bool exhaust_hop_position = 14; + bool exhaust_hop_position = 13; /* * Preserve hop_limit for router-to-router traffic */ - bool router_preserve_hops = 15; + bool router_preserve_hops = 14; } /* From 55a3604fac23ebed8312f6f63fcf3e10639d41b8 Mon Sep 17 00:00:00 2001 From: Clive Blackledge Date: Sat, 31 Jan 2026 09:14:43 -0800 Subject: [PATCH 412/454] Same here --- meshtastic/telemetry.proto | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/meshtastic/telemetry.proto b/meshtastic/telemetry.proto index 5dd23c1..bdf505f 100644 --- a/meshtastic/telemetry.proto +++ b/meshtastic/telemetry.proto @@ -484,15 +484,10 @@ message TrafficManagementStats { */ uint32 hop_exhausted_packets = 6; - /* - * Number of packets that would have been dropped in dry-run mode - */ - uint32 dry_run_would_drop = 7; - /* * Number of times router hop preservation was applied */ - uint32 router_hops_preserved = 8; + uint32 router_hops_preserved = 7; } /* From 2fe13dbe06771b4449c3bcd13f6120faf78c8b7e Mon Sep 17 00:00:00 2001 From: Clive Blackledge Date: Sat, 31 Jan 2026 09:22:19 -0800 Subject: [PATCH 413/454] Fixed misplaced comment after merge --- meshtastic/admin.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meshtastic/admin.proto b/meshtastic/admin.proto index 643e418..ed373a5 100644 --- a/meshtastic/admin.proto +++ b/meshtastic/admin.proto @@ -154,7 +154,7 @@ message AdminMessage { PAXCOUNTER_CONFIG = 12; /* - * Traffic Management module config + * TODO: REPLACE */ STATUSMESSAGE_CONFIG = 13; From 518f8e6fb334804b9619382e3a0dd191cece538d Mon Sep 17 00:00:00 2001 From: Dan Ditomaso Date: Sun, 1 Feb 2026 09:57:29 -0500 Subject: [PATCH 414/454] Update .github/workflows/publish.yml Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .github/workflows/publish.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 2787fc2..540e118 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -69,7 +69,7 @@ jobs: - name: Set package versions run: | - set -euxo pipefail + set -euo pipefail VERSION="${{ steps.version.outputs.VERSION }}" for f in packages/ts/deno.json packages/ts/package.json; do test -f "$f" || { echo "Missing $f" >&2; exit 1; } From 491783b16491fc3b3ae698c43173cee6fb010e1d Mon Sep 17 00:00:00 2001 From: Dan Ditomaso Date: Sun, 1 Feb 2026 09:58:03 -0500 Subject: [PATCH 415/454] Update .github/workflows/publish.yml Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .github/workflows/publish.yml | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 540e118..6c61aed 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -58,8 +58,22 @@ jobs: run: buf generate - name: Move generated files to lib root - run: mv packages/ts/lib/meshtastic/*_pb.ts packages/ts/lib/ + run: | + set -euo pipefail + src_dir="packages/ts/lib/meshtastic" + dest_dir="packages/ts/lib" + if [ ! -d "$src_dir" ]; then + echo "Expected source directory '$src_dir' does not exist. 'buf generate' may have failed or changed its output paths." >&2 + exit 1 + fi + + if ! compgen -G "$src_dir"/*_pb.ts > /dev/null; then + echo "No '*_pb.ts' files found in '$src_dir'. 'buf generate' may have produced no TypeScript files or changed their naming." >&2 + exit 1 + fi + + mv "$src_dir"/*_pb.ts "$dest_dir"/ - name: Show generated files run: | echo "=== packages/ts contents ===" From d8a9f035e5d421f5cd1157372abff094a6bb2f94 Mon Sep 17 00:00:00 2001 From: Tomas Kuchta Date: Wed, 4 Feb 2026 14:58:28 +0100 Subject: [PATCH 416/454] Add SHT21 sensor to TelemetrySensorType --- meshtastic/telemetry.proto | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/meshtastic/telemetry.proto b/meshtastic/telemetry.proto index 8b70ade..5c377de 100644 --- a/meshtastic/telemetry.proto +++ b/meshtastic/telemetry.proto @@ -800,6 +800,11 @@ enum TelemetrySensorType { * BH1750 light sensor */ BH1750 = 45; + + /* + * STH21 Temperature and R. Humidity sensor + */ + SHT21 = 46; } /* From 862f87835e60974d3c05d45e210a3b0c5034b2e1 Mon Sep 17 00:00:00 2001 From: yarbschris <123770805+yarbschris@users.noreply.github.com> Date: Thu, 5 Feb 2026 15:55:35 -0600 Subject: [PATCH 417/454] Fix formatting --- meshtastic/telemetry.proto | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/meshtastic/telemetry.proto b/meshtastic/telemetry.proto index 21ea1a0..71cf545 100644 --- a/meshtastic/telemetry.proto +++ b/meshtastic/telemetry.proto @@ -802,8 +802,8 @@ enum TelemetrySensorType { BH1750 = 45; /* - * HDC1080 Temperature and Humidity Sensor - */ + * HDC1080 Temperature and Humidity Sensor + */ HDC1080 = 46; } From 9f6cf6dcc1221641e359771d27b3b0d98ca0af52 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Fri, 6 Feb 2026 06:45:49 -0600 Subject: [PATCH 418/454] Bubbles pref --- meshtastic/config.proto | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/meshtastic/config.proto b/meshtastic/config.proto index 649495e..f1cdc4f 100644 --- a/meshtastic/config.proto +++ b/meshtastic/config.proto @@ -783,6 +783,11 @@ message Config { * If true, node names will show in long format */ bool use_long_node_name = 13; + + /* + * If true, the device will display message bubbles on screen. + */ + bool enable_message_bubbles = 14; } /* From 8316651be140af8f1ba931e9fe19d8317bc65229 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Fri, 6 Feb 2026 08:51:34 -0600 Subject: [PATCH 419/454] Fmt --- meshtastic/telemetry.proto | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/meshtastic/telemetry.proto b/meshtastic/telemetry.proto index 8b70ade..113b3ef 100644 --- a/meshtastic/telemetry.proto +++ b/meshtastic/telemetry.proto @@ -439,9 +439,9 @@ message LocalStats { */ uint32 heap_free_bytes = 13; - /* - * Number of packets that were dropped because the transmit queue was full. - */ + /* + * Number of packets that were dropped because the transmit queue was full. + */ uint32 num_tx_dropped = 14; /* From 2062d43158002926d6d9631317218a57923b64c6 Mon Sep 17 00:00:00 2001 From: Dan D Date: Sat, 7 Feb 2026 14:22:55 -0500 Subject: [PATCH 420/454] Fix JSR publish by adding .ts import extensions to protobuf codegen The bufbuild/es plugin generates imports without file extensions, which fails JSR's Deno-style module resolution (TS2307). Adding import_extension=.ts ensures all generated _pb.ts files use explicit .ts extensions in their relative imports. --- buf.gen.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buf.gen.yaml b/buf.gen.yaml index daec499..652f41a 100644 --- a/buf.gen.yaml +++ b/buf.gen.yaml @@ -2,4 +2,4 @@ version: v2 plugins: - remote: buf.build/bufbuild/es:v2.1.0 out: packages/ts/lib - opt: target=ts + opt: target=ts,import_extension=.ts From 5dd27945d2f281424801fb457172e8bfce87939e Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Mon, 9 Feb 2026 13:38:59 -0600 Subject: [PATCH 421/454] Fix comment formatting for SHT21 sensor --- meshtastic/telemetry.proto | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/meshtastic/telemetry.proto b/meshtastic/telemetry.proto index 5c377de..b7286ea 100644 --- a/meshtastic/telemetry.proto +++ b/meshtastic/telemetry.proto @@ -802,8 +802,8 @@ enum TelemetrySensorType { BH1750 = 45; /* - * STH21 Temperature and R. Humidity sensor - */ + * STH21 Temperature and R. Humidity sensor + */ SHT21 = 46; } From 53d91d47ef6eb736ab970d46d0736f4e60b70b08 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Mon, 9 Feb 2026 13:42:13 -0600 Subject: [PATCH 422/454] Add STC31 CO2 sensor to TelemetrySensorType enum --- meshtastic/telemetry.proto | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/meshtastic/telemetry.proto b/meshtastic/telemetry.proto index af04bdd..498cecd 100644 --- a/meshtastic/telemetry.proto +++ b/meshtastic/telemetry.proto @@ -810,6 +810,11 @@ enum TelemetrySensorType { * STH21 Temperature and R. Humidity sensor */ SHT21 = 47; + + /* + * Sensirion STC31 CO2 sensor + */ + STC31 = 48; } /* From 4eca1c78a8f863a5fdd2a26377fcab6a345c9a43 Mon Sep 17 00:00:00 2001 From: Clive Blackledge Date: Tue, 10 Feb 2026 11:49:22 -0800 Subject: [PATCH 423/454] buf format updates. --- meshtastic/module_config.proto | 1 - meshtastic/telemetry.proto | 6 +++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/meshtastic/module_config.proto b/meshtastic/module_config.proto index 9405099..a8a4307 100644 --- a/meshtastic/module_config.proto +++ b/meshtastic/module_config.proto @@ -347,7 +347,6 @@ message ModuleConfig { /* * Enable dropping of unknown/undecryptable packets per rate_limit_window_secs - */ bool drop_unknown_enabled = 10; diff --git a/meshtastic/telemetry.proto b/meshtastic/telemetry.proto index bdf505f..fe4cc44 100644 --- a/meshtastic/telemetry.proto +++ b/meshtastic/telemetry.proto @@ -439,9 +439,9 @@ message LocalStats { */ uint32 heap_free_bytes = 13; - /* - * Number of packets that were dropped because the transmit queue was full. - */ + /* + * Number of packets that were dropped because the transmit queue was full. + */ uint32 num_tx_dropped = 14; /* From 44298d374fd83cfbc36fdb76c6f966e980cadd93 Mon Sep 17 00:00:00 2001 From: oscgonfer Date: Thu, 12 Feb 2026 19:09:02 +0100 Subject: [PATCH 424/454] Add SCD30 CO2 sensor (#861) --- meshtastic/admin.proto | 37 +++++++++++++++++++++++++++++++++++++ meshtastic/telemetry.proto | 8 +++++++- 2 files changed, 44 insertions(+), 1 deletion(-) diff --git a/meshtastic/admin.proto b/meshtastic/admin.proto index ed373a5..0fbfbe3 100644 --- a/meshtastic/admin.proto +++ b/meshtastic/admin.proto @@ -656,6 +656,11 @@ message SensorConfig { * SEN5X PM Sensor configuration */ SEN5X_config sen5x_config = 2; + + /* + * SCD30 CO2 Sensor configuration + */ + SCD30_config scd30_config = 3; } message SCD4X_config { @@ -706,3 +711,35 @@ message SEN5X_config { */ optional bool set_one_shot_mode = 2; } + +message SCD30_config { + /* + * Set Automatic self-calibration enabled + */ + optional bool set_asc = 1; + + /* + * Recalibration target CO2 concentration in ppm (FRC or ASC) + */ + optional uint32 set_target_co2_conc = 2; + + /* + * Reference temperature in degC + */ + optional float set_temperature = 3; + + /* + * Altitude of sensor in meters above sea level. 0 - 3000m (overrides ambient pressure) + */ + optional uint32 set_altitude = 4; + + /* + * Power mode for sensor (true for low power, false for normal) + */ + optional uint32 set_measurement_interval = 5; + + /* + * Perform a factory reset of the sensor + */ + optional bool soft_reset = 6; +} diff --git a/meshtastic/telemetry.proto b/meshtastic/telemetry.proto index b5e418e..8889718 100644 --- a/meshtastic/telemetry.proto +++ b/meshtastic/telemetry.proto @@ -836,6 +836,7 @@ enum TelemetrySensorType { * SEN5X PM SENSORS */ SEN5X = 43; + /* * TSL2561 light sensor */ @@ -845,7 +846,7 @@ enum TelemetrySensorType { * BH1750 light sensor */ BH1750 = 45; - + /* * HDC1080 Temperature and Humidity Sensor */ @@ -860,6 +861,11 @@ enum TelemetrySensorType { * Sensirion STC31 CO2 sensor */ STC31 = 48; + + /* + * SCD30 CO2, humidity, temperature sensor + */ + SCD30 = 49; } /* From fe66d9f525fce7cc8a173a013fa646715fc861bb Mon Sep 17 00:00:00 2001 From: Austin Lane Date: Fri, 20 Feb 2026 19:35:11 -0500 Subject: [PATCH 425/454] Add LilyGo T-Beam BPF The first/only 144-148Mhz device (for hams) --- meshtastic/mesh.proto | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index aace7d4..190aa63 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -855,6 +855,11 @@ enum HardwareModel { */ T5_S3_EPAPER_PRO = 123; + /* + * LilyGo T-Beam BPF (144-148Mhz) + */ + TBEAM_BPF = 124; + /* * ------------------------------------------------------------------------------------------------------------------------------------------ * Reserved ID For developing private Ports. These will show up in live traffic sparsely, so we can use a high number. Keep it within 8 bits. From 93bee530c302594883dc28badad4c564b7274837 Mon Sep 17 00:00:00 2001 From: Manuel <71137295+mverch67@users.noreply.github.com> Date: Sat, 21 Feb 2026 08:36:45 +0100 Subject: [PATCH 426/454] add T-mini epaper s3 kit HW id (#863) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Thomas Göttgens --- meshtastic/mesh.proto | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 190aa63..d7f6647 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -860,6 +860,11 @@ enum HardwareModel { */ TBEAM_BPF = 124; + /* + * LilyGo T-Mini E-paper S3 Kit + */ + MINI_EPAPER_S3 = 125; + /* * ------------------------------------------------------------------------------------------------------------------------------------------ * Reserved ID For developing private Ports. These will show up in live traffic sparsely, so we can use a high number. Keep it within 8 bits. From 03b5089b406aee6afb9be7514dcbfaf291e8fb5f Mon Sep 17 00:00:00 2001 From: niccellular <79813408+niccellular@users.noreply.github.com> Date: Sun, 22 Feb 2026 18:35:43 -0500 Subject: [PATCH 427/454] enhancement: Add TAKConfig message for on-device TAK team/role configuration Add TAKConfig to ModuleConfig with Team and MemberRole fields, allowing TAK_TRACKER devices to configure ATAK group settings instead of using hardcoded defaults. - module_config.proto: TAKConfig message (team, role) at oneof field 16 - localonly.proto: tak field at position 17 in LocalModuleConfig - admin.proto: TAK_CONFIG = 15 in ModuleConfigType enum Co-Authored-By: Claude Opus 4.6 --- meshtastic/admin.proto | 5 +++++ meshtastic/localonly.proto | 5 +++++ meshtastic/module_config.proto | 23 +++++++++++++++++++++++ 3 files changed, 33 insertions(+) diff --git a/meshtastic/admin.proto b/meshtastic/admin.proto index 0fbfbe3..5ecf310 100644 --- a/meshtastic/admin.proto +++ b/meshtastic/admin.proto @@ -162,6 +162,11 @@ message AdminMessage { * Traffic management module config */ TRAFFICMANAGEMENT_CONFIG = 14; + + /* + * TAK module config + */ + TAK_CONFIG = 15; } enum BackupLocation { diff --git a/meshtastic/localonly.proto b/meshtastic/localonly.proto index 50b74f7..2a6c7ca 100644 --- a/meshtastic/localonly.proto +++ b/meshtastic/localonly.proto @@ -141,6 +141,11 @@ message LocalModuleConfig { */ ModuleConfig.TrafficManagementConfig traffic_management = 16; + /* + * TAK Config + */ + ModuleConfig.TAKConfig tak = 17; + /* * A version integer used to invalidate old save files when we make * incompatible changes This integer is set at build time and is private to diff --git a/meshtastic/module_config.proto b/meshtastic/module_config.proto index a8a4307..10753c6 100644 --- a/meshtastic/module_config.proto +++ b/meshtastic/module_config.proto @@ -2,6 +2,8 @@ syntax = "proto3"; package meshtastic; +import "meshtastic/atak.proto"; + option csharp_namespace = "Meshtastic.Protobufs"; option go_package = "github.com/meshtastic/go/generated"; option java_outer_classname = "ModuleConfigProtos"; @@ -933,6 +935,27 @@ message ModuleConfig { * Traffic management module config for mesh network optimization */ TrafficManagementConfig traffic_management = 15; + + /* + * TAK team/role configuration for TAK_TRACKER + */ + TAKConfig tak = 16; + } + + /* + * TAK team/role configuration + */ + message TAKConfig { + /* + * Team color. + * Default Unspecifed_Color -> firmware uses Cyan + */ + Team team = 1; + /* + * Member role. + * Default Unspecifed -> firmware uses TeamMember + */ + MemberRole role = 2; } } From a229208f29a59cf1d8cfa24cbb7567a08f2d1771 Mon Sep 17 00:00:00 2001 From: Quency-D <55523105+Quency-D@users.noreply.github.com> Date: Tue, 3 Mar 2026 17:30:14 +0800 Subject: [PATCH 428/454] Add the LORA FEM control variable. (#869) --- meshtastic/config.proto | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/meshtastic/config.proto b/meshtastic/config.proto index f1cdc4f..33eaa58 100644 --- a/meshtastic/config.proto +++ b/meshtastic/config.proto @@ -992,6 +992,23 @@ message Config { LONG_TURBO = 9; } + enum FEM_LNA_Mode { + /* + * FEM_LNA is present but disabled + */ + DISABLED = 0; + + /* + * FEM_LNA is present and enabled + */ + ENABLED = 1; + + /* + * FEM_LNA is not present on the device + */ + NOT_PRESENT = 2; + } + /* * When enabled, the `modem_preset` fields will be adhered to, else the `bandwidth`/`spread_factor`/`coding_rate` * will be taked from their respective manually defined fields @@ -1112,6 +1129,10 @@ message Config { * Sets the ok_to_mqtt bit on outgoing packets */ bool config_ok_to_mqtt = 105; + /* + * Set where LORA FEM is enabled, disabled, or not present + */ + FEM_LNA_Mode fem_lna_mode = 106; } message BluetoothConfig { From dee56bac97d65a5941f5b45df09e0eb1bafd2bd2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20G=C3=B6ttgens?= Date: Thu, 5 Mar 2026 11:56:15 +0100 Subject: [PATCH 429/454] Add LORAWAN_BRIDGE enum value to portnums.proto --- meshtastic/portnums.proto | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/meshtastic/portnums.proto b/meshtastic/portnums.proto index 918b063..07c8051 100644 --- a/meshtastic/portnums.proto +++ b/meshtastic/portnums.proto @@ -227,6 +227,12 @@ enum PortNum { */ POWERSTRESS_APP = 74; + /* + * LoraWAN Payload Transport + * ENCODING: compact binary LoRaWAN uplink (10-byte RF metadata + PHY payload) - see LoRaWANBridgeModule + */ + LORAWAN_BRIDGE = 75; + /* * Reticulum Network Stack Tunnel App * ENCODING: Fragmented RNS Packet. Handled by Meshtastic RNS interface From 109ea16d17545988cd19e692538cab198f9e5dfa Mon Sep 17 00:00:00 2001 From: Manuel <71137295+mverch67@users.noreply.github.com> Date: Sat, 7 Mar 2026 17:08:37 +0100 Subject: [PATCH 430/454] add LilyGo T-Display S3 Pro --- meshtastic/mesh.proto | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index d7f6647..4d17449 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -865,6 +865,11 @@ enum HardwareModel { */ MINI_EPAPER_S3 = 125; + /* + * LilyGo T-Display S3 Pro LR1121 + */ + TDISPLAY_S3_PRO = 126; + /* * ------------------------------------------------------------------------------------------------------------------------------------------ * Reserved ID For developing private Ports. These will show up in live traffic sparsely, so we can use a high number. Keep it within 8 bits. From 0cc9cb224e38523d794fdc5c6bb5c86f49720057 Mon Sep 17 00:00:00 2001 From: Manuel <71137295+mverch67@users.noreply.github.com> Date: Sat, 7 Mar 2026 17:12:43 +0100 Subject: [PATCH 431/454] fix formatting --- meshtastic/mesh.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 4d17449..44888e9 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -868,7 +868,7 @@ enum HardwareModel { /* * LilyGo T-Display S3 Pro LR1121 */ - TDISPLAY_S3_PRO = 126; + TDISPLAY_S3_PRO = 126; /* * ------------------------------------------------------------------------------------------------------------------------------------------ From bfbd52b9fcc4f857c61a4220b7385324f114adaf Mon Sep 17 00:00:00 2001 From: oscgonfer Date: Sat, 7 Mar 2026 22:28:17 +0100 Subject: [PATCH 432/454] Add SHTXX TelemetrySensorType --- meshtastic/telemetry.proto | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/meshtastic/telemetry.proto b/meshtastic/telemetry.proto index 8889718..2aef8ed 100644 --- a/meshtastic/telemetry.proto +++ b/meshtastic/telemetry.proto @@ -866,6 +866,11 @@ enum TelemetrySensorType { * SCD30 CO2, humidity, temperature sensor */ SCD30 = 49; + + /* + * SHT family of sensors for temperature and humidity + */ + SHTXX = 50; } /* From a4234ead1d75b5e6ff58d517113cd58ef9451457 Mon Sep 17 00:00:00 2001 From: oscgonfer Date: Sun, 8 Mar 2026 11:23:46 +0100 Subject: [PATCH 433/454] Add TODO - REMOVE on SHT31, SHT4X, SHT21 and SHTC3 --- meshtastic/telemetry.proto | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/meshtastic/telemetry.proto b/meshtastic/telemetry.proto index 2aef8ed..bd27a7b 100644 --- a/meshtastic/telemetry.proto +++ b/meshtastic/telemetry.proto @@ -653,7 +653,7 @@ enum TelemetrySensorType { BMP280 = 6; /* - * High accuracy temperature and humidity + * TODO - REMOVE High accuracy temperature and humidity */ SHTC3 = 7; @@ -678,7 +678,7 @@ enum TelemetrySensorType { QMC5883L = 11; /* - * High accuracy temperature and humidity + * TODO - REMOVE High accuracy temperature and humidity */ SHT31 = 12; @@ -703,7 +703,7 @@ enum TelemetrySensorType { RCWL9620 = 16; /* - * Sensirion High accuracy temperature and humidity + * TODO - REMOVE Sensirion High accuracy temperature and humidity */ SHT4X = 17; @@ -853,7 +853,7 @@ enum TelemetrySensorType { HDC1080 = 46; /* - * STH21 Temperature and R. Humidity sensor + * TODO - REMOVE STH21 Temperature and R. Humidity sensor */ SHT21 = 47; From 29a82c7b63c7ffb8c2d8d52d4fa959b2b3ba815c Mon Sep 17 00:00:00 2001 From: oscgonfer Date: Sun, 8 Mar 2026 12:37:24 +0100 Subject: [PATCH 434/454] Add admin command for SHT accuracy setting --- meshtastic/admin.proto | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/meshtastic/admin.proto b/meshtastic/admin.proto index 5ecf310..ac29cc8 100644 --- a/meshtastic/admin.proto +++ b/meshtastic/admin.proto @@ -666,6 +666,11 @@ message SensorConfig { * SCD30 CO2 Sensor configuration */ SCD30_config scd30_config = 3; + + /* + * SHTXX temperature and relative humidity sensor configuration + */ + SHTXX_config shtxx_config = 4; } message SCD4X_config { @@ -748,3 +753,10 @@ message SCD30_config { */ optional bool soft_reset = 6; } + +message SHTXX_config { + /* + * Accuracy mode (0 = low, 1 = medium, 2 = high) + */ + optional uint32 set_accuracy = 1; +} From 313b9ee168bcfb08cc542b4de730e3ddefbfac16 Mon Sep 17 00:00:00 2001 From: DasAuryn <46376486+DasAuryn@users.noreply.github.com> Date: Tue, 17 Mar 2026 09:08:35 +0100 Subject: [PATCH 435/454] Add GroupAlarm app portnum --- meshtastic/portnums.proto | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/meshtastic/portnums.proto b/meshtastic/portnums.proto index 07c8051..f4d22e2 100644 --- a/meshtastic/portnums.proto +++ b/meshtastic/portnums.proto @@ -246,6 +246,13 @@ enum PortNum { */ CAYENNE_APP = 77; + /* + * GroupAlarm integration + * Used for transporting GroupAlarm-related messages between Meshtastic nodes + * and companion applications/services. + */ + GROUPALARM_APP = 112; + /* * Private applications should use portnums >= 256. * To simplify initial development and testing you can use "PRIVATE_APP" From 8436e98fcfa9201548609a7d8f8b8fef170d9d67 Mon Sep 17 00:00:00 2001 From: Quency-D Date: Thu, 19 Mar 2026 16:51:46 +0800 Subject: [PATCH 436/454] add heltec-mesh-node-t096 board --- meshtastic/mesh.proto | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 44888e9..42ac642 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -870,6 +870,11 @@ enum HardwareModel { */ TDISPLAY_S3_PRO = 126; + /* + * Heltec Mesh Node T096 board features an nRF52840 CPU and a TFT screen. + */ + HELTEC_MESH_NODE_T096 = 126; + /* * ------------------------------------------------------------------------------------------------------------------------------------------ * Reserved ID For developing private Ports. These will show up in live traffic sparsely, so we can use a high number. Keep it within 8 bits. From 45a2d2dc8b7c8ffd45e5f2783d67e22ab5e17fbc Mon Sep 17 00:00:00 2001 From: Quency-D Date: Thu, 19 Mar 2026 17:27:08 +0800 Subject: [PATCH 437/454] Correct the enumeration value. --- meshtastic/mesh.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 42ac642..7206f4a 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -873,7 +873,7 @@ enum HardwareModel { /* * Heltec Mesh Node T096 board features an nRF52840 CPU and a TFT screen. */ - HELTEC_MESH_NODE_T096 = 126; + HELTEC_MESH_NODE_T096 = 127; /* * ------------------------------------------------------------------------------------------------------------------------------------------ From 4c3fe0cf087e31022dd90011906e7698473a97b2 Mon Sep 17 00:00:00 2001 From: Dan Ditomaso Date: Fri, 20 Mar 2026 22:30:47 -0400 Subject: [PATCH 438/454] Update prost dependencies to 0.14.3 to address known CVE Bump prost and prost-types from 0.13.3 to 0.14.3 along with all transitive dependency updates to resolve a known security vulnerability in the Rust protobuf stack. --- packages/rust/Cargo.lock | 46 ++++++++++++++++++++-------------------- packages/rust/Cargo.toml | 4 ++-- 2 files changed, 25 insertions(+), 25 deletions(-) diff --git a/packages/rust/Cargo.lock b/packages/rust/Cargo.lock index 6b365f0..0b80556 100644 --- a/packages/rust/Cargo.lock +++ b/packages/rust/Cargo.lock @@ -1,30 +1,30 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] name = "anyhow" -version = "1.0.89" +version = "1.0.102" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86fdf8605db99b54d3cd748a44c6d04df638eb5dafb219b135d0149bd0db01f6" +checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c" [[package]] name = "bytes" -version = "1.7.2" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "428d9aa8fbc0670b7b8d6030a7fadd0f86151cae55e4dbbece15f3780a3dfaf3" +checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" [[package]] name = "either" -version = "1.13.0" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" [[package]] name = "itertools" -version = "0.13.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" dependencies = [ "either", ] @@ -39,18 +39,18 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.86" +version = "1.0.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" +checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" dependencies = [ "unicode-ident", ] [[package]] name = "prost" -version = "0.13.3" +version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b0487d90e047de87f984913713b85c601c05609aad5b0df4b4573fbf69aa13f" +checksum = "d2ea70524a2f82d518bce41317d0fae74151505651af45faf1ffbd6fd33f0568" dependencies = [ "bytes", "prost-derive", @@ -58,9 +58,9 @@ dependencies = [ [[package]] name = "prost-derive" -version = "0.13.3" +version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9552f850d5f0964a4e4d0bf306459ac29323ddfbae05e35a7c0d35cb0803cc5" +checksum = "27c6023962132f4b30eb4c172c91ce92d933da334c59c23cddee82358ddafb0b" dependencies = [ "anyhow", "itertools", @@ -71,27 +71,27 @@ dependencies = [ [[package]] name = "prost-types" -version = "0.13.3" +version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4759aa0d3a6232fb8dbdb97b61de2c20047c68aca932c7ed76da9d788508d670" +checksum = "8991c4cbdb8bc5b11f0b074ffe286c30e523de90fee5ba8132f1399f23cb3dd7" dependencies = [ "prost", ] [[package]] name = "quote" -version = "1.0.37" +version = "1.0.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" +checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924" dependencies = [ "proc-macro2", ] [[package]] name = "syn" -version = "2.0.79" +version = "2.0.117" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89132cd0bf050864e1d38dc3bbc07a0eb8e7530af26344d3d2bbbef83499f590" +checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" dependencies = [ "proc-macro2", "quote", @@ -100,6 +100,6 @@ dependencies = [ [[package]] name = "unicode-ident" -version = "1.0.13" +version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" +checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" diff --git a/packages/rust/Cargo.toml b/packages/rust/Cargo.toml index ce52443..f8dda5d 100644 --- a/packages/rust/Cargo.toml +++ b/packages/rust/Cargo.toml @@ -11,5 +11,5 @@ include = [ ] [dependencies] -prost = "0.13.3" -prost-types = "0.13.3" +prost = "0.14.3" +prost-types = "0.14.3" From 1cd2e56ca2a021b4227324fc706f58e3eb78ebb5 Mon Sep 17 00:00:00 2001 From: SeeedZhangyh Date: Fri, 3 Apr 2026 14:57:52 +0800 Subject: [PATCH 439/454] Add Hardware Model for T1000-E-Pro --- meshtastic/mesh.proto | 3 +++ 1 file changed, 3 insertions(+) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 7206f4a..b2c6fa4 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -875,6 +875,9 @@ enum HardwareModel { */ HELTEC_MESH_NODE_T096 = 127; + /* Seeed studio T1000-E Pro tracker card. NRF52840 w/ LR2021 radio, GPS, button, buzzer, and sensors. */ + TRACKER_T1000_E_PRO = 128; + /* * ------------------------------------------------------------------------------------------------------------------------------------------ * Reserved ID For developing private Ports. These will show up in live traffic sparsely, so we can use a high number. Keep it within 8 bits. From dd951d77967eac696dc3621562a0fbc6bc6038d3 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Mon, 6 Apr 2026 20:32:31 -0500 Subject: [PATCH 440/454] Add ATAK Plugin V2 protobufs and expand CoT enums --- meshtastic/atak.options | 23 +- meshtastic/atak.proto | 444 ++++++++++++++++++++++++++++++++++++++ meshtastic/portnums.proto | 7 + 3 files changed, 473 insertions(+), 1 deletion(-) diff --git a/meshtastic/atak.options b/meshtastic/atak.options index cec1ca3..4b1095e 100644 --- a/meshtastic/atak.options +++ b/meshtastic/atak.options @@ -5,4 +5,25 @@ *GeoChat.message max_size:200 *GeoChat.to max_size:120 *GeoChat.to_callsign max_size:120 -*TAKPacket.detail max_size:220 \ No newline at end of file +*TAKPacket.detail max_size:220 +*TAKPacketV2.cot_type_str max_size:32 +*TAKPacketV2.callsign max_size:120 +*TAKPacketV2.uid max_size:48 +*TAKPacketV2.device_callsign max_size:120 +*TAKPacketV2.tak_version max_size:64 +*TAKPacketV2.tak_device max_size:32 +*TAKPacketV2.tak_platform max_size:32 +*TAKPacketV2.tak_os max_size:16 +*TAKPacketV2.endpoint max_size:32 +*TAKPacketV2.phone max_size:20 +*TAKPacketV2.raw_detail max_size:220 +*TAKPacketV2.stale_seconds int_size:16 +*TAKPacketV2.battery int_size:8 +*TAKPacketV2.course int_size:16 +*AircraftTrack.icao max_size:8 +*AircraftTrack.registration max_size:16 +*AircraftTrack.flight max_size:16 +*AircraftTrack.aircraft_type max_size:8 +*AircraftTrack.squawk int_size:16 +*AircraftTrack.category max_size:4 +*AircraftTrack.cot_host_id max_size:64 \ No newline at end of file diff --git a/meshtastic/atak.proto b/meshtastic/atak.proto index 790c69b..60fb616 100644 --- a/meshtastic/atak.proto +++ b/meshtastic/atak.proto @@ -262,3 +262,447 @@ message PLI { */ uint32 course = 5; } + +/* + * CoT how field values. + * Represents how the coordinates were generated. + */ +enum CotHow { + /* + * Unspecified + */ + CotHow_Unspecified = 0; + /* + * Human entered + */ + CotHow_h_e = 1; + /* + * Machine generated + */ + CotHow_m_g = 2; + /* + * Human GPS/INS derived + */ + CotHow_h_g_i_g_o = 3; + /* + * Machine relayed (imported from another system/gateway) + */ + CotHow_m_r = 4; + /* + * Machine fused (corroborated from multiple sources) + */ + CotHow_m_f = 5; + /* + * Machine predicted + */ + CotHow_m_p = 6; + /* + * Machine simulated + */ + CotHow_m_s = 7; +} + +/* + * Well-known CoT event types. + * When the type is known, use the enum value for efficient encoding. + * For unknown types, set cot_type_id to CotType_Other and populate cot_type_str. + */ +enum CotType { + /* + * Unknown or unmapped type, use cot_type_str + */ + CotType_Other = 0; + /* + * a-f-G-U-C: Friendly ground unit combat + */ + CotType_a_f_G_U_C = 1; + /* + * a-f-G-U-C-I: Friendly ground unit combat infantry + */ + CotType_a_f_G_U_C_I = 2; + /* + * a-n-A-C-F: Neutral aircraft civilian fixed-wing + */ + CotType_a_n_A_C_F = 3; + /* + * a-n-A-C-H: Neutral aircraft civilian helicopter + */ + CotType_a_n_A_C_H = 4; + /* + * a-n-A-C: Neutral aircraft civilian + */ + CotType_a_n_A_C = 5; + /* + * a-f-A-M-H: Friendly aircraft military helicopter + */ + CotType_a_f_A_M_H = 6; + /* + * a-f-A-M: Friendly aircraft military + */ + CotType_a_f_A_M = 7; + /* + * a-f-A-M-F-F: Friendly aircraft military fixed-wing fighter + */ + CotType_a_f_A_M_F_F = 8; + /* + * a-f-A-M-H-A: Friendly aircraft military helicopter attack + */ + CotType_a_f_A_M_H_A = 9; + /* + * a-f-A-M-H-U-M: Friendly aircraft military helicopter utility medium + */ + CotType_a_f_A_M_H_U_M = 10; + /* + * a-h-A-M-F-F: Hostile aircraft military fixed-wing fighter + */ + CotType_a_h_A_M_F_F = 11; + /* + * a-h-A-M-H-A: Hostile aircraft military helicopter attack + */ + CotType_a_h_A_M_H_A = 12; + /* + * a-u-A-C: Unknown aircraft civilian + */ + CotType_a_u_A_C = 13; + /* + * t-x-d-d: Tasking delete/disconnect + */ + CotType_t_x_d_d = 14; + /* + * a-f-G-E-S-E: Friendly ground equipment sensor + */ + CotType_a_f_G_E_S_E = 15; + /* + * a-f-G-E-V-C: Friendly ground equipment vehicle + */ + CotType_a_f_G_E_V_C = 16; + /* + * a-f-S: Friendly sea + */ + CotType_a_f_S = 17; + /* + * a-f-A-M-F: Friendly aircraft military fixed-wing + */ + CotType_a_f_A_M_F = 18; + /* + * a-f-A-M-F-C-H: Friendly aircraft military fixed-wing cargo heavy + */ + CotType_a_f_A_M_F_C_H = 19; + /* + * a-f-A-M-F-U-L: Friendly aircraft military fixed-wing utility light + */ + CotType_a_f_A_M_F_U_L = 20; + /* + * a-f-A-M-F-L: Friendly aircraft military fixed-wing liaison + */ + CotType_a_f_A_M_F_L = 21; + /* + * a-f-A-M-F-P: Friendly aircraft military fixed-wing patrol + */ + CotType_a_f_A_M_F_P = 22; + /* + * a-f-A-C-H: Friendly aircraft civilian helicopter + */ + CotType_a_f_A_C_H = 23; + /* + * a-n-A-M-F-Q: Neutral aircraft military fixed-wing drone + */ + CotType_a_n_A_M_F_Q = 24; + + // --- Chat / messaging --- + + /* + * b-t-f: GeoChat message + */ + CotType_b_t_f = 25; + + // --- CASEVAC / MEDEVAC --- + + /* + * b-r-f-h-c: CASEVAC/MEDEVAC report + */ + CotType_b_r_f_h_c = 26; + + // --- Alerts --- + + /* + * b-a-o-pan: Ring the bell / alert all + */ + CotType_b_a_o_pan = 27; + /* + * b-a-o-opn: Troops in contact + */ + CotType_b_a_o_opn = 28; + /* + * b-a-o-can: Cancel alert + */ + CotType_b_a_o_can = 29; + /* + * b-a-o-tbl: 911 alert + */ + CotType_b_a_o_tbl = 30; + /* + * b-a-g: Geofence breach alert + */ + CotType_b_a_g = 31; + + // --- Generic ground atoms (simplified affiliation types) --- + + /* + * a-f-G: Friendly ground (generic) + */ + CotType_a_f_G = 32; + /* + * a-f-G-U: Friendly ground unit (generic) + */ + CotType_a_f_G_U = 33; + /* + * a-h-G: Hostile ground (generic) + */ + CotType_a_h_G = 34; + /* + * a-u-G: Unknown ground (generic) + */ + CotType_a_u_G = 35; + /* + * a-n-G: Neutral ground (generic) + */ + CotType_a_n_G = 36; + + // --- Routes and waypoints --- + + /* + * b-m-r: Route + */ + CotType_b_m_r = 37; + /* + * b-m-p-w: Route waypoint + */ + CotType_b_m_p_w = 38; + /* + * b-m-p-s-p-i: Self-position marker + */ + CotType_b_m_p_s_p_i = 39; + + // --- Drawing / tactical graphics --- + + /* + * u-d-f: Freeform shape (line/polygon) + */ + CotType_u_d_f = 40; + /* + * u-d-r: Rectangle + */ + CotType_u_d_r = 41; + /* + * u-d-c-c: Circle + */ + CotType_u_d_c_c = 42; + /* + * u-rb-a: Range/bearing line + */ + CotType_u_rb_a = 43; + + // --- Additional hostile/unknown aircraft --- + + /* + * a-h-A: Hostile aircraft (generic) + */ + CotType_a_h_A = 44; + /* + * a-u-A: Unknown aircraft (generic) + */ + CotType_a_u_A = 45; + /* + * a-f-A-M-H-Q: Friendly aircraft military helicopter observation + */ + CotType_a_f_A_M_H_Q = 46; +} + +/* + * Geopoint and altitude source + */ +enum GeoPointSource { + /* + * Unspecified + */ + GeoPointSource_Unspecified = 0; + /* + * GPS derived + */ + GeoPointSource_GPS = 1; + /* + * User entered + */ + GeoPointSource_USER = 2; + /* + * Network/external + */ + GeoPointSource_NETWORK = 3; +} + +/* + * Aircraft track information from ADS-B or military air tracking. + * Covers the majority of observed real-world CoT traffic. + */ +message AircraftTrack { + /* + * ICAO hex identifier (e.g. "AD237C") + */ + string icao = 1; + /* + * Aircraft registration (e.g. "N946AK") + */ + string registration = 2; + /* + * Flight number/callsign (e.g. "ASA864") + */ + string flight = 3; + /* + * ICAO aircraft type designator (e.g. "B39M") + */ + string aircraft_type = 4; + /* + * Transponder squawk code (0-7777 octal) + */ + uint32 squawk = 5; + /* + * ADS-B emitter category (e.g. "A3") + */ + string category = 6; + /* + * Received signal strength * 10 (e.g. -194 for -19.4 dBm) + */ + sint32 rssi_x10 = 7; + /* + * Whether receiver has GPS fix + */ + bool gps = 8; + /* + * CoT host ID for source attribution + */ + string cot_host_id = 9; +} + +/* + * ATAK v2 packet with expanded CoT field support and zstd dictionary compression. + * Sent on ATAK_PLUGIN_V2 port. The wire payload is: + * [1 byte flags][zstd-compressed TAKPacketV2 protobuf] + * Flags byte: bits 0-5 = dictionary ID, bits 6-7 = reserved. + */ +message TAKPacketV2 { + /* + * Well-known CoT event type enum. + * Use CotType_Other with cot_type_str for unknown types. + */ + CotType cot_type_id = 1; + /* + * How the coordinates were generated + */ + CotHow how = 2; + /* + * Callsign + */ + string callsign = 3; + /* + * Team color assignment + */ + Team team = 4; + /* + * Role of the group member + */ + MemberRole role = 5; + /* + * Latitude, multiply by 1e-7 to get degrees in floating point + */ + sfixed32 latitude_i = 6; + /* + * Longitude, multiply by 1e-7 to get degrees in floating point + */ + sfixed32 longitude_i = 7; + /* + * Altitude in meters (HAE) + */ + sint32 altitude = 8; + /* + * Speed in cm/s + */ + uint32 speed = 9; + /* + * Course in degrees * 100 (0-36000) + */ + uint32 course = 10; + /* + * Battery level 0-100 + */ + uint32 battery = 11; + /* + * Geopoint source + */ + GeoPointSource geo_src = 12; + /* + * Altitude source + */ + GeoPointSource alt_src = 13; + /* + * Device UID (UUID string or device ID like "ANDROID-xxxx") + */ + string uid = 14; + /* + * Device callsign + */ + string device_callsign = 15; + /* + * Stale time as seconds offset from event time + */ + uint32 stale_seconds = 16; + /* + * TAK client version string + */ + string tak_version = 17; + /* + * TAK device model + */ + string tak_device = 18; + /* + * TAK platform (ATAK-CIV, WebTAK, etc.) + */ + string tak_platform = 19; + /* + * TAK OS version + */ + string tak_os = 20; + /* + * Connection endpoint + */ + string endpoint = 21; + /* + * Phone number + */ + string phone = 22; + /* + * CoT event type string, only populated when cot_type_id is CotType_Other + */ + string cot_type_str = 23; + /* + * The payload of the packet + */ + oneof payload_variant { + /* + * Position report (true = PLI, no extra fields beyond the common ones above) + */ + bool pli = 30; + /* + * ATAK GeoChat message + */ + GeoChat chat = 31; + /* + * Aircraft track data (ADS-B, military air) + */ + AircraftTrack aircraft = 32; + /* + * Generic CoT detail XML for unmapped types + */ + bytes raw_detail = 33; + } +} diff --git a/meshtastic/portnums.proto b/meshtastic/portnums.proto index f4d22e2..6ed59bc 100644 --- a/meshtastic/portnums.proto +++ b/meshtastic/portnums.proto @@ -246,6 +246,13 @@ enum PortNum { */ CAYENNE_APP = 77; + /* + * ATAK Plugin V2 + * Portnum for payloads from the official Meshtastic ATAK plugin using + * TAKPacketV2 with zstd dictionary compression. +x */ + ATAK_PLUGIN_V2 = 78; + /* * GroupAlarm integration * Used for transporting GroupAlarm-related messages between Meshtastic nodes From 1e932be09ba766f64ad3d75e97d4eff3e5578a12 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Wed, 8 Apr 2026 07:36:27 -0500 Subject: [PATCH 441/454] Add additional CotType enums for aircraft, ground units, and other data messages --- meshtastic/atak.proto | 146 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 146 insertions(+) diff --git a/meshtastic/atak.proto b/meshtastic/atak.proto index 60fb616..2e6a24a 100644 --- a/meshtastic/atak.proto +++ b/meshtastic/atak.proto @@ -517,6 +517,152 @@ enum CotType { * a-f-A-M-H-Q: Friendly aircraft military helicopter observation */ CotType_a_f_A_M_H_Q = 46; + + // Friendly aircraft civilian + + /* + * a-f-A-C-F: Friendly aircraft civilian fixed-wing + */ + CotType_a_f_A_C_F = 47; + /* + * a-f-A-C: Friendly aircraft civilian (generic) + */ + CotType_a_f_A_C = 48; + /* + * a-f-A-C-L: Friendly aircraft civilian lighter-than-air + */ + CotType_a_f_A_C_L = 49; + /* + * a-f-A: Friendly aircraft (generic) + */ + CotType_a_f_A = 50; + + // Friendly aircraft military helicopter variants + + /* + * a-f-A-M-H-C: Friendly aircraft military helicopter cargo + */ + CotType_a_f_A_M_H_C = 51; + + // Neutral aircraft military + + /* + * a-n-A-M-F-F: Neutral aircraft military fixed-wing fighter + */ + CotType_a_n_A_M_F_F = 52; + + // Unknown aircraft civilian + + /* + * a-u-A-C-F: Unknown aircraft civilian fixed-wing + */ + CotType_a_u_A_C_F = 53; + + // Friendly ground unit subtypes + + /* + * a-f-G-U-C-F-T-A: Friendly ground unit combat forces theater aviation + */ + CotType_a_f_G_U_C_F_T_A = 54; + /* + * a-f-G-U-C-V-S: Friendly ground unit combat vehicle support + */ + CotType_a_f_G_U_C_V_S = 55; + /* + * a-f-G-U-C-R-X: Friendly ground unit combat reconnaissance exploitation + */ + CotType_a_f_G_U_C_R_X = 56; + /* + * a-f-G-U-C-I-Z: Friendly ground unit combat infantry mechanized + */ + CotType_a_f_G_U_C_I_Z = 57; + /* + * a-f-G-U-C-E-C-W: Friendly ground unit combat engineer construction wheeled + */ + CotType_a_f_G_U_C_E_C_W = 58; + /* + * a-f-G-U-C-I-L: Friendly ground unit combat infantry light + */ + CotType_a_f_G_U_C_I_L = 59; + /* + * a-f-G-U-C-R-O: Friendly ground unit combat reconnaissance other + */ + CotType_a_f_G_U_C_R_O = 60; + /* + * a-f-G-U-C-R-V: Friendly ground unit combat reconnaissance cavalry + */ + CotType_a_f_G_U_C_R_V = 61; + /* + * a-f-G-U-H: Friendly ground unit headquarters + */ + CotType_a_f_G_U_H = 62; + /* + * a-f-G-U-U-M-S-E: Friendly ground unit support medical surgical evacuation + */ + CotType_a_f_G_U_U_M_S_E = 63; + /* + * a-f-G-U-S-M-C: Friendly ground unit support maintenance collection + */ + CotType_a_f_G_U_S_M_C = 64; + + // Friendly ground equipment + + /* + * a-f-G-E-S: Friendly ground equipment sensor (generic) + */ + CotType_a_f_G_E_S = 65; + /* + * a-f-G-E: Friendly ground equipment (generic) + */ + CotType_a_f_G_E = 66; + /* + * a-f-G-E-V-C-U: Friendly ground equipment vehicle utility + */ + CotType_a_f_G_E_V_C_U = 67; + /* + * a-f-G-E-V-C-ps: Friendly ground equipment vehicle public safety + */ + CotType_a_f_G_E_V_C_ps = 68; + + // Unknown ground + + /* + * a-u-G-E-V: Unknown ground equipment vehicle + */ + CotType_a_u_G_E_V = 69; + + // Sea + + /* + * a-f-S-N-N-R: Friendly sea surface non-naval rescue + */ + CotType_a_f_S_N_N_R = 70; + + // Friendly force (non-domain-specific) + + /* + * a-f-F-B: Friendly force boundary + */ + CotType_a_f_F_B = 71; + + // Bits / data messages + + /* + * b-m-p-s-p-loc: Self-position location marker + */ + CotType_b_m_p_s_p_loc = 72; + /* + * b-i-v: Imagery/video + */ + CotType_b_i_v = 73; + /* + * b-f-t-r: File transfer request + */ + CotType_b_f_t_r = 74; + /* + * b-f-t-a: File transfer acknowledgment + */ + CotType_b_f_t_a = 75; } /* From 60842c17281d0ffe63e34762fe9cf5094a314562 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Wed, 8 Apr 2026 09:30:59 -0500 Subject: [PATCH 442/454] Busted --- meshtastic/portnums.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meshtastic/portnums.proto b/meshtastic/portnums.proto index 6ed59bc..b6c9776 100644 --- a/meshtastic/portnums.proto +++ b/meshtastic/portnums.proto @@ -250,7 +250,7 @@ enum PortNum { * ATAK Plugin V2 * Portnum for payloads from the official Meshtastic ATAK plugin using * TAKPacketV2 with zstd dictionary compression. -x */ + */ ATAK_PLUGIN_V2 = 78; /* From a4c649bd3e877dab9011d9e32dc778640ec22852 Mon Sep 17 00:00:00 2001 From: oscgonfer Date: Fri, 10 Apr 2026 13:26:49 +0200 Subject: [PATCH 443/454] Add DS248X bridge (#885) --- meshtastic/telemetry.proto | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/meshtastic/telemetry.proto b/meshtastic/telemetry.proto index bd27a7b..e00345b 100644 --- a/meshtastic/telemetry.proto +++ b/meshtastic/telemetry.proto @@ -871,6 +871,11 @@ enum TelemetrySensorType { * SHT family of sensors for temperature and humidity */ SHTXX = 50; + + /* + * DS248X Bridge for one-wire temperature sensors + */ + DS248X = 51; } /* From 0e5eab17af5f1ba0ccfb92e180fdf880bac132fd Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Tue, 14 Apr 2026 05:33:08 -0500 Subject: [PATCH 444/454] Takv2 geometry and other structures (#891) --- meshtastic/atak.options | 83 +++- meshtastic/atak.proto | 901 +++++++++++++++++++++++++++++++++++++++- 2 files changed, 981 insertions(+), 3 deletions(-) diff --git a/meshtastic/atak.options b/meshtastic/atak.options index 4b1095e..29ec3e1 100644 --- a/meshtastic/atak.options +++ b/meshtastic/atak.options @@ -26,4 +26,85 @@ *AircraftTrack.aircraft_type max_size:8 *AircraftTrack.squawk int_size:16 *AircraftTrack.category max_size:4 -*AircraftTrack.cot_host_id max_size:64 \ No newline at end of file +*AircraftTrack.cot_host_id max_size:64 + +# --- Typed geometry payloads (v2 protocol extension) --- +# +# CotGeoPoint: sint32 deltas from the enclosing event's latitude_i/longitude_i. +# For nearby vertices (telestrations, small rectangles) the varint+zigzag +# encoding is 2-3 bytes per field, cutting telestration vertex data in half +# versus sfixed32. int_size:32 keeps the C type a plain int32. +# Named with a `Cot` prefix to avoid a collision with `meshtastic.GeoPoint` +# in device_ui.proto, which is an unrelated zoom/latitude/longitude type. +*CotGeoPoint.lat_delta_i int_size:32 +*CotGeoPoint.lon_delta_i int_size:32 +# +# DrawnShape pool sizing. `kind` and `style` are varint enums (no int_size +# needed). stroke_color / fill_color are Team enum, also varint. stroke_argb +# / fill_argb are fixed32 (always 4 bytes on the wire). Vertex pool is 32 +# entries x ~12B each ~= 384B worst case. Telestrations beyond 32 vertices +# MUST be pre-truncated by the sender with `truncated = true`. +*DrawnShape.vertices max_count:32 +*DrawnShape.major_cm int_size:32 +*DrawnShape.minor_cm int_size:32 +*DrawnShape.angle_deg int_size:16 +*DrawnShape.stroke_weight_x10 int_size:16 +*DrawnShape.bullseye_distance_dm int_size:32 +*DrawnShape.bullseye_bearing_ref int_size:8 +*DrawnShape.bullseye_flags int_size:8 +*DrawnShape.bullseye_uid_ref max_size:48 + +# Marker pool sizing. Strings bounded tight to keep fixed pool small on +# ESP32 nanopb. parent_uid matches existing TAKPacketV2.uid cap (48). +# iconset fits "f7f71666-8b28-4b57-9fbb-e38e61d33b79/Google/hiker.png" +# (~52 chars) with slack. +*Marker.parent_uid max_size:48 +*Marker.parent_type max_size:24 +*Marker.parent_callsign max_size:24 +*Marker.iconset max_size:80 + +# RangeAndBearing pool sizing. +*RangeAndBearing.anchor_uid max_size:48 +*RangeAndBearing.range_cm int_size:32 +*RangeAndBearing.bearing_cdeg int_size:16 +*RangeAndBearing.stroke_weight_x10 int_size:16 + +# Route pool sizing. 16 links x ~24B each ~= 384B worst case. prefix is +# ATAK's short waypoint name prefix ("CP", "RP", etc.) — 8 chars is plenty. +*Route.links max_count:16 +*Route.prefix max_size:8 +*Route.stroke_weight_x10 int_size:16 +*Route.Link.uid max_size:48 +*Route.Link.callsign max_size:16 +*Route.Link.link_type int_size:8 + +# GeoChat receipt extension. receipt_for_uid matches TAKPacketV2.uid caps. +*GeoChat.receipt_for_uid max_size:48 + +# CasevacReport pool sizing. All numeric fields are small (0..255 for +# patient counts, 1 byte for flags bitfields); strings are short. +*CasevacReport.equipment_flags int_size:8 +*CasevacReport.terrain_flags int_size:8 +*CasevacReport.litter_patients int_size:8 +*CasevacReport.ambulatory_patients int_size:8 +*CasevacReport.us_military int_size:8 +*CasevacReport.us_civilian int_size:8 +*CasevacReport.non_us_military int_size:8 +*CasevacReport.non_us_civilian int_size:8 +*CasevacReport.epw int_size:8 +*CasevacReport.child int_size:8 +*CasevacReport.zone_marker max_size:16 +*CasevacReport.frequency max_size:16 + +# EmergencyAlert pool sizing. UIDs match TAKPacketV2.uid caps (48). +*EmergencyAlert.authoring_uid max_size:48 +*EmergencyAlert.cancel_reference_uid max_size:48 + +# TaskRequest pool sizing. All four strings are capped tight so the +# worst-case wire size stays under the LoRa MTU with headroom. task_type +# is a short category tag; target_uid/assignee_uid match TAKPacketV2.uid +# conventions; note is the one user-entered field. +*TaskRequest.task_type max_size:12 +*TaskRequest.target_uid max_size:32 +*TaskRequest.assignee_uid max_size:32 +*TaskRequest.note max_size:48 \ No newline at end of file diff --git a/meshtastic/atak.proto b/meshtastic/atak.proto index 2e6a24a..7e94696 100644 --- a/meshtastic/atak.proto +++ b/meshtastic/atak.proto @@ -55,7 +55,21 @@ message TAKPacket { */ message GeoChat { /* - * The text message + * Receipt discriminator. Set alongside cot_type_id = b-t-f-d (delivered) + * or b-t-f-r (read). ReceiptType_None is the default for a normal chat + * message (cot_type_id = b-t-f). + * + * Receivers can detect a receipt by checking receipt_type != ReceiptType_None + * without re-parsing the envelope cot_type_id. + */ + enum ReceiptType { + ReceiptType_None = 0; // normal chat message + ReceiptType_Delivered = 1; // b-t-f-d delivered receipt + ReceiptType_Read = 2; // b-t-f-r read receipt + } + + /* + * The text message. Empty for receipts. */ string message = 1; @@ -68,6 +82,20 @@ message GeoChat { * Callsign of the recipient for the message */ optional string to_callsign = 3; + + /* + * UID of the chat message this event is acknowledging. Empty for a + * normal chat message; set for delivered / read receipts. Paired with + * receipt_type so receivers can match the ack back to the original + * outbound GeoChat by its event uid. + */ + string receipt_for_uid = 4; + + /* + * Receipt kind discriminator. See ReceiptType doc. Default ReceiptType_None + * means this is a regular chat message, not a receipt. + */ + ReceiptType receipt_type = 5; } /* @@ -663,6 +691,173 @@ enum CotType { * b-f-t-a: File transfer acknowledgment */ CotType_b_f_t_a = 75; + + // --- Additional drawing / tactical graphics --- + + /* + * u-d-f-m: Freehand telestration / annotation. Anchor at event point, + * geometry carried via DrawnShape.vertices. May be truncated to + * MAX_VERTICES by the sender. + */ + CotType_u_d_f_m = 76; + /* + * u-d-p: Closed polygon. Geometry carried via DrawnShape.vertices, + * implicitly closed (receiver duplicates first vertex as needed). + */ + CotType_u_d_p = 77; + + // --- Additional markers --- + + /* + * b-m-p-s-m: Spot map marker (colored dot at a point of interest). + */ + CotType_b_m_p_s_m = 78; + /* + * b-m-p-c: Checkpoint (intermediate route control point). + */ + CotType_b_m_p_c = 79; + + // --- Ranging tools --- + + /* + * u-r-b-c-c: Ranging circle (range rings centered on the event point). + */ + CotType_u_r_b_c_c = 80; + /* + * u-r-b-bullseye: Bullseye with configurable range rings and bearing + * reference (magnetic / true / grid). + */ + CotType_u_r_b_bullseye = 81; + + // ====================================================================== + // Expanded coverage from the ATAK-CIV quick-drop pallet (values 82-124). + // ====================================================================== + // + // All of these types existed as cot_type_str strings; promoting them to + // enum values turns a ~10-byte string into a 1-byte varint on the wire + // for every event that uses them. Grouped below by pallet section. + + // --- PLI self-reporting (1) ------------------------------------------ + /* + * a-f-G-E-V-A: Friendly armored vehicle, user-selectable self PLI. + */ + CotType_a_f_G_E_V_A = 82; + + // --- 2525 quick-drop: basic affiliation gaps ------------------------- + /* + * a-n-A: Neutral aircraft (friendly/hostile/unknown already present). + */ + CotType_a_n_A = 83; + + // --- 2525 quick-drop: artillery (4) ---------------------------------- + CotType_a_u_G_U_C_F = 84; + CotType_a_n_G_U_C_F = 85; + CotType_a_h_G_U_C_F = 86; + CotType_a_f_G_U_C_F = 87; + + // --- 2525 quick-drop: building (4) ----------------------------------- + CotType_a_u_G_I = 88; + CotType_a_n_G_I = 89; + CotType_a_h_G_I = 90; + CotType_a_f_G_I = 91; + + // --- 2525 quick-drop: mine (4) --------------------------------------- + CotType_a_u_G_E_X_M = 92; + CotType_a_n_G_E_X_M = 93; + CotType_a_h_G_E_X_M = 94; + CotType_a_f_G_E_X_M = 95; + + // --- 2525 quick-drop: ship (3; a-f-S already at 17) ------------------ + CotType_a_u_S = 96; + CotType_a_n_S = 97; + CotType_a_h_S = 98; + + // --- 2525 quick-drop: sniper (4) ------------------------------------- + CotType_a_u_G_U_C_I_d = 99; + CotType_a_n_G_U_C_I_d = 100; + CotType_a_h_G_U_C_I_d = 101; + CotType_a_f_G_U_C_I_d = 102; + + // --- 2525 quick-drop: tank (4) --------------------------------------- + CotType_a_u_G_E_V_A_T = 103; + CotType_a_n_G_E_V_A_T = 104; + CotType_a_h_G_E_V_A_T = 105; + CotType_a_f_G_E_V_A_T = 106; + + // --- 2525 quick-drop: troops (3; a-f-G-U-C-I already at 2) ----------- + CotType_a_u_G_U_C_I = 107; + CotType_a_n_G_U_C_I = 108; + CotType_a_h_G_U_C_I = 109; + + // --- 2525 quick-drop: generic vehicle (3; a-u-G-E-V already at 69) --- + CotType_a_n_G_E_V = 110; + CotType_a_h_G_E_V = 111; + CotType_a_f_G_E_V = 112; + + // --- Mission-specific points (4) ------------------------------------- + /* + * b-m-p-w-GOTO: Go To / bloodhound navigation target. + */ + CotType_b_m_p_w_GOTO = 113; + /* + * b-m-p-c-ip: Initial point (mission planning). + */ + CotType_b_m_p_c_ip = 114; + /* + * b-m-p-c-cp: Contact point (mission planning). + */ + CotType_b_m_p_c_cp = 115; + /* + * b-m-p-s-p-op: Observation post. + */ + CotType_b_m_p_s_p_op = 116; + + // --- Vehicle drawings (2) -------------------------------------------- + /* + * u-d-v: 2D vehicle outline drawn on the map. + */ + CotType_u_d_v = 117; + /* + * u-d-v-m: 3D vehicle model reference. + */ + CotType_u_d_v_m = 118; + + // --- Drawing shapes (1) ---------------------------------------------- + /* + * u-d-c-e: Non-circular ellipse (circle with distinct major/minor axes). + */ + CotType_u_d_c_e = 119; + + // --- Image / media marker (1) ---------------------------------------- + /* + * b-i-x-i: Quick Pic geotagged image marker. The image itself does not + * ride on LoRa; this event references the image via iconset metadata. + */ + CotType_b_i_x_i = 120; + + // --- GeoChat receipts (2) -------------------------------------------- + /* + * b-t-f-d: GeoChat delivered receipt. Carried on the existing `chat` + * payload_variant via GeoChat.receipt_for_uid + receipt_type. + */ + CotType_b_t_f_d = 121; + /* + * b-t-f-r: GeoChat read receipt. Same wire slot as b-t-f-d. + */ + CotType_b_t_f_r = 122; + + // --- Custom emergency (1) -------------------------------------------- + /* + * b-a-o-c: Custom / generic emergency beacon. + */ + CotType_b_a_o_c = 123; + + // --- Tasking (1) ----------------------------------------------------- + /* + * t-s: Task / engage request. Structured payload carried via the new + * TaskRequest typed variant. + */ + CotType_t_s = 124; } /* @@ -730,6 +925,668 @@ message AircraftTrack { string cot_host_id = 9; } +/* + * Compact geographic vertex used by repeated vertex lists in TAK geometry + * payloads. Named with a `Cot` prefix to avoid a namespace collision with + * `meshtastic.GeoPoint` in `device_ui.proto`, which is an unrelated zoom/ + * latitude/longitude type used by the on-device map UI. + * + * Encoded as a signed DELTA from TAKPacketV2.latitude_i / longitude_i (the + * enclosing event's anchor point). The absolute coordinate is recovered by + * the receiver as `event.latitude_i + vertex.lat_delta_i` (and likewise for + * longitude). + * + * Why deltas: a 32-vertex telestration with vertices clustered within a few + * hundred meters of the anchor has per-vertex deltas in the ±10^4 range. + * Under sint32+zigzag those encode as 2 bytes each (tag+varint), versus the + * 4 bytes that sfixed32 would always require. At 32 vertices that is ~128 + * bytes of savings — the difference between fitting under the LoRa MTU or + * not. Absolute coordinates (values ~10^9) would cost sint32 varint 5 bytes + * per field, which is why TAKPacketV2's top-level latitude_i / longitude_i + * stay sfixed32 — only small values win with sint32. + */ +message CotGeoPoint { + /* + * Latitude delta from TAKPacketV2.latitude_i, in 1e-7 degree units. + * Add to the enclosing event's latitude_i to recover the absolute latitude. + */ + sint32 lat_delta_i = 1; + /* + * Longitude delta from TAKPacketV2.longitude_i, in 1e-7 degree units. + */ + sint32 lon_delta_i = 2; +} + +/* + * User-drawn tactical graphic: circle, rectangle, polygon, polyline, freehand + * telestration, ranging circle, or bullseye. + * + * Covers CoT types u-d-c-c, u-d-r, u-d-f, u-d-f-m, u-d-p, u-r-b-c-c, + * u-r-b-bullseye. The shape's anchor position is carried on + * TAKPacketV2.latitude_i/longitude_i; polyline/polygon vertices are in the + * `vertices` repeated field as `CotGeoPoint` deltas from that anchor. + * + * Colors use the Team enum as a 14-color palette (see color encoding below) + * with a fixed32 exact-ARGB fallback for custom user-picked colors that + * don't map to a palette entry. + */ +message DrawnShape { + /* + * Shape kind discriminator. Drives receiver rendering and also controls + * which optional fields below are meaningful. + */ + enum Kind { + /* + * Unspecified (do not use on the wire) + */ + Kind_Unspecified = 0; + /* + * u-d-c-c: User-drawn circle (uses major/minor/angle, anchor = event point) + */ + Kind_Circle = 1; + /* + * u-d-r: User-drawn rectangle (uses vertices = 4 corners) + */ + Kind_Rectangle = 2; + /* + * u-d-f: User-drawn polyline (uses vertices, not closed) + */ + Kind_Freeform = 3; + /* + * u-d-f-m: Freehand telestration / annotation (uses vertices, may be truncated) + */ + Kind_Telestration = 4; + /* + * u-d-p: Closed polygon (uses vertices, implicitly closed) + */ + Kind_Polygon = 5; + /* + * u-r-b-c-c: Ranging circle (major/minor/angle, stroke + optional fill) + */ + Kind_RangingCircle = 6; + /* + * u-r-b-bullseye: Bullseye ring with range rings and bearing reference + */ + Kind_Bullseye = 7; + /* + * u-d-c-e: Ellipse with distinct major/minor axes (same storage as + * Kind_Circle — uses major_cm/minor_cm/angle_deg — but receivers + * render it as a non-circular ellipse rather than a round circle). + */ + Kind_Ellipse = 8; + /* + * u-d-v: 2D vehicle outline drawn on the map. Vertices carry the + * outline polygon; receivers draw it as a filled polygon. + */ + Kind_Vehicle2D = 9; + /* + * u-d-v-m: 3D vehicle model reference. Same vertex polygon as + * Kind_Vehicle2D; receivers that support 3D rendering extrude it. + */ + Kind_Vehicle3D = 10; + } + /* + * Explicit stroke/fill/both discriminator. + * + * ATAK's source XML distinguishes "stroke-only polyline" from "closed shape + * with both stroke and fill" by the presence of the element. + * Both states can hash to all-zero color fields, so we carry the signal + * explicitly. Parser sets this from (sawStrokeColor, sawFillColor) at the + * end of parse; builder uses it to decide which of / + * to emit in the reconstructed XML. + */ + enum StyleMode { + /* + * Unspecified — receiver infers from which color fields are non-zero. + */ + StyleMode_Unspecified = 0; + /* + * Stroke only. No in the source XML. Used for polylines, + * ranging lines, bullseye rings. + */ + StyleMode_StrokeOnly = 1; + /* + * Fill only. No in the source XML. Rare but valid in + * ATAK (solid region with no outline). + */ + StyleMode_FillOnly = 2; + /* + * Both stroke and fill present. Closed shapes: circle, rectangle, + * polygon, ranging circle. + */ + StyleMode_StrokeAndFill = 3; + } + /* + * Shape kind (circle, rectangle, freeform, etc.) + */ + Kind kind = 1; + /* + * Explicit stroke/fill/both discriminator. See StyleMode doc. + */ + StyleMode style = 2; + /* + * Ellipse major radius in centimeters. 0 for non-ellipse kinds. + */ + uint32 major_cm = 3; + /* + * Ellipse minor radius in centimeters. 0 for non-ellipse kinds. + */ + uint32 minor_cm = 4; + /* + * Ellipse rotation angle in degrees. Valid values are 0..360 inclusive; + * 0 and 360 are equivalent rotations. In proto3, an unset uint32 reads + * as 0, so senders should emit 0 when the angle is unspecified. + */ + uint32 angle_deg = 5; + /* + * Stroke color as a named palette entry from the Team enum. If + * Unspecifed_Color, the exact ARGB is carried in stroke_argb. + * Valid only when style is StrokeOnly or StrokeAndFill. + */ + Team stroke_color = 6; + /* + * Stroke color as an exact 32-bit ARGB bit pattern. Always populated + * on the wire; readers MUST use this value when stroke_color == + * Unspecifed_Color and MAY use it to recover the exact original bytes + * even when a palette entry is set. + */ + fixed32 stroke_argb = 7; + /* + * Stroke weight in tenths of a unit (e.g. 30 = 3.0). Typical ATAK + * range 10..60. + */ + uint32 stroke_weight_x10 = 8; + /* + * Fill color as a named palette entry. See stroke_color docs. + * Valid only when style is FillOnly or StrokeAndFill. + */ + Team fill_color = 9; + /* + * Fill color exact ARGB fallback. See stroke_argb docs. + */ + fixed32 fill_argb = 10; + /* + * Whether labels are rendered on this shape. + */ + bool labels_on = 11; + /* + * Vertex list for polyline/polygon/rectangle shapes. Capped at 32 by + * the nanopb pool; senders MUST truncate longer inputs and set + * `truncated = true`. + */ + repeated CotGeoPoint vertices = 12; + /* + * True if the sender truncated `vertices` to fit the pool. + */ + bool truncated = 13; + // --- Bullseye-only fields. All ignored unless kind == Kind_Bullseye. --- + /* + * Bullseye distance in meters * 10 (e.g. 3285 = 328.5 m). 0 = unset. + */ + uint32 bullseye_distance_dm = 14; + /* + * Bullseye bearing reference: 0 unset, 1 Magnetic, 2 True, 3 Grid. + */ + uint32 bullseye_bearing_ref = 15; + /* + * Bullseye attribute bit flags: + * bit 0: rangeRingVisible + * bit 1: hasRangeRings + * bit 2: edgeToCenter + * bit 3: mils + */ + uint32 bullseye_flags = 16; + /* + * Bullseye reference UID (anchor marker). Empty = anchor is self. + */ + string bullseye_uid_ref = 17; +} + +/* + * Fixed point of interest: spot marker, waypoint, checkpoint, 2525 symbol, + * or custom icon. + * + * Covers CoT types b-m-p-s-m, b-m-p-w, b-m-p-c, b-m-p-s-p-i, b-m-p-s-p-loc, + * plus a-u-G / a-f-G / a-h-G / a-n-G with iconset paths. The marker position + * is carried on TAKPacketV2.latitude_i/longitude_i; fields below carry only + * the marker-specific metadata. + */ +message Marker { + /* + * Marker kind. Used to pick sensible receiver defaults when the CoT type + * alone is ambiguous (e.g. a-u-G could be a 2525 symbol or a custom icon + * depending on the iconset path). + */ + enum Kind { + /* + * Unspecified — fall back to TAKPacketV2.cot_type_id + */ + Kind_Unspecified = 0; + /* + * b-m-p-s-m: Spot map marker + */ + Kind_Spot = 1; + /* + * b-m-p-w: Route waypoint + */ + Kind_Waypoint = 2; + /* + * b-m-p-c: Checkpoint + */ + Kind_Checkpoint = 3; + /* + * b-m-p-s-p-i / b-m-p-s-p-loc: Self-position marker + */ + Kind_SelfPosition = 4; + /* + * 2525B/C military symbol (iconsetpath = COT_MAPPING_2525B/...) + */ + Kind_Symbol2525 = 5; + /* + * COT_MAPPING_SPOTMAP icon (e.g. colored dot) + */ + Kind_SpotMap = 6; + /* + * Custom icon set (UUID/GroupName/filename.png) + */ + Kind_CustomIcon = 7; + /* + * b-m-p-w-GOTO: Go To / bloodhound navigation waypoint. + */ + Kind_GoToPoint = 8; + /* + * b-m-p-c-ip: Initial point (mission planning control point). + */ + Kind_InitialPoint = 9; + /* + * b-m-p-c-cp: Contact point (mission planning control point). + */ + Kind_ContactPoint = 10; + /* + * b-m-p-s-p-op: Observation post. + */ + Kind_ObservationPost = 11; + /* + * b-i-x-i: Quick Pic geotagged image marker. iconset carries the + * image reference (local filename or remote URL); the image itself + * does not ride on the LoRa wire. + */ + Kind_ImageMarker = 12; + } + /* + * Marker kind + */ + Kind kind = 1; + /* + * Marker color as a named palette entry. If Unspecifed_Color, the exact + * ARGB is in color_argb. + */ + Team color = 2; + /* + * Marker color exact ARGB bit pattern. Always populated on the wire. + */ + fixed32 color_argb = 3; + /* + * Status readiness flag (ATAK ). + */ + bool readiness = 4; + /* + * Parent link UID (ATAK ). Empty = no parent. + * For spot/waypoint markers this is typically the producing TAK user's UID. + */ + string parent_uid = 5; + /* + * Parent CoT type (e.g. "a-f-G-U-C"). Usually the parent TAK user's type. + */ + string parent_type = 6; + /* + * Parent callsign (e.g. "HOPE"). + */ + string parent_callsign = 7; + /* + * Iconset path stored verbatim. ATAK emits three flavors: + * Kind_Symbol2525 -> "COT_MAPPING_2525B//" + * Kind_SpotMap -> "COT_MAPPING_SPOTMAP//" + * Kind_CustomIcon -> "//.png" + * Stored end-to-end without prefix stripping; the ~19 bytes saved by + * stripping well-known prefixes are not worth the builder-side bug + * surface, and the dict compresses the repetition effectively. + */ + string iconset = 8; +} + +/* + * Range and bearing measurement line from the event anchor to a target point. + * + * Covers CoT type u-rb-a. The anchor position is on + * TAKPacketV2.latitude_i/longitude_i; the target endpoint is carried as a + * CotGeoPoint — same delta-from-anchor encoding used by DrawnShape.vertices + * so a self-anchored RAB (common case) encodes in zero bytes. + */ +message RangeAndBearing { + /* + * Target/anchor endpoint (delta-encoded from TAKPacketV2.latitude_i/longitude_i). + */ + CotGeoPoint anchor = 1; + /* + * Anchor UID (from ). Empty = free-standing. + */ + string anchor_uid = 2; + /* + * Range in centimeters (value * 100). Range 0..4294 km. + */ + uint32 range_cm = 3; + /* + * Bearing in degrees * 100 (0..36000). + */ + uint32 bearing_cdeg = 4; + /* + * Stroke color as a Team palette entry. See DrawnShape.stroke_color doc. + */ + Team stroke_color = 5; + /* + * Stroke color exact ARGB fallback. + */ + fixed32 stroke_argb = 6; + /* + * Stroke weight * 10 (e.g. 30 = 3.0). + */ + uint32 stroke_weight_x10 = 7; +} + +/* + * Named route consisting of ordered waypoints and control points. + * + * Covers CoT type b-m-r. The first waypoint's position is on + * TAKPacketV2.latitude_i/longitude_i; subsequent waypoints and checkpoints + * are in `links`. Link count is capped at 16 by the nanopb pool; senders + * MUST truncate longer routes and set `truncated = true`. + */ +message Route { + /* + * Travel method for the route. + */ + enum Method { + /* + * Unspecified / unknown + */ + Method_Unspecified = 0; + /* + * Driving / vehicle + */ + Method_Driving = 1; + /* + * Walking / foot + */ + Method_Walking = 2; + /* + * Flying + */ + Method_Flying = 3; + /* + * Swimming (individual) + */ + Method_Swimming = 4; + /* + * Watercraft (boat) + */ + Method_Watercraft = 5; + } + /* + * Route direction (infil = ingress, exfil = egress). + */ + enum Direction { + /* + * Unspecified + */ + Direction_Unspecified = 0; + /* + * Infiltration (ingress) + */ + Direction_Infil = 1; + /* + * Exfiltration (egress) + */ + Direction_Exfil = 2; + } + /* + * Route waypoint or control point. Each link corresponds to one ATAK + * entry inside the b-m-r event. + */ + message Link { + /* + * Waypoint position (delta-encoded from TAKPacketV2.latitude_i/longitude_i). + */ + CotGeoPoint point = 1; + /* + * Optional UID (empty = receiver derives). + */ + string uid = 2; + /* + * Optional display callsign (e.g. "CP1"). Empty for unnamed control points. + */ + string callsign = 3; + /* + * Link role: 0 = waypoint (b-m-p-w), 1 = checkpoint (b-m-p-c). + */ + uint32 link_type = 4; + } + /* + * Travel method + */ + Method method = 1; + /* + * Direction (infil/exfil) + */ + Direction direction = 2; + /* + * Waypoint name prefix (e.g. "CP"). + */ + string prefix = 3; + /* + * Stroke weight * 10 (e.g. 30 = 3.0). 0 = default. + */ + uint32 stroke_weight_x10 = 4; + /* + * Ordered list of route control points. Capped at 16. + */ + repeated Link links = 5; + /* + * True if the sender truncated `links` to fit the pool. + */ + bool truncated = 6; +} + +/* + * 9-line MEDEVAC request (CoT type b-r-f-h-c). + * + * Mirrors the ATAK MedLine tool's <_medevac_> detail element. Every field + * is optional (proto3 default); senders omit lines they don't have. The + * envelope (TAKPacketV2.uid, cot_type_id=b-r-f-h-c, latitude_i/longitude_i, + * altitude, callsign) carries Line 1 (location) and Line 2 (callsign). + * + * All numeric fields are tight varints so a complete 9-line request fits + * in well under 100 bytes of proto on the wire. + */ +message CasevacReport { + /* + * Line 3: precedence / urgency. + */ + enum Precedence { + Precedence_Unspecified = 0; + Precedence_Urgent = 1; // A - immediate, life-threatening + Precedence_UrgentSurgical = 2; // B - needs surgery + Precedence_Priority = 3; // C - within 4 hours + Precedence_Routine = 4; // D - within 24 hours + Precedence_Convenience = 5; // E - convenience + } + /* + * Line 7: HLZ marking method. + */ + enum HlzMarking { + HlzMarking_Unspecified = 0; + HlzMarking_Panels = 1; + HlzMarking_PyroSignal = 2; + HlzMarking_Smoke = 3; + HlzMarking_None = 4; + HlzMarking_Other = 5; + } + /* + * Line 6: security situation at the pickup zone. + */ + enum Security { + Security_Unspecified = 0; + Security_NoEnemy = 1; // N - no enemy activity + Security_PossibleEnemy = 2; // P - possible enemy + Security_EnemyInArea = 3; // E - enemy, approach with caution + Security_EnemyInArmedContact = 4; // X - armed escort required + } + + /* + * Line 3: precedence / urgency. + */ + Precedence precedence = 1; + /* + * Line 4: special equipment required, as a bitfield. + * bit 0: none + * bit 1: hoist + * bit 2: extraction equipment + * bit 3: ventilator + * bit 4: blood + */ + uint32 equipment_flags = 2; + /* + * Line 5: number of litter (stretcher-bound) patients. + */ + uint32 litter_patients = 3; + /* + * Line 5: number of ambulatory (walking-wounded) patients. + */ + uint32 ambulatory_patients = 4; + /* + * Line 6: security situation at the PZ. + */ + Security security = 5; + /* + * Line 7: HLZ marking method. + */ + HlzMarking hlz_marking = 6; + /* + * Line 7 supplementary: short free-text describing the zone marker + * (e.g. "Green smoke", "VS-17 panel west"). Capped tight in options. + */ + string zone_marker = 7; + // --- Line 8: patient nationality counts --- + uint32 us_military = 8; + uint32 us_civilian = 9; + uint32 non_us_military = 10; + uint32 non_us_civilian = 11; + uint32 epw = 12; // enemy prisoner of war + uint32 child = 13; + /* + * Line 9: terrain and obstacles at the PZ, as a bitfield. + * bit 0: slope + * bit 1: rough + * bit 2: loose + * bit 3: trees + * bit 4: wires + * bit 5: other + */ + uint32 terrain_flags = 14; + /* + * Line 2: radio frequency / callsign metadata (e.g. "38.90 Mhz" or + * "Victor 6"). Capped tight in options. + */ + string frequency = 15; +} + +/* + * Emergency alert / 911 beacon (CoT types b-a-o-tbl, b-a-o-pan, b-a-o-opn, + * b-a-o-can, b-a-o-c, b-a-g). + * + * Small, high-priority structured record. The CoT type string is still set + * on cot_type_id so receivers that ignore payload_variant can still display + * the alert from the enum alone; the typed fields let modern receivers show + * the authoring unit and handle cancel-referencing without XML parsing. + */ +message EmergencyAlert { + enum Type { + Type_Unspecified = 0; + Type_Alert911 = 1; // b-a-o-tbl + Type_RingTheBell = 2; // b-a-o-pan + Type_InContact = 3; // b-a-o-opn + Type_GeoFenceBreached = 4; // b-a-g + Type_Custom = 5; // b-a-o-c + Type_Cancel = 6; // b-a-o-can + } + /* + * Alert discriminator. + */ + Type type = 1; + /* + * UID of the unit that raised the alert. Often the same as + * TAKPacketV2.uid but can be a parent device uid when a tracker raises + * an alert on behalf of a dismount. + */ + string authoring_uid = 2; + /* + * For Type_Cancel: the uid of the alert being cancelled. Empty for + * non-cancel alert types. + */ + string cancel_reference_uid = 3; +} + +/* + * Task / engage request (CoT type t-s). + * + * Mirrors ATAK's TaskCotReceiver / CotTaskBuilder workflow. The envelope + * carries the task's originating uid (implicit requester), position, and + * creation time; the fields below carry structured metadata the raw-detail + * fallback currently loses. + * + * Fields are deliberately lean — this variant is closer to the MTU ceiling + * than the others, so every string is capped in options. + */ +message TaskRequest { + enum Priority { + Priority_Unspecified = 0; + Priority_Low = 1; + Priority_Normal = 2; + Priority_High = 3; + Priority_Critical = 4; + } + enum Status { + Status_Unspecified = 0; + Status_Pending = 1; // assigned, not yet acknowledged + Status_Acknowledged = 2; // assignee has seen it + Status_InProgress = 3; // assignee is working it + Status_Completed = 4; // task done + Status_Cancelled = 5; // cancelled before completion + } + + /* + * Short tag for the task category (e.g. "engage", "observe", "recon", + * "rescue"). Free text on the wire so ATAK-specific task taxonomies + * don't need proto coordination; capped tight in options. + */ + string task_type = 1; + /* + * UID of the target / map item being tasked. + */ + string target_uid = 2; + /* + * UID of the assigned unit. Empty = unassigned / broadcast task. + */ + string assignee_uid = 3; + Priority priority = 4; + Status status = 5; + /* + * Optional short note (reason, constraints, grid reference). Capped + * tight in options to keep the worst-case under the LoRa MTU. + */ + string note = 6; +} + /* * ATAK v2 packet with expanded CoT field support and zstd dictionary compression. * Sent on ATAK_PLUGIN_V2 port. The wire payload is: @@ -830,6 +1687,14 @@ message TAKPacketV2 { * CoT event type string, only populated when cot_type_id is CotType_Other */ string cot_type_str = 23; + /* + * Optional remarks / free-text annotation from the element. + * Populated for non-GeoChat payload types (shapes, markers, routes, etc.) + * when the original CoT event carried non-empty remarks text. + * GeoChat messages carry their text in GeoChat.message instead. + * Empty string (proto3 default) means no remarks were present. + */ + string remarks = 24; /* * The payload of the packet */ @@ -847,8 +1712,40 @@ message TAKPacketV2 { */ AircraftTrack aircraft = 32; /* - * Generic CoT detail XML for unmapped types + * Generic CoT detail XML for unmapped types. Kept as a fallback for CoT + * types not yet promoted to a typed variant; drawings, markers, ranging + * tools, and routes have dedicated variants below and should not land here. */ bytes raw_detail = 33; + /* + * User-drawn tactical graphic: circle, rectangle, polygon, polyline, + * telestration, ranging circle, or bullseye. See DrawnShape. + */ + DrawnShape shape = 34; + /* + * Fixed point of interest: spot marker, waypoint, checkpoint, 2525 + * symbol, or custom icon. See Marker. + */ + Marker marker = 35; + /* + * Range and bearing measurement line. See RangeAndBearing. + */ + RangeAndBearing rab = 36; + /* + * Named route with ordered waypoints and control points. See Route. + */ + Route route = 37; + /* + * 9-line MEDEVAC request. See CasevacReport. + */ + CasevacReport casevac = 38; + /* + * Emergency beacon / 911 alert. See EmergencyAlert. + */ + EmergencyAlert emergency = 39; + /* + * Task / engage request. See TaskRequest. + */ + TaskRequest task = 40; } } From 98e95eeaa26770e6ede0291753623e4744b6ede1 Mon Sep 17 00:00:00 2001 From: Jonathan Bennett Date: Tue, 14 Apr 2026 05:35:13 -0500 Subject: [PATCH 445/454] Remote Shell Protobufs (#892) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add initial dmshell * Remove unused code * Internally use RemoteShell * Formatting fix * Clarify comment for REMOTE_SHELL_APP Co-authored-by: Thomas Göttgens --- meshtastic/mesh.options | 2 ++ meshtastic/mesh.proto | 70 +++++++++++++++++++++++++++++++++++++++ meshtastic/portnums.proto | 5 +++ 3 files changed, 77 insertions(+) diff --git a/meshtastic/mesh.options b/meshtastic/mesh.options index 1bae5eb..2341e6c 100644 --- a/meshtastic/mesh.options +++ b/meshtastic/mesh.options @@ -74,6 +74,8 @@ *StoreForwardPlusPlus.root_hash max_size:32 *StoreForwardPlusPlus.message max_size:240 +*RemoteShell.payload max_size:200 + *StatusMessage.status max_size:80 # MyMessage.name max_size:40 diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index b2c6fa4..6ad24aa 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -1288,6 +1288,76 @@ message StoreForwardPlusPlus { uint32 chain_count = 10; } +/* + * The actual over-the-mesh message doing RemoteShell + */ +message RemoteShell { + /* + * Frame op code for PTY session control and stream transport. + * + * Values 1-63 are client->server requests. + * Values 64-127 are server->client responses/events. + */ + enum OpCode { + OP_UNSET = 0; + + // Client -> server + OPEN = 1; + INPUT = 2; + RESIZE = 3; + CLOSE = 4; + PING = 5; + ACK = 6; + + // Server -> client + OPEN_OK = 64; + OUTPUT = 65; + CLOSED = 66; + ERROR = 67; + PONG = 68; + } + + /* + * Structured frame operation. + */ + OpCode op = 1; + + /* + * Logical PTY session identifier. + */ + uint32 session_id = 2; + + /* + * Monotonic sequence number for this frame. + */ + uint32 seq = 3; + + /* + * Cumulative ack sequence number. + */ + uint32 ack_seq = 4; + + /* + * Opaque bytes payload for INPUT/OUTPUT/ERROR and other frame bodies. + */ + bytes payload = 5; + + /* + * Terminal size columns used for OPEN/RESIZE signaling. + */ + uint32 cols = 6; + + /* + * Terminal size rows used for OPEN/RESIZE signaling. + */ + uint32 rows = 7; + + /* + * Bit flags for protocol extensions. + */ + uint32 flags = 8; +} + /* * Waypoint message, used to share arbitrary locations across the mesh */ diff --git a/meshtastic/portnums.proto b/meshtastic/portnums.proto index b6c9776..61412cf 100644 --- a/meshtastic/portnums.proto +++ b/meshtastic/portnums.proto @@ -115,6 +115,11 @@ enum PortNum { */ KEY_VERIFICATION_APP = 12; + /* + * Module/port for handling primitive remote shell access. + */ + REMOTE_SHELL_APP = 13; + /* * Provides a 'ping' service that replies to any packet it receives. * Also serves as a small example module. From a045501ea848f49d546cc10e4c162a32317d4c7e Mon Sep 17 00:00:00 2001 From: oscgonfer Date: Tue, 14 Apr 2026 13:52:08 +0200 Subject: [PATCH 446/454] Multiple one wire channels (#886) * Add DS248X bridge * One wire temperature for multiple channels --- meshtastic/telemetry.options | 1 + meshtastic/telemetry.proto | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/meshtastic/telemetry.options b/meshtastic/telemetry.options index 81d2aa8..5db1af5 100644 --- a/meshtastic/telemetry.options +++ b/meshtastic/telemetry.options @@ -4,6 +4,7 @@ *EnvironmentMetrics.iaq int_size:16 *EnvironmentMetrics.wind_direction int_size:16 *EnvironmentMetrics.soil_moisture int_size:8 +*EnvironmentMetrics.one_wire_temperature max_count:8 *LocalStats.num_online_nodes int_size:16 *LocalStats.num_total_nodes int_size:16 diff --git a/meshtastic/telemetry.proto b/meshtastic/telemetry.proto index e00345b..f541ca9 100644 --- a/meshtastic/telemetry.proto +++ b/meshtastic/telemetry.proto @@ -153,6 +153,11 @@ message EnvironmentMetrics { * Soil temperature measured (*C) */ optional float soil_temperature = 22; + + /* + * One-wire temperature (*C) + */ + repeated float one_wire_temperature = 23; } /* From 940ac382a7d143040da5a880237f84c48ee31f2b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20G=C3=B6ttgens?= Date: Tue, 14 Apr 2026 14:51:23 +0200 Subject: [PATCH 447/454] add THINKNODE device IDs (#893) --- .gitignore | 1 + meshtastic/mesh.proto | 12 +++++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 265ee7c..dd68173 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ # Generated protobuf files packages/ts/lib/ +.bin/ diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 6ad24aa..032f1e2 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -875,9 +875,19 @@ enum HardwareModel { */ HELTEC_MESH_NODE_T096 = 127; - /* Seeed studio T1000-E Pro tracker card. NRF52840 w/ LR2021 radio, GPS, button, buzzer, and sensors. */ + /* + * Seeed studio T1000-E Pro tracker card. NRF52840 w/ LR2021 radio, + * GPS, button, buzzer, and sensors. + */ TRACKER_T1000_E_PRO = 128; + /* + * Elecrow ThinkNode M7, M8 and M9 + */ + THINKNODE_M7 = 129; + THINKNODE_M8 = 130; + THINKNODE_M9 = 131; + /* * ------------------------------------------------------------------------------------------------------------------------------------------ * Reserved ID For developing private Ports. These will show up in live traffic sparsely, so we can use a high number. Keep it within 8 bits. From 7900e5d2ddfc67806d37f0717d2f961dda18624d Mon Sep 17 00:00:00 2001 From: Jonathan Bennett Date: Tue, 14 Apr 2026 18:43:27 -0500 Subject: [PATCH 448/454] Add two more RemoteShell fields --- meshtastic/mesh.proto | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/meshtastic/mesh.proto b/meshtastic/mesh.proto index 032f1e2..fb585b9 100644 --- a/meshtastic/mesh.proto +++ b/meshtastic/mesh.proto @@ -1366,6 +1366,16 @@ message RemoteShell { * Bit flags for protocol extensions. */ uint32 flags = 8; + + /* + * The last sequence number TX'd. + */ + uint32 last_tx_seq = 9; + + /* + * The last sequence number RX'd. + */ + uint32 last_rx_seq = 10; } /* From 052a9fa4bffda16ba5a1ca625b829c75fac03151 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Wed, 15 Apr 2026 11:16:31 -0500 Subject: [PATCH 449/454] Add v2.x medline extensions and ZMistEntry message to CasevacReport --- meshtastic/atak.proto | 135 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 135 insertions(+) diff --git a/meshtastic/atak.proto b/meshtastic/atak.proto index 7e94696..b9dbaae 100644 --- a/meshtastic/atak.proto +++ b/meshtastic/atak.proto @@ -1498,6 +1498,141 @@ message CasevacReport { * "Victor 6"). Capped tight in options. */ string frequency = 15; + + // --- v2.x medline extensions (tags 16–33) -------------------------------- + // + // Fields 16+ cost a 2-byte tag instead of 1 byte, but they're usually + // sparse so the on-wire delta is modest when most stay unset. A fully + // populated CASEVAC with 13 free-text fields + 2 ZMIST entries can run + // 200-400 bytes compressed, i.e. potentially over the 237 B LoRa MTU. + // Callers that hit the MTU on the `compressWithRemarksFallback` path + // SHOULD strip the tier-2 situational fields (tags 28-32 + terrain_other_detail) + // before dropping the packet entirely. See README "CASEVAC tier-2 stripping". + + /* + * Short title / MEDEVAC identifier (e.g. "EAGLE.15.181230"). Usually the + * same as the envelope callsign but ATAK sometimes carries a distinct + * ops-number here. + */ + string title = 16; + /* + * Primary medline free-text — the single most clinically important line + * on a MEDLINE form (e.g. "2 urgent litter patients, smoke on approach"). + * MUST be preserved under MTU pressure as long as any casevac is sent. + */ + string medline_remarks = 17; + + /* + * Line 3 (newer ATAK format): patient counts by precedence level. + * Coexists with the enum-style `precedence` field (tag 1) — older ATAK + * emits a single enum, newer ATAK emits these counts, and both can be + * set simultaneously. Senders populate whichever style(s) the source + * XML had; receivers prefer counts when non-zero. + */ + uint32 urgent_count = 18; + uint32 urgent_surgical_count = 19; + uint32 priority_count = 20; + uint32 routine_count = 21; + uint32 convenience_count = 22; + + /* + * Line 4 supplementary: free-text description of non-standard equipment + * (e.g. "Blood warmer"). Pairs with the `equipment_flags` bitfield. + */ + string equipment_detail = 23; + /* + * Line 1 override: MGRS grid when distinct from the event anchor point + * (e.g. "34T CQ 12345 67890"). Event lat/lon/hae still carries the + * numeric location; this field preserves the exact MGRS string the + * medic entered. + */ + string zone_protected_coord = 24; + /* + * Line 9 supplementary: slope direction (e.g. "N", "NE", "SSW") when + * `terrain_flags` bit 0 (slope) is set. + */ + string terrain_slope_dir = 25; + /* + * Line 9 supplementary: free-text description of "other" terrain hazards + * (e.g. "Loose debris on west edge") when `terrain_flags` bit 5 (other) + * is set. Tier-2 strippable under MTU pressure. + */ + string terrain_other_detail = 26; + /* + * Line 7 supplementary: how the zone is being marked right now + * (e.g. "Orange smoke", "VS-17 panel"). Complements the structured + * `hlz_marking` enum with a specific human-readable description. + */ + string marked_by = 27; + + // --- Tier-2 situational awareness (stripped first under MTU pressure) --- + // These fields are free-text context that helps the receiver plan the + // approach but aren't strictly required to evacuate the patient. + + /* + * Nearby obstacles on the approach (e.g. "Power lines north of HLZ"). + */ + string obstacles = 28; + /* + * Wind direction and speed (e.g. "270 at 12 kts"). + */ + string winds_are_from = 29; + /* + * Friendly forces posture near the pickup zone + * (e.g. "Squad east of HLZ"). + */ + string friendlies = 30; + /* + * Known or suspected enemy positions near the pickup zone + * (e.g. "Possible enemy on south ridge"). + */ + string enemy = 31; + /* + * Free-text description of the HLZ itself + * (e.g. "Primary HLZ is soccer field"). + */ + string hlz_remarks = 32; + + /* + * Per-patient clinical records. Each entry is one patient's ZMIST card + * (Zap number / Mechanism / Injuries / Signs / Treatment). Repeatable — + * a mass-casualty event can carry 1-6 entries in practice, limited by + * the 237 B LoRa MTU. + */ + repeated ZMistEntry zmist = 33; +} + +/* + * Per-patient clinical summary record — one entry per patient in a CASEVAC. + * Maps directly to ATAK's child element inside . + * All fields are optional free-text; senders populate what they have. + */ +message ZMistEntry { + /* + * Patient identifier / sequence label (e.g. "ZMIST-1", "ZMIST-2"). + */ + string title = 1; + /* + * Zap number — unique patient tracking ID (often a terse code like + * "Gunshot" or a serial). + */ + string z = 2; + /* + * Mechanism of injury (e.g. "Penetrating trauma", "Blast injury"). + */ + string m = 3; + /* + * Injuries observed (e.g. "Left thigh", "Concussion"). + */ + string i = 4; + /* + * Signs / vital stats (e.g. "Stable", "Priority", "BP 110/70"). + */ + string s = 5; + /* + * Treatment given (e.g. "Tourniquet 1810Z", "O2 administered"). + */ + string t = 6; } /* From da33d0ea72678e430e034275f724c754728235c8 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Wed, 15 Apr 2026 15:20:28 -0500 Subject: [PATCH 450/454] Add Environment and SensorFov annotations to TAKPacketV2 Two new top-level optional fields at tags 25 and 26 that attach to any payload_variant. Environment carries weather readings from CoT detail elements (temperature, wind direction, wind speed). SensorFov carries the 8 geometry attributes of ATAK-CIV's element (type, azimuth, range, horizontal and vertical FOV, elevation, roll, model), dropping the 9 display-only attributes (fovAlpha/RGB, strokeColor/Weight, hideFov, fovLabels, displayMagneticReference, rangeLines) that are receiver-side render hints. Units are chosen for compact varint encoding and parity with existing fields: temperature in deci-degrees Celsius (sint32), wind speed in cm/s to match TAKPacketV2.speed, all angles as whole degrees. Tags 27-29 reserved for future annotations before the payload_variant oneof resumes at tag 30. --- meshtastic/atak.proto | 119 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 119 insertions(+) diff --git a/meshtastic/atak.proto b/meshtastic/atak.proto index b9dbaae..b8a4fe5 100644 --- a/meshtastic/atak.proto +++ b/meshtastic/atak.proto @@ -1722,6 +1722,105 @@ message TaskRequest { string note = 6; } +/* + * Weather annotation from CoT detail element. + * + * Attaches to any TAKPacketV2 regardless of payload_variant — an Aircraft, + * PLI, or Marker can all carry observed conditions at the emitting station. + * ATAK-CIV ships an XSD for but no dedicated handler, so the + * element round-trips through the generic detail pipeline; this message + * promotes it to a first-class structured field. + * + * Target wire cost: ~6-8 bytes compressed with a fully populated instance. + */ +message Environment { + /* + * Temperature in deci-degrees Celsius. 225 = 22.5°C. + * Range covers -50°C to +50°C (-500 to +500) which spans every realistic + * outdoor TAK deployment. sint32 because negative temps are common in + * cold-weather ops. + */ + sint32 temperature_c_x10 = 1; + /* + * Wind direction in whole degrees, 0-359. "Direction FROM" per + * meteorological convention (matches CoT / ATAK). + */ + uint32 wind_direction_deg = 2; + /* + * Wind speed in cm/s. Matches the unit of TAKPacketV2.speed for + * consistency. 1200 = 12.00 m/s = ~27 mph. + */ + uint32 wind_speed_cm_s = 3; +} + +/* + * Sensor field-of-view cone from CoT detail element. + * + * Encodes the 8 geometry attributes that ATAK-CIV's SensorDetailHandler + * reads from the wire; drops the 9 visual-styling attributes that are + * receiver-side render hints (fovAlpha, fovRed/Green/Blue, strokeColor, + * strokeWeight, displayMagneticReference, hideFov, fovLabels, rangeLines). + * The receiving ATAK client restores those from its own defaults, same as + * every other CoT carried over Meshtastic today. + * + * Attaches to any TAKPacketV2 — a PLI with a sensor on the operator's head, + * an Aircraft with a FLIR turret, a Marker dropped on a UAV. + * Target wire cost: ~7-14 bytes compressed (dominated by model string). + */ +message SensorFov { + /* + * Coarse sensor category, inferred from `model` on parse when the source + * XML doesn't label it. Receivers that render differently per sensor + * class (thermal overlay vs daylight cone) use this. + */ + enum SensorType { + SensorType_Unspecified = 0; + SensorType_Camera = 1; // daylight / general optical + SensorType_Thermal = 2; // FLIR, thermal imager + SensorType_Laser = 3; // rangefinder, LRF, designator + SensorType_Nvg = 4; // night vision goggles + SensorType_Rf = 5; // radio/radar direction-finding + SensorType_Other = 6; + } + + SensorType type = 1; + /* + * Azimuth in whole degrees, 0-359. "Pointing direction" of the cone axis, + * measured clockwise from true north. Whole degrees match ATAK-CIV's + * SensorDetailHandler default (270°) and save varint bytes over centi-deg. + */ + uint32 azimuth_deg = 2; + /* + * Maximum range of the cone in meters. ATAK-CIV default is 100m. + */ + uint32 range_m = 3; + /* + * Horizontal field of view in whole degrees (cone's angular width). + * ATAK-CIV default is 45°. + */ + uint32 fov_horizontal_deg = 4; + /* + * Vertical field of view in whole degrees. ATAK-CIV default is 45°. + * Optional — a value of 0 means "not set / use horizontal FOV". + */ + uint32 fov_vertical_deg = 5; + /* + * Elevation angle in whole degrees. Positive = up, negative = down. + * Range -90 to +90. sint32 for varint efficiency on small negatives. + */ + sint32 elevation_deg = 6; + /* + * Roll (camera tilt) in whole degrees, -180 to +180. + * Optional — use 0 if the sensor doesn't track roll. + */ + sint32 roll_deg = 7; + /* + * Free-form device model identifier, e.g. "FLIR-Boson-640", "SEEK". + * Optional — empty string means "unknown model" (ATAK-CIV default). + */ + string model = 8; +} + /* * ATAK v2 packet with expanded CoT field support and zstd dictionary compression. * Sent on ATAK_PLUGIN_V2 port. The wire payload is: @@ -1830,6 +1929,26 @@ message TAKPacketV2 { * Empty string (proto3 default) means no remarks were present. */ string remarks = 24; + + // --- Sensor / environment annotations ---------------------------------- + // + // Both fields are OPTIONAL and attach to any payload_variant. They + // describe observed conditions at the emitting station — a PLI with + // environment data, an Aircraft with a sensor cone, a Marker with both. + // Absent by default; presence is signaled by the message being non-null. + + /* + * Observed weather conditions (temperature, wind). From . + */ + optional Environment environment = 25; + /* + * Sensor field-of-view cone (camera, FLIR, laser, etc.). From . + */ + optional SensorFov sensor_fov = 26; + + // Tags 27, 28, 29 reserved for future top-level annotations before the + // payload_variant oneof resumes at 30. + /* * The payload of the packet */ From 3ce7c51068cc45281f3a5fa353a8f4df6f7eca27 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Wed, 15 Apr 2026 16:29:03 -0500 Subject: [PATCH 451/454] Rename Environment -> TAKEnvironment to avoid SwiftUI collision MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The bare `Environment` message name clashes with SwiftUI's `@Environment` property wrapper, which is used by every SwiftUI view in an iOS consumer app. Importing the generated proto module (e.g. `MeshtasticProtobufs`) made `Environment` ambiguous in all 78 files of Meshtastic-Apple that reference `@Environment(\.scenePhase)` or similar, breaking the build. Field name `environment` on TAKPacketV2 stays unchanged — only the message type is renamed. Wire format is unaffected (proto3 encodes by tag number, not type name), but all generated code and source-level references must be regenerated. The `TAK` prefix matches the convention used by the outer TAKPacketV2 wrapper and is unambiguous across Swift (no SwiftUI/WeatherKit clash), Kotlin, Python, TypeScript, and C# targets. --- meshtastic/atak.proto | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/meshtastic/atak.proto b/meshtastic/atak.proto index b8a4fe5..7223ee1 100644 --- a/meshtastic/atak.proto +++ b/meshtastic/atak.proto @@ -1732,8 +1732,16 @@ message TaskRequest { * promotes it to a first-class structured field. * * Target wire cost: ~6-8 bytes compressed with a fully populated instance. + * + * Named `TAKEnvironment` (not just `Environment`) because the bare name + * collides with `SwiftUI.Environment` — every SwiftUI view in a consuming + * iOS app uses the `@Environment` property wrapper, and importing the + * generated proto module would make `Environment` ambiguous in every one + * of those files. The `TAK` prefix matches the convention used by the + * outer `TAKPacketV2` wrapper and is unambiguous across all target + * languages (Swift, Kotlin, Python, TypeScript, C#). */ -message Environment { +message TAKEnvironment { /* * Temperature in deci-degrees Celsius. 225 = 22.5°C. * Range covers -50°C to +50°C (-500 to +500) which spans every realistic @@ -1939,8 +1947,10 @@ message TAKPacketV2 { /* * Observed weather conditions (temperature, wind). From . + * Type is `TAKEnvironment`, not `Environment`, to avoid colliding with + * SwiftUI's `@Environment` property wrapper in iOS consumers. */ - optional Environment environment = 25; + optional TAKEnvironment environment = 25; /* * Sensor field-of-view cone (camera, FLIR, laser, etc.). From . */ From 3a398acbff52b7844b48965cd78b408d27a17ce2 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Thu, 16 Apr 2026 19:51:52 -0500 Subject: [PATCH 452/454] Update atak.proto Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- meshtastic/atak.proto | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/meshtastic/atak.proto b/meshtastic/atak.proto index 7223ee1..ec0c596 100644 --- a/meshtastic/atak.proto +++ b/meshtastic/atak.proto @@ -1799,9 +1799,10 @@ message SensorFov { */ uint32 azimuth_deg = 2; /* - * Maximum range of the cone in meters. ATAK-CIV default is 100m. + * Maximum range of the cone in meters. + * Optional — if unset, receivers should use the ATAK-CIV default of 100m. */ - uint32 range_m = 3; + optional uint32 range_m = 3; /* * Horizontal field of view in whole degrees (cone's angular width). * ATAK-CIV default is 45°. From e5b07ae0b0d5901b3e9cf586c68f30f38589c42b Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Thu, 16 Apr 2026 19:52:05 -0500 Subject: [PATCH 453/454] Update atak.proto Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- meshtastic/atak.proto | 1 + 1 file changed, 1 insertion(+) diff --git a/meshtastic/atak.proto b/meshtastic/atak.proto index ec0c596..0325d92 100644 --- a/meshtastic/atak.proto +++ b/meshtastic/atak.proto @@ -1957,6 +1957,7 @@ message TAKPacketV2 { */ optional SensorFov sensor_fov = 26; + reserved 27, 28, 29; // Tags 27, 28, 29 reserved for future top-level annotations before the // payload_variant oneof resumes at 30. From 793e274f599c7f08e4d343dd56607ab36e5486b3 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 17 Apr 2026 00:56:12 +0000 Subject: [PATCH 454/454] Run buf format on atak proto Agent-Logs-Url: https://github.com/meshtastic/protobufs/sessions/059c2e02-63e3-467d-b032-dc5c15883261 Co-authored-by: thebentern <9000580+thebentern@users.noreply.github.com> --- meshtastic/atak.proto | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/meshtastic/atak.proto b/meshtastic/atak.proto index 0325d92..873e0b6 100644 --- a/meshtastic/atak.proto +++ b/meshtastic/atak.proto @@ -1783,11 +1783,11 @@ message SensorFov { */ enum SensorType { SensorType_Unspecified = 0; - SensorType_Camera = 1; // daylight / general optical - SensorType_Thermal = 2; // FLIR, thermal imager - SensorType_Laser = 3; // rangefinder, LRF, designator - SensorType_Nvg = 4; // night vision goggles - SensorType_Rf = 5; // radio/radar direction-finding + SensorType_Camera = 1; // daylight / general optical + SensorType_Thermal = 2; // FLIR, thermal imager + SensorType_Laser = 3; // rangefinder, LRF, designator + SensorType_Nvg = 4; // night vision goggles + SensorType_Rf = 5; // radio/radar direction-finding SensorType_Other = 6; }