Skip to content

Add MuziWorks Base Duo board support (nRF52840 + LR1121) 🤖🤖#2198

Open
zaycev wants to merge 1 commit intomeshcore-dev:mainfrom
zaycev:feature/muziworks-duo-support
Open

Add MuziWorks Base Duo board support (nRF52840 + LR1121) 🤖🤖#2198
zaycev wants to merge 1 commit intomeshcore-dev:mainfrom
zaycev:feature/muziworks-duo-support

Conversation

@zaycev
Copy link
Copy Markdown

@zaycev zaycev commented Mar 30, 2026

Summary

  • Add board support for MuziWorks Base Duo (Elecrow nRFLR1121 module: nRF52840 + Semtech LR1121, sub-GHz LoRa)
  • New CustomLR1121 / CustomLR1121Wrapper radio helpers (RadioLib's LR1121 class extends LR1120, not LR1110 — reusing CustomLR1110 fails at chip identification)
  • 5 build environments: companion_radio_ble, companion_radio_usb, repeater, room_server, terminal_chat
  • Board-specific config: 2-DIO RF switch table (DIO5+DIO6), TCXO 3.0V, 8MB QSPI flash (W25Q32JV), SoftDevice S140 v6.1.1, UF2 bootloader

Hardware tested

  • Radio init (LR1121 sub-GHz, 22 dBm TX power)
  • BLE pairing via MeshCore companion app
  • LoRa TX/RX with good RSSI and SNR
  • Battery ADC reading
  • QSPI flash persistence across reboots
  • TX LED indicator

Note

This PR was drafted by Claude Code, then manually reviewed, fixed, and tested on physical hardware.

Test plan

  • All 5 build environments compile
  • Flashed and verified on physical MuziWorks Base Duo board
  • BLE companion app connects and communicates
  • LoRa packets sent and received on sub-GHz band
  • Settings persist across reboots (QSPI flash)

@zaycev zaycev force-pushed the feature/muziworks-duo-support branch from 34fdd94 to 409a749 Compare March 30, 2026 15:47
@lbibass
Copy link
Copy Markdown

lbibass commented Mar 31, 2026

I've already implemented this. #2054

Are there any major differences between my earlier PR and this one?

@zaycev
Copy link
Copy Markdown
Author

zaycev commented Mar 31, 2026

I've already implemented this. #2054

Are there any major differences between my earlier PR and this one?

Hi @lbibass, I actually tried your PR first, but couldn't get it work.

I believe there are a few hardware mapping differences preventing it from working. My implementation just borrows the values from the MT firmware variant for the Duo board:

  • LoRa Reset Pin: P1.10 (P1.12 overlaps with SPI NSS)
  • RF Switch: Uses a 2-DIO table (DIO5, DIO6), not 4
  • Flash: 8MB QSPI (not 16MB)
  • Radio Class: Must use LR1121. Using LR1110 causes RadioLib to fail the hardware check on boot (0x03 vs 0x01 device ID expectation).

I really don't care which PR gets merged as long as we get working support for the board :) Happy to close mine if these hardware mappings get pulled into yours, or vice versa.

@lbibass
Copy link
Copy Markdown

lbibass commented Mar 31, 2026

I've already implemented this. #2054
Are there any major differences between my earlier PR and this one?

Hi @lbibass, I actually tried your PR first, but couldn't get it work.

I believe there are a few hardware mapping differences preventing it from working. My implementation just borrows the values from the MT firmware variant for the Duo board:

  • LoRa Reset Pin: P1.10 (P1.12 overlaps with SPI NSS)
  • RF Switch: Uses a 2-DIO table (DIO5, DIO6), not 4
  • Flash: 8MB QSPI (not 16MB)
  • Radio Class: Must use LR1121. Using LR1110 causes RadioLib to fail the hardware check on boot (0x03 vs 0x01 device ID expectation).

I really don't care which PR gets merged as long as we get working support for the board :) Happy to close mine if these hardware mappings get pulled into yours, or vice versa.

Oh yikes. Yeah, I did miss a few of those things. But the flash chip is actually a 16 MB chip. I know the spec sheet says 8, but my actual board has a 16MB chip.

In my testing, I didn't see any errors with the radiolib hardware check. But I can add those files. I'll also be getting in a SuperIO board so I can at least try adding support for the display sometime this week / weekend.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants