mirror of
https://github.com/meshtastic/firmware.git
synced 2026-01-19 00:07:38 +00:00
Merge branch 'develop' into sfpp
This commit is contained in:
4
.github/workflows/main_matrix.yml
vendored
4
.github/workflows/main_matrix.yml
vendored
@@ -8,7 +8,9 @@ on:
|
|||||||
branches:
|
branches:
|
||||||
- master
|
- master
|
||||||
- develop
|
- develop
|
||||||
|
- pioarduino # Remove when merged // use `feature/` in the future.
|
||||||
- event/*
|
- event/*
|
||||||
|
- feature/*
|
||||||
paths-ignore:
|
paths-ignore:
|
||||||
- "**.md"
|
- "**.md"
|
||||||
- version.properties
|
- version.properties
|
||||||
@@ -18,7 +20,9 @@ on:
|
|||||||
branches:
|
branches:
|
||||||
- master
|
- master
|
||||||
- develop
|
- develop
|
||||||
|
- pioarduino # Remove when merged // use `feature/` in the future.
|
||||||
- event/*
|
- event/*
|
||||||
|
- feature/*
|
||||||
paths-ignore:
|
paths-ignore:
|
||||||
- "**.md"
|
- "**.md"
|
||||||
#- "**.yml"
|
#- "**.yml"
|
||||||
|
|||||||
@@ -38,4 +38,4 @@ cp bin/device-install.* $OUTDIR/
|
|||||||
cp bin/device-update.* $OUTDIR/
|
cp bin/device-update.* $OUTDIR/
|
||||||
|
|
||||||
echo "Copying manifest"
|
echo "Copying manifest"
|
||||||
cp $BUILDDIR/$basename.mt.json $OUTDIR/$basename.mt.json
|
cp $BUILDDIR/$basename.mt.json $OUTDIR/$basename.mt.json || true
|
||||||
|
|||||||
@@ -49,4 +49,4 @@ if (echo $1 | grep -q "rak4631"); then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Copying manifest"
|
echo "Copying manifest"
|
||||||
cp $BUILDDIR/$basename.mt.json $OUTDIR/$basename.mt.json
|
cp $BUILDDIR/$basename.mt.json $OUTDIR/$basename.mt.json || true
|
||||||
|
|||||||
@@ -30,4 +30,4 @@ echo "Copying uf2 file"
|
|||||||
cp $BUILDDIR/$basename.uf2 $OUTDIR/$basename.uf2
|
cp $BUILDDIR/$basename.uf2 $OUTDIR/$basename.uf2
|
||||||
|
|
||||||
echo "Copying manifest"
|
echo "Copying manifest"
|
||||||
cp $BUILDDIR/$basename.mt.json $OUTDIR/$basename.mt.json
|
cp $BUILDDIR/$basename.mt.json $OUTDIR/$basename.mt.json || true
|
||||||
|
|||||||
@@ -30,4 +30,4 @@ echo "Copying STM32 bin file"
|
|||||||
cp $BUILDDIR/$basename.bin $OUTDIR/$basename.bin
|
cp $BUILDDIR/$basename.bin $OUTDIR/$basename.bin
|
||||||
|
|
||||||
echo "Copying manifest"
|
echo "Copying manifest"
|
||||||
cp $BUILDDIR/$basename.mt.json $OUTDIR/$basename.mt.json
|
cp $BUILDDIR/$basename.mt.json $OUTDIR/$basename.mt.json || true
|
||||||
|
|||||||
@@ -2,11 +2,12 @@
|
|||||||
# trunk-ignore-all(ruff/F821)
|
# trunk-ignore-all(ruff/F821)
|
||||||
# trunk-ignore-all(flake8/F821): For SConstruct imports
|
# trunk-ignore-all(flake8/F821): For SConstruct imports
|
||||||
import sys
|
import sys
|
||||||
from os.path import join, basename, isfile
|
from os.path import join
|
||||||
import subprocess
|
import subprocess
|
||||||
import json
|
import json
|
||||||
import re
|
import re
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
from typing import Dict
|
||||||
|
|
||||||
from readprops import readProps
|
from readprops import readProps
|
||||||
|
|
||||||
@@ -14,8 +15,47 @@ Import("env")
|
|||||||
platform = env.PioPlatform()
|
platform = env.PioPlatform()
|
||||||
progname = env.get("PROGNAME")
|
progname = env.get("PROGNAME")
|
||||||
lfsbin = f"{progname.replace('firmware-', 'littlefs-')}.bin"
|
lfsbin = f"{progname.replace('firmware-', 'littlefs-')}.bin"
|
||||||
|
manifest_ran = False
|
||||||
|
|
||||||
|
def infer_architecture(board_cfg):
|
||||||
|
try:
|
||||||
|
mcu = board_cfg.get("build.mcu") if board_cfg else None
|
||||||
|
except KeyError:
|
||||||
|
mcu = None
|
||||||
|
except Exception:
|
||||||
|
mcu = None
|
||||||
|
if not mcu:
|
||||||
|
return None
|
||||||
|
mcu_l = str(mcu).lower()
|
||||||
|
if "esp32s3" in mcu_l:
|
||||||
|
return "esp32-s3"
|
||||||
|
if "esp32c6" in mcu_l:
|
||||||
|
return "esp32-c6"
|
||||||
|
if "esp32c3" in mcu_l:
|
||||||
|
return "esp32-c3"
|
||||||
|
if "esp32" in mcu_l:
|
||||||
|
return "esp32"
|
||||||
|
if "rp2040" in mcu_l:
|
||||||
|
return "rp2040"
|
||||||
|
if "rp2350" in mcu_l:
|
||||||
|
return "rp2350"
|
||||||
|
if "nrf52" in mcu_l or "nrf52840" in mcu_l:
|
||||||
|
return "nrf52840"
|
||||||
|
if "stm32" in mcu_l:
|
||||||
|
return "stm32"
|
||||||
|
return None
|
||||||
|
|
||||||
def manifest_gather(source, target, env):
|
def manifest_gather(source, target, env):
|
||||||
|
global manifest_ran
|
||||||
|
if manifest_ran:
|
||||||
|
return
|
||||||
|
# Skip manifest generation if we cannot determine architecture (host/native builds)
|
||||||
|
board_arch = infer_architecture(env.BoardConfig())
|
||||||
|
if not board_arch:
|
||||||
|
print(f"Skipping mtjson generation for unknown architecture (env={env.get('PIOENV')})")
|
||||||
|
manifest_ran = True
|
||||||
|
return
|
||||||
|
manifest_ran = True
|
||||||
out = []
|
out = []
|
||||||
board_platform = env.BoardConfig().get("platform")
|
board_platform = env.BoardConfig().get("platform")
|
||||||
needs_ota_suffix = board_platform == "nordicnrf52"
|
needs_ota_suffix = board_platform == "nordicnrf52"
|
||||||
@@ -47,14 +87,39 @@ def manifest_gather(source, target, env):
|
|||||||
manifest_write(out, env)
|
manifest_write(out, env)
|
||||||
|
|
||||||
def manifest_write(files, env):
|
def manifest_write(files, env):
|
||||||
|
# Defensive: also skip manifest writing if we cannot determine architecture
|
||||||
|
def get_project_option(name):
|
||||||
|
try:
|
||||||
|
return env.GetProjectOption(name)
|
||||||
|
except Exception:
|
||||||
|
return None
|
||||||
|
|
||||||
|
def get_project_option_any(names):
|
||||||
|
for name in names:
|
||||||
|
val = get_project_option(name)
|
||||||
|
if val is not None:
|
||||||
|
return val
|
||||||
|
return None
|
||||||
|
|
||||||
|
def as_bool(val):
|
||||||
|
return str(val).strip().lower() in ("1", "true", "yes", "on")
|
||||||
|
|
||||||
|
def as_int(val):
|
||||||
|
try:
|
||||||
|
return int(str(val), 10)
|
||||||
|
except (TypeError, ValueError):
|
||||||
|
return None
|
||||||
|
|
||||||
|
def as_list(val):
|
||||||
|
return [item.strip() for item in str(val).split(",") if item.strip()]
|
||||||
|
|
||||||
manifest = {
|
manifest = {
|
||||||
"version": verObj["long"],
|
"version": verObj["long"],
|
||||||
"build_epoch": build_epoch,
|
"build_epoch": build_epoch,
|
||||||
"board": env.get("PIOENV"),
|
"platformioTarget": env.get("PIOENV"),
|
||||||
"mcu": env.get("BOARD_MCU"),
|
"mcu": env.get("BOARD_MCU"),
|
||||||
"repo": repo_owner,
|
"repo": repo_owner,
|
||||||
"files": files,
|
"files": files,
|
||||||
"part": None,
|
|
||||||
"has_mui": False,
|
"has_mui": False,
|
||||||
"has_inkhud": False,
|
"has_inkhud": False,
|
||||||
}
|
}
|
||||||
@@ -69,6 +134,51 @@ def manifest_write(files, env):
|
|||||||
if "MESHTASTIC_INCLUDE_INKHUD" in env.get("CPPDEFINES", []):
|
if "MESHTASTIC_INCLUDE_INKHUD" in env.get("CPPDEFINES", []):
|
||||||
manifest["has_inkhud"] = True
|
manifest["has_inkhud"] = True
|
||||||
|
|
||||||
|
pioenv = env.get("PIOENV")
|
||||||
|
device_meta = {}
|
||||||
|
device_meta_fields = [
|
||||||
|
("hwModel", ["custom_meshtastic_hw_model"], as_int),
|
||||||
|
("hwModelSlug", ["custom_meshtastic_hw_model_slug"], str),
|
||||||
|
("architecture", ["custom_meshtastic_architecture"], str),
|
||||||
|
("activelySupported", ["custom_meshtastic_actively_supported"], as_bool),
|
||||||
|
("displayName", ["custom_meshtastic_display_name"], str),
|
||||||
|
("supportLevel", ["custom_meshtastic_support_level"], as_int),
|
||||||
|
("images", ["custom_meshtastic_images"], as_list),
|
||||||
|
("tags", ["custom_meshtastic_tags"], as_list),
|
||||||
|
("requiresDfu", ["custom_meshtastic_requires_dfu"], as_bool),
|
||||||
|
("partitionScheme", ["custom_meshtastic_partition_scheme"], str),
|
||||||
|
("url", ["custom_meshtastic_url"], str),
|
||||||
|
("key", ["custom_meshtastic_key"], str),
|
||||||
|
("variant", ["custom_meshtastic_variant"], str),
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
for manifest_key, option_keys, caster in device_meta_fields:
|
||||||
|
raw_val = get_project_option_any(option_keys)
|
||||||
|
if raw_val is None:
|
||||||
|
continue
|
||||||
|
parsed = caster(raw_val) if callable(caster) else raw_val
|
||||||
|
if parsed is not None and parsed != "":
|
||||||
|
device_meta[manifest_key] = parsed
|
||||||
|
|
||||||
|
# Determine architecture once; if we can't infer it, skip manifest generation
|
||||||
|
board_arch = device_meta.get("architecture") or infer_architecture(env.BoardConfig())
|
||||||
|
if not board_arch:
|
||||||
|
print(f"Skipping mtjson write for unknown architecture (env={env.get('PIOENV')})")
|
||||||
|
return
|
||||||
|
|
||||||
|
device_meta["architecture"] = board_arch
|
||||||
|
|
||||||
|
# Always set requiresDfu: true for nrf52840 targets
|
||||||
|
if board_arch == "nrf52840":
|
||||||
|
device_meta["requiresDfu"] = True
|
||||||
|
|
||||||
|
device_meta.setdefault("displayName", pioenv)
|
||||||
|
device_meta.setdefault("activelySupported", False)
|
||||||
|
|
||||||
|
if device_meta:
|
||||||
|
manifest.update(device_meta)
|
||||||
|
|
||||||
# Write the manifest to the build directory
|
# Write the manifest to the build directory
|
||||||
with open(env.subst("$BUILD_DIR/${PROGNAME}.mt.json"), "w") as f:
|
with open(env.subst("$BUILD_DIR/${PROGNAME}.mt.json"), "w") as f:
|
||||||
json.dump(manifest, f, indent=2)
|
json.dump(manifest, f, indent=2)
|
||||||
@@ -166,8 +276,12 @@ def load_boot_logo(source, target, env):
|
|||||||
if ("HAS_TFT", 1) in env.get("CPPDEFINES", []):
|
if ("HAS_TFT", 1) in env.get("CPPDEFINES", []):
|
||||||
env.AddPreAction(f"$BUILD_DIR/{lfsbin}", load_boot_logo)
|
env.AddPreAction(f"$BUILD_DIR/{lfsbin}", load_boot_logo)
|
||||||
|
|
||||||
mtjson_deps = ["buildprog"]
|
board_arch = infer_architecture(env.BoardConfig())
|
||||||
if platform.name == "espressif32":
|
should_skip_manifest = board_arch is None
|
||||||
|
|
||||||
|
# For host/native envs, avoid depending on 'buildprog' (some targets don't define it)
|
||||||
|
mtjson_deps = [] if should_skip_manifest else ["buildprog"]
|
||||||
|
if not should_skip_manifest and platform.name == "espressif32":
|
||||||
# Build littlefs image as part of mtjson target
|
# Build littlefs image as part of mtjson target
|
||||||
# Equivalent to `pio run -t buildfs`
|
# Equivalent to `pio run -t buildfs`
|
||||||
target_lfs = env.DataToBin(
|
target_lfs = env.DataToBin(
|
||||||
@@ -175,11 +289,27 @@ if platform.name == "espressif32":
|
|||||||
)
|
)
|
||||||
mtjson_deps.append(target_lfs)
|
mtjson_deps.append(target_lfs)
|
||||||
|
|
||||||
env.AddCustomTarget(
|
if should_skip_manifest:
|
||||||
name="mtjson",
|
def skip_manifest(source, target, env):
|
||||||
dependencies=mtjson_deps,
|
print(f"mtjson: skipped for native environment: {env.get('PIOENV')}")
|
||||||
actions=[manifest_gather],
|
|
||||||
title="Meshtastic Manifest",
|
env.AddCustomTarget(
|
||||||
description="Generating Meshtastic manifest JSON + Checksums",
|
name="mtjson",
|
||||||
always_build=False,
|
dependencies=mtjson_deps,
|
||||||
)
|
actions=[skip_manifest],
|
||||||
|
title="Meshtastic Manifest (skipped)",
|
||||||
|
description="mtjson generation is skipped for native environments",
|
||||||
|
always_build=True,
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
env.AddCustomTarget(
|
||||||
|
name="mtjson",
|
||||||
|
dependencies=mtjson_deps,
|
||||||
|
actions=[manifest_gather],
|
||||||
|
title="Meshtastic Manifest",
|
||||||
|
description="Generating Meshtastic manifest JSON + Checksums",
|
||||||
|
always_build=True,
|
||||||
|
)
|
||||||
|
|
||||||
|
# Run manifest generation as part of the default build pipeline for non-native builds.
|
||||||
|
env.Default("mtjson")
|
||||||
|
|||||||
@@ -18,8 +18,9 @@ def readProps(prefsLoc):
|
|||||||
|
|
||||||
# Try to find current build SHA if if the workspace is clean. This could fail if git is not installed
|
# Try to find current build SHA if if the workspace is clean. This could fail if git is not installed
|
||||||
try:
|
try:
|
||||||
|
# Pin abbreviation length to keep local builds and CI matching (avoid auto-shortening)
|
||||||
sha = (
|
sha = (
|
||||||
subprocess.check_output(["git", "rev-parse", "--short", "HEAD"])
|
subprocess.check_output(["git", "rev-parse", "--short=7", "HEAD"])
|
||||||
.decode("utf-8")
|
.decode("utf-8")
|
||||||
.strip()
|
.strip()
|
||||||
)
|
)
|
||||||
|
|||||||
50
boards/t-beam-1w.json
Normal file
50
boards/t-beam-1w.json
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
{
|
||||||
|
"build": {
|
||||||
|
"arduino": {
|
||||||
|
"ldscript": "esp32s3_out.ld",
|
||||||
|
"memory_type": "qio_opi"
|
||||||
|
},
|
||||||
|
"core": "esp32",
|
||||||
|
"extra_flags": [
|
||||||
|
"-DBOARD_HAS_PSRAM",
|
||||||
|
"-DLILYGO_TBEAM_1W",
|
||||||
|
"-DARDUINO_USB_CDC_ON_BOOT=1",
|
||||||
|
"-DARDUINO_USB_MODE=0",
|
||||||
|
"-DARDUINO_RUNNING_CORE=1",
|
||||||
|
"-DARDUINO_EVENT_RUNNING_CORE=1"
|
||||||
|
],
|
||||||
|
"f_cpu": "240000000L",
|
||||||
|
"f_flash": "80000000L",
|
||||||
|
"flash_mode": "qio",
|
||||||
|
"psram_type": "opi",
|
||||||
|
"hwids": [
|
||||||
|
[
|
||||||
|
"0x303A",
|
||||||
|
"0x1001"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"mcu": "esp32s3",
|
||||||
|
"variant": "t-beam-1w"
|
||||||
|
},
|
||||||
|
"connectivity": [
|
||||||
|
"wifi",
|
||||||
|
"bluetooth",
|
||||||
|
"lora"
|
||||||
|
],
|
||||||
|
"debug": {
|
||||||
|
"openocd_target": "esp32s3.cfg"
|
||||||
|
},
|
||||||
|
"frameworks": [
|
||||||
|
"arduino"
|
||||||
|
],
|
||||||
|
"name": "LilyGo TBeam-1W",
|
||||||
|
"upload": {
|
||||||
|
"flash_size": "16MB",
|
||||||
|
"maximum_ram_size": 327680,
|
||||||
|
"maximum_size": 16777216,
|
||||||
|
"require_upload_port": true,
|
||||||
|
"speed": 921600
|
||||||
|
},
|
||||||
|
"url": "http://www.lilygo.cn/",
|
||||||
|
"vendor": "LilyGo"
|
||||||
|
}
|
||||||
@@ -444,6 +444,18 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// BME680 BSEC2 support detection
|
||||||
|
#if !defined(MESHTASTIC_BME680_BSEC2_SUPPORTED)
|
||||||
|
#if defined(RAK_4631) || defined(TBEAM_V10)
|
||||||
|
|
||||||
|
#define MESHTASTIC_BME680_BSEC2_SUPPORTED 1
|
||||||
|
#define MESHTASTIC_BME680_HEADER <bsec2.h>
|
||||||
|
#else
|
||||||
|
#define MESHTASTIC_BME680_BSEC2_SUPPORTED 0
|
||||||
|
#define MESHTASTIC_BME680_HEADER <Adafruit_BME680.h>
|
||||||
|
#endif // defined(RAK_4631)
|
||||||
|
#endif // !defined(MESHTASTIC_BME680_BSEC2_SUPPORTED)
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
// Global switches to turn off features for a minimized build
|
// Global switches to turn off features for a minimized build
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -449,13 +449,14 @@ void menuHandler::clockMenu()
|
|||||||
}
|
}
|
||||||
void menuHandler::messageResponseMenu()
|
void menuHandler::messageResponseMenu()
|
||||||
{
|
{
|
||||||
enum optionsNumbers { Back = 0, ViewMode, DeleteAll, DeleteOldest, ReplyMenu, Aloud, enumEnd };
|
enum optionsNumbers { Back = 0, ViewMode, DeleteAll, DeleteOldest, ReplyMenu, MuteChannel, Aloud, enumEnd };
|
||||||
|
|
||||||
static const char *optionsArray[enumEnd];
|
static const char *optionsArray[enumEnd];
|
||||||
static int optionsEnumArray[enumEnd];
|
static int optionsEnumArray[enumEnd];
|
||||||
int options = 0;
|
int options = 0;
|
||||||
|
|
||||||
auto mode = graphics::MessageRenderer::getThreadMode();
|
auto mode = graphics::MessageRenderer::getThreadMode();
|
||||||
|
int threadChannel = graphics::MessageRenderer::getThreadChannel();
|
||||||
|
|
||||||
optionsArray[options] = "Back";
|
optionsArray[options] = "Back";
|
||||||
optionsEnumArray[options++] = Back;
|
optionsEnumArray[options++] = Back;
|
||||||
@@ -467,6 +468,15 @@ void menuHandler::messageResponseMenu()
|
|||||||
optionsArray[options] = "View Chats";
|
optionsArray[options] = "View Chats";
|
||||||
optionsEnumArray[options++] = ViewMode;
|
optionsEnumArray[options++] = ViewMode;
|
||||||
|
|
||||||
|
// If viewing ALL chats, hide “Mute Chat”
|
||||||
|
if (mode != graphics::MessageRenderer::ThreadMode::ALL && mode != graphics::MessageRenderer::ThreadMode::DIRECT) {
|
||||||
|
const uint8_t chIndex = (threadChannel != 0) ? (uint8_t)threadChannel : channels.getPrimaryIndex();
|
||||||
|
auto &chan = channels.getByIndex(chIndex);
|
||||||
|
|
||||||
|
optionsArray[options] = chan.settings.module_settings.is_muted ? "Unmute Channel" : "Mute Channel";
|
||||||
|
optionsEnumArray[options++] = MuteChannel;
|
||||||
|
}
|
||||||
|
|
||||||
// Delete submenu
|
// Delete submenu
|
||||||
optionsArray[options] = "Delete";
|
optionsArray[options] = "Delete";
|
||||||
optionsEnumArray[options++] = 900;
|
optionsEnumArray[options++] = 900;
|
||||||
@@ -502,6 +512,14 @@ void menuHandler::messageResponseMenu()
|
|||||||
menuHandler::menuQueue = menuHandler::reply_menu;
|
menuHandler::menuQueue = menuHandler::reply_menu;
|
||||||
screen->runNow();
|
screen->runNow();
|
||||||
|
|
||||||
|
} else if (selected == MuteChannel) {
|
||||||
|
const uint8_t chIndex = (ch != 0) ? (uint8_t)ch : channels.getPrimaryIndex();
|
||||||
|
auto &chan = channels.getByIndex(chIndex);
|
||||||
|
if (chan.settings.has_module_settings) {
|
||||||
|
chan.settings.module_settings.is_muted = !chan.settings.module_settings.is_muted;
|
||||||
|
nodeDB->saveToDisk();
|
||||||
|
}
|
||||||
|
|
||||||
// Delete submenu
|
// Delete submenu
|
||||||
} else if (selected == 900) {
|
} else if (selected == 900) {
|
||||||
menuHandler::menuQueue = menuHandler::delete_messages_menu;
|
menuHandler::menuQueue = menuHandler::delete_messages_menu;
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
#include "configuration.h"
|
#include "configuration.h"
|
||||||
#include "mesh-pb-constants.h"
|
#include "mesh-pb-constants.h"
|
||||||
#include "meshUtils.h"
|
#include "meshUtils.h"
|
||||||
|
#include "modules/TextMessageModule.h"
|
||||||
#if !MESHTASTIC_EXCLUDE_TRACEROUTE
|
#if !MESHTASTIC_EXCLUDE_TRACEROUTE
|
||||||
#include "modules/TraceRouteModule.h"
|
#include "modules/TraceRouteModule.h"
|
||||||
#endif
|
#endif
|
||||||
@@ -35,6 +36,10 @@ bool FloodingRouter::shouldFilterReceived(const meshtastic_MeshPacket *p)
|
|||||||
return true; // we handled it, so stop processing
|
return true; // we handled it, so stop processing
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!seenRecently && !wasUpgraded && textMessageModule) {
|
||||||
|
seenRecently = textMessageModule->recentlySeen(p->id);
|
||||||
|
}
|
||||||
|
|
||||||
if (seenRecently) {
|
if (seenRecently) {
|
||||||
printPacket("Ignore dupe incoming msg", p);
|
printPacket("Ignore dupe incoming msg", p);
|
||||||
rxDupe++;
|
rxDupe++;
|
||||||
|
|||||||
@@ -246,7 +246,8 @@ uint32_t RadioInterface::getPacketTime(const meshtastic_MeshPacket *p, bool rece
|
|||||||
/** The delay to use for retransmitting dropped packets */
|
/** The delay to use for retransmitting dropped packets */
|
||||||
uint32_t RadioInterface::getRetransmissionMsec(const meshtastic_MeshPacket *p)
|
uint32_t RadioInterface::getRetransmissionMsec(const meshtastic_MeshPacket *p)
|
||||||
{
|
{
|
||||||
size_t numbytes = pb_encode_to_bytes(bytes, sizeof(bytes), &meshtastic_Data_msg, &p->decoded);
|
size_t numbytes =p->which_payload_variant == meshtastic_MeshPacket_decoded_tag ?
|
||||||
|
pb_encode_to_bytes(bytes, sizeof(bytes), &meshtastic_Data_msg, &p->decoded) : p->encrypted.size+MESHTASTIC_HEADER_LENGTH;
|
||||||
uint32_t packetAirtime = getPacketTime(numbytes + sizeof(PacketHeader));
|
uint32_t packetAirtime = getPacketTime(numbytes + sizeof(PacketHeader));
|
||||||
// Make sure enough time has elapsed for this packet to be sent and an ACK is received.
|
// Make sure enough time has elapsed for this packet to be sent and an ACK is received.
|
||||||
// LOG_DEBUG("Waiting for flooding message with airtime %d and slotTime is %d", packetAirtime, slotTimeMsec);
|
// LOG_DEBUG("Waiting for flooding message with airtime %d and slotTime is %d", packetAirtime, slotTimeMsec);
|
||||||
|
|||||||
@@ -62,6 +62,11 @@ template <typename T> bool SX126xInterface<T>::init()
|
|||||||
digitalWrite(LORA_PA_TX_EN, LOW);
|
digitalWrite(LORA_PA_TX_EN, LOW);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef RF95_FAN_EN
|
||||||
|
digitalWrite(RF95_FAN_EN, HIGH);
|
||||||
|
pinMode(RF95_FAN_EN, OUTPUT);
|
||||||
|
#endif
|
||||||
|
|
||||||
#if ARCH_PORTDUINO
|
#if ARCH_PORTDUINO
|
||||||
tcxoVoltage = (float)portduino_config.dio3_tcxo_voltage / 1000;
|
tcxoVoltage = (float)portduino_config.dio3_tcxo_voltage / 1000;
|
||||||
if (portduino_config.lora_sx126x_ant_sw_pin.pin != RADIOLIB_NC) {
|
if (portduino_config.lora_sx126x_ant_sw_pin.pin != RADIOLIB_NC) {
|
||||||
@@ -85,6 +90,13 @@ template <typename T> bool SX126xInterface<T>::init()
|
|||||||
power = -9;
|
power = -9;
|
||||||
|
|
||||||
int res = lora.begin(getFreq(), bw, sf, cr, syncWord, power, preambleLength, tcxoVoltage, useRegulatorLDO);
|
int res = lora.begin(getFreq(), bw, sf, cr, syncWord, power, preambleLength, tcxoVoltage, useRegulatorLDO);
|
||||||
|
|
||||||
|
#ifdef SX126X_PA_RAMP_US
|
||||||
|
// Set custom PA ramp time for boards requiring longer stabilization (e.g., T-Beam 1W needs >800us)
|
||||||
|
if (res == RADIOLIB_ERR_NONE) {
|
||||||
|
lora.setPaRampTime(SX126X_PA_RAMP_US);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
// \todo Display actual typename of the adapter, not just `SX126x`
|
// \todo Display actual typename of the adapter, not just `SX126x`
|
||||||
LOG_INFO("SX126x init result %d", res);
|
LOG_INFO("SX126x init result %d", res);
|
||||||
if (res == RADIOLIB_ERR_CHIP_NOT_FOUND || res == RADIOLIB_ERR_SPI_CMD_FAILED)
|
if (res == RADIOLIB_ERR_CHIP_NOT_FOUND || res == RADIOLIB_ERR_SPI_CMD_FAILED)
|
||||||
|
|||||||
@@ -45,9 +45,9 @@ int SystemCommandsModule::handleInputEvent(const InputEvent *event)
|
|||||||
// Mute
|
// Mute
|
||||||
case INPUT_BROKER_MSG_MUTE_TOGGLE:
|
case INPUT_BROKER_MSG_MUTE_TOGGLE:
|
||||||
if (moduleConfig.external_notification.enabled && externalNotificationModule) {
|
if (moduleConfig.external_notification.enabled && externalNotificationModule) {
|
||||||
externalNotificationModule->setMute(externalNotificationModule->getMute());
|
externalNotificationModule->setMute(!externalNotificationModule->getMute());
|
||||||
IF_SCREEN(if (!externalNotificationModule->getMute()) externalNotificationModule->stopNow(); screen->showSimpleBanner(
|
IF_SCREEN(if (!externalNotificationModule->getMute()) externalNotificationModule->stopNow(); screen->showSimpleBanner(
|
||||||
externalNotificationModule->getMute() ? "Notifications\nEnabled" : "Notifications\nDisabled", 3000);)
|
externalNotificationModule->getMute() ? "Notifications\nDisabled" : "Notifications\nEnabled", 3000);)
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
// Bluetooth
|
// Bluetooth
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ extern void drawCommonHeader(OLEDDisplay *display, int16_t x, int16_t y, const c
|
|||||||
#include "Sensor/LTR390UVSensor.h"
|
#include "Sensor/LTR390UVSensor.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if __has_include(<bsec2.h>)
|
#if __has_include(MESHTASTIC_BME680_HEADER)
|
||||||
#include "Sensor/BME680Sensor.h"
|
#include "Sensor/BME680Sensor.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -214,7 +214,7 @@ void EnvironmentTelemetryModule::i2cScanFinished(ScanI2C *i2cScanner)
|
|||||||
#if __has_include(<Adafruit_LTR390.h>)
|
#if __has_include(<Adafruit_LTR390.h>)
|
||||||
addSensor<LTR390UVSensor>(i2cScanner, ScanI2C::DeviceType::LTR390UV);
|
addSensor<LTR390UVSensor>(i2cScanner, ScanI2C::DeviceType::LTR390UV);
|
||||||
#endif
|
#endif
|
||||||
#if __has_include(<bsec2.h>)
|
#if __has_include(MESHTASTIC_BME680_HEADER)
|
||||||
addSensor<BME680Sensor>(i2cScanner, ScanI2C::DeviceType::BME_680);
|
addSensor<BME680Sensor>(i2cScanner, ScanI2C::DeviceType::BME_680);
|
||||||
#endif
|
#endif
|
||||||
#if __has_include(<Adafruit_BMP280.h>)
|
#if __has_include(<Adafruit_BMP280.h>)
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#include "configuration.h"
|
#include "configuration.h"
|
||||||
|
|
||||||
#if !MESHTASTIC_EXCLUDE_ENVIRONMENTAL_SENSOR && __has_include(<bsec2.h>)
|
#if !MESHTASTIC_EXCLUDE_ENVIRONMENTAL_SENSOR && __has_include(MESHTASTIC_BME680_HEADER)
|
||||||
|
|
||||||
#include "../mesh/generated/meshtastic/telemetry.pb.h"
|
#include "../mesh/generated/meshtastic/telemetry.pb.h"
|
||||||
#include "BME680Sensor.h"
|
#include "BME680Sensor.h"
|
||||||
@@ -10,6 +10,7 @@
|
|||||||
|
|
||||||
BME680Sensor::BME680Sensor() : TelemetrySensor(meshtastic_TelemetrySensorType_BME680, "BME680") {}
|
BME680Sensor::BME680Sensor() : TelemetrySensor(meshtastic_TelemetrySensorType_BME680, "BME680") {}
|
||||||
|
|
||||||
|
#if MESHTASTIC_BME680_BSEC2_SUPPORTED == 1
|
||||||
int32_t BME680Sensor::runOnce()
|
int32_t BME680Sensor::runOnce()
|
||||||
{
|
{
|
||||||
if (!bme680.run()) {
|
if (!bme680.run()) {
|
||||||
@@ -17,10 +18,13 @@ int32_t BME680Sensor::runOnce()
|
|||||||
}
|
}
|
||||||
return 35;
|
return 35;
|
||||||
}
|
}
|
||||||
|
#endif // defined(MESHTASTIC_BME680_BSEC2_SUPPORTED)
|
||||||
|
|
||||||
bool BME680Sensor::initDevice(TwoWire *bus, ScanI2C::FoundDevice *dev)
|
bool BME680Sensor::initDevice(TwoWire *bus, ScanI2C::FoundDevice *dev)
|
||||||
{
|
{
|
||||||
status = 0;
|
status = 0;
|
||||||
|
|
||||||
|
#if MESHTASTIC_BME680_BSEC2_SUPPORTED == 1
|
||||||
if (!bme680.begin(dev->address.address, *bus))
|
if (!bme680.begin(dev->address.address, *bus))
|
||||||
checkStatus("begin");
|
checkStatus("begin");
|
||||||
|
|
||||||
@@ -42,12 +46,25 @@ bool BME680Sensor::initDevice(TwoWire *bus, ScanI2C::FoundDevice *dev)
|
|||||||
if (status == 0)
|
if (status == 0)
|
||||||
LOG_DEBUG("BME680Sensor::runOnce: bme680.status %d", bme680.status);
|
LOG_DEBUG("BME680Sensor::runOnce: bme680.status %d", bme680.status);
|
||||||
|
|
||||||
|
#else
|
||||||
|
bme680 = makeBME680(bus);
|
||||||
|
|
||||||
|
if (!bme680->begin(dev->address.address)) {
|
||||||
|
LOG_ERROR("Init sensor: %s failed at begin()", sensorName);
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
|
||||||
|
status = 1;
|
||||||
|
|
||||||
|
#endif // MESHTASTIC_BME680_BSEC2_SUPPORTED
|
||||||
|
|
||||||
initI2CSensor();
|
initI2CSensor();
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool BME680Sensor::getMetrics(meshtastic_Telemetry *measurement)
|
bool BME680Sensor::getMetrics(meshtastic_Telemetry *measurement)
|
||||||
{
|
{
|
||||||
|
#if MESHTASTIC_BME680_BSEC2_SUPPORTED == 1
|
||||||
if (bme680.getData(BSEC_OUTPUT_RAW_PRESSURE).signal == 0)
|
if (bme680.getData(BSEC_OUTPUT_RAW_PRESSURE).signal == 0)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
@@ -65,9 +82,27 @@ bool BME680Sensor::getMetrics(meshtastic_Telemetry *measurement)
|
|||||||
// Check if we need to save state to filesystem (every STATE_SAVE_PERIOD ms)
|
// Check if we need to save state to filesystem (every STATE_SAVE_PERIOD ms)
|
||||||
measurement->variant.environment_metrics.iaq = bme680.getData(BSEC_OUTPUT_IAQ).signal;
|
measurement->variant.environment_metrics.iaq = bme680.getData(BSEC_OUTPUT_IAQ).signal;
|
||||||
updateState();
|
updateState();
|
||||||
|
#else
|
||||||
|
if (!bme680->performReading()) {
|
||||||
|
LOG_ERROR("BME680Sensor::getMetrics: performReading failed");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
measurement->variant.environment_metrics.has_temperature = true;
|
||||||
|
measurement->variant.environment_metrics.has_relative_humidity = true;
|
||||||
|
measurement->variant.environment_metrics.has_barometric_pressure = true;
|
||||||
|
measurement->variant.environment_metrics.has_gas_resistance = true;
|
||||||
|
|
||||||
|
measurement->variant.environment_metrics.temperature = bme680->readTemperature();
|
||||||
|
measurement->variant.environment_metrics.relative_humidity = bme680->readHumidity();
|
||||||
|
measurement->variant.environment_metrics.barometric_pressure = bme680->readPressure() / 100.0F;
|
||||||
|
measurement->variant.environment_metrics.gas_resistance = bme680->readGas() / 1000.0;
|
||||||
|
|
||||||
|
#endif // MESHTASTIC_BME680_BSEC2_SUPPORTED
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if MESHTASTIC_BME680_BSEC2_SUPPORTED == 1
|
||||||
void BME680Sensor::loadState()
|
void BME680Sensor::loadState()
|
||||||
{
|
{
|
||||||
#ifdef FSCom
|
#ifdef FSCom
|
||||||
@@ -144,5 +179,6 @@ void BME680Sensor::checkStatus(const char *functionName)
|
|||||||
else if (bme680.sensor.status > BME68X_OK)
|
else if (bme680.sensor.status > BME68X_OK)
|
||||||
LOG_WARN("%s BME68X code: %d", functionName, bme680.sensor.status);
|
LOG_WARN("%s BME68X code: %d", functionName, bme680.sensor.status);
|
||||||
}
|
}
|
||||||
|
#endif // MESHTASTIC_BME680_BSEC2_SUPPORTED
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -1,23 +1,40 @@
|
|||||||
#include "configuration.h"
|
#include "configuration.h"
|
||||||
|
|
||||||
#if !MESHTASTIC_EXCLUDE_ENVIRONMENTAL_SENSOR && __has_include(<bsec2.h>)
|
#if !MESHTASTIC_EXCLUDE_ENVIRONMENTAL_SENSOR && __has_include(MESHTASTIC_BME680_HEADER)
|
||||||
|
|
||||||
#include "../mesh/generated/meshtastic/telemetry.pb.h"
|
#include "../mesh/generated/meshtastic/telemetry.pb.h"
|
||||||
#include "TelemetrySensor.h"
|
#include "TelemetrySensor.h"
|
||||||
|
|
||||||
|
#if MESHTASTIC_BME680_BSEC2_SUPPORTED == 1
|
||||||
|
#include <bme68xLibrary.h>
|
||||||
#include <bsec2.h>
|
#include <bsec2.h>
|
||||||
|
#else
|
||||||
|
#include <Adafruit_BME680.h>
|
||||||
|
#include <memory>
|
||||||
|
#endif // MESHTASTIC_BME680_BSEC2_SUPPORTED
|
||||||
|
|
||||||
#define STATE_SAVE_PERIOD UINT32_C(360 * 60 * 1000) // That's 6 hours worth of millis()
|
#define STATE_SAVE_PERIOD UINT32_C(360 * 60 * 1000) // That's 6 hours worth of millis()
|
||||||
|
|
||||||
|
#if MESHTASTIC_BME680_BSEC2_SUPPORTED == 1
|
||||||
const uint8_t bsec_config[] = {
|
const uint8_t bsec_config[] = {
|
||||||
#include "config/bme680/bme680_iaq_33v_3s_4d/bsec_iaq.txt"
|
#include "config/bme680/bme680_iaq_33v_3s_4d/bsec_iaq.txt"
|
||||||
};
|
};
|
||||||
|
#endif // MESHTASTIC_BME680_BSEC2_SUPPORTED
|
||||||
class BME680Sensor : public TelemetrySensor
|
class BME680Sensor : public TelemetrySensor
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
|
#if MESHTASTIC_BME680_BSEC2_SUPPORTED == 1
|
||||||
Bsec2 bme680;
|
Bsec2 bme680;
|
||||||
|
#else
|
||||||
|
using BME680Ptr = std::unique_ptr<Adafruit_BME680>;
|
||||||
|
|
||||||
|
static BME680Ptr makeBME680(TwoWire *bus) { return std::make_unique<Adafruit_BME680>(bus); }
|
||||||
|
|
||||||
|
BME680Ptr bme680;
|
||||||
|
#endif // MESHTASTIC_BME680_BSEC2_SUPPORTED
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
#if MESHTASTIC_BME680_BSEC2_SUPPORTED == 1
|
||||||
const char *bsecConfigFileName = "/prefs/bsec.dat";
|
const char *bsecConfigFileName = "/prefs/bsec.dat";
|
||||||
uint8_t bsecState[BSEC_MAX_STATE_BLOB_SIZE] = {0};
|
uint8_t bsecState[BSEC_MAX_STATE_BLOB_SIZE] = {0};
|
||||||
uint8_t accuracy = 0;
|
uint8_t accuracy = 0;
|
||||||
@@ -34,10 +51,13 @@ class BME680Sensor : public TelemetrySensor
|
|||||||
void loadState();
|
void loadState();
|
||||||
void updateState();
|
void updateState();
|
||||||
void checkStatus(const char *functionName);
|
void checkStatus(const char *functionName);
|
||||||
|
#endif // MESHTASTIC_BME680_BSEC2_SUPPORTED
|
||||||
|
|
||||||
public:
|
public:
|
||||||
BME680Sensor();
|
BME680Sensor();
|
||||||
|
#if MESHTASTIC_BME680_BSEC2_SUPPORTED == 1
|
||||||
virtual int32_t runOnce() override;
|
virtual int32_t runOnce() override;
|
||||||
|
#endif // MESHTASTIC_BME680_BSEC2_SUPPORTED
|
||||||
virtual bool getMetrics(meshtastic_Telemetry *measurement) override;
|
virtual bool getMetrics(meshtastic_Telemetry *measurement) override;
|
||||||
virtual bool initDevice(TwoWire *bus, ScanI2C::FoundDevice *dev) override;
|
virtual bool initDevice(TwoWire *bus, ScanI2C::FoundDevice *dev) override;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -17,6 +17,9 @@ ProcessMessage TextMessageModule::handleReceived(const meshtastic_MeshPacket &mp
|
|||||||
auto &p = mp.decoded;
|
auto &p = mp.decoded;
|
||||||
LOG_INFO("Received text msg from=0x%0x, id=0x%x, msg=%.*s", mp.from, mp.id, p.payload.size, p.payload.bytes);
|
LOG_INFO("Received text msg from=0x%0x, id=0x%x, msg=%.*s", mp.from, mp.id, p.payload.size, p.payload.bytes);
|
||||||
#endif
|
#endif
|
||||||
|
// add packet ID to the rolling list of packets
|
||||||
|
textPacketList[textPacketListIndex] = mp.id;
|
||||||
|
textPacketListIndex = (textPacketListIndex + 1) % TEXT_PACKET_LIST_SIZE;
|
||||||
|
|
||||||
// We only store/display messages destined for us.
|
// We only store/display messages destined for us.
|
||||||
devicestate.rx_text_message = mp;
|
devicestate.rx_text_message = mp;
|
||||||
@@ -47,3 +50,13 @@ bool TextMessageModule::wantPacket(const meshtastic_MeshPacket *p)
|
|||||||
{
|
{
|
||||||
return MeshService::isTextPayload(p);
|
return MeshService::isTextPayload(p);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool TextMessageModule::recentlySeen(uint32_t id)
|
||||||
|
{
|
||||||
|
for (size_t i = 0; i < TEXT_PACKET_LIST_SIZE; i++) {
|
||||||
|
if (textPacketList[i] != 0 && textPacketList[i] == id) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
#include "Observer.h"
|
#include "Observer.h"
|
||||||
#include "SinglePortModule.h"
|
#include "SinglePortModule.h"
|
||||||
|
#define TEXT_PACKET_LIST_SIZE 50
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Text message handling for Meshtastic.
|
* Text message handling for Meshtastic.
|
||||||
@@ -19,6 +20,8 @@ class TextMessageModule : public SinglePortModule, public Observable<const mesht
|
|||||||
*/
|
*/
|
||||||
TextMessageModule() : SinglePortModule("text", meshtastic_PortNum_TEXT_MESSAGE_APP) {}
|
TextMessageModule() : SinglePortModule("text", meshtastic_PortNum_TEXT_MESSAGE_APP) {}
|
||||||
|
|
||||||
|
bool recentlySeen(uint32_t id);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
/** Called to handle a particular incoming message
|
/** Called to handle a particular incoming message
|
||||||
*
|
*
|
||||||
@@ -27,6 +30,10 @@ class TextMessageModule : public SinglePortModule, public Observable<const mesht
|
|||||||
*/
|
*/
|
||||||
virtual ProcessMessage handleReceived(const meshtastic_MeshPacket &mp) override;
|
virtual ProcessMessage handleReceived(const meshtastic_MeshPacket &mp) override;
|
||||||
virtual bool wantPacket(const meshtastic_MeshPacket *p) override;
|
virtual bool wantPacket(const meshtastic_MeshPacket *p) override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
uint32_t textPacketList[TEXT_PACKET_LIST_SIZE] = {0};
|
||||||
|
size_t textPacketListIndex = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
extern TextMessageModule *textMessageModule;
|
extern TextMessageModule *textMessageModule;
|
||||||
@@ -1,5 +1,12 @@
|
|||||||
; Port to Disaster Radio's ESP32-v3 Dev Board
|
; Port to Disaster Radio's ESP32-v3 Dev Board
|
||||||
[env:meshtastic-dr-dev]
|
[env:meshtastic-dr-dev]
|
||||||
|
custom_meshtastic_hw_model = 41
|
||||||
|
custom_meshtastic_hw_model_slug = DR_DEV
|
||||||
|
custom_meshtastic_architecture = esp32
|
||||||
|
custom_meshtastic_actively_supported = false
|
||||||
|
custom_meshtastic_display_name = DR-DEV
|
||||||
|
custom_meshtastic_tags = DIY
|
||||||
|
|
||||||
extends = esp32_base
|
extends = esp32_base
|
||||||
board = esp32doit-devkit-v1
|
board = esp32doit-devkit-v1
|
||||||
board_level = extra
|
board_level = extra
|
||||||
|
|||||||
@@ -1,5 +1,13 @@
|
|||||||
; Hydra - Meshtastic DIY v1 hardware with some specific changes
|
; Hydra - Meshtastic DIY v1 hardware with some specific changes
|
||||||
[env:hydra]
|
[env:hydra]
|
||||||
|
custom_meshtastic_hw_model = 39
|
||||||
|
custom_meshtastic_hw_model_slug = HYDRA
|
||||||
|
custom_meshtastic_architecture = esp32
|
||||||
|
custom_meshtastic_actively_supported = true
|
||||||
|
custom_meshtastic_support_level = 3
|
||||||
|
custom_meshtastic_display_name = Hydra
|
||||||
|
custom_meshtastic_tags = DIY
|
||||||
|
|
||||||
extends = esp32_base
|
extends = esp32_base
|
||||||
board = esp32doit-devkit-v1
|
board = esp32doit-devkit-v1
|
||||||
build_flags =
|
build_flags =
|
||||||
|
|||||||
@@ -1,5 +1,14 @@
|
|||||||
; Meshtastic DIY v1 by Nano VHF Schematic based on ESP32-WROOM-32 (38 pins) devkit & EBYTE E22 SX1262/SX1268 module
|
; Meshtastic DIY v1 by Nano VHF Schematic based on ESP32-WROOM-32 (38 pins) devkit & EBYTE E22 SX1262/SX1268 module
|
||||||
[env:meshtastic-diy-v1]
|
[env:meshtastic-diy-v1]
|
||||||
|
custom_meshtastic_hw_model = 39
|
||||||
|
custom_meshtastic_hw_model_slug = DIY_V1
|
||||||
|
custom_meshtastic_architecture = esp32
|
||||||
|
custom_meshtastic_actively_supported = true
|
||||||
|
custom_meshtastic_support_level = 3
|
||||||
|
custom_meshtastic_display_name = DIY V1
|
||||||
|
custom_meshtastic_images = diy.svg
|
||||||
|
custom_meshtastic_tags = DIY
|
||||||
|
|
||||||
extends = esp32_base
|
extends = esp32_base
|
||||||
board = esp32doit-devkit-v1
|
board = esp32doit-devkit-v1
|
||||||
board_check = true
|
board_check = true
|
||||||
|
|||||||
@@ -1,4 +1,11 @@
|
|||||||
[env:heltec-v1]
|
[env:heltec-v1]
|
||||||
|
custom_meshtastic_hw_model = 11
|
||||||
|
custom_meshtastic_hw_model_slug = HELTEC_V1
|
||||||
|
custom_meshtastic_architecture = esp32
|
||||||
|
custom_meshtastic_actively_supported = false
|
||||||
|
custom_meshtastic_display_name = Heltec V1
|
||||||
|
custom_meshtastic_tags = Heltec
|
||||||
|
|
||||||
;build_type = debug ; to make it possible to step through our jtag debugger
|
;build_type = debug ; to make it possible to step through our jtag debugger
|
||||||
extends = esp32_base
|
extends = esp32_base
|
||||||
board_level = extra
|
board_level = extra
|
||||||
|
|||||||
@@ -1,4 +1,11 @@
|
|||||||
[env:heltec-v2_1]
|
[env:heltec-v2_1]
|
||||||
|
custom_meshtastic_hw_model = 10
|
||||||
|
custom_meshtastic_hw_model_slug = HELTEC_V2_1
|
||||||
|
custom_meshtastic_architecture = esp32
|
||||||
|
custom_meshtastic_actively_supported = false
|
||||||
|
custom_meshtastic_display_name = Heltec V2.1
|
||||||
|
custom_meshtastic_tags = Heltec
|
||||||
|
|
||||||
board_level = extra
|
board_level = extra
|
||||||
;build_type = debug ; to make it possible to step through our jtag debugger
|
;build_type = debug ; to make it possible to step through our jtag debugger
|
||||||
extends = esp32_base
|
extends = esp32_base
|
||||||
|
|||||||
@@ -1,4 +1,11 @@
|
|||||||
[env:heltec-v2_0]
|
[env:heltec-v2_0]
|
||||||
|
custom_meshtastic_hw_model = 5
|
||||||
|
custom_meshtastic_hw_model_slug = HELTEC_V2_0
|
||||||
|
custom_meshtastic_architecture = esp32
|
||||||
|
custom_meshtastic_actively_supported = false
|
||||||
|
custom_meshtastic_display_name = Heltec V2.0
|
||||||
|
custom_meshtastic_tags = Heltec
|
||||||
|
|
||||||
;build_type = debug ; to make it possible to step through our jtag debugger
|
;build_type = debug ; to make it possible to step through our jtag debugger
|
||||||
board_level = extra
|
board_level = extra
|
||||||
extends = esp32_base
|
extends = esp32_base
|
||||||
|
|||||||
@@ -1,4 +1,12 @@
|
|||||||
[env:m5stack-core]
|
[env:m5stack-core]
|
||||||
|
custom_meshtastic_hw_model = 42
|
||||||
|
custom_meshtastic_hw_model_slug = M5STACK
|
||||||
|
custom_meshtastic_architecture = esp32
|
||||||
|
custom_meshtastic_actively_supported = true
|
||||||
|
custom_meshtastic_support_level = 3
|
||||||
|
custom_meshtastic_display_name = M5 Stack
|
||||||
|
custom_meshtastic_tags = M5Stack
|
||||||
|
|
||||||
extends = esp32_base
|
extends = esp32_base
|
||||||
board = m5stack-core-esp32
|
board = m5stack-core-esp32
|
||||||
monitor_filters = esp32_exception_decoder
|
monitor_filters = esp32_exception_decoder
|
||||||
|
|||||||
@@ -1,5 +1,13 @@
|
|||||||
; The 1.0 release of the nano-g1-explorer board
|
; The 1.0 release of the nano-g1-explorer board
|
||||||
[env:nano-g1-explorer]
|
[env:nano-g1-explorer]
|
||||||
|
custom_meshtastic_hw_model = 17
|
||||||
|
custom_meshtastic_hw_model_slug = NANO_G1_EXPLORER
|
||||||
|
custom_meshtastic_architecture = esp32
|
||||||
|
custom_meshtastic_actively_supported = true
|
||||||
|
custom_meshtastic_support_level = 3
|
||||||
|
custom_meshtastic_display_name = Nano G1 Explorer
|
||||||
|
custom_meshtastic_tags = B&Q
|
||||||
|
|
||||||
extends = esp32_base
|
extends = esp32_base
|
||||||
board = ttgo-t-beam
|
board = ttgo-t-beam
|
||||||
build_flags =
|
build_flags =
|
||||||
|
|||||||
@@ -1,5 +1,13 @@
|
|||||||
; The 1.0 release of the nano-g1 board
|
; The 1.0 release of the nano-g1 board
|
||||||
[env:nano-g1]
|
[env:nano-g1]
|
||||||
|
custom_meshtastic_hw_model = 14
|
||||||
|
custom_meshtastic_hw_model_slug = NANO_G1
|
||||||
|
custom_meshtastic_architecture = esp32
|
||||||
|
custom_meshtastic_actively_supported = true
|
||||||
|
custom_meshtastic_support_level = 3
|
||||||
|
custom_meshtastic_display_name = Nano G1
|
||||||
|
custom_meshtastic_tags = B&Q
|
||||||
|
|
||||||
extends = esp32_base
|
extends = esp32_base
|
||||||
board = ttgo-t-beam
|
board = ttgo-t-beam
|
||||||
build_flags =
|
build_flags =
|
||||||
|
|||||||
@@ -1,4 +1,12 @@
|
|||||||
[env:radiomaster_900_bandit_nano]
|
[env:radiomaster_900_bandit_nano]
|
||||||
|
custom_meshtastic_hw_model = 64
|
||||||
|
custom_meshtastic_hw_model_slug = RADIOMASTER_900_BANDIT_NANO
|
||||||
|
custom_meshtastic_architecture = esp32
|
||||||
|
custom_meshtastic_actively_supported = true
|
||||||
|
custom_meshtastic_support_level = 2
|
||||||
|
custom_meshtastic_display_name = RadioMaster 900 Bandit Nano
|
||||||
|
custom_meshtastic_tags = RadioMaster
|
||||||
|
|
||||||
extends = esp32_base
|
extends = esp32_base
|
||||||
board = esp32doit-devkit-v1
|
board = esp32doit-devkit-v1
|
||||||
build_flags =
|
build_flags =
|
||||||
|
|||||||
@@ -1,4 +1,13 @@
|
|||||||
[env:rak11200]
|
[env:rak11200]
|
||||||
|
custom_meshtastic_hw_model = 13
|
||||||
|
custom_meshtastic_hw_model_slug = RAK11200
|
||||||
|
custom_meshtastic_architecture = esp32
|
||||||
|
custom_meshtastic_actively_supported = true
|
||||||
|
custom_meshtastic_support_level = 3
|
||||||
|
custom_meshtastic_display_name = RAK WisBlock 11200
|
||||||
|
custom_meshtastic_images = rak11200.svg
|
||||||
|
custom_meshtastic_tags = RAK
|
||||||
|
|
||||||
extends = esp32_base
|
extends = esp32_base
|
||||||
board = wiscore_rak11200
|
board = wiscore_rak11200
|
||||||
board_level = pr
|
board_level = pr
|
||||||
|
|||||||
@@ -1,5 +1,13 @@
|
|||||||
; The 1.0 release of the nano-g1 board
|
; The 1.0 release of the nano-g1 board
|
||||||
[env:station-g1]
|
[env:station-g1]
|
||||||
|
custom_meshtastic_hw_model = 25
|
||||||
|
custom_meshtastic_hw_model_slug = STATION_G1
|
||||||
|
custom_meshtastic_architecture = esp32
|
||||||
|
custom_meshtastic_actively_supported = true
|
||||||
|
custom_meshtastic_support_level = 3
|
||||||
|
custom_meshtastic_display_name = Station G1
|
||||||
|
custom_meshtastic_tags = B&Q
|
||||||
|
|
||||||
extends = esp32_base
|
extends = esp32_base
|
||||||
board = ttgo-t-beam
|
board = ttgo-t-beam
|
||||||
build_flags =
|
build_flags =
|
||||||
|
|||||||
@@ -1,5 +1,14 @@
|
|||||||
; The 1.0 release of the TBEAM board
|
; The 1.0 release of the TBEAM board
|
||||||
[env:tbeam]
|
[env:tbeam]
|
||||||
|
custom_meshtastic_hw_model = 4
|
||||||
|
custom_meshtastic_hw_model_slug = TBEAM
|
||||||
|
custom_meshtastic_architecture = esp32
|
||||||
|
custom_meshtastic_actively_supported = true
|
||||||
|
custom_meshtastic_support_level = 3
|
||||||
|
custom_meshtastic_display_name = LILYGO T-Beam
|
||||||
|
custom_meshtastic_images = tbeam.svg
|
||||||
|
custom_meshtastic_tags = LilyGo
|
||||||
|
|
||||||
extends = esp32_base
|
extends = esp32_base
|
||||||
board = ttgo-t-beam
|
board = ttgo-t-beam
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,12 @@
|
|||||||
; The original TBEAM board without the AXP power chip and a few other changes
|
; The original TBEAM board without the AXP power chip and a few other changes
|
||||||
[env:tbeam0_7]
|
[env:tbeam0_7]
|
||||||
|
custom_meshtastic_hw_model = 6
|
||||||
|
custom_meshtastic_hw_model_slug = TBEAM_V0P7
|
||||||
|
custom_meshtastic_architecture = esp32
|
||||||
|
custom_meshtastic_actively_supported = false
|
||||||
|
custom_meshtastic_display_name = LILYGO T-Beam V0.7
|
||||||
|
custom_meshtastic_tags = LilyGo
|
||||||
|
|
||||||
board_level = extra
|
board_level = extra
|
||||||
extends = esp32_base
|
extends = esp32_base
|
||||||
board = ttgo-t-beam
|
board = ttgo-t-beam
|
||||||
|
|||||||
@@ -1,4 +1,11 @@
|
|||||||
[env:tlora-v1]
|
[env:tlora-v1]
|
||||||
|
custom_meshtastic_hw_model = 2
|
||||||
|
custom_meshtastic_hw_model_slug = TLORA_V1
|
||||||
|
custom_meshtastic_architecture = esp32
|
||||||
|
custom_meshtastic_actively_supported = false
|
||||||
|
custom_meshtastic_display_name = LILYGO T-LoRa V1
|
||||||
|
custom_meshtastic_tags = LilyGo
|
||||||
|
|
||||||
board_level = extra
|
board_level = extra
|
||||||
extends = esp32_base
|
extends = esp32_base
|
||||||
board = ttgo-lora32-v1
|
board = ttgo-lora32-v1
|
||||||
|
|||||||
@@ -1,4 +1,11 @@
|
|||||||
[env:tlora-v2]
|
[env:tlora-v2]
|
||||||
|
custom_meshtastic_hw_model = 1
|
||||||
|
custom_meshtastic_hw_model_slug = TLORA_V2
|
||||||
|
custom_meshtastic_architecture = esp32
|
||||||
|
custom_meshtastic_actively_supported = false
|
||||||
|
custom_meshtastic_display_name = LILYGO T-LoRa V2
|
||||||
|
custom_meshtastic_tags = LilyGo
|
||||||
|
|
||||||
board_level = extra
|
board_level = extra
|
||||||
extends = esp32_base
|
extends = esp32_base
|
||||||
board = ttgo-lora32-v1
|
board = ttgo-lora32-v1
|
||||||
|
|||||||
@@ -1,4 +1,13 @@
|
|||||||
[env:tlora-v2-1-1_6]
|
[env:tlora-v2-1-1_6]
|
||||||
|
custom_meshtastic_hw_model = 3
|
||||||
|
custom_meshtastic_hw_model_slug = TLORA_V2_1_1P6
|
||||||
|
custom_meshtastic_architecture = esp32
|
||||||
|
custom_meshtastic_actively_supported = true
|
||||||
|
custom_meshtastic_support_level = 3
|
||||||
|
custom_meshtastic_display_name = LILYGO T-LoRa V2.1-1.6
|
||||||
|
custom_meshtastic_images = tlora-v2-1-1_6.svg
|
||||||
|
custom_meshtastic_tags = LilyGo
|
||||||
|
|
||||||
extends = esp32_base
|
extends = esp32_base
|
||||||
board = ttgo-lora32-v21
|
board = ttgo-lora32-v21
|
||||||
board_check = true
|
board_check = true
|
||||||
|
|||||||
@@ -1,4 +1,13 @@
|
|||||||
[env:tlora-v2-1-1_8]
|
[env:tlora-v2-1-1_8]
|
||||||
|
custom_meshtastic_hw_model = 15
|
||||||
|
custom_meshtastic_hw_model_slug = TLORA_V2_1_1P8
|
||||||
|
custom_meshtastic_architecture = esp32
|
||||||
|
custom_meshtastic_actively_supported = true
|
||||||
|
custom_meshtastic_support_level = 3
|
||||||
|
custom_meshtastic_display_name = LILYGO T-LoRa V2.1-1.8
|
||||||
|
custom_meshtastic_images = tlora-v2-1-1_8.svg
|
||||||
|
custom_meshtastic_tags = LilyGo, 2.4GHz
|
||||||
|
|
||||||
extends = esp32_base
|
extends = esp32_base
|
||||||
board_level = extra
|
board_level = extra
|
||||||
board = ttgo-lora32-v21
|
board = ttgo-lora32-v21
|
||||||
|
|||||||
@@ -1,4 +1,13 @@
|
|||||||
[env:heltec-ht62-esp32c3-sx1262]
|
[env:heltec-ht62-esp32c3-sx1262]
|
||||||
|
custom_meshtastic_hw_model = 53
|
||||||
|
custom_meshtastic_hw_model_slug = HELTEC_HT62
|
||||||
|
custom_meshtastic_architecture = esp32-c3
|
||||||
|
custom_meshtastic_actively_supported = true
|
||||||
|
custom_meshtastic_support_level = 1
|
||||||
|
custom_meshtastic_display_name = Heltec HT62
|
||||||
|
custom_meshtastic_images = heltec-ht62-esp32c3-sx1262.svg
|
||||||
|
custom_meshtastic_tags = Heltec
|
||||||
|
|
||||||
extends = esp32c3_base
|
extends = esp32c3_base
|
||||||
board = esp32-c3-devkitm-1
|
board = esp32-c3-devkitm-1
|
||||||
board_level = pr
|
board_level = pr
|
||||||
|
|||||||
@@ -1,4 +1,13 @@
|
|||||||
[env:m5stack-unitc6l]
|
[env:m5stack-unitc6l]
|
||||||
|
custom_meshtastic_hw_model = 111
|
||||||
|
custom_meshtastic_hw_model_slug = M5STACK_C6L
|
||||||
|
custom_meshtastic_architecture = esp32-c6
|
||||||
|
custom_meshtastic_actively_supported = true
|
||||||
|
custom_meshtastic_support_level = 1
|
||||||
|
custom_meshtastic_display_name = M5Stack Unit C6L
|
||||||
|
custom_meshtastic_images = m5_c6l.svg
|
||||||
|
custom_meshtastic_tags = M5Stack
|
||||||
|
|
||||||
extends = esp32c6_base
|
extends = esp32c6_base
|
||||||
board = esp32-c6-devkitc-1
|
board = esp32-c6-devkitc-1
|
||||||
;OpenOCD flash method
|
;OpenOCD flash method
|
||||||
|
|||||||
@@ -1,4 +1,13 @@
|
|||||||
[env:CDEBYTE_EoRa-S3]
|
[env:CDEBYTE_EoRa-S3]
|
||||||
|
custom_meshtastic_hw_model = 61
|
||||||
|
custom_meshtastic_hw_model_slug = CDEBYTE_EORA_S3
|
||||||
|
custom_meshtastic_architecture = esp32-s3
|
||||||
|
custom_meshtastic_actively_supported = true
|
||||||
|
custom_meshtastic_support_level = 3
|
||||||
|
custom_meshtastic_display_name = EBYTE EoRa-S3
|
||||||
|
custom_meshtastic_tags = EByte
|
||||||
|
custom_meshtastic_requires_dfu = true
|
||||||
|
|
||||||
extends = esp32s3_base
|
extends = esp32s3_base
|
||||||
board = CDEBYTE_EoRa-S3
|
board = CDEBYTE_EoRa-S3
|
||||||
build_flags =
|
build_flags =
|
||||||
|
|||||||
@@ -1,4 +1,14 @@
|
|||||||
[env:thinknode_m2]
|
[env:thinknode_m2]
|
||||||
|
custom_meshtastic_hw_model = 90
|
||||||
|
custom_meshtastic_hw_model_slug = THINKNODE_M2
|
||||||
|
custom_meshtastic_architecture = esp32-s3
|
||||||
|
custom_meshtastic_actively_supported = true
|
||||||
|
custom_meshtastic_support_level = 1
|
||||||
|
custom_meshtastic_display_name = ThinkNode M2
|
||||||
|
custom_meshtastic_images = thinknode_m2.svg
|
||||||
|
custom_meshtastic_tags = Elecrow
|
||||||
|
custom_meshtastic_requires_dfu = false
|
||||||
|
|
||||||
extends = esp32s3_base
|
extends = esp32s3_base
|
||||||
board = ESP32-S3-WROOM-1-N4
|
board = ESP32-S3-WROOM-1-N4
|
||||||
build_flags =
|
build_flags =
|
||||||
|
|||||||
@@ -1,4 +1,14 @@
|
|||||||
[env:thinknode_m5]
|
[env:thinknode_m5]
|
||||||
|
custom_meshtastic_hw_model = 107
|
||||||
|
custom_meshtastic_hw_model_slug = THINKNODE_M5
|
||||||
|
custom_meshtastic_architecture = esp32-s3
|
||||||
|
custom_meshtastic_actively_supported = true
|
||||||
|
custom_meshtastic_support_level = 1
|
||||||
|
custom_meshtastic_display_name = ThinkNode M5
|
||||||
|
custom_meshtastic_images = thinknode_m1.svg
|
||||||
|
custom_meshtastic_tags = Elecrow
|
||||||
|
custom_meshtastic_requires_dfu = false
|
||||||
|
|
||||||
extends = esp32s3_base
|
extends = esp32s3_base
|
||||||
board = ESP32-S3-WROOM-1-N4
|
board = ESP32-S3-WROOM-1-N4
|
||||||
build_flags =
|
build_flags =
|
||||||
|
|||||||
@@ -75,6 +75,17 @@ build_flags =
|
|||||||
-D DISPLAY_SET_RESOLUTION
|
-D DISPLAY_SET_RESOLUTION
|
||||||
|
|
||||||
[env:elecrow-adv-24-28-tft]
|
[env:elecrow-adv-24-28-tft]
|
||||||
|
custom_meshtastic_hw_model = 97
|
||||||
|
custom_meshtastic_hw_model_slug = CROWPANEL
|
||||||
|
custom_meshtastic_architecture = esp32-s3
|
||||||
|
custom_meshtastic_actively_supported = true
|
||||||
|
custom_meshtastic_support_level = 1
|
||||||
|
custom_meshtastic_display_name = Crowpanel Adv 2.4/2.8 TFT
|
||||||
|
custom_meshtastic_images = crowpanel_2_4.svg, crowpanel_2_8.svg
|
||||||
|
custom_meshtastic_tags = Elecrow
|
||||||
|
custom_meshtastic_requires_dfu = true
|
||||||
|
custom_meshtastic_partition_scheme = 16MB
|
||||||
|
|
||||||
extends = crowpanel_small_esp32s3_base
|
extends = crowpanel_small_esp32s3_base
|
||||||
build_flags =
|
build_flags =
|
||||||
${crowpanel_small_esp32s3_base.build_flags}
|
${crowpanel_small_esp32s3_base.build_flags}
|
||||||
@@ -99,6 +110,17 @@ build_flags =
|
|||||||
-D LGFX_TOUCH_ROTATION=0
|
-D LGFX_TOUCH_ROTATION=0
|
||||||
|
|
||||||
[env:elecrow-adv-35-tft]
|
[env:elecrow-adv-35-tft]
|
||||||
|
custom_meshtastic_hw_model = 97
|
||||||
|
custom_meshtastic_hw_model_slug = CROWPANEL
|
||||||
|
custom_meshtastic_architecture = esp32-s3
|
||||||
|
custom_meshtastic_actively_supported = true
|
||||||
|
custom_meshtastic_support_level = 1
|
||||||
|
custom_meshtastic_display_name = Crowpanel Adv 3.5 TFT
|
||||||
|
custom_meshtastic_images = crowpanel_3_5.svg
|
||||||
|
custom_meshtastic_tags = Elecrow
|
||||||
|
custom_meshtastic_requires_dfu = true
|
||||||
|
custom_meshtastic_partition_scheme = 16MB
|
||||||
|
|
||||||
extends = crowpanel_small_esp32s3_base
|
extends = crowpanel_small_esp32s3_base
|
||||||
board_level = pr
|
board_level = pr
|
||||||
build_flags =
|
build_flags =
|
||||||
@@ -127,6 +149,17 @@ build_flags =
|
|||||||
|
|
||||||
; 4.3, 5.0, 7.0 inch 800x480 IPS (V1)
|
; 4.3, 5.0, 7.0 inch 800x480 IPS (V1)
|
||||||
[env:elecrow-adv1-43-50-70-tft]
|
[env:elecrow-adv1-43-50-70-tft]
|
||||||
|
custom_meshtastic_hw_model = 97
|
||||||
|
custom_meshtastic_hw_model_slug = CROWPANEL
|
||||||
|
custom_meshtastic_architecture = esp32-s3
|
||||||
|
custom_meshtastic_actively_supported = true
|
||||||
|
custom_meshtastic_support_level = 1
|
||||||
|
custom_meshtastic_display_name = Crowpanel Adv 4.3/5.0/7.0 TFT
|
||||||
|
custom_meshtastic_images = crowpanel_5_0.svg, crowpanel_7_0.svg
|
||||||
|
custom_meshtastic_tags = Elecrow
|
||||||
|
custom_meshtastic_requires_dfu = true
|
||||||
|
custom_meshtastic_partition_scheme = 16MB
|
||||||
|
|
||||||
extends = crowpanel_large_esp32s3_base
|
extends = crowpanel_large_esp32s3_base
|
||||||
build_flags =
|
build_flags =
|
||||||
${crowpanel_large_esp32s3_base.build_flags}
|
${crowpanel_large_esp32s3_base.build_flags}
|
||||||
|
|||||||
@@ -1,4 +1,14 @@
|
|||||||
[env:heltec-v3]
|
[env:heltec-v3]
|
||||||
|
custom_meshtastic_hw_model = 43
|
||||||
|
custom_meshtastic_hw_model_slug = HELTEC_V3
|
||||||
|
custom_meshtastic_architecture = esp32-s3
|
||||||
|
custom_meshtastic_actively_supported = true
|
||||||
|
custom_meshtastic_support_level = 1
|
||||||
|
custom_meshtastic_display_name = Heltec V3
|
||||||
|
custom_meshtastic_images = heltec-v3.svg, heltec-v3-case.svg
|
||||||
|
custom_meshtastic_tags = Heltec
|
||||||
|
custom_meshtastic_partition_scheme = 8MB
|
||||||
|
|
||||||
extends = esp32s3_base
|
extends = esp32s3_base
|
||||||
board = heltec_wifi_lora_32_V3
|
board = heltec_wifi_lora_32_V3
|
||||||
board_level = pr
|
board_level = pr
|
||||||
|
|||||||
@@ -10,6 +10,17 @@ build_flags =
|
|||||||
|
|
||||||
|
|
||||||
[env:heltec-v4]
|
[env:heltec-v4]
|
||||||
|
custom_meshtastic_hw_model = 110
|
||||||
|
custom_meshtastic_hw_model_slug = HELTEC_V4
|
||||||
|
custom_meshtastic_architecture = esp32-s3
|
||||||
|
custom_meshtastic_actively_supported = true
|
||||||
|
custom_meshtastic_support_level = 1
|
||||||
|
custom_meshtastic_display_name = Heltec V4
|
||||||
|
custom_meshtastic_images = heltec_v4.svg
|
||||||
|
custom_meshtastic_tags = Heltec
|
||||||
|
custom_meshtastic_requires_dfu = true
|
||||||
|
custom_meshtastic_partition_scheme = 16MB
|
||||||
|
|
||||||
extends = heltec_v4_base
|
extends = heltec_v4_base
|
||||||
build_flags =
|
build_flags =
|
||||||
${heltec_v4_base.build_flags}
|
${heltec_v4_base.build_flags}
|
||||||
|
|||||||
@@ -1,4 +1,15 @@
|
|||||||
[env:heltec-vision-master-e213]
|
[env:heltec-vision-master-e213]
|
||||||
|
custom_meshtastic_hw_model = 67
|
||||||
|
custom_meshtastic_hw_model_slug = HELTEC_VISION_MASTER_E213
|
||||||
|
custom_meshtastic_architecture = esp32-s3
|
||||||
|
custom_meshtastic_actively_supported = true
|
||||||
|
custom_meshtastic_support_level = 1
|
||||||
|
custom_meshtastic_display_name = Heltec Vision Master E213
|
||||||
|
custom_meshtastic_images = heltec-vision-master-e213.svg
|
||||||
|
custom_meshtastic_tags = Heltec
|
||||||
|
custom_meshtastic_requires_dfu = true
|
||||||
|
custom_meshtastic_partition_scheme = 8MB
|
||||||
|
|
||||||
extends = esp32s3_base
|
extends = esp32s3_base
|
||||||
board = heltec_vision_master_e213
|
board = heltec_vision_master_e213
|
||||||
board_build.partitions = default_8MB.csv
|
board_build.partitions = default_8MB.csv
|
||||||
|
|||||||
@@ -1,5 +1,16 @@
|
|||||||
; Using the original screen class
|
; Using the original screen class
|
||||||
[env:heltec-vision-master-e290]
|
[env:heltec-vision-master-e290]
|
||||||
|
custom_meshtastic_hw_model = 68
|
||||||
|
custom_meshtastic_hw_model_slug = HELTEC_VISION_MASTER_E290
|
||||||
|
custom_meshtastic_architecture = esp32-s3
|
||||||
|
custom_meshtastic_actively_supported = true
|
||||||
|
custom_meshtastic_support_level = 1
|
||||||
|
custom_meshtastic_display_name = Heltec Vision Master E290
|
||||||
|
custom_meshtastic_images = heltec-vision-master-e290.svg
|
||||||
|
custom_meshtastic_tags = Heltec
|
||||||
|
custom_meshtastic_requires_dfu = true
|
||||||
|
custom_meshtastic_partition_scheme = 8MB
|
||||||
|
|
||||||
extends = esp32s3_base
|
extends = esp32s3_base
|
||||||
board = heltec_vision_master_e290
|
board = heltec_vision_master_e290
|
||||||
board_build.partitions = default_8MB.csv
|
board_build.partitions = default_8MB.csv
|
||||||
|
|||||||
@@ -1,4 +1,15 @@
|
|||||||
[env:heltec-vision-master-t190]
|
[env:heltec-vision-master-t190]
|
||||||
|
custom_meshtastic_hw_model = 66
|
||||||
|
custom_meshtastic_hw_model_slug = HELTEC_VISION_MASTER_T190
|
||||||
|
custom_meshtastic_architecture = esp32-s3
|
||||||
|
custom_meshtastic_actively_supported = true
|
||||||
|
custom_meshtastic_support_level = 1
|
||||||
|
custom_meshtastic_display_name = Heltec Vision Master T190
|
||||||
|
custom_meshtastic_images = heltec-vision-master-t190.svg
|
||||||
|
custom_meshtastic_tags = Heltec
|
||||||
|
custom_meshtastic_requires_dfu = true
|
||||||
|
custom_meshtastic_partition_scheme = 8MB
|
||||||
|
|
||||||
extends = esp32s3_base
|
extends = esp32s3_base
|
||||||
board = heltec_vision_master_t190
|
board = heltec_vision_master_t190
|
||||||
board_build.partitions = default_8MB.csv
|
board_build.partitions = default_8MB.csv
|
||||||
|
|||||||
@@ -1,5 +1,15 @@
|
|||||||
; Using the original screen class
|
; Using the original screen class
|
||||||
[env:heltec-wireless-paper]
|
[env:heltec-wireless-paper]
|
||||||
|
custom_meshtastic_hw_model = 49
|
||||||
|
custom_meshtastic_hw_model_slug = HELTEC_WIRELESS_PAPER
|
||||||
|
custom_meshtastic_architecture = esp32-s3
|
||||||
|
custom_meshtastic_actively_supported = true
|
||||||
|
custom_meshtastic_support_level = 1
|
||||||
|
custom_meshtastic_display_name = Heltec Wireless Paper
|
||||||
|
custom_meshtastic_images = heltec-wireless-paper.svg
|
||||||
|
custom_meshtastic_tags = Heltec
|
||||||
|
custom_meshtastic_partition_scheme = 8MB
|
||||||
|
|
||||||
extends = esp32s3_base
|
extends = esp32s3_base
|
||||||
board = heltec_wifi_lora_32_V3
|
board = heltec_wifi_lora_32_V3
|
||||||
board_build.partitions = default_8MB.csv
|
board_build.partitions = default_8MB.csv
|
||||||
|
|||||||
@@ -1,4 +1,14 @@
|
|||||||
[env:heltec-wireless-paper-v1_0]
|
[env:heltec-wireless-paper-v1_0]
|
||||||
|
custom_meshtastic_hw_model = 57
|
||||||
|
custom_meshtastic_hw_model_slug = HELTEC_WIRELESS_PAPER_V1_0
|
||||||
|
custom_meshtastic_architecture = esp32-s3
|
||||||
|
custom_meshtastic_actively_supported = false
|
||||||
|
custom_meshtastic_support_level = 3
|
||||||
|
custom_meshtastic_display_name = Heltec Wireless Paper V1.0
|
||||||
|
custom_meshtastic_images = heltec-wireless-paper-v1_0.svg
|
||||||
|
custom_meshtastic_tags = Heltec
|
||||||
|
custom_meshtastic_partition_scheme = 8MB
|
||||||
|
|
||||||
extends = esp32s3_base
|
extends = esp32s3_base
|
||||||
board_level = extra
|
board_level = extra
|
||||||
board = heltec_wifi_lora_32_V3
|
board = heltec_wifi_lora_32_V3
|
||||||
|
|||||||
@@ -1,4 +1,15 @@
|
|||||||
[env:heltec-wireless-tracker]
|
[env:heltec-wireless-tracker]
|
||||||
|
custom_meshtastic_hw_model = 48
|
||||||
|
custom_meshtastic_hw_model_slug = HELTEC_WIRELESS_TRACKER
|
||||||
|
custom_meshtastic_architecture = esp32-s3
|
||||||
|
custom_meshtastic_actively_supported = true
|
||||||
|
custom_meshtastic_support_level = 1
|
||||||
|
custom_meshtastic_display_name = Heltec Wireless Tracker V1.1
|
||||||
|
custom_meshtastic_images = heltec-wireless-tracker.svg
|
||||||
|
custom_meshtastic_tags = Heltec
|
||||||
|
custom_meshtastic_requires_dfu = true
|
||||||
|
custom_meshtastic_partition_scheme = 8MB
|
||||||
|
|
||||||
extends = esp32s3_base
|
extends = esp32s3_base
|
||||||
board = heltec_wireless_tracker
|
board = heltec_wireless_tracker
|
||||||
board_build.partitions = default_8MB.csv
|
board_build.partitions = default_8MB.csv
|
||||||
|
|||||||
@@ -1,4 +1,14 @@
|
|||||||
[env:heltec-wireless-tracker-V1-0]
|
[env:heltec-wireless-tracker-V1-0]
|
||||||
|
custom_meshtastic_hw_model = 58
|
||||||
|
custom_meshtastic_hw_model_slug = HELTEC_WIRELESS_TRACKER_V1_0
|
||||||
|
custom_meshtastic_architecture = esp32-s3
|
||||||
|
custom_meshtastic_actively_supported = false
|
||||||
|
custom_meshtastic_support_level = 3
|
||||||
|
custom_meshtastic_display_name = Heltec Wireless Tracker V1.0
|
||||||
|
custom_meshtastic_images = heltec-wireless-tracker.svg
|
||||||
|
custom_meshtastic_requires_dfu = true
|
||||||
|
custom_meshtastic_partition_scheme = 8MB
|
||||||
|
|
||||||
extends = esp32s3_base
|
extends = esp32s3_base
|
||||||
board_level = extra
|
board_level = extra
|
||||||
board = heltec_wireless_tracker
|
board = heltec_wireless_tracker
|
||||||
|
|||||||
@@ -1,4 +1,14 @@
|
|||||||
[env:heltec-wsl-v3]
|
[env:heltec-wsl-v3]
|
||||||
|
custom_meshtastic_hw_model = 44
|
||||||
|
custom_meshtastic_hw_model_slug = HELTEC_WSL_V3
|
||||||
|
custom_meshtastic_architecture = esp32-s3
|
||||||
|
custom_meshtastic_actively_supported = true
|
||||||
|
custom_meshtastic_support_level = 1
|
||||||
|
custom_meshtastic_display_name = Heltec Wireless Stick Lite V3
|
||||||
|
custom_meshtastic_images = heltec-wsl-v3.svg
|
||||||
|
custom_meshtastic_tags = Heltec
|
||||||
|
custom_meshtastic_partition_scheme = 8MB
|
||||||
|
|
||||||
extends = esp32s3_base
|
extends = esp32s3_base
|
||||||
board = heltec_wifi_lora_32_V3
|
board = heltec_wifi_lora_32_V3
|
||||||
board_build.partitions = default_8MB.csv
|
board_build.partitions = default_8MB.csv
|
||||||
|
|||||||
@@ -1,4 +1,12 @@
|
|||||||
[env:picomputer-s3]
|
[env:picomputer-s3]
|
||||||
|
custom_meshtastic_hw_model = 52
|
||||||
|
custom_meshtastic_hw_model_slug = PICOMPUTER_S3
|
||||||
|
custom_meshtastic_architecture = esp32-s3
|
||||||
|
custom_meshtastic_actively_supported = true
|
||||||
|
custom_meshtastic_support_level = 3
|
||||||
|
custom_meshtastic_display_name = Pi Computer S3
|
||||||
|
custom_meshtastic_partition_scheme = 8MB
|
||||||
|
|
||||||
extends = esp32s3_base
|
extends = esp32s3_base
|
||||||
board = bpi_picow_esp32_s3
|
board = bpi_picow_esp32_s3
|
||||||
board_check = true
|
board_check = true
|
||||||
|
|||||||
@@ -1,4 +1,15 @@
|
|||||||
[env:rak3312]
|
[env:rak3312]
|
||||||
|
custom_meshtastic_hw_model = 106
|
||||||
|
custom_meshtastic_hw_model_slug = RAK3312
|
||||||
|
custom_meshtastic_architecture = esp32-s3
|
||||||
|
custom_meshtastic_actively_supported = true
|
||||||
|
custom_meshtastic_support_level = 1
|
||||||
|
custom_meshtastic_display_name = RAK3312
|
||||||
|
custom_meshtastic_images = rak_3312.svg
|
||||||
|
custom_meshtastic_tags = RAK
|
||||||
|
custom_meshtastic_requires_dfu = false
|
||||||
|
custom_meshtastic_partition_scheme = 16MB
|
||||||
|
|
||||||
extends = esp32s3_base
|
extends = esp32s3_base
|
||||||
board = wiscore_rak3312
|
board = wiscore_rak3312
|
||||||
board_level = pr
|
board_level = pr
|
||||||
|
|||||||
@@ -1,5 +1,16 @@
|
|||||||
; Seeed Studio SenseCAP Indicator
|
; Seeed Studio SenseCAP Indicator
|
||||||
[env:seeed-sensecap-indicator]
|
[env:seeed-sensecap-indicator]
|
||||||
|
custom_meshtastic_hw_model = 70
|
||||||
|
custom_meshtastic_hw_model_slug = SENSECAP_INDICATOR
|
||||||
|
custom_meshtastic_architecture = esp32-s3
|
||||||
|
custom_meshtastic_actively_supported = true
|
||||||
|
custom_meshtastic_support_level = 1
|
||||||
|
custom_meshtastic_display_name = Seeed SenseCAP Indicator
|
||||||
|
custom_meshtastic_images = seeed-sensecap-indicator.svg
|
||||||
|
custom_meshtastic_tags = Seeed
|
||||||
|
custom_meshtastic_partition_scheme = 8MB
|
||||||
|
= true
|
||||||
|
|
||||||
extends = esp32s3_base
|
extends = esp32s3_base
|
||||||
platform_packages =
|
platform_packages =
|
||||||
platformio/framework-arduinoespressif32 @ https://github.com/mverch67/arduino-esp32/archive/aef7fef6de3329ed6f75512d46d63bba12b09bb5.zip ; add_tca9535 (based on 2.0.16)
|
platformio/framework-arduinoespressif32 @ https://github.com/mverch67/arduino-esp32/archive/aef7fef6de3329ed6f75512d46d63bba12b09bb5.zip ; add_tca9535 (based on 2.0.16)
|
||||||
|
|||||||
@@ -1,4 +1,15 @@
|
|||||||
[env:seeed-xiao-s3]
|
[env:seeed-xiao-s3]
|
||||||
|
custom_meshtastic_hw_model = 81
|
||||||
|
custom_meshtastic_hw_model_slug = SEEED_XIAO_S3
|
||||||
|
custom_meshtastic_architecture = esp32-s3
|
||||||
|
custom_meshtastic_actively_supported = true
|
||||||
|
custom_meshtastic_support_level = 3
|
||||||
|
custom_meshtastic_display_name = Seeed Xiao ESP32-S3
|
||||||
|
custom_meshtastic_images = seeed-xiao-s3.svg
|
||||||
|
custom_meshtastic_tags = Seeed
|
||||||
|
custom_meshtastic_requires_dfu = true
|
||||||
|
custom_meshtastic_partition_scheme = 8MB
|
||||||
|
|
||||||
extends = esp32s3_base
|
extends = esp32s3_base
|
||||||
board = seeed-xiao-s3
|
board = seeed-xiao-s3
|
||||||
board_level = pr
|
board_level = pr
|
||||||
|
|||||||
@@ -1,4 +1,15 @@
|
|||||||
[env:station-g2]
|
[env:station-g2]
|
||||||
|
custom_meshtastic_hw_model = 31
|
||||||
|
custom_meshtastic_hw_model_slug = STATION_G2
|
||||||
|
custom_meshtastic_architecture = esp32-s3
|
||||||
|
custom_meshtastic_actively_supported = true
|
||||||
|
custom_meshtastic_support_level = 2
|
||||||
|
custom_meshtastic_display_name = Station G2
|
||||||
|
custom_meshtastic_images = station-g2.svg
|
||||||
|
custom_meshtastic_tags = B&Q
|
||||||
|
custom_meshtastic_requires_dfu = true
|
||||||
|
custom_meshtastic_partition_scheme = 16MB
|
||||||
|
|
||||||
extends = esp32s3_base
|
extends = esp32s3_base
|
||||||
board = station-g2
|
board = station-g2
|
||||||
board_level = pr
|
board_level = pr
|
||||||
|
|||||||
25
variants/esp32s3/t-beam-1w/pins_arduino.h
Normal file
25
variants/esp32s3/t-beam-1w/pins_arduino.h
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
#ifndef Pins_Arduino_h
|
||||||
|
#define Pins_Arduino_h
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
#define USB_VID 0x303a
|
||||||
|
#define USB_PID 0x1001
|
||||||
|
|
||||||
|
static const uint8_t TX = 43;
|
||||||
|
static const uint8_t RX = 44;
|
||||||
|
|
||||||
|
// I2C for OLED and sensors
|
||||||
|
static const uint8_t SDA = 8;
|
||||||
|
static const uint8_t SCL = 9;
|
||||||
|
|
||||||
|
// Default SPI mapped to Radio/SD
|
||||||
|
static const uint8_t SS = 15; // LoRa CS
|
||||||
|
static const uint8_t MOSI = 11;
|
||||||
|
static const uint8_t MISO = 12;
|
||||||
|
static const uint8_t SCK = 13;
|
||||||
|
|
||||||
|
// SD Card CS
|
||||||
|
#define SDCARD_CS 10
|
||||||
|
|
||||||
|
#endif /* Pins_Arduino_h */
|
||||||
14
variants/esp32s3/t-beam-1w/platformio.ini
Normal file
14
variants/esp32s3/t-beam-1w/platformio.ini
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
; LilyGo T-Beam-1W (1 Watt LoRa with external PA)
|
||||||
|
[env:t-beam-1w]
|
||||||
|
extends = esp32s3_base
|
||||||
|
board = t-beam-1w
|
||||||
|
board_build.partitions = default_8MB.csv
|
||||||
|
board_check = true
|
||||||
|
|
||||||
|
lib_deps =
|
||||||
|
${esp32s3_base.lib_deps}
|
||||||
|
|
||||||
|
build_flags =
|
||||||
|
${esp32s3_base.build_flags}
|
||||||
|
-I variants/esp32s3/t-beam-1w
|
||||||
|
-D T_BEAM_1W
|
||||||
97
variants/esp32s3/t-beam-1w/variant.h
Normal file
97
variants/esp32s3/t-beam-1w/variant.h
Normal file
@@ -0,0 +1,97 @@
|
|||||||
|
// LilyGo T-Beam-1W variant.h
|
||||||
|
// Configuration based on LilyGO utilities.h and RF documentation
|
||||||
|
|
||||||
|
// I2C for OLED display (SH1106 at 0x3C)
|
||||||
|
#define I2C_SDA 8
|
||||||
|
#define I2C_SCL 9
|
||||||
|
|
||||||
|
// GPS - Quectel L76K
|
||||||
|
#define GPS_RX_PIN 5
|
||||||
|
#define GPS_TX_PIN 6
|
||||||
|
#define GPS_1PPS_PIN 7
|
||||||
|
#define GPS_WAKEUP_PIN 16 // GPS_EN_PIN in LilyGO code
|
||||||
|
#define HAS_GPS 1
|
||||||
|
#define GPS_BAUDRATE 9600
|
||||||
|
|
||||||
|
// Buttons
|
||||||
|
#define BUTTON_PIN 0 // BUTTON 1
|
||||||
|
#define BUTTON_PIN_ALT 17 // BUTTON 2
|
||||||
|
|
||||||
|
// SPI (shared by LoRa and SD)
|
||||||
|
#define SPI_MOSI 11
|
||||||
|
#define SPI_SCK 13
|
||||||
|
#define SPI_MISO 12
|
||||||
|
#define SPI_CS 10
|
||||||
|
|
||||||
|
// SD Card
|
||||||
|
#define HAS_SDCARD
|
||||||
|
#define SDCARD_USE_SPI1
|
||||||
|
#define SDCARD_CS SPI_CS
|
||||||
|
|
||||||
|
// LoRa Radio - SX1262 with 1W PA
|
||||||
|
#define USE_SX1262
|
||||||
|
|
||||||
|
#define LORA_SCK SPI_SCK
|
||||||
|
#define LORA_MISO SPI_MISO
|
||||||
|
#define LORA_MOSI SPI_MOSI
|
||||||
|
#define LORA_CS 15
|
||||||
|
#define LORA_RESET 3
|
||||||
|
#define LORA_DIO1 1
|
||||||
|
#define LORA_BUSY 38
|
||||||
|
|
||||||
|
// CRITICAL: Radio power enable - MUST be HIGH before lora.begin()!
|
||||||
|
// GPIO 40 powers the SX1262 + PA module via LDO
|
||||||
|
#define SX126X_POWER_EN 40
|
||||||
|
|
||||||
|
// TX power offset for external PA (0 = no offset, full SX1262 power)
|
||||||
|
#define TX_GAIN_LORA 10
|
||||||
|
|
||||||
|
#ifdef USE_SX1262
|
||||||
|
#define SX126X_CS LORA_CS
|
||||||
|
#define SX126X_DIO1 LORA_DIO1
|
||||||
|
#define SX126X_BUSY LORA_BUSY
|
||||||
|
#define SX126X_RESET LORA_RESET
|
||||||
|
|
||||||
|
// RF switching configuration for 1W PA module
|
||||||
|
// DIO2 controls PA (via SX126X_DIO2_AS_RF_SWITCH)
|
||||||
|
// CTRL PIN (GPIO 21) controls LNA - must be HIGH during RX
|
||||||
|
// Truth table: DIO2=1,CTRL=0 → TX (PA on, LNA off)
|
||||||
|
// DIO2=0,CTRL=1 → RX (PA off, LNA on)
|
||||||
|
#define SX126X_DIO2_AS_RF_SWITCH
|
||||||
|
#define SX126X_RXEN 21 // LNA enable - HIGH during RX
|
||||||
|
|
||||||
|
// TCXO voltage - required for radio init
|
||||||
|
#define SX126X_DIO3_TCXO_VOLTAGE 1.8
|
||||||
|
|
||||||
|
#define SX126X_MAX_POWER 22
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// LED
|
||||||
|
#define LED_PIN 18
|
||||||
|
#define LED_STATE_ON 1 // HIGH = ON
|
||||||
|
|
||||||
|
// Battery ADC
|
||||||
|
#define BATTERY_PIN 4
|
||||||
|
#define ADC_CHANNEL ADC1_GPIO4_CHANNEL
|
||||||
|
#define BATTERY_SENSE_SAMPLES 30
|
||||||
|
#define ADC_MULTIPLIER 2.9333
|
||||||
|
|
||||||
|
// NTC temperature sensor
|
||||||
|
#define NTC_PIN 14
|
||||||
|
|
||||||
|
// Fan control
|
||||||
|
#define FAN_CTRL_PIN 41
|
||||||
|
// Meshtastic standard fan control pin macro
|
||||||
|
#define RF95_FAN_EN FAN_CTRL_PIN
|
||||||
|
|
||||||
|
// PA Ramp Time - T-Beam 1W requires >800us stabilization (default is 200us)
|
||||||
|
// Value 0x05 = RADIOLIB_SX126X_PA_RAMP_800U
|
||||||
|
#define SX126X_PA_RAMP_US 0x05
|
||||||
|
|
||||||
|
// Display - SH1106 OLED (128x64)
|
||||||
|
#define USE_SH1106
|
||||||
|
#define OLED_WIDTH 128
|
||||||
|
#define OLED_HEIGHT 64
|
||||||
|
|
||||||
|
// 32768 Hz crystal present
|
||||||
|
#define HAS_32768HZ 1
|
||||||
@@ -1,4 +1,15 @@
|
|||||||
[env:t-deck-pro]
|
[env:t-deck-pro]
|
||||||
|
custom_meshtastic_hw_model = 102
|
||||||
|
custom_meshtastic_hw_model_slug = T_DECK_PRO
|
||||||
|
custom_meshtastic_architecture = esp32-s3
|
||||||
|
custom_meshtastic_actively_supported = true
|
||||||
|
custom_meshtastic_support_level = 1
|
||||||
|
custom_meshtastic_display_name = LILYGO T-Deck Pro
|
||||||
|
custom_meshtastic_images = tdeck_pro.svg
|
||||||
|
custom_meshtastic_tags = LilyGo
|
||||||
|
custom_meshtastic_requires_dfu = true
|
||||||
|
custom_meshtastic_partition_scheme = 16MB
|
||||||
|
|
||||||
extends = esp32s3_base
|
extends = esp32s3_base
|
||||||
board = t-deck-pro
|
board = t-deck-pro
|
||||||
board_check = true
|
board_check = true
|
||||||
|
|||||||
@@ -1,5 +1,16 @@
|
|||||||
; LilyGo T-Deck
|
; LilyGo T-Deck
|
||||||
[env:t-deck]
|
[env:t-deck]
|
||||||
|
custom_meshtastic_hw_model = 50
|
||||||
|
custom_meshtastic_hw_model_slug = T_DECK
|
||||||
|
custom_meshtastic_architecture = esp32-s3
|
||||||
|
custom_meshtastic_actively_supported = true
|
||||||
|
custom_meshtastic_support_level = 1
|
||||||
|
custom_meshtastic_display_name = LILYGO T-Deck
|
||||||
|
custom_meshtastic_images = t-deck.svg
|
||||||
|
custom_meshtastic_tags = LilyGo
|
||||||
|
custom_meshtastic_requires_dfu = true
|
||||||
|
custom_meshtastic_partition_scheme = 16MB
|
||||||
|
|
||||||
extends = esp32s3_base
|
extends = esp32s3_base
|
||||||
board = t-deck
|
board = t-deck
|
||||||
board_check = true
|
board_check = true
|
||||||
|
|||||||
@@ -1,5 +1,15 @@
|
|||||||
; LilyGo T-Watch S3
|
; LilyGo T-Watch S3
|
||||||
[env:t-watch-s3]
|
[env:t-watch-s3]
|
||||||
|
custom_meshtastic_hw_model = 51
|
||||||
|
custom_meshtastic_hw_model_slug = T_WATCH_S3
|
||||||
|
custom_meshtastic_architecture = esp32-s3
|
||||||
|
custom_meshtastic_actively_supported = true
|
||||||
|
custom_meshtastic_support_level = 3
|
||||||
|
custom_meshtastic_display_name = LILYGO T-Watch S3
|
||||||
|
custom_meshtastic_images = t-watch-s3.svg
|
||||||
|
custom_meshtastic_tags = LilyGo
|
||||||
|
custom_meshtastic_partition_scheme = 8MB
|
||||||
|
|
||||||
extends = esp32s3_base
|
extends = esp32s3_base
|
||||||
board = t-watch-s3
|
board = t-watch-s3
|
||||||
board_check = true
|
board_check = true
|
||||||
|
|||||||
@@ -1,5 +1,16 @@
|
|||||||
; The 1.0 release of the LilyGo TBEAM-S3-Core board
|
; The 1.0 release of the LilyGo TBEAM-S3-Core board
|
||||||
[env:tbeam-s3-core]
|
[env:tbeam-s3-core]
|
||||||
|
custom_meshtastic_hw_model = 12
|
||||||
|
custom_meshtastic_hw_model_slug = LILYGO_TBEAM_S3_CORE
|
||||||
|
custom_meshtastic_architecture = esp32-s3
|
||||||
|
custom_meshtastic_actively_supported = true
|
||||||
|
custom_meshtastic_support_level = 1
|
||||||
|
custom_meshtastic_display_name = LILYGO T-Beam Supreme
|
||||||
|
custom_meshtastic_images = tbeam-s3-core.svg
|
||||||
|
custom_meshtastic_tags = LilyGo
|
||||||
|
custom_meshtastic_requires_dfu = true
|
||||||
|
custom_meshtastic_partition_scheme = 8MB
|
||||||
|
|
||||||
extends = esp32s3_base
|
extends = esp32s3_base
|
||||||
board = tbeam-s3-core
|
board = tbeam-s3-core
|
||||||
board_build.partitions = default_8MB.csv
|
board_build.partitions = default_8MB.csv
|
||||||
|
|||||||
@@ -1,5 +1,16 @@
|
|||||||
; LilyGo T-Lora-Pager
|
; LilyGo T-Lora-Pager
|
||||||
[env:tlora-pager]
|
[env:tlora-pager]
|
||||||
|
custom_meshtastic_hw_model = 103
|
||||||
|
custom_meshtastic_hw_model_slug = T_LORA_PAGER
|
||||||
|
custom_meshtastic_architecture = esp32-s3
|
||||||
|
custom_meshtastic_actively_supported = true
|
||||||
|
custom_meshtastic_support_level = 1
|
||||||
|
custom_meshtastic_display_name = LILYGO T-LoRa Pager
|
||||||
|
custom_meshtastic_images = lilygo-tlora-pager.svg
|
||||||
|
custom_meshtastic_tags = LilyGo
|
||||||
|
custom_meshtastic_requires_dfu = true
|
||||||
|
custom_meshtastic_partition_scheme = 16MB
|
||||||
|
|
||||||
extends = esp32s3_base
|
extends = esp32s3_base
|
||||||
board = t-deck-pro ; same as T-Deck Pro
|
board = t-deck-pro ; same as T-Deck Pro
|
||||||
board_check = true
|
board_check = true
|
||||||
|
|||||||
@@ -1,4 +1,14 @@
|
|||||||
[env:tlora-t3s3-epaper]
|
[env:tlora-t3s3-epaper]
|
||||||
|
custom_meshtastic_hw_model = 16
|
||||||
|
custom_meshtastic_hw_model_slug = TLORA_T3_S3
|
||||||
|
custom_meshtastic_architecture = esp32-s3
|
||||||
|
custom_meshtastic_actively_supported = true
|
||||||
|
custom_meshtastic_support_level = 1
|
||||||
|
custom_meshtastic_display_name = LILYGO T-LoRa T3-S3 E-Ink
|
||||||
|
custom_meshtastic_images = tlora-t3s3-epaper.svg
|
||||||
|
custom_meshtastic_tags = LilyGo
|
||||||
|
custom_meshtastic_requires_dfu = true
|
||||||
|
|
||||||
extends = esp32s3_base
|
extends = esp32s3_base
|
||||||
board = tlora-t3s3-v1
|
board = tlora-t3s3-v1
|
||||||
board_check = true
|
board_check = true
|
||||||
|
|||||||
@@ -1,4 +1,14 @@
|
|||||||
[env:tlora-t3s3-v1]
|
[env:tlora-t3s3-v1]
|
||||||
|
custom_meshtastic_hw_model = 16
|
||||||
|
custom_meshtastic_hw_model_slug = TLORA_T3_S3
|
||||||
|
custom_meshtastic_architecture = esp32-s3
|
||||||
|
custom_meshtastic_actively_supported = true
|
||||||
|
custom_meshtastic_support_level = 1
|
||||||
|
custom_meshtastic_display_name = LILYGO T-LoRa T3-S3
|
||||||
|
custom_meshtastic_images = tlora-t3s3-v1.svg
|
||||||
|
custom_meshtastic_tags = LilyGo
|
||||||
|
custom_meshtastic_requires_dfu = true
|
||||||
|
|
||||||
extends = esp32s3_base
|
extends = esp32s3_base
|
||||||
board = tlora-t3s3-v1
|
board = tlora-t3s3-v1
|
||||||
board_check = true
|
board_check = true
|
||||||
|
|||||||
@@ -1,4 +1,13 @@
|
|||||||
[env:tracksenger]
|
[env:tracksenger]
|
||||||
|
custom_meshtastic_hw_model = 48
|
||||||
|
custom_meshtastic_hw_model_slug = HELTEC_WIRELESS_TRACKER
|
||||||
|
custom_meshtastic_architecture = esp32-s3
|
||||||
|
custom_meshtastic_actively_supported = true
|
||||||
|
custom_meshtastic_support_level = 3
|
||||||
|
custom_meshtastic_display_name = TrackSenger (small TFT)
|
||||||
|
custom_meshtastic_requires_dfu = true
|
||||||
|
custom_meshtastic_partition_scheme = 8MB
|
||||||
|
|
||||||
extends = esp32s3_base
|
extends = esp32s3_base
|
||||||
board = heltec_wireless_tracker
|
board = heltec_wireless_tracker
|
||||||
board_build.partitions = default_8MB.csv
|
board_build.partitions = default_8MB.csv
|
||||||
@@ -16,6 +25,15 @@ lib_deps =
|
|||||||
lovyan03/LovyanGFX@1.2.7
|
lovyan03/LovyanGFX@1.2.7
|
||||||
|
|
||||||
[env:tracksenger-lcd]
|
[env:tracksenger-lcd]
|
||||||
|
custom_meshtastic_hw_model = 48
|
||||||
|
custom_meshtastic_hw_model_slug = HELTEC_WIRELESS_TRACKER
|
||||||
|
custom_meshtastic_architecture = esp32-s3
|
||||||
|
custom_meshtastic_actively_supported = false
|
||||||
|
custom_meshtastic_support_level = 3
|
||||||
|
custom_meshtastic_display_name = TrackSenger (big TFT)
|
||||||
|
custom_meshtastic_requires_dfu = true
|
||||||
|
custom_meshtastic_partition_scheme = 8MB
|
||||||
|
|
||||||
extends = esp32s3_base
|
extends = esp32s3_base
|
||||||
board = heltec_wireless_tracker
|
board = heltec_wireless_tracker
|
||||||
board_build.partitions = default_8MB.csv
|
board_build.partitions = default_8MB.csv
|
||||||
@@ -33,6 +51,14 @@ lib_deps =
|
|||||||
lovyan03/LovyanGFX@1.2.7
|
lovyan03/LovyanGFX@1.2.7
|
||||||
|
|
||||||
[env:tracksenger-oled]
|
[env:tracksenger-oled]
|
||||||
|
custom_meshtastic_hw_model = 48
|
||||||
|
custom_meshtastic_hw_model_slug = HELTEC_WIRELESS_TRACKER
|
||||||
|
custom_meshtastic_architecture = esp32-s3
|
||||||
|
custom_meshtastic_actively_supported = true
|
||||||
|
custom_meshtastic_support_level = 3
|
||||||
|
custom_meshtastic_display_name = TrackSenger (big OLED)
|
||||||
|
custom_meshtastic_partition_scheme = 8MB
|
||||||
|
|
||||||
extends = esp32s3_base
|
extends = esp32s3_base
|
||||||
board = heltec_wireless_tracker
|
board = heltec_wireless_tracker
|
||||||
board_build.partitions = default_8MB.csv
|
board_build.partitions = default_8MB.csv
|
||||||
|
|||||||
@@ -1,6 +1,15 @@
|
|||||||
; platformio.ini for unphone meshtastic
|
; platformio.ini for unphone meshtastic
|
||||||
|
|
||||||
[env:unphone]
|
[env:unphone]
|
||||||
|
custom_meshtastic_hw_model = 59
|
||||||
|
custom_meshtastic_hw_model_slug = UNPHONE
|
||||||
|
custom_meshtastic_architecture = esp32-s3
|
||||||
|
custom_meshtastic_actively_supported = true
|
||||||
|
custom_meshtastic_support_level = 3
|
||||||
|
custom_meshtastic_display_name = unPhone
|
||||||
|
custom_meshtastic_requires_dfu = true
|
||||||
|
custom_meshtastic_partition_scheme = 8MB
|
||||||
|
|
||||||
extends = esp32s3_base
|
extends = esp32s3_base
|
||||||
board = unphone
|
board = unphone
|
||||||
board_build.partitions = partition-table-8MB.csv
|
board_build.partitions = partition-table-8MB.csv
|
||||||
|
|||||||
@@ -34,6 +34,8 @@ lib_deps =
|
|||||||
adafruit/Adafruit seesaw Library@1.7.9
|
adafruit/Adafruit seesaw Library@1.7.9
|
||||||
# renovate: datasource=git-refs depName=RAK12034-BMX160 packageName=https://github.com/RAKWireless/RAK12034-BMX160 gitBranch=main
|
# renovate: datasource=git-refs depName=RAK12034-BMX160 packageName=https://github.com/RAKWireless/RAK12034-BMX160 gitBranch=main
|
||||||
https://github.com/RAKWireless/RAK12034-BMX160/archive/dcead07ffa267d3c906e9ca4a1330ab989e957e2.zip
|
https://github.com/RAKWireless/RAK12034-BMX160/archive/dcead07ffa267d3c906e9ca4a1330ab989e957e2.zip
|
||||||
|
# renovate: datasource=custom.pio depName=adafruit/Adafruit BME680 Library packageName=adafruit/library/Adafruit BME680
|
||||||
|
adafruit/Adafruit BME680 Library@^2.0.5
|
||||||
|
|
||||||
build_flags =
|
build_flags =
|
||||||
${arduino_base.build_flags}
|
${arduino_base.build_flags}
|
||||||
|
|||||||
@@ -1,5 +1,14 @@
|
|||||||
; First prototype eink/nrf52840/sx1262 device
|
; First prototype eink/nrf52840/sx1262 device
|
||||||
[env:thinknode_m1]
|
[env:thinknode_m1]
|
||||||
|
custom_meshtastic_hw_model = 89
|
||||||
|
custom_meshtastic_hw_model_slug = THINKNODE_M1
|
||||||
|
custom_meshtastic_architecture = nrf52840
|
||||||
|
custom_meshtastic_actively_supported = true
|
||||||
|
custom_meshtastic_support_level = 1
|
||||||
|
custom_meshtastic_display_name = ThinkNode M1
|
||||||
|
custom_meshtastic_images = thinknode_m1.svg
|
||||||
|
custom_meshtastic_tags = Elecrow
|
||||||
|
|
||||||
extends = nrf52840_base
|
extends = nrf52840_base
|
||||||
board = ThinkNode-M1
|
board = ThinkNode-M1
|
||||||
board_check = true
|
board_check = true
|
||||||
|
|||||||
@@ -1,8 +1,17 @@
|
|||||||
[env:thinknode_m3]
|
[env:thinknode_m3]
|
||||||
|
custom_meshtastic_support_level = 1
|
||||||
|
custom_meshtastic_images = thinknode_m3.svg
|
||||||
|
custom_meshtastic_tags = Elecrow
|
||||||
|
|
||||||
extends = nrf52840_base
|
extends = nrf52840_base
|
||||||
board = ThinkNode-M3
|
board = ThinkNode-M3
|
||||||
board_check = true
|
board_check = true
|
||||||
debug_tool = jlink
|
debug_tool = jlink
|
||||||
|
custom_meshtastic_hw_model = 115
|
||||||
|
custom_meshtastic_hw_model_slug = THINKNODE_M3
|
||||||
|
custom_meshtastic_architecture = nrf52840
|
||||||
|
custom_meshtastic_display_name = Elecrow ThinkNode M3
|
||||||
|
custom_meshtastic_actively_supported = true
|
||||||
build_flags =
|
build_flags =
|
||||||
${nrf52840_base.build_flags}
|
${nrf52840_base.build_flags}
|
||||||
-Ivariants/nrf52840/ELECROW-ThinkNode-M3
|
-Ivariants/nrf52840/ELECROW-ThinkNode-M3
|
||||||
|
|||||||
@@ -1,5 +1,14 @@
|
|||||||
; ThinkNode M6 - Outdoor Solar Power nrf52840/sx1262 device
|
; ThinkNode M6 - Outdoor Solar Power nrf52840/sx1262 device
|
||||||
[env:thinknode_m6]
|
[env:thinknode_m6]
|
||||||
|
custom_meshtastic_hw_model = 120
|
||||||
|
custom_meshtastic_hw_model_slug = THINKNODE_M6
|
||||||
|
custom_meshtastic_architecture = nrf52840
|
||||||
|
custom_meshtastic_actively_supported = false
|
||||||
|
custom_meshtastic_support_level = 1
|
||||||
|
custom_meshtastic_display_name = ThinkNode M6
|
||||||
|
custom_meshtastic_images = thinknode_m6.svg
|
||||||
|
custom_meshtastic_tags = Elecrow
|
||||||
|
|
||||||
extends = nrf52840_base
|
extends = nrf52840_base
|
||||||
board = ThinkNode-M6
|
board = ThinkNode-M6
|
||||||
board_check = true
|
board_check = true
|
||||||
|
|||||||
@@ -1,5 +1,13 @@
|
|||||||
; Public Beta oled/nrf52840/sx1262 device
|
; Public Beta oled/nrf52840/sx1262 device
|
||||||
[env:canaryone]
|
[env:canaryone]
|
||||||
|
custom_meshtastic_hw_model = 29
|
||||||
|
custom_meshtastic_hw_model_slug = CANARYONE
|
||||||
|
custom_meshtastic_architecture = nrf52840
|
||||||
|
custom_meshtastic_actively_supported = true
|
||||||
|
custom_meshtastic_support_level = 3
|
||||||
|
custom_meshtastic_display_name = Canary One
|
||||||
|
custom_meshtastic_tags = Canary
|
||||||
|
|
||||||
extends = nrf52840_base
|
extends = nrf52840_base
|
||||||
board = canaryone
|
board = canaryone
|
||||||
debug_tool = jlink
|
debug_tool = jlink
|
||||||
|
|||||||
@@ -1,5 +1,15 @@
|
|||||||
; Promicro + E22(0)-xxxM / HT-RA62 modules board variant - DIY - with TCXO
|
; Promicro + E22(0)-xxxM / HT-RA62 modules board variant - DIY - with TCXO
|
||||||
[env:nrf52_promicro_diy_tcxo]
|
[env:nrf52_promicro_diy_tcxo]
|
||||||
|
custom_meshtastic_hw_model = 63
|
||||||
|
custom_meshtastic_hw_model_slug = NRF52_PROMICRO_DIY
|
||||||
|
custom_meshtastic_architecture = nrf52840
|
||||||
|
custom_meshtastic_actively_supported = true
|
||||||
|
custom_meshtastic_support_level = 3
|
||||||
|
custom_meshtastic_display_name = NRF52 Pro-micro DIY
|
||||||
|
custom_meshtastic_images = promicro.svg
|
||||||
|
custom_meshtastic_tags = DIY
|
||||||
|
custom_meshtastic_requires_dfu = true
|
||||||
|
|
||||||
extends = nrf52840_base
|
extends = nrf52840_base
|
||||||
board = promicro-nrf52840
|
board = promicro-nrf52840
|
||||||
build_flags = ${nrf52840_base.build_flags}
|
build_flags = ${nrf52840_base.build_flags}
|
||||||
|
|||||||
@@ -1,5 +1,14 @@
|
|||||||
; First prototype nrf52840/sx1262 device
|
; First prototype nrf52840/sx1262 device
|
||||||
[env:heltec-mesh-node-t114]
|
[env:heltec-mesh-node-t114]
|
||||||
|
custom_meshtastic_hw_model = 69
|
||||||
|
custom_meshtastic_hw_model_slug = HELTEC_MESH_NODE_T114
|
||||||
|
custom_meshtastic_architecture = nrf52840
|
||||||
|
custom_meshtastic_actively_supported = true
|
||||||
|
custom_meshtastic_support_level = 1
|
||||||
|
custom_meshtastic_display_name = Heltec Mesh Node T114
|
||||||
|
custom_meshtastic_images = heltec-mesh-node-t114.svg, heltec-mesh-node-t114-case.svg
|
||||||
|
custom_meshtastic_tags = Heltec
|
||||||
|
|
||||||
extends = nrf52840_base
|
extends = nrf52840_base
|
||||||
board = heltec_mesh_node_t114
|
board = heltec_mesh_node_t114
|
||||||
board_level = pr
|
board_level = pr
|
||||||
|
|||||||
@@ -1,8 +1,20 @@
|
|||||||
; First prototype nrf52840/sx1262 device
|
; First prototype nrf52840/sx1262 device
|
||||||
[env:heltec-mesh-pocket-5000]
|
[env:heltec-mesh-pocket-5000]
|
||||||
|
custom_meshtastic_support_level = 1
|
||||||
|
custom_meshtastic_images = heltec_mesh_pocket.svg
|
||||||
|
custom_meshtastic_tags = Heltec
|
||||||
|
|
||||||
extends = nrf52840_base
|
extends = nrf52840_base
|
||||||
board = heltec_mesh_pocket
|
board = heltec_mesh_pocket
|
||||||
debug_tool = jlink
|
debug_tool = jlink
|
||||||
|
custom_device_hw_model = 94
|
||||||
|
custom_meshtastic_hw_model = 94
|
||||||
|
custom_meshtastic_hw_model_slug = HELTEC_MESH_POCKET
|
||||||
|
custom_meshtastic_architecture = nrf52840
|
||||||
|
custom_meshtastic_display_name = Heltec Mesh Pocket
|
||||||
|
custom_meshtastic_actively_supported = true
|
||||||
|
custom_meshtastic_variant = 5000mAh
|
||||||
|
custom_meshtastic_key = heltec_mesh_pocket
|
||||||
|
|
||||||
# add -DCFG_SYSVIEW if you want to use the Segger systemview tool for OS profiling.
|
# add -DCFG_SYSVIEW if you want to use the Segger systemview tool for OS profiling.
|
||||||
build_flags = ${nrf52840_base.build_flags}
|
build_flags = ${nrf52840_base.build_flags}
|
||||||
@@ -31,6 +43,13 @@ lib_deps =
|
|||||||
[env:heltec-mesh-pocket-5000-inkhud]
|
[env:heltec-mesh-pocket-5000-inkhud]
|
||||||
extends = nrf52840_base, inkhud
|
extends = nrf52840_base, inkhud
|
||||||
board = heltec_mesh_pocket
|
board = heltec_mesh_pocket
|
||||||
|
custom_meshtastic_hw_model = 94
|
||||||
|
custom_meshtastic_hw_model_slug = HELTEC_MESH_POCKET
|
||||||
|
custom_meshtastic_architecture = nrf52840
|
||||||
|
custom_meshtastic_display_name = Heltec Mesh Pocket
|
||||||
|
custom_meshtastic_actively_supported = true
|
||||||
|
custom_meshtastic_variant = 5000mAh InkHUD
|
||||||
|
custom_meshtastic_key = heltec_mesh_pocket
|
||||||
build_src_filter = ${nrf52_base.build_src_filter} +<../variants/nrf52840/heltec_mesh_pocket> ${inkhud.build_src_filter}
|
build_src_filter = ${nrf52_base.build_src_filter} +<../variants/nrf52840/heltec_mesh_pocket> ${inkhud.build_src_filter}
|
||||||
build_flags =
|
build_flags =
|
||||||
${inkhud.build_flags}
|
${inkhud.build_flags}
|
||||||
@@ -45,9 +64,20 @@ lib_deps =
|
|||||||
|
|
||||||
; First prototype nrf52840/sx1262 device
|
; First prototype nrf52840/sx1262 device
|
||||||
[env:heltec-mesh-pocket-10000]
|
[env:heltec-mesh-pocket-10000]
|
||||||
|
custom_meshtastic_support_level = 1
|
||||||
|
custom_meshtastic_images = heltec_mesh_pocket.svg
|
||||||
|
custom_meshtastic_tags = Heltec
|
||||||
|
|
||||||
extends = nrf52840_base
|
extends = nrf52840_base
|
||||||
board = heltec_mesh_pocket
|
board = heltec_mesh_pocket
|
||||||
debug_tool = jlink
|
debug_tool = jlink
|
||||||
|
custom_meshtastic_hw_model = 94
|
||||||
|
custom_meshtastic_hw_model_slug = HELTEC_MESH_POCKET
|
||||||
|
custom_meshtastic_architecture = nrf52840
|
||||||
|
custom_meshtastic_display_name = Heltec Mesh Pocket
|
||||||
|
custom_meshtastic_actively_supported = true
|
||||||
|
custom_meshtastic_variant = 10000mAh
|
||||||
|
custom_meshtastic_key = heltec_mesh_pocket
|
||||||
|
|
||||||
# add -DCFG_SYSVIEW if you want to use the Segger systemview tool for OS profiling.
|
# add -DCFG_SYSVIEW if you want to use the Segger systemview tool for OS profiling.
|
||||||
build_flags = ${nrf52840_base.build_flags}
|
build_flags = ${nrf52840_base.build_flags}
|
||||||
@@ -76,6 +106,13 @@ lib_deps =
|
|||||||
[env:heltec-mesh-pocket-10000-inkhud]
|
[env:heltec-mesh-pocket-10000-inkhud]
|
||||||
extends = nrf52840_base, inkhud
|
extends = nrf52840_base, inkhud
|
||||||
board = heltec_mesh_pocket
|
board = heltec_mesh_pocket
|
||||||
|
custom_meshtastic_hw_model = 94
|
||||||
|
custom_meshtastic_hw_model_slug = HELTEC_MESH_POCKET
|
||||||
|
custom_meshtastic_architecture = nrf52840
|
||||||
|
custom_meshtastic_display_name = Heltec Mesh Pocket
|
||||||
|
custom_meshtastic_actively_supported = true
|
||||||
|
custom_meshtastic_variant = 10000mAh InkHUD
|
||||||
|
custom_meshtastic_key = heltec_mesh_pocket
|
||||||
build_src_filter = ${nrf52_base.build_src_filter} +<../variants/nrf52840/heltec_mesh_pocket> ${inkhud.build_src_filter}
|
build_src_filter = ${nrf52_base.build_src_filter} +<../variants/nrf52840/heltec_mesh_pocket> ${inkhud.build_src_filter}
|
||||||
build_flags =
|
build_flags =
|
||||||
${inkhud.build_flags}
|
${inkhud.build_flags}
|
||||||
|
|||||||
@@ -19,6 +19,15 @@ lib_deps =
|
|||||||
bblanchon/ArduinoJson@6.21.4
|
bblanchon/ArduinoJson@6.21.4
|
||||||
|
|
||||||
[env:heltec-mesh-solar]
|
[env:heltec-mesh-solar]
|
||||||
|
custom_meshtastic_hw_model = 108
|
||||||
|
custom_meshtastic_hw_model_slug = HELTEC_MESH_SOLAR
|
||||||
|
custom_meshtastic_architecture = nrf52840
|
||||||
|
custom_meshtastic_actively_supported = false
|
||||||
|
custom_meshtastic_support_level = 1
|
||||||
|
custom_meshtastic_display_name = Heltec MeshSolar
|
||||||
|
custom_meshtastic_images = heltec-mesh-solar.svg
|
||||||
|
custom_meshtastic_tags = Heltec
|
||||||
|
|
||||||
extends = heltec_mesh_solar_base
|
extends = heltec_mesh_solar_base
|
||||||
build_flags = ${heltec_mesh_solar_base.build_flags}
|
build_flags = ${heltec_mesh_solar_base.build_flags}
|
||||||
-DSPI_INTERFACES_COUNT=1
|
-DSPI_INTERFACES_COUNT=1
|
||||||
|
|||||||
@@ -1,4 +1,13 @@
|
|||||||
[env:muzi-base]
|
[env:muzi-base]
|
||||||
|
custom_meshtastic_hw_model = 93
|
||||||
|
custom_meshtastic_hw_model_slug = MUZI_BASE
|
||||||
|
custom_meshtastic_architecture = nrf52840
|
||||||
|
custom_meshtastic_actively_supported = true
|
||||||
|
custom_meshtastic_support_level = 1
|
||||||
|
custom_meshtastic_display_name = muzi BASE
|
||||||
|
custom_meshtastic_images = muzi_base.svg
|
||||||
|
custom_meshtastic_tags = muzi
|
||||||
|
|
||||||
extends = nrf52840_base
|
extends = nrf52840_base
|
||||||
board = muzi-base
|
board = muzi-base
|
||||||
build_flags = ${nrf52840_base.build_flags}
|
build_flags = ${nrf52840_base.build_flags}
|
||||||
|
|||||||
@@ -1,5 +1,14 @@
|
|||||||
; First prototype eink/nrf52840/sx1262 device
|
; First prototype eink/nrf52840/sx1262 device
|
||||||
[env:nano-g2-ultra]
|
[env:nano-g2-ultra]
|
||||||
|
custom_meshtastic_hw_model = 18
|
||||||
|
custom_meshtastic_hw_model_slug = NANO_G2_ULTRA
|
||||||
|
custom_meshtastic_architecture = nrf52840
|
||||||
|
custom_meshtastic_actively_supported = true
|
||||||
|
custom_meshtastic_support_level = 2
|
||||||
|
custom_meshtastic_display_name = Nano G2 Ultra
|
||||||
|
custom_meshtastic_images = nano-g2-ultra.svg
|
||||||
|
custom_meshtastic_tags = B&Q
|
||||||
|
|
||||||
extends = nrf52840_base
|
extends = nrf52840_base
|
||||||
board = nano-g2-ultra
|
board = nano-g2-ultra
|
||||||
debug_tool = jlink
|
debug_tool = jlink
|
||||||
|
|||||||
@@ -1,5 +1,14 @@
|
|||||||
; The R1 Neo board
|
; The R1 Neo board
|
||||||
[env:r1-neo]
|
[env:r1-neo]
|
||||||
|
custom_meshtastic_hw_model = 101
|
||||||
|
custom_meshtastic_hw_model_slug = MUZI_R1_NEO
|
||||||
|
custom_meshtastic_architecture = nrf52840
|
||||||
|
custom_meshtastic_actively_supported = true
|
||||||
|
custom_meshtastic_support_level = 1
|
||||||
|
custom_meshtastic_display_name = muzi R1 Neo
|
||||||
|
custom_meshtastic_images = muzi_r1_neo.svg
|
||||||
|
custom_meshtastic_tags = muzi
|
||||||
|
|
||||||
extends = nrf52840_base
|
extends = nrf52840_base
|
||||||
board = r1-neo
|
board = r1-neo
|
||||||
board_check = true
|
board_check = true
|
||||||
|
|||||||
@@ -1,5 +1,14 @@
|
|||||||
; Firmware for the WisMesh HUB RAK2560, including a onewire module to talk to the RAK 9154 solar battery.
|
; Firmware for the WisMesh HUB RAK2560, including a onewire module to talk to the RAK 9154 solar battery.
|
||||||
[env:rak2560]
|
[env:rak2560]
|
||||||
|
custom_meshtastic_hw_model = 22
|
||||||
|
custom_meshtastic_hw_model_slug = WISMESH_HUB
|
||||||
|
custom_meshtastic_architecture = nrf52840
|
||||||
|
custom_meshtastic_actively_supported = true
|
||||||
|
custom_meshtastic_support_level = 1
|
||||||
|
custom_meshtastic_display_name = RAK WisMesh Repeater
|
||||||
|
custom_meshtastic_images = rak2560.svg
|
||||||
|
custom_meshtastic_tags = RAK
|
||||||
|
|
||||||
extends = nrf52840_base
|
extends = nrf52840_base
|
||||||
board = wiscore_rak4631
|
board = wiscore_rak4631
|
||||||
board_check = true
|
board_check = true
|
||||||
|
|||||||
@@ -1,5 +1,15 @@
|
|||||||
; The very slick RAK wireless RAK 4631 / 4630 board - Unified firmware for 5005/19003, with or without OLED RAK 1921
|
; The very slick RAK wireless RAK 4631 / 4630 board - Unified firmware for 5005/19003, with or without OLED RAK 1921
|
||||||
[env:rak3401-1watt]
|
[env:rak3401-1watt]
|
||||||
|
custom_meshtastic_hw_model = 117
|
||||||
|
custom_meshtastic_hw_model_slug = RAK3401
|
||||||
|
custom_meshtastic_architecture = nrf52840
|
||||||
|
custom_meshtastic_actively_supported = true
|
||||||
|
custom_meshtastic_support_level = 1
|
||||||
|
custom_meshtastic_display_name = RAK3401 1W
|
||||||
|
custom_meshtastic_images = rak3401.svg
|
||||||
|
custom_meshtastic_tags = RAK
|
||||||
|
custom_meshtastic_requires_dfu = true
|
||||||
|
|
||||||
extends = nrf52840_base
|
extends = nrf52840_base
|
||||||
board = wiscore_rak4631
|
board = wiscore_rak4631
|
||||||
board_check = true
|
board_check = true
|
||||||
|
|||||||
@@ -1,5 +1,14 @@
|
|||||||
; The very slick RAK wireless RAK 4631 / 4630 board - Unified firmware for 5005/19003, with or without OLED RAK 1921
|
; The very slick RAK wireless RAK 4631 / 4630 board - Unified firmware for 5005/19003, with or without OLED RAK 1921
|
||||||
[env:rak4631]
|
[env:rak4631]
|
||||||
|
custom_meshtastic_hw_model = 9
|
||||||
|
custom_meshtastic_hw_model_slug = RAK4631
|
||||||
|
custom_meshtastic_architecture = nrf52840
|
||||||
|
custom_meshtastic_actively_supported = true
|
||||||
|
custom_meshtastic_support_level = 1
|
||||||
|
custom_meshtastic_display_name = RAK WisBlock 4631
|
||||||
|
custom_meshtastic_images = rak4631.svg, rak4631_case.svg
|
||||||
|
custom_meshtastic_tags = RAK
|
||||||
|
|
||||||
extends = nrf52840_base
|
extends = nrf52840_base
|
||||||
board = wiscore_rak4631
|
board = wiscore_rak4631
|
||||||
board_level = pr
|
board_level = pr
|
||||||
|
|||||||
@@ -1,5 +1,14 @@
|
|||||||
; NomadStar Meteor Pro based on RAK4631 with RGBW LED LP5562 support
|
; NomadStar Meteor Pro based on RAK4631 with RGBW LED LP5562 support
|
||||||
[env:rak4631_nomadstar_meteor_pro]
|
[env:rak4631_nomadstar_meteor_pro]
|
||||||
|
custom_meshtastic_hw_model = 96
|
||||||
|
custom_meshtastic_hw_model_slug = NOMADSTAR_METEOR_PRO
|
||||||
|
custom_meshtastic_architecture = nrf52840
|
||||||
|
custom_meshtastic_actively_supported = true
|
||||||
|
custom_meshtastic_support_level = 1
|
||||||
|
custom_meshtastic_display_name = NomadStar Meteor Pro
|
||||||
|
custom_meshtastic_images = meteor_pro.svg
|
||||||
|
custom_meshtastic_tags = NomadStar
|
||||||
|
|
||||||
extends = nrf52840_base
|
extends = nrf52840_base
|
||||||
board = wiscore_rak4631
|
board = wiscore_rak4631
|
||||||
board_check = true
|
board_check = true
|
||||||
|
|||||||
@@ -1,8 +1,17 @@
|
|||||||
; The very slick RAK wireless RAK 4631 / 4630 board - Unified firmware for 5005/19003, with or without OLED RAK 1921
|
; The very slick RAK wireless RAK 4631 / 4630 board - Unified firmware for 5005/19003, with or without OLED RAK 1921
|
||||||
[env:rak_wismeshtag]
|
[env:rak_wismeshtag]
|
||||||
|
custom_meshtastic_support_level = 1
|
||||||
|
custom_meshtastic_images = rak_wismesh_tag.svg
|
||||||
|
custom_meshtastic_tags = RAK
|
||||||
|
|
||||||
extends = nrf52840_base
|
extends = nrf52840_base
|
||||||
board = wiscore_rak4631
|
board = wiscore_rak4631
|
||||||
board_check = true
|
board_check = true
|
||||||
|
custom_meshtastic_hw_model = 105
|
||||||
|
custom_meshtastic_hw_model_slug = WISMESH_TAG
|
||||||
|
custom_meshtastic_architecture = nrf52840
|
||||||
|
custom_meshtastic_display_name = RAK WisMesh Tag
|
||||||
|
custom_meshtastic_actively_supported = true
|
||||||
build_flags = ${nrf52840_base.build_flags}
|
build_flags = ${nrf52840_base.build_flags}
|
||||||
-I variants/nrf52840/rak_wismeshtag
|
-I variants/nrf52840/rak_wismeshtag
|
||||||
-D WISMESH_TAG
|
-D WISMESH_TAG
|
||||||
|
|||||||
@@ -1,5 +1,14 @@
|
|||||||
; The very slick RAK wireless RAK10701 Field Tester device. Note you will have to flash to Arduino bootloader to use this firmware. Be aware touch is not currently working.
|
; The very slick RAK wireless RAK10701 Field Tester device. Note you will have to flash to Arduino bootloader to use this firmware. Be aware touch is not currently working.
|
||||||
[env:rak_wismeshtap]
|
[env:rak_wismeshtap]
|
||||||
|
custom_meshtastic_hw_model = 84
|
||||||
|
custom_meshtastic_hw_model_slug = WISMESH_TAP
|
||||||
|
custom_meshtastic_architecture = nrf52840
|
||||||
|
custom_meshtastic_actively_supported = true
|
||||||
|
custom_meshtastic_support_level = 1
|
||||||
|
custom_meshtastic_display_name = RAK WisMesh Tap
|
||||||
|
custom_meshtastic_images = rak-wismeshtap.svg
|
||||||
|
custom_meshtastic_tags = RAK
|
||||||
|
|
||||||
extends = nrf52840_base
|
extends = nrf52840_base
|
||||||
board = wiscore_rak4631
|
board = wiscore_rak4631
|
||||||
build_flags = ${nrf52840_base.build_flags}
|
build_flags = ${nrf52840_base.build_flags}
|
||||||
|
|||||||
@@ -1,4 +1,13 @@
|
|||||||
[env:seeed_solar_node]
|
[env:seeed_solar_node]
|
||||||
|
custom_meshtastic_hw_model = 95
|
||||||
|
custom_meshtastic_hw_model_slug = SEEED_SOLAR_NODE
|
||||||
|
custom_meshtastic_architecture = nrf52840
|
||||||
|
custom_meshtastic_actively_supported = true
|
||||||
|
custom_meshtastic_support_level = 1
|
||||||
|
custom_meshtastic_display_name = Seeed SenseCAP Solar Node
|
||||||
|
custom_meshtastic_images = seeed_solar.svg
|
||||||
|
custom_meshtastic_tags = Seeed
|
||||||
|
|
||||||
board = seeed_solar_node
|
board = seeed_solar_node
|
||||||
extends = nrf52840_base
|
extends = nrf52840_base
|
||||||
;board_level = extra
|
;board_level = extra
|
||||||
|
|||||||
@@ -1,4 +1,14 @@
|
|||||||
[env:seeed_wio_tracker_L1]
|
[env:seeed_wio_tracker_L1]
|
||||||
|
custom_meshtastic_hw_model = 99
|
||||||
|
custom_meshtastic_hw_model_slug = SEEED_WIO_TRACKER_L1
|
||||||
|
custom_meshtastic_architecture = nrf52840
|
||||||
|
custom_meshtastic_actively_supported = true
|
||||||
|
custom_meshtastic_support_level = 1
|
||||||
|
custom_meshtastic_display_name = Seeed Wio Tracker L1
|
||||||
|
custom_meshtastic_images = wio_tracker_l1_case.svg
|
||||||
|
custom_meshtastic_tags = Seeed
|
||||||
|
custom_meshtastic_requires_dfu = true
|
||||||
|
|
||||||
board = seeed_wio_tracker_L1
|
board = seeed_wio_tracker_L1
|
||||||
extends = nrf52840_base
|
extends = nrf52840_base
|
||||||
build_flags = ${nrf52840_base.build_flags}
|
build_flags = ${nrf52840_base.build_flags}
|
||||||
|
|||||||
@@ -1,4 +1,13 @@
|
|||||||
[env:seeed_wio_tracker_L1_eink]
|
[env:seeed_wio_tracker_L1_eink]
|
||||||
|
custom_meshtastic_hw_model = 100
|
||||||
|
custom_meshtastic_hw_model_slug = SEEED_WIO_TRACKER_L1_EINK
|
||||||
|
custom_meshtastic_architecture = nrf52840
|
||||||
|
custom_meshtastic_actively_supported = true
|
||||||
|
custom_meshtastic_support_level = 1
|
||||||
|
custom_meshtastic_display_name = Seeed Wio Tracker L1 E-Ink
|
||||||
|
custom_meshtastic_images = wio_tracker_l1_eink.svg
|
||||||
|
custom_meshtastic_tags = Seeed
|
||||||
|
|
||||||
board = seeed_wio_tracker_L1
|
board = seeed_wio_tracker_L1
|
||||||
extends = nrf52840_base
|
extends = nrf52840_base
|
||||||
;board_level = extra
|
;board_level = extra
|
||||||
|
|||||||
@@ -1,5 +1,14 @@
|
|||||||
; Seeed Xiao BLE: https://wiki.seeedstudio.com/XIAO_BLE/
|
; Seeed Xiao BLE: https://wiki.seeedstudio.com/XIAO_BLE/
|
||||||
[env:seeed_xiao_nrf52840_kit]
|
[env:seeed_xiao_nrf52840_kit]
|
||||||
|
custom_meshtastic_hw_model = 88
|
||||||
|
custom_meshtastic_hw_model_slug = XIAO_NRF52_KIT
|
||||||
|
custom_meshtastic_architecture = nrf52840
|
||||||
|
custom_meshtastic_actively_supported = true
|
||||||
|
custom_meshtastic_support_level = 1
|
||||||
|
custom_meshtastic_display_name = Seeed Xiao NRF52840 Kit
|
||||||
|
custom_meshtastic_images = seeed_xiao_nrf52_kit.svg
|
||||||
|
custom_meshtastic_tags = Seeed
|
||||||
|
|
||||||
extends = nrf52840_base
|
extends = nrf52840_base
|
||||||
board = xiao_ble_sense
|
board = xiao_ble_sense
|
||||||
board_level = pr
|
board_level = pr
|
||||||
|
|||||||
@@ -1,5 +1,14 @@
|
|||||||
; Using original screen class
|
; Using original screen class
|
||||||
[env:t-echo-lite]
|
[env:t-echo-lite]
|
||||||
|
custom_meshtastic_hw_model = 109
|
||||||
|
custom_meshtastic_hw_model_slug = T_ECHO_LITE
|
||||||
|
custom_meshtastic_architecture = nrf52840
|
||||||
|
custom_meshtastic_actively_supported = false
|
||||||
|
custom_meshtastic_support_level = 1
|
||||||
|
custom_meshtastic_display_name = LILYGO T-Echo Lite
|
||||||
|
custom_meshtastic_images = techo_lite.svg
|
||||||
|
custom_meshtastic_tags = LilyGo
|
||||||
|
|
||||||
extends = nrf52840_base
|
extends = nrf52840_base
|
||||||
board = t-echo
|
board = t-echo
|
||||||
board_check = true
|
board_check = true
|
||||||
|
|||||||
@@ -1,5 +1,14 @@
|
|||||||
; Using original screen class
|
; Using original screen class
|
||||||
[env:t-echo]
|
[env:t-echo]
|
||||||
|
custom_meshtastic_hw_model = 7
|
||||||
|
custom_meshtastic_hw_model_slug = T_ECHO
|
||||||
|
custom_meshtastic_architecture = nrf52840
|
||||||
|
custom_meshtastic_actively_supported = true
|
||||||
|
custom_meshtastic_support_level = 1
|
||||||
|
custom_meshtastic_display_name = LILYGO T-Echo
|
||||||
|
custom_meshtastic_images = t-echo.svg
|
||||||
|
custom_meshtastic_tags = LilyGo
|
||||||
|
|
||||||
extends = nrf52840_base
|
extends = nrf52840_base
|
||||||
board = t-echo
|
board = t-echo
|
||||||
board_level = pr
|
board_level = pr
|
||||||
|
|||||||
@@ -1,7 +1,16 @@
|
|||||||
[env:tracker-t1000-e]
|
[env:tracker-t1000-e]
|
||||||
|
custom_meshtastic_support_level = 1
|
||||||
|
custom_meshtastic_images = tracker-t1000-e.svg
|
||||||
|
custom_meshtastic_tags = Seeed
|
||||||
|
|
||||||
extends = nrf52840_base
|
extends = nrf52840_base
|
||||||
board = tracker-t1000-e
|
board = tracker-t1000-e
|
||||||
board_level = pr
|
board_level = pr
|
||||||
|
custom_meshtastic_hw_model = 71
|
||||||
|
custom_meshtastic_hw_model_slug = TRACKER_T1000_E
|
||||||
|
custom_meshtastic_architecture = nrf52840
|
||||||
|
custom_meshtastic_display_name = Seeed SenseCAP T1000-E
|
||||||
|
custom_meshtastic_actively_supported = true
|
||||||
build_flags = ${nrf52840_base.build_flags}
|
build_flags = ${nrf52840_base.build_flags}
|
||||||
-Ivariants/nrf52840/tracker-t1000-e
|
-Ivariants/nrf52840/tracker-t1000-e
|
||||||
-Isrc/platform/nrf52/softdevice
|
-Isrc/platform/nrf52/softdevice
|
||||||
|
|||||||
@@ -1,5 +1,15 @@
|
|||||||
; The red tracker Dev Board with the WM1110 module
|
; The red tracker Dev Board with the WM1110 module
|
||||||
[env:wio-tracker-wm1110]
|
[env:wio-tracker-wm1110]
|
||||||
|
custom_meshtastic_hw_model = 21
|
||||||
|
custom_meshtastic_hw_model_slug = WIO_WM1110
|
||||||
|
custom_meshtastic_architecture = nrf52840
|
||||||
|
custom_meshtastic_actively_supported = true
|
||||||
|
custom_meshtastic_support_level = 3
|
||||||
|
custom_meshtastic_display_name = Seeed Wio WM1110 Tracker
|
||||||
|
custom_meshtastic_images = wio-tracker-wm1110.svg
|
||||||
|
custom_meshtastic_tags = Seeed
|
||||||
|
custom_meshtastic_requires_dfu = true
|
||||||
|
|
||||||
extends = nrf52840_base
|
extends = nrf52840_base
|
||||||
board = wio-tracker-wm1110
|
board = wio-tracker-wm1110
|
||||||
build_flags = ${nrf52840_base.build_flags}
|
build_flags = ${nrf52840_base.build_flags}
|
||||||
|
|||||||
@@ -1,4 +1,14 @@
|
|||||||
[env:rak11310]
|
[env:rak11310]
|
||||||
|
custom_meshtastic_hw_model = 26
|
||||||
|
custom_meshtastic_hw_model_slug = RAK11310
|
||||||
|
custom_meshtastic_architecture = rp2040
|
||||||
|
custom_meshtastic_actively_supported = true
|
||||||
|
custom_meshtastic_support_level = 2
|
||||||
|
custom_meshtastic_display_name = RAK WisBlock 11310
|
||||||
|
custom_meshtastic_images = rak11310.svg
|
||||||
|
custom_meshtastic_tags = RAK
|
||||||
|
custom_meshtastic_requires_dfu = true
|
||||||
|
|
||||||
extends = rp2040_base
|
extends = rp2040_base
|
||||||
board = rakwireless_rak11300
|
board = rakwireless_rak11300
|
||||||
board_level = pr
|
board_level = pr
|
||||||
|
|||||||
@@ -1,4 +1,13 @@
|
|||||||
[env:rp2040-lora]
|
[env:rp2040-lora]
|
||||||
|
custom_meshtastic_hw_model = 30
|
||||||
|
custom_meshtastic_hw_model_slug = RP2040_LORA
|
||||||
|
custom_meshtastic_architecture = rp2040
|
||||||
|
custom_meshtastic_actively_supported = true
|
||||||
|
custom_meshtastic_support_level = 2
|
||||||
|
custom_meshtastic_display_name = RP2040 LoRa
|
||||||
|
custom_meshtastic_tags = Waveshare
|
||||||
|
custom_meshtastic_requires_dfu = true
|
||||||
|
|
||||||
extends = rp2040_base
|
extends = rp2040_base
|
||||||
board = rpipico
|
board = rpipico
|
||||||
upload_protocol = picotool
|
upload_protocol = picotool
|
||||||
|
|||||||
@@ -1,4 +1,14 @@
|
|||||||
[env:pico]
|
[env:pico]
|
||||||
|
custom_meshtastic_hw_model = 47
|
||||||
|
custom_meshtastic_hw_model_slug = RPI_PICO
|
||||||
|
custom_meshtastic_architecture = rp2040
|
||||||
|
custom_meshtastic_actively_supported = true
|
||||||
|
custom_meshtastic_support_level = 3
|
||||||
|
custom_meshtastic_display_name = Raspberry Pi Pico
|
||||||
|
custom_meshtastic_images = pico.svg
|
||||||
|
custom_meshtastic_tags = RPi, DIY
|
||||||
|
custom_meshtastic_requires_dfu = true
|
||||||
|
|
||||||
extends = rp2040_base
|
extends = rp2040_base
|
||||||
board = rpipico
|
board = rpipico
|
||||||
board_level = pr
|
board_level = pr
|
||||||
|
|||||||
@@ -1,4 +1,14 @@
|
|||||||
[env:picow]
|
[env:picow]
|
||||||
|
custom_meshtastic_hw_model = 47
|
||||||
|
custom_meshtastic_hw_model_slug = RPI_PICO
|
||||||
|
custom_meshtastic_architecture = rp2040
|
||||||
|
custom_meshtastic_actively_supported = true
|
||||||
|
custom_meshtastic_support_level = 3
|
||||||
|
custom_meshtastic_display_name = Raspberry Pi Pico W
|
||||||
|
custom_meshtastic_images = rpipicow.svg
|
||||||
|
custom_meshtastic_tags = RPi, DIY
|
||||||
|
custom_meshtastic_requires_dfu = true
|
||||||
|
|
||||||
extends = rp2040_base
|
extends = rp2040_base
|
||||||
board = rpipicow
|
board = rpipicow
|
||||||
board_level = pr
|
board_level = pr
|
||||||
|
|||||||
Reference in New Issue
Block a user