# Updating MeshCore Firmware

## Update Frequency

MeshCore releases firmware periodically. Major releases introduce new features and architecture improvements; point releases fix bugs. Check the changelog at [github.com/meshcore-dev/MeshCore/releases](https://github.com/meshcore-dev/MeshCore/releases) before updating to understand what has changed.

## Checking Your Current Version

You can find your MeshCore firmware version in two ways:

- **MeshCore app (Bluetooth):** Connect to the node via the companion app and check the node info panel.
- **Serial console:** Connect via USB serial at 115200 baud. The device outputs its firmware version string on boot.

## Update Methods

### 1. MeshCore Web Flasher (Easiest)

1. Open [flasher.meshcore.io](https://flasher.meshcore.io) in Chrome or Edge (WebSerial required).
2. Connect your device via USB.
3. Select your board and firmware variant (Companion, Repeater, or Room Server).
4. Click **Flash**. The flasher downloads the latest release automatically.

This is the recommended method for most users. Ensure you select the correct variant for your node's role.

### 2. Manual Binary Flash

Download the appropriate binary from the [GitHub releases page](https://github.com/meshcore-dev/MeshCore/releases). The process differs by chip:

#### nRF52840 devices (RAK4631, Heltec T114, etc.)

These devices expose a USB mass storage drive when in bootloader mode (double-tap the reset button on most boards). Simply drag and drop the `.uf2` file onto the drive. The device reboots automatically after the copy completes. No additional software required.

#### ESP32 devices

Use `esptool.py` from the command line, or use the web flasher. The web flasher is simpler for most users.

### 3. OTA (Over-the-Air)

MeshCore supports over-the-air firmware updates, so most updates can now be done without a USB connection:

- **nRF52 boards (RAK, T114, Seeed XIAO):** update over Bluetooth using the nRF DFU app.
- **ESP32 boards:** run the `start ota` command to bring up a Wi-Fi hotspot named `MeshCore OTA`, then upload the firmware from a browser at `http://192.168.4.1/update`.

USB remains the fallback and is required for first-time flashing. See the MeshCore FAQ section 7 for the current step-by-step OTA procedures.

## Configuration After Update

MeshCore stores configuration in flash. Most updates preserve existing settings, but you should:

- Read the release notes for any breaking configuration changes before updating.
- After updating, connect to the node and verify your preset, channel key, and role settings are intact.
- If settings were reset, re-apply your configuration before returning the node to service.

## Firmware Variants - Flash the Correct One

MeshCore ships multiple firmware variants for the same hardware, each tuned for a different node role:

- **Companion:** For end-user devices paired with a phone or computer app (available as BLE Companion and USB Serial Companion builds).
- **Repeater:** Optimized for infrastructure repeater nodes. Disables unnecessary client features to reduce overhead.
- **Room Server:** Runs a shared message board (BBS-style) that stores posts and forwards them to clients when they connect.

**Important:** If you accidentally flash Companion firmware onto an infrastructure Repeater node, its behavior will change. Always double-check the variant selection before flashing a deployed node.