---
title: Updating Notecard Firmware
description: Learn how to update your Notecard firmware using Notehub, the In-Browser Terminal, STM32CubeProgrammer, or the Notecard CLI.
source_url: https://dev.blues.io/notecard/notecard-walkthrough/updating-notecard-firmware/
canonical_url: https://dev.blues.io/notecard/notecard-walkthrough/updating-notecard-firmware/
markdown_url: https://dev.blues.io/notecard/notecard-walkthrough/updating-notecard-firmware.md
---

# Updating Notecard Firmware

Blues frequently releases updated firmware for Notecard, introducing new features and enhancements. The following instructions outline various methods for updating Notecard firmware.

> Are you trying to implement OTA firmware updates on a host MCU? Please see our guide on [Host Firmware Updates](https://dev.blues.io/notehub/host-firmware-updates/host-dfu-overview.md).

> **Warning:**
>
> Make sure you read and understand the [Blues Firmware Release Policies and Procedures](https://dev.blues.io/notecard/notecard-firmware-releases.md#firmware-release-policies) before updating Notecard firmware.

## Methods for Updating Notecard Firmware

- All Notecards

  - [Instructions for DFU with In-Browser Terminal](#dfu-with-in-browser-terminal)
  - [Instructions for DFU with Notecard CLI](#dfu-with-notecard-cli)
  - [Instructions for DFU with STM32CubeProgrammer](#dfu-with-stm32cubeprogrammer)

- Notecard Cellular, Notecard Cell+WiFi, Notecard WiFi
  - [Instructions for OTA DFU with Notehub](#ota-dfu-with-notehub)

## DFU with In-Browser Terminal

Supported on

(Cell, Cell+WiFi, LoRa, Skylo, WiFi)

If your Notecard device is running **Developer Firmware v5.3.1 or later**, you may update Notecard firmware manually using the [In-Browser Terminal](https://dev.blues.io/terminal/) and no other tools.

This method is preferred over using STM32CubeProgrammer because:

1. It does not put the Notecard at risk of erasing the entire flash memory.
2. It does not require installation of STM32CubeProgrammer.

### Terminal Update Process

Connect your Notecard device to your computer via USB and then connect to your Notecard in the [In-Browser Terminal](https://dev.blues.io/terminal/).

Once connected, the easiest way to upgrade Notecard firmware is to use the `firmware install latest` command, which automatically installs the most recent Notecard firmware release.

```json
firmware install latest
```

If you instead wish to install a specific version of the Notecard firmware, you can enter the `firmware list` command to list all firmware versions available for your connected Notecard.

```json
firmware list
```

```json
~ 7 Firmware
~  Date                   Version          Notes                                 
~  2023-12-22 (2yr ago)   notecard-u5-6.1.1    LTS6.1.1 (Outdated)          
~  2024-08-20 (2yr ago)   notecard-u5-6.2.5    LTS6                         
~  2025-08-12 (9mo ago)   notecard-u5-8.2.3    LTS 8                        
~  2025-12-10 (5mo ago)   notecard-u5-11.1.1   2025 Q4 Developer Release    
~  2025-12-10 (5mo ago)   notecard-u5-10.1.1   LTS 10 Release Candidate     
~  2026-04-16 (18d ago)   notecard-u5-10.1.2   LTS 10 (Latest LTS)          
~  2026-04-16 (18d ago)   notecard-u5-11.2.2   2026 Q1 Developer Release
```

Next, use `firmware install <version-name>`, where `<version-name>` is the name of the firmware binary from the `Version` column above.

```json
firmware install <version-name>
```

> **Note:**
>
> Always copy the exact version name from your own `firmware list` output when using `firmware install <version-name>`. The version names shown by `firmware list` are specific to the type of Notecard you’re using, and might use different prefixes depending on your device.

> **Warning:**
>
> If you update Notecard firmware to a version *less than v5.3.1*, any subsequent firmware updates would have to be performed with either [STM32CubeProgrammer](#dfu-with-stm32cubeprogrammer) or [Notehub](#ota-dfu-with-notehub).

Upon completion of the firmware update, Notecard will restart. Verify Notecard's firmware has been updated when the In-Browser Terminal reconnects, or by issuing the `card.version` command:

```json
{"req":"card.version"}
```

## DFU with Notecard CLI

Supported on

(Cell, Cell+WiFi, LoRa, Skylo, WiFi)

If your Notecard device is running **Developer Firmware v5.3.1 or later**, you may update Notecard firmware manually using the [Notecard CLI](https://dev.blues.io/tools-and-sdks/notecard-cli.md) and no other tools.

This method is preferred over using STM32CubeProgrammer because:

1. It does not put the Notecard at risk of erasing the entire flash memory.
2. It does not require installation of STM32CubeProgrammer.

### Prerequisites

1. Installation of the latest version of the [Notecard CLI](https://dev.blues.io/tools-and-sdks/notecard-cli.md).
2. A fresh Notecard binary file (downloaded from the [list of Notecard Firmware Releases](https://dev.blues.io/notecard/notecard-firmware-releases.md)).

### CLI Update Process

Connect your Notecard device to your computer via USB. Using a terminal or command prompt, navigate to the folder containing the Notecard firmware binary you want to load, and enter the following command:

```unknown
notecard -fast -sideload notecard-<version-build>.bin
```

The `notecard-<version-build>.bin` represents the name of the firmware image you downloaded and want to install on the Notecard. You may need to prepend `notecard` with the absolute path name if it is not in your `PATH`.

> **Warning:**
>
> If you update Notecard firmware to a version *less than v5.3.1*, any subsequent firmware updates would have to be performed with either [STM32CubeProgrammer](#dfu-with-stm32cubeprogrammer) or [Notehub](#ota-dfu-with-notehub).

Wait while the firmware downloads and installs:

```unknown
sending DFU binary to notecard
side-loading 8192 bytes (100% 925167 remaining)
side-loading 8192 bytes (99% 916975 remaining)
side-loading 8192 bytes (98% 908783 remaining)
side-loading 8192 bytes (97% 900591 remaining)
...
```

> **Note:**
>
> If you see a repeated message about the Notecard being disconnected, simply exit the process by pressing `ctrl-c`.
>
> ```unknown
> retrying after error: error opening serial port: serial device not available {io}
> ```

Within a few seconds the Notecard should restart. Verify the Notecard's firmware has been updated with the following command:

```unknown
notecard -info
```

```unknown
Blues Wireless Notecard
               DeviceUID: dev:864475040000000
           Serial Number: 
            Notehub Host: a.notefile.net
        Firmware Version: notecard-5.3.1
                     SKU: NOTE-NBGL
```

## DFU with STM32CubeProgrammer

Supported on

(Cell, Cell+WiFi, LoRa, Skylo)

You can manually update Notecard firmware by directly connecting to a Notecard over USB and using [STM32CubeProgrammer](https://www.st.com/en/development-tools/stm32cubeprog.html).

> **Warning:**
>
> Blues does not recommend using STM32CubeProgrammer to update Notecard firmware due to the risk of erasing the entire flash memory. If possible, instead use the [DFU with In-Browser Terminal](#dfu-with-in-browser-terminal), [DFU with Notecard CLI](#dfu-with-notecard-cli), or [OTA DFU with Notehub](#ota-dfu-with-notehub) instructions.

### Prerequisites

1. Serial terminal emulator software (e.g. the [In-Browser Terminal](https://dev.blues.io/terminal/), [CoolTerm](https://freeware.the-meiers.org/), or [TinyTerm](https://www.censoft.com/products/tinyterm-plus-terminal-emulator.php)).
2. A fresh Notecard binary file (downloaded from the [list of Notecard Firmware Releases](https://dev.blues.io/notecard/notecard-firmware-releases.md)).
3. [STM32CubeProgrammer](https://www.st.com/en/development-tools/stm32cubeprog.html) (download the latest version for your OS).

### STM32CubeProgrammer Installation Notes

Installing STM32CubeProgrammer requires OS-specific instructions.

> **Warning:**
>
> The minimum version of STM32CubeProgrammer we support is 2.11.0.
>
> Version 2.16.0 is not recommended, because it fails to flash Notecard correctly. If needed, [follow these instructions](https://dev.blues.io/support/recovering-a-bricked-notecard.md) to recover a bricked Notecard.

**Windows**

If you're on a version of Windows older than Windows 10, you'll first need to install the [STM32 Virtual COM Port Driver](https://www.st.com/en/development-tools/stsw-stm32102.html).

Download and extract the zip package and run the installer (ignoring the security issues from Windows).

**macOS**

Download and extract the zip package (noting that the version number of 2.15.0 used in these instructions will likely change in the future).

Using your terminal app of choice, navigate to the extracted directory and launch the installer in CLI mode. For example:

```bash
sudo ./SetupSTM32CubeProgrammer-2.15.0.app/Contents/MacOs/SetupSTM32CubeProgrammer-2_15_0_macos
```

**Linux**

Prior to installation, make sure you have the following packages installed:

- libusb-1.0-0-dev
- unzip

If you are using a USB port to connect to the STM32 device, install the `libusb1.0` package by typing the following command:

```bash
sudo apt-get install libusb-1.0.0-dev
```

> **Note:**
>
> Please note libusb1.0.12 version or higher is required to run STM32CubeProgrammer.

Extract the zip package downloaded earlier [from ST](https://www.st.com/en/development-tools/stm32cubeprog.html), and execute it. Note the version number may change.

```bash
unzip en.stm32cubeprg-lin_v2-11-0_v2.11.0 && cd en.stm32cubeprg-lin_v2-11-0_v2.11.0 && ./SetupSTM32CubeProgrammer-2.11.0.linux
```

Copy the rules files into `/etc/udev/rules.d/`. This is needed to use ST-LINK probe or USB DFU.

```bash
sudo cp ~/STMicroelectronics/STM32Cube/STM32CubeProgrammer/Drivers/rules/* /etc/udev/rules.d
```

### STM32CubeProgrammer Update Process

Connect your Notecard device to your computer via USB. Verify that your terminal emulator (e.g. In-Browser Terminal, CoolTerm, or TinyTerm) is able to connect to the device by sending the `card.version` request:

```json
{"req": "card.version"}
```

The response should look similar to this:

```json
{
 "version": "notecard-5.3.1.16292",
 "device": "dev:864622040385086",
 "name": "Blues Wireless Notecard",
 "sku": "NOTE-NBNA500",
 "board": "1.11",
 "cell": true,
 "gps": true,
 "api": 5,
 "body": {
  "org": "Blues Wireless",
  "product": "Notecard",
  "target": "r5",
  "version": "notecard-5.3.1",
  "ver_major": 5,
  "ver_minor": 3,
  "ver_patch": 1,
  "ver_build": 16292,
  "built": "Sep 17 2023 20:28:51"
 }
}
```

**Important:** Launch the built-in bootloader firmware by sending the `bootloader` command via your terminal emulator:

```bash
bootloader
```

> **Note:**
>
> In Windows Device Manager, this causes Notecard to disappear as a "Ports (COM & LPT)/USB Serial Device (VID 0x30A4, PID 0x0001)" and to reappear as a "Universal Serial Bus devices/STM32 BOOTLOADER (VID 0x0483, PID 0xDF11)".

With your device in bootloader mode, your final step is to flash the new firmware on your device using STM32CubeProgrammer. The specific steps you need to complete depends on the type of Notecard you are updating.

- Notecard Cellular, Notecard Cell+WiFi, Notecard WiFi: [Complete these steps](#using-the-stm32cubeprogrammer)
- Notecard LoRa: [Complete these steps](#using-the-stm32cubeprogrammer-lora)

### Using the STM32CubeProgrammer

Supported on

(Cell, Cell+WiFi, Skylo)

Complete the following steps if you’re updating firmware on Notecard Cellular, Notecard Cell+WiFi, or Notecard WiFi v1.

**Using the GUI**

Open the STM32CubeProgrammer application.

Select "USB" from the dropdown menu provided in the upper-right corner:

![connecting to device over usb](https://dev.blues.io/images/firmware/stm32cube-usb.png?v=c79b4146)

Select the port corresponding to your Notecard in the "Port" dropdown menu (likely "USB1"). You may need to click the button next to the port dropdown to refresh the list.

Click the "Connect" button and the log should update and display `Data read successfully`.

Next, access the "Erasing & Programming" screen by clicking the menu button with the arrow pointing down:

![erasing and programming firmware](https://dev.blues.io/images/firmware/stm32cube-erasing.png?v=ddf95b10)

Follow the other configuration options in the image above:

- Select the appropriate firmware `.bin` file.
- Check the "Verify programming" box.
- Check the "Run after programming" box.
- Finally, click the "Start Programming" button.

> **Warning:**
>
> **Never enable the "Full chip erase" option** as you will wipe the Notecard in a way that renders it permanently unusable.

After a few seconds of commands displayed in the log, you should see multiple dialog warnings/notifications to click through and confirm.

**Using the CLI**

In lieu of using the STM32CubeProgrammer GUI, you may use the `STM32_Programmer_CLI` that is installed alongside the GUI.

Make sure `STM32_Programmer_CLI` (macOS, Linux) or `STM32_Programmer_CLI.exe` (Windows) is in your `PATH` (or provide its absolute path in the command below). The program should have been installed in the same directory as `STM32CubeProgrammer` / `STM32CubeProgrammer.exe`.

Run the following command, substituting the path to your desired `.bin` firmware file, keeping in mind the serial `port` specified may be different depending on your OS:

```bash
STM32_Programmer_CLI --connect port=USB1 --write [path/to/binary.bin] 0x08000000 --verify --go 0x08000000
```

### Results

Once the update process is complete, your Notecard will reset and reconnect. You can verify the firmware process was successful by executing another `card.version` request and inspecting the `version` parameter.

```json
{"req": "card.version"}
```

### Using the STM32CubeProgrammer (LoRa)

Supported on

(LoRa)

Complete the following steps if you’re updating firmware on Notecard LoRa.

**Using the GUI**

Open the STM32CubeProgrammer application.

Select "UART" from the dropdown menu provided in the upper-right corner:

![connecting to device over uart](https://dev.blues.io/images/firmware/stm32cube-uart.png?v=9bae4e8b)

Select the port corresponding to your Notecard in the "Port" dropdown menu (likely something similar to "tty.usbserial-xxxxxx"). You may need to click the button next to the port dropdown to refresh the list.

![Selecting a port in STM32CubeProgrammer](https://dev.blues.io/images/firmware/stm32cube-port.png?v=f9facd6e)

Click the "Connect" button and the Log at the bottom of the screen should update and display `Data read successfully`.

Next, access the "Erasing & Programming" screen by clicking the menu button with the arrow pointing down:

![Erasing and programming firmware for Notecard LoRa](https://dev.blues.io/images/firmware/stm32cube-erasing-lora.png?v=b4e43026)

Follow the other configuration options in the image above:

- Select the appropriate firmware `.bin` file.
- Check the "Verify programming" box.
- Check the "Run after programming" box.
- Finally, click the "Start Programming" button.

> **Warning:**
>
> **Never enable the "Full chip erase" option** as you will wipe the Notecard in a way that renders it permanently unusable.

After a few seconds of commands displayed in the log, you should see multiple dialog warnings/notifications to click through and confirm.

**Using the CLI**

In lieu of using the STM32CubeProgrammer GUI, you may use the `STM32_Programmer_CLI` that is installed alongside the GUI.

Make sure `STM32_Programmer_CLI` (macOS, Linux) or `STM32_Programmer_CLI.exe` (Windows) is in your `PATH` (or provide its absolute path in the command below). The program should have been installed in the same directory as `STM32CubeProgrammer` / `STM32CubeProgrammer.exe`.

Run the following command, substituting the path to your desired `.bin` firmware file and the `port` of your device. On macOS and Linux you can use `ls /dev/tty.*` to find the appropriate port. On Windows you can use the STM32CubeProgrammer GUI or the `mode` command to find the port to use.

```bash
STM32_Programmer_CLI --connect port=/dev/tty.usbserial-xxxxx --write [path/to/binary.bin] 0x08000000 --verify --go 0x08000000
```

### Results

Once the update process is complete, your Notecard will reset and reconnect. You can verify the firmware process was successful by executing another `card.version` request and inspecting the `version` parameter.

```json
{"req": "card.version"}
```

## OTA DFU with Notehub

Supported on

(Cell, Cell+WiFi, Skylo, WiFi)

Notehub lets you manage the firmware running on your Notecards, making it easy to select from [available firmware](https://dev.blues.io/notecard/notecard-firmware-releases.md) and deploy it to one or more devices.

> **Tip:**
>
> In addition to using the Notehub UI as described below, you can manage Notecard and host MCU firmware updates using [reserved environment variables](https://dev.blues.io/notehub/host-firmware-updates/environment-variables-for-dfu.md) or the [Notehub API](https://dev.blues.io/notehub/host-firmware-updates/notehub-api-requests-for-dfu.md).

### Deploy Firmware

1. Select **Devices** from the left navigation bar and select a device from the list of devices in the **Notecard Firmware** tab.

   ![Device selected from list](https://dev.blues.io/images/notehub/device_select_notecard_fw.png?v=0efadb8e)

2. Select **Update** from the available options.

   ![Update option](https://dev.blues.io/images/notehub/device_update.png?v=da9a8a50)

3. Select the firmware you wish to apply from the list of available firmware, and click **Apply**.

   ![Select Notecard firmware](https://dev.blues.io/images/notehub/notecard_firmware_select.png?v=f1722ede)

4. Confirm you wish to update the Notecard firmware.

   ![Notecard firmware update confirmation](https://dev.blues.io/images/notehub/device_firmware_confirmation.png?v=4bf82d22)

5. Now that you have selected your firmware, you will see it in the **Requested Version** field.

   ![Notecard firmware requested](https://dev.blues.io/images/notehub/notecard_firmware_requested.png?v=60b8e3f4)

6. The next time the Notecard syncs with Notehub, it will begin the download and installation process. No further action is needed on your part as the Notecard will update itself after it downloads the binary. You can view the current status of the update any time in the **DFU Status** field, by navigating to the device details and clicking on the **Notecard Firmware** tab, or by [using the Notehub API](https://dev.blues.io/api-reference/notehub-api/project-api.md#get-device-dfu-status) to get the status of the DFU.

   ![Notecard firmware requested](https://dev.blues.io/images/notehub/notecard_firmware_status.png?v=db4fa89f)

> **Note:**
>
> 1. If using a Notecard Cellular, please be aware that OTA DFU will use data from your cellular data plan.
> 2. OTA DFU is not supported on a Notecard device when the [hub.set](https://dev.blues.io/api-reference/notecard-api/hub-requests/latest.md#hub-set) `"mode"` argument is `"minimum"` or `"off"`.

## Additional Resources

- [Notecard Firmware Releases](https://dev.blues.io/notecard/notecard-firmware-releases.md)
- [Notehub API Requests for DFU](https://dev.blues.io/notehub/host-firmware-updates/notehub-api-requests-for-dfu.md)
- [Notecard API Requests for DFU](https://dev.blues.io/notehub/host-firmware-updates/notecard-api-requests-for-dfu.md)
- [Environment Variables for DFU](https://dev.blues.io/notehub/host-firmware-updates/environment-variables-for-dfu.md)

[Working with the Notecard AUX Pins](https://dev.blues.io/notecard/notecard-walkthrough/working-with-the-notecard-aux-pins.md "Working with the Notecard AUX Pins") [Advanced Notecard Configuration](https://dev.blues.io/notecard/notecard-walkthrough/advanced-notecard-configuration.md "Advanced Notecard Configuration")
