MeshCore repeaters are often installed in places that are difficult to access—on rooftops, towers, or other elevated structures. While these locations are ideal for coverage, they introduce a major challenge: maintenance.

Updating firmware or recovering from failures becomes complicated when physical access is limited or impossible.

The Problem

In normal situations, you can update a device over Bluetooth using OTA (Over-The-Air) updates. However, this requires being within range of the device. More importantly, if the repeater crashes or becomes unresponsive, you cannot perform a hard reset remotely.

For installations in hard-to-reach locations, this is a serious limitation. What’s needed is a way to:

  • Access the device remotely
  • Recover it when it becomes unresponsive
  • Perform maintenance without physical intervention

The Idea: Out-of-Band Management

To solve this, I’m exploring an out-of-band control system—a secondary system that remains accessible even if the main repeater fails.

The concept is to pair the MeshCore node (based on the nRF52840) with a small Linux-based system like a Raspberry Pi Zero. While alternatives like ESP32 or other microcontrollers are possible, Linux provides a huge advantage: many tools (networking, SSH, update mechanisms) are already available out of the box.

The downside? A Raspberry Pi consumes significantly more power, which is a concern when running on batteries such as 18650 cells.

A Power-Efficient Approach

To balance power consumption and functionality, the Raspberry Pi should remain powered off most of the time and only turn on when needed.

This is where the nRF52840 comes in.

The idea is to use one of its GPIO pins to send a periodic watchdog signal. An external low-power circuit listens for this signal:

As long as the signal is present → everything is healthy If the signal stops → something is wrong

When the watchdog no longer detects the signal, it powers on the Raspberry Pi.

What Happens Next?

Once powered, the Raspberry Pi can:

  • Perform a health check on the repeater
  • Check for firmware updates
  • Attempt recovery actions
  • Provide remote access via SSH for manual intervention

For update checks, I’m considering a lightweight approach using DNS queries. By storing version information in DNS records, the system can quickly check for updates with minimal data usage—ideal for low-bandwidth or metered connections.

Firmware Features Needed

To support this system, the MeshCore firmware would need two additional features:

  1. Watchdog Signal Output
    A periodic signal sent via GPIO to indicate the system is alive.
  2. Maintenance Mode
    A way to intentionally stop the watchdog signal, forcing the Raspberry Pi to power on for maintenance.

Hardware Design

The system uses a CD4060 IC to implement a simple but effective watchdog mechanism.

The Meshcore repeater sends a heartbeat signal every 20 seconds to the reset (RST) pin of the CD4060. As long as this signal is received in time, the internal counter continuously resets and never reaches its overflow state.

However, if the heartbeat stops, the counter is allowed to run freely. After approximately 64 seconds, the Q64 output becomes active. This output is connected to a MOSFET, which in turn switches power to the Raspberry Pi — effectively powering it on when the repeater becomes unresponsive.

Additionally, the Raspberry Pi’s D1 pin is also connected to the MOSFET. This allows the Pi to maintain control over its own power state, ensuring it can keep itself running once it has been activated.

In short, this setup creates a hardware-level fail-safe: if the Meshcore repeater stops responding, the system automatically brings the Raspberry Pi online to recover or take over control.

CD4060

Next step:

Create the circuit in KiCad by first drawing a schematic with the CD4060 IC, MOSFET, timing resistor and capacitor, and connectors for the Meshcore input and Raspberry Pi. Assign appropriate footprints, then move to the PCB editor to place components logically (keeping timing parts close to the CD4060 and power paths short), route the traces with proper widths, and add a ground plane. Finish by labeling connections, running design checks, and exporting Gerber files for manufacturing.