I'm pleased to announce the latest Notecard developer firmware release, v5.3.1. 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.
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.
Without further ado, let's get to the details:
- Large Binary Payload Transfers
- Primary-to-Secondary SIM Failover
- Notecard Outboard Firmware Support for MCUboot Hosts
- Update Notecard Firmware via In-Browser Terminal
- Validate Notecard Requests and 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 APIs (with helper methods also available in the latest versions of note-arduino and note-python), 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 for short.)
For more information, read our guide on Sending and Receiving Large Binary Objects.
Primary-to-Secondary SIM Failover
The SIM failover feature is useful if you are using an external SIM with your Notecard, but still want the ability to switch between the primary eSIM on the Notecard and the external SIM.
This is accomplished via the
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:
{
"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.
{
"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. This release brings the N.O.F.U. capability to host MCUs that support MCUboot.
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.
Update Notecard Firmware via In-Browser Terminal
We've long provided extensive documentation on updating your Notecard firmware. 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:
> 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
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.
The latest versions of note-arduino
,
note-c
, and 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.
{"req":"note.add","body":{"foo":"bar"},"crc":"1234:9F27DC43"}
{"total":2,"crc":"1234:3EE67BF0"}
This check allows you to watch for these errors:
{"req":"note.add","body":{"fxx":"bx"},"crc":"1234:9F27DC43"}
{"err":"CRC error in request {io}"}
Read more in our guide on validating 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! 💙