mirror of
https://github.com/meshtastic/firmware.git
synced 2026-09-15 15:59:40 -04:00
* Gut beacon send-as-node and consolidate TX onto broadcast_targets Two MeshBeaconConfig changes, both against fields that never reached a tagged release, so there is no migration for existing nodes. broadcast_send_as_node let a client name a node ID to send beacons AS, rewriting the packet's `from`. Firmware never applied it - the assignment was commented out, so `from` was always the local node and the field was a settable, persisted no-op. It was also unsound as designed: rewriting `from` forges no signature, it only makes isFromUs() false, so perhapsEncode() skips XEdDSA signing and receivers get an unsigned packet attributed to another node. broadcast_on_channel / broadcast_on_region / broadcast_on_preset were a second way to name a beacon destination alongside broadcast_targets, chosen silently on whether broadcast_targets was empty. The comments claimed the two were equivalent; they were not. An inline ChannelSettings carries name and PSK, so broadcast_on_channel could transmit on a channel absent from the node's channel table, which channel_index cannot express. That is dropped deliberately - the channel must exist on the node. Empty broadcast_targets now synthesises one target on the running preset and region over the primary channel, matching what the scalar path produced when left unset, so an otherwise unconfigured node still beacons. The USERPREFS_MESH_BEACON_ON_* keys go with the fields. A preconfigured build that still defines one now fails at compile time with a pointer to the USERPREFS_MESH_BEACON_TARGET_0_* equivalents, rather than silently losing its beacon channel. The replacement names a channel-table slot, so such a build must also provision that channel. MeshBeaconConfig shrinks 324 -> 240 bytes and ModuleConfig 328 -> 244, against the 512-byte MAX_TO_FROM_RADIO_SIZE ceiling that FromRadio sits 2 bytes under. The protobufs submodule points at a branch carrying both proto changes; it needs re-pointing to master once meshtastic/protobufs#1047 and #1048 merge. * Point protobufs submodule at master now that the beacon protos are merged meshtastic/protobufs#1047 and #1048 are in master, so drop the temporary beacon-proto-integration pin. MeshBeaconConfig stays 240 bytes and ModuleConfig 244, unchanged from the integration branch. The bump also picks up master's unrelated additions: the MESHNOLOGY_W12 and MESHPAGER_X2 hardware models, and a ground-speed unit correction in Position.
125 lines
11 KiB
JSON
125 lines
11 KiB
JSON
{
|
|
// A value here is a FACTORY DEFAULT. It is applied on first boot and on factory reset, and never
|
|
// again - once the device has a saved config, that config wins. There is no per-field lock. To
|
|
// stop a user changing a setting, ship USERPREFS_USE_ADMIN_KEY_0 and set
|
|
// USERPREFS_CONFIG_SECURITY_IS_MANAGED.
|
|
//
|
|
// Numbers must be plain decimal or 0x-prefixed hex; a shift expression such as "(1 << 15)" is
|
|
// passed to the compiler as a string, not evaluated.
|
|
//
|
|
// Channels: indices 0 to 7 are all supported. Setting any USERPREFS_CHANNEL_<n>_* key configures
|
|
// index <n>; the fields you leave out keep the values the firmware would have used anyway (default
|
|
// PSK, empty name, precision 0, not muted, no uplink or downlink). USERPREFS_CHANNELS_TO_WRITE is
|
|
// how many indices are written on first boot and cannot exceed 8.
|
|
// "USERPREFS_BUTTON_PIN": "36",
|
|
// "USERPREFS_CHANNELS_TO_WRITE": "3",
|
|
// "USERPREFS_CHANNEL_0_DOWNLINK_ENABLED": "false",
|
|
// "USERPREFS_CHANNEL_0_IS_MUTED": "false",
|
|
// "USERPREFS_CHANNEL_0_NAME": "REPLACEME",
|
|
// "USERPREFS_CHANNEL_0_PRECISION": "14",
|
|
// "USERPREFS_CHANNEL_0_PSK": "{ 0x38, 0x4b, 0xbc, 0xc0, 0x1d, 0xc0, 0x22, 0xd1, 0x81, 0xbf, 0x36, 0xb8, 0x61, 0x21, 0xe1, 0xfb, 0x96, 0xb7, 0x2e, 0x55, 0xbf, 0x74, 0x22, 0x7e, 0x9d, 0x6a, 0xfb, 0x48, 0xd6, 0x4c, 0xb1, 0xa1 }",
|
|
// "USERPREFS_CHANNEL_0_UPLINK_ENABLED": "true",
|
|
// "USERPREFS_CHANNEL_1_DOWNLINK_ENABLED": "false",
|
|
// "USERPREFS_CHANNEL_1_IS_MUTED": "false",
|
|
// "USERPREFS_CHANNEL_1_NAME": "NodeChat",
|
|
// "USERPREFS_CHANNEL_1_PRECISION": "14",
|
|
// "USERPREFS_CHANNEL_1_PSK": "{ 0x4e, 0x22, 0x1d, 0x8b, 0xc3, 0x09, 0x1b, 0xe2, 0x11, 0x9c, 0x89, 0x12, 0xf2, 0x25, 0x19, 0x5d, 0x15, 0x3e, 0x30, 0x7b, 0x86, 0xb6, 0xec, 0xc4, 0x6a, 0xc3, 0x96, 0x5e, 0x9e, 0x10, 0x9d, 0xd5 }",
|
|
// "USERPREFS_CHANNEL_1_UPLINK_ENABLED": "false",
|
|
// "USERPREFS_CHANNEL_2_DOWNLINK_ENABLED": "false",
|
|
// "USERPREFS_CHANNEL_2_IS_MUTED": "false",
|
|
// "USERPREFS_CHANNEL_2_NAME": "YardSale",
|
|
// "USERPREFS_CHANNEL_2_PRECISION": "14",
|
|
// "USERPREFS_CHANNEL_2_PSK": "{ 0x15, 0x6f, 0xfe, 0x46, 0xd4, 0x56, 0x63, 0x8a, 0x54, 0x43, 0x13, 0xf2, 0xef, 0x6c, 0x63, 0x89, 0xf0, 0x06, 0x30, 0x52, 0xce, 0x36, 0x5e, 0xb1, 0xe8, 0xbb, 0x86, 0xe6, 0x26, 0x5b, 0x1d, 0x58 }",
|
|
// "USERPREFS_CHANNEL_2_UPLINK_ENABLED": "false",
|
|
// "USERPREFS_CHANNEL_3_NAME": "Ops",
|
|
// "USERPREFS_CHANNEL_3_PSK": "{ 0x01 }",
|
|
// "USERPREFS_CONFIG_GPS_MODE": "meshtastic_Config_PositionConfig_GpsMode_ENABLED",
|
|
// "USERPREFS_CONFIG_LORA_IGNORE_MQTT": "true",
|
|
// "USERPREFS_CONFIG_LORA_CONFIG_OK_TO_MQTT": "false",
|
|
// "USERPREFS_LORA_TX_DISABLED": "1", // If set, forces config.lora.tx_enabled=false during lora bootstrap
|
|
// "USERPREFS_CONFIG_LORA_REGION": "meshtastic_Config_LoRaConfig_RegionCode_US",
|
|
// "USERPREFS_CONFIG_OWNER_LONG_NAME": "My Long Name",
|
|
// "USERPREFS_CONFIG_OWNER_SHORT_NAME": "MLN",
|
|
// "USERPREFS_CONFIG_DEVICE_ROLE": "meshtastic_Config_DeviceConfig_Role_CLIENT", // Defaults to CLIENT. ROUTER*, and LOST AND FOUND roles are restricted.
|
|
// "USERPREFS_CONFIG_DEVICE_REBROADCAST_MODE": "meshtastic_Config_DeviceConfig_RebroadcastMode_LOCAL_ONLY", // NONE falls back to ALL on a router role
|
|
// "USERPREFS_CONFIG_DEVICE_NODE_INFO_BROADCAST_SECS": "10800", // Clamped to 3600 .. INT32_MAX
|
|
// "USERPREFS_CANNED_MESSAGES": "Hi|Bye|Yes|No|Ok",
|
|
// "USERPREFS_EVENT_MODE": "1",
|
|
// "USERPREFS_EVENT_MODE_HOP_LIMIT": "3", // Event-mode default and firmware-generated/relay hop cap (0-7; default 3)
|
|
// "USERPREFS_BLOCK_POSITION_ON_EVENT_CHANNEL": "1", // Block location TX + discard inbound location on channels keyed with USERPREFS_CHANNEL_0_PSK. Defaults off, and must be set explicitly.
|
|
// "USERPREFS_TMM_APPLY_TO_PRIVATE_CHANNELS": "1", // Extend TMM position dedup and precision clamping to private/custom-key channels (default: well-known channels only)
|
|
// "USERPREFS_FIRMWARE_EDITION": "meshtastic_FirmwareEdition_BURNING_MAN",
|
|
// "USERPREFS_FIXED_BLUETOOTH": "121212",
|
|
// "USERPREFS_FIXED_GPS": "",
|
|
// "USERPREFS_FIXED_GPS_ALT": "0",
|
|
// "USERPREFS_FIXED_GPS_LAT": "48.85873920",
|
|
// "USERPREFS_FIXED_GPS_LON": "2.294508368",
|
|
// "USERPREFS_CONFIG_SMART_POSITION_ENABLED": "false",
|
|
// "USERPREFS_CONFIG_GPS_UPDATE_INTERVAL": "600",
|
|
// "USERPREFS_CONFIG_POSITION_BROADCAST_INTERVAL": "1800",
|
|
// "USERPREFS_CONFIG_DEVICE_TELEM_UPDATE_INTERVAL": "900", // Device telemetry update interval in seconds
|
|
// "USERPREFS_CONFIG_ENV_TELEM_UPDATE_INTERVAL": "900", // Environment telemetry update interval in seconds
|
|
// "USERPREFS_CONFIG_ENVIRONMENT_MEASUREMENT_ENABLED": "1", // Force BMP280/sensor reads + LoRa broadcast on first boot
|
|
// "USERPREFS_CONFIG_ENV_SCREEN_SCREEN_ENABLED": "1", // Environment telemetry enable on screen
|
|
// "USERPREFS_CONFIG_AQ_TELEM_UPDATE_INTERVAL": "900", // AQ telemetry update interval in seconds
|
|
// "USERPREFS_CONFIG_AQ_MEASUREMENT_ENABLED": "1", // AQ telemetry enable
|
|
// "USERPREFS_CONFIG_AQ_SCREEN_ENABLED": "1", // AQ telemetry enable on screen
|
|
// "USERPREFS_LORACONFIG_CHANNEL_NUM": "31",
|
|
// "USERPREFS_LORACONFIG_TX_POWER": "0",
|
|
// "USERPREFS_LORACONFIG_MODEM_PRESET": "meshtastic_Config_LoRaConfig_ModemPreset_SHORT_FAST",
|
|
// "USERPREFS_CONFIG_SECURITY_PACKET_SIGNATURE_POLICY": "meshtastic_Config_SecurityConfig_PacketSignaturePolicy_PACKET_SIGNATURE_POLICY_BALANCED", // Authenticity policy applied to remotely received packets.
|
|
// "USERPREFS_USE_ADMIN_KEY_0": "{ 0xcd, 0xc0, 0xb4, 0x3c, 0x53, 0x24, 0xdf, 0x13, 0xca, 0x5a, 0xa6, 0x0c, 0x0d, 0xec, 0x85, 0x5a, 0x4c, 0xf6, 0x1a, 0x96, 0x04, 0x1a, 0x3e, 0xfc, 0xbb, 0x8e, 0x33, 0x71, 0xe5, 0xfc, 0xff, 0x3c }",
|
|
// "USERPREFS_USE_ADMIN_KEY_1": "{}",
|
|
// "USERPREFS_USE_ADMIN_KEY_2": "{}",
|
|
// "USERPREFS_CONFIG_SECURITY_IS_MANAGED": "true", // Ignored unless an admin key is also set
|
|
// "USERPREFS_OEM_TEXT": "Caterham Car Club",
|
|
// "USERPREFS_OEM_FONT_SIZE": "0",
|
|
// "USERPREFS_OEM_IMAGE_WIDTH": "50",
|
|
// "USERPREFS_OEM_IMAGE_HEIGHT": "28",
|
|
// "USERPREFS_OEM_IMAGE_DATA": "{ 0x00, 0x00, 0xF0, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x18, 0xFF, 0xFF, 0x61, 0x00, 0x00, 0x00, 0x0C, 0xFF, 0xFF, 0xC7, 0x00, 0x00, 0x00, 0x0C, 0xFF, 0xFF, 0xC7, 0x00, 0x00, 0x00, 0x18, 0xFF, 0xFF, 0x67, 0x00, 0x00, 0x00, 0x18, 0x1F, 0xF0, 0x67, 0x00, 0x00, 0x00, 0x30, 0x1F, 0xF8, 0x33, 0x00, 0x00, 0x00, 0x30, 0x00, 0xFC, 0x31, 0x00, 0x00, 0x00, 0x60, 0x00, 0xFE, 0x18, 0x00, 0x00, 0x00, 0x60, 0x00, 0x7E, 0x18, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x3F, 0x0C, 0x00, 0x00, 0x00, 0xC0, 0x80, 0x1F, 0x0C, 0x00, 0x00, 0x00, 0x80, 0x81, 0x1F, 0x06, 0x00, 0x00, 0x00, 0x80, 0xC1, 0x0F, 0x06, 0x00, 0x00, 0x00, 0x00, 0xC3, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0xC3, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0xE6, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x00, 0xEE, 0xC7, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0C, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x00}",
|
|
// "USERPREFS_NETWORK_ENABLED_PROTOCOLS": "1", // Enable UDP mesh
|
|
// "USERPREFS_NETWORK_WIFI_ENABLED": "true",
|
|
// "USERPREFS_NETWORK_WIFI_SSID": "wifi_ssid",
|
|
// "USERPREFS_NETWORK_WIFI_PSK": "wifi_psk",
|
|
// "USERPREFS_MQTT_ENABLED": "1",
|
|
// "USERPREFS_MQTT_ADDRESS": "'mqtt.meshtastic.org'",
|
|
// "USERPREFS_MQTT_USERNAME": "meshdev",
|
|
// "USERPREFS_MQTT_PASSWORD": "large4cats",
|
|
// "USERPREFS_MQTT_ENCRYPTION_ENABLED": "true",
|
|
// "USERPREFS_MQTT_TLS_ENABLED": "false",
|
|
// "USERPREFS_MQTT_ROOT_TOPIC": "event/REPLACEME",
|
|
// "USERPREFS_MESH_BEACON_LISTEN_ENABLED": "true", // Accept incoming beacons (default: on)
|
|
// "USERPREFS_MESH_BEACON_BROADCAST_ENABLED": "true", // Periodically broadcast beacons from this node
|
|
// "USERPREFS_MESH_BEACON_MESSAGE": "Join us on NarrowSlow!!!", // Text payload included in every beacon broadcast
|
|
// "USERPREFS_MESH_BEACON_INTERVAL_SECS": "3600", // Broadcast interval in seconds (min 3600 = 1 hour)
|
|
// "USERPREFS_MESH_BEACON_OFFER_PRESET": "meshtastic_Config_LoRaConfig_ModemPreset_NARROW_SLOW", // Modem preset advertised in the beacon payload (listeners can adopt this)
|
|
// "USERPREFS_MESH_BEACON_OFFER_REGION": "meshtastic_Config_LoRaConfig_RegionCode_EU_N_868", // Region advertised in the beacon payload
|
|
// "USERPREFS_MESH_BEACON_OFFER_CHANNEL_NAME": "'MyChannel'", // Channel name advertised in the beacon payload
|
|
// "USERPREFS_MESH_BEACON_OFFER_CHANNEL_PSK": "{ 0x38, 0x4b, 0xbc, 0xc0, 0x1d, 0xc0, 0x22, 0xd1, 0x81, 0xbf, 0x36, 0xb8, 0x61, 0x21, 0xe1, 0xfb, 0x96, 0xb7, 0x2e, 0x55, 0xbf, 0x74, 0x22, 0x7e, 0x9d, 0x6a, 0xfb, 0x48, 0xd6, 0x4c, 0xb1, 0xa1 }", // PSK for the offered channel (32-byte AES-256)
|
|
// "USERPREFS_MESH_BEACON_LEGACY_SPLIT": "true", // When both text and offer are present, split into a separate MESH_BEACON_APP (offer) and TEXT_MESSAGE_APP (text) for legacy client compatibility
|
|
// Broadcast targets: every beacon destination is a TARGET_<N>_* entry. With none set, the node
|
|
// beacons once on its running preset and region over the primary channel. Up to 4 targets (0-3);
|
|
// only TARGET_0 is used here, uncomment TARGET_1 to add a second preset. Targets that resolve to
|
|
// the same preset, region and channel are deduplicated.
|
|
// CHANNEL_INDEX references a slot in the device's channel table (0..MAX_NUM_CHANNELS-1); that
|
|
// channel must already be configured on the node (its key is needed to encrypt the beacon).
|
|
// "USERPREFS_MESH_BEACON_TARGET_0_PRESET": "meshtastic_Config_LoRaConfig_ModemPreset_LONG_FAST",
|
|
// "USERPREFS_MESH_BEACON_TARGET_0_REGION": "meshtastic_Config_LoRaConfig_RegionCode_EU_868",
|
|
// "USERPREFS_MESH_BEACON_TARGET_0_CHANNEL_INDEX": "0", // device channel-table slot to transmit on
|
|
// "USERPREFS_MESH_BEACON_TARGET_1_PRESET": "meshtastic_Config_LoRaConfig_ModemPreset_NARROW_SLOW",
|
|
// "USERPREFS_MESH_BEACON_TARGET_1_REGION": "meshtastic_Config_LoRaConfig_RegionCode_EU_N_868",
|
|
// "USERPREFS_MESH_BEACON_TARGET_1_CHANNEL_INDEX": "1",
|
|
// "USERPREFS_MESH_BEACON_TARGET_2_PRESET": "meshtastic_Config_LoRaConfig_ModemPreset_MEDIUM_FAST",
|
|
// "USERPREFS_MESH_BEACON_TARGET_2_REGION": "meshtastic_Config_LoRaConfig_RegionCode_EU_868",
|
|
// "USERPREFS_MESH_BEACON_TARGET_2_CHANNEL_INDEX": "2",
|
|
// "USERPREFS_MESH_BEACON_TARGET_3_PRESET": "meshtastic_Config_LoRaConfig_ModemPreset_SHORT_FAST",
|
|
// "USERPREFS_MESH_BEACON_TARGET_3_REGION": "meshtastic_Config_LoRaConfig_RegionCode_EU_868",
|
|
// "USERPREFS_MESH_BEACON_TARGET_3_CHANNEL_INDEX": "3",
|
|
// "USERPREFS_RINGTONE_NAG_SECS": "60",
|
|
// "USERPREFS_NODEINFO_REPLY_SUPPRESS_SECS": "43200",
|
|
// "USERPREFS_UI_TEST_LOG": "true", // Test-only: emits `Screen: frame N/M name=... reason=...` log per UI transition (for the meshtastic-mcp ui test tier); off in release builds.
|
|
"USERPREFS_RINGTONE_RTTTL": "24:d=32,o=5,b=565:f6,p,f6,4p,p,f6,p,f6,2p,p,b6,p,b6,p,b6,p,b6,p,b,p,b,p,b,p,b,p,b,p,b,p,b,p,b,1p.,2p.,p",
|
|
// "USERPREFS_NETWORK_IPV6_ENABLED": "1",
|
|
"USERPREFS_TZ_STRING": "tzplaceholder "
|
|
}
|