Skip to content

Add Muzi Base board support (Duo + Uno + SuperIO) - #3108

Merged
liamcottle merged 3 commits into
meshcore-dev:devfrom
tjdownes:muzi-base
Sep 20, 2026
Merged

liamcottle merged 3 commits into
meshcore-dev:devfrom
tjdownes:muzi-base

Conversation

@tjdownes

@tjdownes tjdownes commented Aug 4, 2026

Copy link
Copy Markdown

Adds board support for the Muzi Base (muzi.works).

It's one nRF52840 variant shared by both radio flavors, selected per build env: the Duo uses an LR1121, the Uno an SX1262. They're the same PCB apart from the radio module and its DIO1 pin.

The SuperIO add-on brings the SH1107 OLED, GPS, buzzer and joystick. GPS is switched on and off by the 3-position mode switch ("Mode 2"), polled live the way thinknode_m1 already does it. Five quick presses of the user button power the unit off, and a press wakes it back on. Tested on Duo and Uno with SuperIO.

Build envs, per radio: repeater, room_server, companion_radio usb/ble, and companion_radio ble superIO.

Pin map was cross-checked against the Meshtastic muzi_base variant.

This consolidates #2054 (base duo, @lbibass) with @andyshinn's shared-base + uno work, rebased onto current dev, so it supersedes #2054. Original authorship is kept via co-author trailers on the commit.

Closes #2779

@notbenh

notbenh commented Aug 4, 2026

Copy link
Copy Markdown

👍 Awesome thank you.

@tjdownes

tjdownes commented Aug 5, 2026

Copy link
Copy Markdown
Author

I want to add that I have tested these scenarios:

Companion

  • Base Uno without Super IO (one month)
  • Base Uno with Super IO (one week)
  • Base Duo without Super IO (one week)
  • Base Duo with Super IO (one week)

Repeater

  • Base Uno (1 day)
  • Base Duo (1 day)

I have not tested room servers, but I assume they will operate fine based on the performance/results of testing repeaters

@notbenh

notbenh commented Aug 31, 2026

Copy link
Copy Markdown

+1 again, rebased to the 0.17.1 tag with one minor merge conflict that was easy to follow and built new firmware.zip and loaded successfully via https://apps.meshamerica.com/

One nRF52840 variant shared across both radios, picked per env: Duo runs
the LR1121, Uno the SX1262. Same PCB, only the radio and its DIO1 pin
change.

SuperIO adds the SH1107 OLED, GPS, buzzer and joystick. GPS is driven by
the 3-position mode switch (Mode 2 = on), polled live the way thinknode_m1
does it.

Five quick user-button presses power the unit off; a press wakes it back
on (arms the button as an nRF52 GPIO SENSE source before SYSTEMOFF).

Consolidates meshcore-dev#2054 and andyshinn's shared-base/uno work, rebased on dev.

Co-authored-by: lbibass <ewdries02@gmail.com>
Co-authored-by: Andy Shinn <andys@andyshinn.as>
@tjdownes

tjdownes commented Sep 12, 2026

Copy link
Copy Markdown
Author

@liamcottle just an FYI, as I notice you added the "New Hardware Support" label to #2054 , this PR should supersede that one. It's more complete, and more thoroughly tested across the devices and roles it supports. Thank you.

@jessenine

Copy link
Copy Markdown

One note: this work has been rebased onto current dev and submitted fresh as PR #3457 (#3457) so it can be merged cleanly. This PR supersedes it; the author credit is preserved in the co-author trailers.

@liamcottle liamcottle left a comment

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.

Hey there! Thanks for the PR, since it was mentioned that this PR should supersede the original, I have done my review on this one.

Comment thread variants/muzi_base/muzi_baseBoard.h Outdated
Comment thread variants/muzi_base/platformio.ini Outdated
Comment thread variants/muzi_base/platformio.ini Outdated
Comment thread variants/muzi_base/platformio.ini Outdated
Comment thread variants/muzi_base/target.h Outdated
Comment thread variants/muzi_base/target.h Outdated
Comment thread variants/muzi_base/variant.cpp Outdated
- rename the board class and files to MuziBaseBoard
- uppercase the build flags (MUZI_BASE, MUZI_BASE_SUPERIO)
- name the superIO envs muzi_base_{duo,uno}_superIO_companion_radio_ble so
  build.sh picks them up
- set MAX_CONTACTS to 350 like the other variants
- move the pin setup from initVariant() into MuziBaseBoard::begin()
@liamcottle

Copy link
Copy Markdown
Member

Looks good, thanks for all the requested changes.

I don't have any of these devices, but I'm happy to merge as is if you're all happy that it's working as expected.

Only one other note I had was that I see you're defining -D BLE_TX_POWER=0, instead of leaving it undefined, which would use the default of 4. Is there an issue with these devices running it at the higher power? Or is this just to save a small amount of battery life?

Wondering if users would prefer the further BLE range. But I do see that we have -D BLE_TX_POWER=0 in meshtracker_x1, t1000e and thinknode_m3 variants. Unsure why those were changed to be lower.

@tjdownes

Copy link
Copy Markdown
Author

I don't have any of these devices, but I'm happy to merge as is if you're all happy that it's working as expected.

Several of us have been testing the variants for a few months. I've been using one as as daily for two months.I haven't heard any complaints in some time, so I am happy to merge as is.

Only one other note I had was that I see you're defining -D BLE_TX_POWER=0, instead of leaving it undefined, which would use the default of 4. Is there an issue with these devices running it at the higher power? Or is this just to save a small amount of battery life?

To be honest, I'd hesitate to reduce the power. My real world experience is that it needs what it's currently using.

@liamcottle

Copy link
Copy Markdown
Member

To be honest, I'd hesitate to reduce the power. My real world experience is that it needs what it's currently using.

Sorry, I meant that this PR intentionally uses less power for bluetooth than all the other firmwares. Removing that build flag would give it more bluetooth transmit power, likely leading to more range.

But if it's working fine as is, I can merge...

Drop BLE_TX_POWER=0 from the companion envs so they use the default of
4 dBm, like most other variants. The lower power was carried over from
the original Base Duo PR and real-world range is better at the default.
@tjdownes

Copy link
Copy Markdown
Author

Sorry, I meant that this PR intentionally uses less power for bluetooth than all the other firmwares. Removing that build flag would give it more bluetooth transmit power, likely leading to more range.

Hah, I see what you meant. Sorry, very early here!

Yes, I agree, the BLE is probably too low. I will push another commit to set it to the default.

@liamcottle

liamcottle commented Sep 20, 2026

Copy link
Copy Markdown
Member

There's some extra discussion here. Looks like it was introduced to save a bit of extra battery life on the t1000e.
#736

So my guess is this muzi variant copied some of those build flags over.

Will merge in, thanks to all that have contributed!

@liamcottle
liamcottle merged commit 0886259 into meshcore-dev:dev Sep 20, 2026
14 of 15 checks passed
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.

4 participants