Skip to content

Add RadioMaster Nomad primary 915 MHz support - #11141

Closed
h3lix1 wants to merge 5 commits into
meshtastic:nomad-geminifrom
h3lix1:codex/radiomaster-nomad-915
Closed

h3lix1 wants to merge 5 commits into
meshtastic:nomad-geminifrom
h3lix1:codex/radiomaster-nomad-915

Conversation

@h3lix1

@h3lix1 h3lix1 commented Jul 22, 2026 •

Copy link
Copy Markdown
Contributor

Summary

This draft is now a small hardening delta on top of #5318's nomad-gemini branch by @caveman99. It keeps the original Nomad implementation and attribution intact while adding the three safety items called out in review:

  • hold the unused second LR1121 in reset with chip-select inactive
  • hold the unsupported ESP32-C3 backpack in reset
  • mark the primary LR1121 path sub-GHz-only until dual-radio/2.4 GHz support exists

The PR also adds target metadata and focused board documentation. The broader external-PA and fan rewrites from the earlier draft have been removed.

Implementation

  • Adds LR1121_SUBGHZ_ONLY handling and enables it only for the Nomad target.
  • Drives second-radio CS GPIO13 high and reset GPIO21 low before primary SPI initialization.
  • Drives ESP32-C3 backpack reset GPIO19 low while that path is unsupported.
  • Retains JANUS_RADIO as the future dual-radio feature marker while the second LR1121 remains inactive.
  • Registers the prototype target as PRIVATE_HW, support level 3, and board_level = extra.
  • Documents the primary and reserved pin assignments, RF-switch table, PA lifecycle, fan behavior, and current limitations.

PA calibration

This stacked delta inherits #5318's external-PA implementation and provisional table unchanged, including APC2 120 at 10 mW. That value is not claimed as bench-validated; the table should be updated after the planned RF power-meter measurements.

Validation

Software

  • trunk fmt
  • pio run -e radiomaster_nomad_gemini
  • Final comparison against nomad-gemini: 5 files, +56/-5
  • Final merge tree preserves the newer PKI and LR2021 autoLDRO changes carried by the base

Hardware

  • Firmware 2.8.0.5081c59 flashed to the connected ESP32-PICO-D4 with on-device hash verification
  • Booted as radiomaster_nomad_gemini with US / MediumFast / 10 dBm
  • Received and decoded live 915 MHz mesh traffic
  • Completed outbound RF transmission; serial logs showed the traceroute request TX complete
  • Completed a multi-hop traceroute to !625aa4fb, including a return path
  • Joined the configured Wi-Fi network, obtained 192.168.1.252, responded to ICMP, exposed TCP 4403, and completed a Meshtastic API configuration exchange
  • Fan disable and enable states both wrote and read back; final state is enabled
  • Broadcast validation text was accepted by the device API

Suggested review focus

  • second-LR1121 and ESP32-C3 reset polarity/timing
  • scope of the sub-GHz-only guard
  • metadata and documentation accuracy

Builds on meshtastic#5318 and hardens the first integration slice for the primary sub-GHz LR1121, external PA, fan control, Wi-Fi, and inactive secondary radio.

Co-authored-by: Thomas Göttgens <tgoettgens@gmail.com>
@coderabbitai

coderabbitai Bot commented Jul 22, 2026 •

Copy link
Copy Markdown
Contributor

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: d139e5bb-bd50-4bcd-863c-9f72cf0a208f

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@caveman99

Copy link
Copy Markdown
Member

Thanks for crediting #5318 and for the useful additions in this draft, in particular holding the second LR1121 and the ESP32-C3 backpack in reset, and the LR1121_SUBGHZ_ONLY guard.

That said, this is a parallel slice of work that is still in flight. Measured against the respective develop merge bases (normalized, non-empty diff lines), 123 of the 197 lines added here (62 percent) are byte-identical to the #5318 branch, and a further share is the same content reformatted or reworded. The genuinely new parts are exactly the ones I would like to see folded into the original work rather than competing with it.

Request: please change this PR's base from develop to the nomad-gemini branch. That turns it into a reviewable delta on top of the existing work, avoids two competing Nomad targets, and keeps attribution clean. The base can be switched in the PR header without losing the branch or its history.

One technical note: the 10 mW APC2 bias differs between your mLRS-derived table (150) and the ELRS target values (120) used in #5318. I have an ImmersionRC RF power meter on the bench and will validate the full PA table against measured output shortly. Whichever numbers survive the bench measurement should go in, for both PRs' sake.

@github-actions

Copy link
Copy Markdown
Contributor

⚡ Try this PR in the Web Flasher

Note

Building this pull request… the flash button, badges and supported-board
list will appear here automatically once CI finishes.

@h3lix1
h3lix1 changed the base branch from develop to nomad-gemini July 22, 2026 13:24
@h3lix1

h3lix1 commented Jul 23, 2026

Copy link
Copy Markdown
Contributor Author

@caveman99 Appologies for stepping on your PRs. I didn't realize you were working on the same thing.

This was on the path to check if the Normad can do dual channel as a proof of concept.. which it does.. and it works for RX and TX for both.. but I am not going to make any more progress on this beyond this PR and #11160. It was more of a conversation piece rather than a PR I was planning to merge. The ability to support dual primary channels will require a lot more effort than I have the time to implement properly.

Can I offer you a Nomad as a peace offering? Two 900mhz radios, 1w each, prime for being setup as a dual preset router.

#define LR1120_MAX_POWER 5

// not yet implemented
#define JANUS_RADIO

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Please leave the Janus define in place. It's a future macro to enable the dual radio code. Right now it does nothing.


// supported modules list
#define USE_LR1121
#define LR1121_SUBGHZ_ONLY

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I hope this is not needed any more once both PA curves are confirmed.

// Runs at the start of setup(), before the LoRa radio is initialized.
void earlyInitVariant()
{
pinMode(LR1121_SPI_NSS2_PIN, OUTPUT);

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Please add documentation you are holding the 2nd LR and the C3 under reset. By the way - did you measure the power consumption when doing this? might as well send them to deep sleep instead.


bool LR1121Interface::wideLora()
{
#ifdef LR1121_SUBGHZ_ONLY

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

As mentioned elsewhere i hope we don't need this any more once the PA curves are confirmed.

@caveman99

Copy link
Copy Markdown
Member

@caveman99 Appologies for stepping on your PRs. I didn't realize you were working on the same thing.

This was on the path to check if the Normad can do dual channel as a proof of concept.. which it does.. and it works for RX and TX for both.. but I am not going to make any more progress on this beyond this PR and #11160. It was more of a conversation piece rather than a PR I was planning to merge. The ability to support dual primary channels will require a lot more effort than I have the time to implement properly.

Can I offer you a Nomad as a peace offering? Two 900mhz radios, 1w each, prime for being setup as a dual preset router.

Thanks for the offer, i have a device here, and finally got a matching power supply to eanble the PA. No need to apologize, this item has been on my back burner for quite some time, i initially planned for it to be exactly what you had in mind, a test mule for dual radio support. I coined it project Janus (Roman god with 2 faces), to go in the same tone as the Gemini product name. What do you say we finalize this work and then go on with #11160 to finish the dream? :-)

@caveman99 caveman99 added the hardware-support Hardware related: new devices or modules, problems specific to hardware label Aug 10, 2026 — with Claude
@h3lix1

h3lix1 commented Sep 18, 2026

Copy link
Copy Markdown
Contributor Author

Closing this one out - Does not seem to have much traction

@h3lix1 h3lix1 closed this Sep 18, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

hardware-support Hardware related: new devices or modules, problems specific to hardware

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants