From 386fa53c1596c8dfc547521f08df107f4cb3a275 Mon Sep 17 00:00:00 2001 From: oscgonfer Date: Wed, 25 Jun 2025 20:05:19 +0200 Subject: [PATCH 01/43] 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 02/43] 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 03/43] 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 04/43] 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 05/43] 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 06/43] 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 07/43] 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 08/43] 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 09/43] 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 10/43] 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 11/43] 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 12/43] 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 13/43] 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 14/43] 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 15/43] 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 16/43] 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 17/43] 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 18/43] 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 19/43] =?UTF-8?q?Add=20Nepal=20865=E2=80=AFMHz=20to=20868?= =?UTF-8?q?=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 20/43] 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 21/43] 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 22/43] 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 23/43] 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 24/43] 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 25/43] 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 26/43] 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 27/43] 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 28/43] 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 29/43] 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 30/43] 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 31/43] 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 f5f209d9980537b0e80f51a46d01fb5558f2d4e3 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Sat, 9 Aug 2025 08:10:23 -0500 Subject: [PATCH 32/43] 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 33/43] 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 34/43] 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 35/43] 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 36/43] 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 37/43] 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 4c4427c4a73c86fed7dc8632188bb8be95349d81 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Fri, 29 Aug 2025 13:47:04 -0500 Subject: [PATCH 38/43] 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 39/43] 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 40/43] 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 41/43] 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 42/43] 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 43/43] 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) */