Skip to content

Add back FEM LNA mode configuration for LoRa - #9809

Merged
thebentern merged 5 commits into
developfrom
fem-config
Mar 4, 2026
Merged

thebentern merged 5 commits into
developfrom
fem-config

Conversation

@thebentern

Copy link
Copy Markdown
Contributor

Was removed from #9753 but we just wanted the menu UI removed

@thebentern
thebentern requested review from caveman99 and Copilot March 4, 2026 13:55
@github-actions github-actions Bot added needs-review Needs human review hardware-support Hardware related: new devices or modules, problems specific to hardware labels Mar 4, 2026
@caveman99 caveman99 added enhancement New feature or request triaged Reviewed by the team, has enough information and ready to work on now. and removed needs-review Needs human review labels Mar 4, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Reintroduces persisted configuration support for FEM LNA mode on LoRa devices, after prior work removed the setting along with UI elements. This ensures the radio/FEM layer re-applies the saved LNA mode at boot and when LoRa config updates are received.

Changes:

  • Apply config.lora.fem_lna_mode to the FEM interface during SX126x radio initialization.
  • Apply config.lora.fem_lna_mode when LoRa config is updated via AdminModule::handleSetConfig.
  • Initialize a default fem_lna_mode value during default-config installation.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 2 comments.

File Description
src/modules/AdminModule.cpp Applies FEM LNA mode after LoRa config updates are accepted.
src/mesh/SX126xInterface.cpp Applies saved FEM LNA mode during SX126x init so it takes effect at boot.
src/mesh/NodeDB.cpp Sets default fem_lna_mode value when installing default config.

Comment thread src/modules/AdminModule.cpp
Comment thread src/mesh/NodeDB.cpp
thebentern and others added 2 commits March 4, 2026 08:07
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Comment thread src/mesh/NodeDB.cpp
@thebentern
thebentern merged commit 7ea28d3 into develop Mar 4, 2026
59 of 64 checks passed
@caveman99
caveman99 deleted the fem-config branch April 12, 2026 15:15
Yeraze added a commit to Yeraze/meshmonitor that referenced this pull request Jun 21, 2026
…in (#3599) (#3600)

Adds support for Config.LoRaConfig.fem_lna_mode (FEM_LNA_Mode enum), a LoRa
Front-End Module / Low Noise Amplifier mode option added in Meshtastic firmware
v2.7.20 (meshtastic/firmware#9809). Users on amplified boards with an external
LNA (e.g. certain RAK modules) can now configure it from the UI instead of the
Python CLI.

The protobuf field was already vendored (submodule at v2.7.25), so no submodule
bump was needed. The enum (DISABLED=0, ENABLED=1, NOT_PRESENT=2, field tag 106)
is added to shared constants in src/server/constants/meshtastic.ts.

Surfaced on BOTH UI surfaces, end-to-end (read + display + write):
- Device Configuration (LoRaConfigSection / ConfigurationTab): new "FEM LNA Mode"
  select; load, change-tracking, save payload, and config-import all carry
  femLnaMode.
- Remote Admin (AdminCommandsTab): new "FEM LNA Mode" select; both remote-config
  read spots and the setLoRaConfig save payload carry femLnaMode.

Both save paths funnel through protobufService.createSetLoRaConfigMessage, which
now encodes femLnaMode for the local config-set and the remote admin message.

proto3 elision (#3594): the zero enum value DISABLED is a real selectable mode,
so it is read with a 0 default (never a non-zero ?? fallback) and the backend
proto3-default block fills femLnaMode=0 when elided. Firmware gating: the control
is shown unconditionally; writing 0 (DISABLED) is harmless on firmware that does
not know field 106.

Tests: protobufService.femLnaMode.test.ts round-trips the field (incl. the
proto3-zero elision case); LoRaConfigSection.test.tsx covers the option constants
and save payload. Full Vitest suite passes (7051 tests, 0 failures).

Closes #3599


Claude-Session: https://claude.ai/code/session_011JEaCGwY9Wz8jeV4e22GW4

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
jeek pushed a commit to jeek/Meshtastic-Exploiteers-Hacker-Pager that referenced this pull request Jun 30, 2026
* Add back FEM LNA mode configuration for LoRa

* Update src/mesh/NodeDB.cpp

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update src/modules/AdminModule.cpp

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* copilot garbage

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Itzdavid01 pushed a commit to Itzdavid01/firmware that referenced this pull request Sep 5, 2026
* Add back FEM LNA mode configuration for LoRa

* Update src/mesh/NodeDB.cpp

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update src/modules/AdminModule.cpp

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* copilot garbage

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request hardware-support Hardware related: new devices or modules, problems specific to hardware triaged Reviewed by the team, has enough information and ready to work on now.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants