---
title: Announcing the Notecard Developer Firmware Release v5.3.1
description: Learn about the new features included in the latest Notecard developer firmware release.
source_url: https://dev.blues.io/blog/announcing-notecard-firmware-531/
canonical_url: https://dev.blues.io/blog/announcing-notecard-firmware-531/
markdown_url: https://dev.blues.io/blog/announcing-notecard-firmware-531.md
---

# Announcing the Notecard Developer Firmware Release v5.3.1

![Announcing the Notecard Developer Firmware Release v5.3.1 banner](https://dev.blues.io/images/blog/posts/announcing-notecard-firmware-531/banner.png?v=68c579a3)

September 18, 2023

## Learn about the new features included in the latest Notecard developer firmware release.

- [Firmware](https://dev.blues.io/blog/tag/firmware)

[![Rob Lauer](https://dev.blues.io/images/blog/authors/rob-lauer.jpg?v=57fb21a7)](https://dev.blues.io/blog/author/rob-lauer/)

[Rob LauerSenior Director of Developer Relations](https://dev.blues.io/blog/author/rob-lauer/)

I'm pleased to announce the [latest Notecard developer firmware release, v5.3.1](https://dev.blues.io/notecard/notecard-firmware-releases.md#v5-3-1-september-18-2023). Admittedly, we had wanted to push this out a *little* sooner, but considering the scope of new features we also wanted to get it right - and there is A LOT in this release that is worth waiting for.

> **Note:**
>
> For those of you new to Notecard firmware updates, we segment them into "Developer" releases (latest features) and "LTS" releases (recommended for production deployments). For additional context, please consult the our [Firmware Release Policies](https://dev.blues.io/notecard/notecard-firmware-releases.md#firmware-release-policies).

Without further ado, let's get to the details:

- [Large Binary Payload Transfers](#large-binary-payload-transfers)
- [Primary-to-Secondary SIM Failover](#primary-to-secondary-sim-failover)
- [Notecard Outboard Firmware Support for MCUboot Hosts](#notecard-outboard-firmware-update-support-for-mcuboot-hosts)
- [Update Notecard Firmware via In-Browser Terminal](#update-notecard-firmware-via-in-browser-terminal)
- [Validate Notecard Requests and Responses](#validate-notecard-responses)

## Large Binary Payload Transfers

Arguably the most anticipated/most requested Notecard firmware feature is the ability to **efficiently transfer large binary payloads** like images and zip archives.

Even though the Notecard was designed as a low-power and low-bandwidth device, we previously made it possible to "chunk up" a binary payload and send it \~4KB at a time to Notehub. While this was functional, it was overly complicated and difficult to implement on both the host and cloud.

Now, using the new [card.binary](https://dev.blues.io/api-reference/notecard-api/card-requests.md#card-binary) APIs (with helper methods also available in the latest versions of [note-arduino](https://dev.blues.io/tools-and-sdks/firmware-libraries/arduino-library.md) and [note-python](https://dev.blues.io/tools-and-sdks/firmware-libraries/python-library.md)), you can store raw binary data in a reserved area of flash on the Notecard. The Notecard can be programmed to send this large block of data directly to Notehub. Likewise, you can reverse the process and get binary data from the cloud, save it to flash on the Notecard, and use your host to retrieve the data. It's all made possible through some ingenious firmware development from our team and the usage of Consistent Overhead Byte Stuffing (or [COBS](https://dev.blues.io/api-reference/glossary.md#cobs) for short.)

For more information, read our guide on [Sending and Receiving Large Binary Objects](https://dev.blues.io/guides-and-tutorials/notecard-guides/sending-and-receiving-large-binary-objects.md).

## Primary-to-Secondary SIM Failover

The [SIM failover feature](https://dev.blues.io/guides-and-tutorials/notecard-guides/using-external-sim-cards.md#configuring-sim-failover) is useful if you are using an external SIM with your Notecard, but still want the ability to switch between the embedded SIM on the Notecard and the external SIM.

This is accomplished via the [card.wireless](https://dev.blues.io/api-reference/notecard-api/card-requests.md#card-wireless) API and its `method` argument. For instance, the following command will tell the Notecard to attempt to register with the external SIM *first* and only switch to the internal SIM if there is a network registration failure:

```json
{
  "req": "card.wireless",
  "method": "dual-primary-secondary",
  "apn": "airtelgprs.com"
}
```

This 5.3.1 firmware release includes a new `hours` argument that lets you specify the number of hours after which the Notecard should attempt to switch back to the preferred SIM.

```json
{
  "req": "card.wireless",
  "method": "dual-primary-secondary",
  "apn": "airtelgprs.com",
  "hours": 2
}
```

## Notecard Outboard Firmware Update Support for MCUboot Hosts

Another popular Notecard feature is [Notecard Outboard Firmware Update](https://dev.blues.io/notehub/host-firmware-updates/notecard-outboard-firmware-update.md). This release brings the N.O.F.U. capability to host MCUs that support [MCUboot](https://docs.mcuboot.com/).

Most notably, this includes the **Nordic's nRF91, nRF53, and nRF52** series of hosts.

Read more about [implementing Notecard Outboard Firmware Update on MCUboot-capable hosts](https://github.com/blues/note-zephyr/blob/main/examples/mcuboot-blinky/README.md).

## Update Notecard Firmware via In-Browser Terminal

We've long provided extensive documentation on [updating your Notecard firmware](https://dev.blues.io/notecard/notecard-firmware-releases.md). However, we know it can be a tedious process depending on the tooling you are using.

**While this new feature will only be *truly* useful with the *next* firmware release, you're now able to update firmware directly from the in-browser terminal!**

Just try the `firmware list` and `firmware install <version>` commands:

```json
> firmware
* Perform firmware update on a Notecard.
* Usage:
*   firmware list
*   firmware install <version>
*   firmware help
> firmware list
~ 8 Firmware
~  Date                   Version          Notes                                 
~  2021-11-17 (2yr ago)   notecard-2.1.1   LTS (Long Term Support) Release       
~  2022-02-19 (2yr ago)   notecard-2.2.1   LTS (Long Term Support) Release       
~  2022-06-13 (1yr ago)   notecard-2.3.1   LTS (Long Term Support) Release       
~  2022-12-06 (9mo ago)   notecard-4.1.1   LTS4xx Initial Release                
~  2023-01-27 (8mo ago)   notecard-2.4.1   LTS2xx Maintenance Release            
~  2023-02-27 (7mo ago)   notecard-4.2.1   LTS4xx Q1 2023 maintenance release    
~  2023-05-05 (4mo ago)   notecard-4.4.1   LTS4xx Q2 2023 maintenance release    
~  2023-05-11 (4mo ago)   notecard-5.1.1   2023 Q1 Developer Release    
~  2023-09-14 (1dy ago)   notecard-5.3.1   2023 Q3 Developer Release
```

> **Warning:**
>
> If you do update a Notecard *to a version earlier than v5.3.1*, subsequent firmware updates will have to be done with one of the other documented methods.

## Validate Notecard Responses

In rare cases, dropped bytes on the I2C or UART interfaces could result in JSON parsing errors on the Notecard. The latest version of the Notecard allows you to optionally validate all responses from the Notecard using a Cyclic Redundancy Check (CRC) with the new `crc` argument.

> **Note:**
>
> The latest versions of [`note-arduino`](https://dev.blues.io/tools-and-sdks/firmware-libraries/arduino-library.md), [`note-c`](https://github.com/blues/note-c), and [`note-go`](https://github.com/blues/note-go) all apply the CRC checks described below, and additionally perform automatic retries on I/O errors. If you’re using one of these libraries make sure you update to the latest version, and Notecard response validation will happen automatically with no extra work required.

The new `crc` argument can optionally be provided to any Notecard API, as shown below with the `note.add` request.

```json
{"req":"note.add","body":{"foo":"bar"},"crc":"1234:9F27DC43"}
```

```json
{
 "total": 2,
 "crc": "1234:3EE67BF0"
}
```

This check allows you to watch for these errors:

```json
{"req":"note.add","body":{"fxx":"bx"},"crc":"1234:9F27DC43"}
```

```json
{"err":"CRC error in request {io}"}
```

Read more in our guide on [validating Notecard responses](https://dev.blues.io/notecard/notecard-walkthrough/advanced-notecard-configuration.md#validate-notecard-responses).

## Summary

Is there a useful Notecard feature you're looking to see in the next release? Or maybe an improvement to an existing feature or API? Let us know in the [Blues community forum](https://discuss.blues.com/)! 💙
