Skip to content

feat: Add Inhero MR-2 repeater board variant - #2316

Closed
liekmarflow wants to merge 2 commits into
meshcore-dev:devfrom
liekmarflow:pr/inhero-mr2
Closed

feat: Add Inhero MR-2 repeater board variant#2316
liekmarflow wants to merge 2 commits into
meshcore-dev:devfrom
liekmarflow:pr/inhero-mr2

Conversation

@liekmarflow

Copy link
Copy Markdown

Summary

Adds the Inhero MR-2, a purpose-built MeshCore repeater board for off-grid solar deployments. This PR introduces two commits:

  1. Generic board extension pattern — virtual hooks in MainBoard for tick(), get/set board.* CLI dispatch, and queryBoardTelemetry(). These are no-ops by default and don't affect existing boards.
  2. Inhero MR-2 variant — board definition, drivers, configuration, and documentation.

Note: Hardware is in pre-production. WEEE/CE certification is pending. The variant is fully functional and tested on prototype hardware.

Hardware

Component Detail
MCU + Radio RAK4630 (nRF52840 + SX1262)
Solar Charger TI BQ25798 Buck/Boost, MPPT, JEITA, 3.6–24 V input
Fuel Gauge TI INA228 (coulomb counting, 100 mΩ shunt)
RTC RV-3028-C7 (time base, wake-up timer)
Env. Sensor BME280 (temp, humidity, pressure)
Buck Converter TPS62840 (3.3 V rail)
PCB 45 × 40 mm, 4× M2.5 mounting

Key Features

  • Multi-chemistry: Li-Ion, LiFePO4, LTO (2S), Na-Ion — software-configurable, no hardware changes
  • MPPT solar charging: 3.6–24 V input, 50–1500 mA configurable charge current
  • Precision fuel gauging: coulomb counting + voltage correlation, temperature-derated SOC/TTL
  • Low-power: ~6 mA active idle (RX), < 500 µA sleep, ~15 µA system-off
  • Low-V sleep: RTC-triggered recovery checks, solar charging continues in sleep
  • Board CLI: 13 getters + 8 setters via get/set board.* (battery config, telemetry, diagnostics)
  • CayenneLPP telemetry: battery V/I/SOC, solar V/I, temperature, TTL

Build Environments

Environment Firmware
Inhero_MR2_repeater Standard repeater
Inhero_MR2_repeater_bridge_rs232 Repeater + RS232 bridge
Inhero_MR2_sensor Sensor node

Changes to Core

Commit 1 adds 30 lines across 4 files — all additive, no existing behavior changed:

  • src/MeshCore.hCayenneLPP forward declaration + 4 virtual methods on MainBoard
  • src/helpers/CommonCLI.cppget board.* / set board.* dispatch (2 blocks)
  • examples/simple_repeater/MyMesh.cppboard.queryBoardTelemetry() call
  • examples/simple_repeater/main.cppboard.tick() call

Documentation

  • variants/inhero_mr2/README.md — compact board overview with key specs
  • Full documentation (datasheet, battery guide, FAQ, CLI reference): docs.inhero.de

Testing

  • Builds successfully (nRF52840, RAM 14.3%, Flash 50.8%)
  • Tested on prototype hardware
  • CE/WEEE certification (pending)

@liekmarflow
liekmarflow force-pushed the pr/inhero-mr2 branch 3 times, most recently from 2714460 to 90a714c Compare April 16, 2026 15:28
@liekmarflow liekmarflow changed the title feat: Add Inhero MR-2 repeater variant feat: Add Inhero MR-2 repeater board variant Apr 16, 2026
@liekmarflow
liekmarflow force-pushed the pr/inhero-mr2 branch 5 times, most recently from 784dfcf to 19b5907 Compare April 19, 2026 13:27
…I commands

Add virtual methods to MainBoard (tick, getCustomGetter, setCustomSetter, queryBoardTelemetry) enabling board variants to hook into the main loop, CLI get/set commands, and telemetry queries without modifying core code.

- MeshCore.h: CayenneLPP forward decl + 4 virtual methods with default no-op implementations

- CommonCLI.cpp: dispatch 'get board.*' and 'set board.*' to board methods

- simple_repeater: call board.tick() and board.queryBoardTelemetry()

- simple_sensor: call board.tick()
@liekmarflow

Copy link
Copy Markdown
Author

Restructured — commit 1 is now 32 lines of pure extension hooks, no behavioral changes for existing boards

Inhero MR-2 is a solar-powered LoRa repeater board based on RAK4630 (nRF52840 + SX1262) with BQ25798 MPPT charger, INA228 fuel gauge, BME280 environment sensor, RV-3028 RTC, and hardware watchdog.

Key features: multi-chemistry battery support (Li-Ion, LiFePO4, LTO) with Coulomb-counted SOC, MPPT solar charging with adaptive IINDPM, low-voltage sleep with RTC wake (< 500uA), custom CLI commands (get/set board.*), board telemetry, USB auto-management, and hardware watchdog with I2C health monitoring.

Full documentation: https://docs.inhero.de
@liekmarflow

Copy link
Copy Markdown
Author

Closing — the MR-2 will continue to be maintained out-of-tree
in a dedicated variant repository to keep the upstream review
burden low. Thanks to anyone who took a look at the draft.

@liekmarflow
liekmarflow deleted the pr/inhero-mr2 branch April 26, 2026 10:22
@liekmarflow

Copy link
Copy Markdown
Author

Follow-up for anyone finding this later: the board is now in production and CE-certified, and the variant has been proposed again — split into #3131 (board hooks) and #3132 (the variant itself), tracked in #3130.

liekmarflow added a commit to liekmarflow/MeshCore that referenced this pull request Aug 21, 2026
… of the story

The "Relation to upstream" section still described the variant as a
standalone out-of-tree product fork. That has not been true since
2026-08-08: meshcore-dev#3130 (hardware request), meshcore-dev#3131 (board hooks) and meshcore-dev#3132 (the
variant itself) are open upstream, and the fork releases are the interim
until those land.

It also left the April withdrawal unexplained. The board was not available
yet and CE certification was still in progress; both are settled now, which
is the reason the variant is being proposed again.
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.

1 participant