Skip to content

Releases: ZZ-Cat/CRSFforArduino

2025-12-11 — Official support for Arduino Library Manager and PlatformIO Registry

10 Dec 23:27
d007578

Choose a tag to compare

Overview

CRSF for Arduino is now available to you in the Arduino IDE's Library Manager and PlatformIO's Registry.
Version parity across all three platforms (including here, on GitHub) is 1:1, so grab the latest and go!

I have also updated the Getting Started page to reflect the recent announcements.

The official PlatformIO Registry entry of CFA can be viewed here and I have since corrected all typos in the Installation tab over there.

A huge thank you to Ivan Kravets for transferring the namespace over to me, when I called it out. This makes me appreciate PlatformIO even more than what I already did (as it's my primary development environment for CFA).

What's Changed

  • fix(platformio): PlatformIO library.json manifest by @ZZ-Cat in #169

For more information

Full Changelog: v2025.12.8...v2025.12.11


Rolling release

CRSF for Arduino uses a rolling release model.
This means smaller, more incremental changes over time instead of one massive leap each time a release is made.
This helps me to balance cognitive load and energy with CFA and the rest of my personal life without burning myself out.
As an added bonus, this won't negatively impact CFA's release cycle.

2025-12-08 — Fix broken SemVer compatibility

07 Dec 21:22
374e59d

Choose a tag to compare

Release highlight

This is the second and final part to a two-part release from last night where I am publishing CRSF for Arduino to Arduino's Library Manager.

This release resolves a linter error in the PATCH field of CFA's version field in the library.properties file where I had put a leading zero where there should be none.

Update:
You can now download and install CFA in the Library Manager of the Arduino IDE, as you would with any other Arduino library.
Simply search up the keyword CRSFforArduino, select the latest version (currently 2025.12.8 as of this release), and click INSTALL.
Enjoy! =^/,..,^=

Update:
The Pull Request to Arduino's Library Registry has been merged, and CRSF for Arduino will be published to the Library Manager over the next 24~48 hours. =^/.^=
Once it is up there, you will be able to download-and-install CFA in your Arduino projects within the Arduino IDE itself exactly as you would with any other Arduino library.

The logs to CFA on the Library Manager can be viewed here

Remember, if you spot any bugs with CFA, would like to request development board compatibility, or request a feature, you may do so via my Issues tab.
For general feedback, comments, questions, show-and-tell etc, please use my Discussions tab for that.

What's Changed

  • chore: Bump version to 2025.12.8 by @ZZ-Cat in #167
  • Publish CRSF for Arduino to Arduino's Library Manager via their Library Registry.

For more information

Full Changelog: v2025.12.7...v2025.12.8
View the Pull Request to Arduino's Library Registry here


Rolling release

CRSF for Arduino uses a rolling release model.
This means smaller, more incremental changes over time instead of one massive leap each time a release is made.
This helps me to balance cognitive load and energy with CFA and the rest of my personal life without burning myself out.
As an added bonus, this won't negatively impact CFA's release cycle.

2025-12-07 — Publish CFA to Arduino's Library Registry

07 Dec 08:39
a4af85c

Choose a tag to compare

Release highlights

This is my first attempt at trying to publish CRSF for Arduino to Arduino's Library Registry.
If I am successful in this endeavour, this means you will be able to search the Library Manager in your Arduino IDE, and download-and-install CFA in the same way you would any other library. =^/.^=

So this is me doing the hard yards now to get that working. Expect a few more of these if I haven't quite nailed it here.

What's Changed

For more information

Full Changelog: v2025.10.26...v2025.12.7


Rolling release

CRSF for Arduino uses a rolling release model.
This means smaller, more incremental changes over time instead of one massive leap each time a release is made.
This helps me to balance cognitive load and energy with CFA and the rest of my personal life without burning myself out.
As an added bonus, this won't negatively impact CFA's release cycle.

2025-10-26 — Rolling release update

25 Oct 21:54
b7f0d84

Choose a tag to compare

Release highlight

I have re-factored CFA's Quality Control process to include comprehensive checks using Clang-Tidy in tandem with CppCheck, where one catches what the other one might miss. Quality Control now focuses its scanning only on CFA-specific code.
The Defect Detector is split into two separate environments — each environment has its own distinct configuration for complimentary code analysis.

What's Changed

  • refactor(quality control): Use Clang-Tidy together with CppCheck by @ZZ-Cat in #161

For more information

Full Changelog: v2025.9.2...v2025.10.26


Rolling release

CRSF for Arduino uses a rolling release model.
This means smaller, more incremental changes over time instead of one massive leap each time a release is made.
This helps me to balance cognitive load and energy with CFA and the rest of my personal life without burning myself out.
As an added bonus, this won't negatively impact CFA's release cycle.

2025-09-02 — The first rolling release

02 Sep 00:34
04281d3

Choose a tag to compare

Release highlights

Rolling Release instead of Point Release

CRSFforArduino (Official Short-hand: CFA) has replaced its Point Release model (EG v1.0.0, v1.0.1, v1.1.0 etc) with a Rolling Release model that is currently backwards-compatible with the existing version tracking that's used by both PlatformIO and the Arduino IDE.

Each new release is tagged based on the ISO 8601 way of displaying the date — IE YYYY.MM.DD (2025.9.2), and each release is titled accordingly.
The date is relative to the most recent merge to the Main-Trunk. This allows me to minimise scope creep (also known as feature creep) in any of the branches off the Main-Trunk, and keep the topic focused on smaller and more incremental changes.
This is one of the ways I am reducing cognitive load on myself without sacrificing CFA's overall code quality.

Three new event callbacks

These can be useful for tracking connection status or providing your own pass-through methods.

  • rawDataCallback — This can be used to read the raw data bytes. Good for implementing your own serial pass-through.
  • linkDownCallback — This fires when no data is received within the time-out specified by CRSF_FAILSAFE_STAGE1_MS — EG 300 milliseconds. You can use this to implement your own "Fail-Safe".
  • linkUpCallback — This fires when the previous connection was dropped and connection is re-established. This can be used to implement your own "Fail-Safe Recovery".

See #134 for details. Currently, watch this space for documentation in the Wiki on how to use these new callbacks.

Containerised development

The development side of CRSF for Arduino is now done inside a Dev Container.
This ensures the entire code-base is isolated and can be compiled, checked, and deployed all within its own environment without any external influence; greatly streamlining my workflow even further.

What's Changed

New feature(s)

  • feat(serial receiver interface): ✨ Introduce three new callbacks by @ddanilchenko in #134

Chores

  • chore(library): Discontinue V1.0.x-maintenance-branch by @ZZ-Cat in #136
  • Containerise CFA by @ZZ-Cat in #154
  • ci(quality control): Simplify QC, build, and check process by @ZZ-Cat in #156
  • fix(platformio): 🐛 Use relative paths instead of absolute paths by @ZZ-Cat in #157
  • Drop Point Release in favour of Rolling Release by @ZZ-Cat in #158

New Contributors

For more information

Full Changelog: v1.0.3...v2025.9.2
Some parts of the Wiki are yet to be updated to reflect recent changes. Watch this space.


Rolling Release

As previously mentioned, CRSF for Arduino now uses a rolling release model.
This means smaller, more incremental changes over time instead of one massive leap each time a release is made.
This helps me to balance cognitive load and energy with CFA and the rest of my personal life without burning myself out.
As an added bonus, this won't negatively impact CFA's release cycle... if anything, you guys may see an up-tick in the frequency of new releases.

Version 1.0.4 - Final maintenance update to v1.0.0

29 Aug 23:08
97d4b38

Choose a tag to compare

Overview

Note

This is the fourth and final maintenance release for Version 1.0.0.
By the time you're reading this release note, the v1.0.x-Maintenance-Branch has been merged into the Main-Trunk, thus concluding its development.
All new development is going into the upcoming Version 1.1.0 release, this includes any issues that are found since v1.0.4.

What's Changed

Not a lot, aside from a couple of quality-of-life stuff regarding debugging and semantic versioning.

Re-factors

  • refactor(serial receiver interface): ♻️ Facilitate custom baud rates by @ZZ-Cat in #132
    In your CRSFforArduino::begin() function, you can now pass in your own baud rate as an unsigned long integer parameter.

Chores

  • chore(library): House keeping by @ZZ-Cat in #135
    This streamlines the Semantic Versioning of CRSF for Arduino, thus making it less tedious for things such as re-bases.
    You can now view CRSF for Arduino's boiler plate in the Serial Monitor, if you have the CRSF_DEBUG_ENABLED set to 1.
    If you want to view your current configuration in the Serial Monitor, set CRSF_DEBUG_ENABLE_CONFIGURATION_DUMP to 1 in CFA_Config.hpp.

For more information

Full Changelog: v1.0.3...v1.0.4

For updating and installation instructions, please read the Wiki.


Semantic Versioning

All releases of CRSF for Arduino follow the Semantic Versioning Guidelines.
This means "Major.Minor.Patch".
Major = New features that are incompatible with previous iterations.
Minor = New features &/or hardware support that retains compatibility with the current Major release.
Patch = Bug fixes.

This Patch Version is the fourth and final follow-up release to Version 1.0.x.
Your feedback is always welcome. If you spot any bugs, don't hesitate to open an issue.
For general comments & questions, please use the discussions section.
New contributors are always welcome. Please read through my Contribution Guidelines before you go Gung Ho with coding.

Version 1.0.3

20 Jul 09:11
aa2be50

Choose a tag to compare

Overview

Note

You MUST update your copy of CRSF for Arduino to this version as soon as possible.
CRSF for Arduino has been re-licensed to the GNU Affero General Public License v3 and is in effect from v1.0.3 onwards.
The GNU General Public License v3 no longer applies to CRSF for Arduino, and is invalid from v1.0.3 onwards.
This is the first security-focused release of its kind, and any future releases that are security-focused, you SHOULD update to that version as soon as possible.

I know this isn't the release many of you were expecting, but it's one that's sorely needed to be made.
The main highlight here is CRSF for Arduino has been re-licensed to the GNU Affero General Public License v3.
So, you SHOULD take the time to familiarise yourself with that as soon as you can.

There are a couple of minor things here that are also noteworthy, and that's moving from the old Arduino/MBed version of RP2040 support to Earle Philhower's Arduino-Pico package for RP2040 support; and I have fixed a typo in the compatibility table for STM32F405RG targets.

On my side, there's some CI changes, where I have re-factored my old Arduino and PlatformIO CIs into one unified Quality Control CI.
As a part of my Quality Control CI, I am performing static code analysis in (what I call) my "Defect Detector", and I am performing vulnerability scanning with CodeQL.

What's Changed

The elephant in the room

  • Re-license CRSF for Arduino under the latest GNU Affero General Public License by @ZZ-Cat in #128

Security

  • ci(CodeQL): Add vulnerability scanning using CodeQL by @ZZ-Cat in #89

Fixes

  • fix(targets): Refine ESP32 compatibility by @ZZ-Cat in #99
  • fix(compatibility table): 🚑 Add missing STM32F405RG string to deviceNames[] array by @ZZ-Cat in #107

Re-factors

  • refactor(targets): ♻️ Use Arduino-Pico instead of the "official" PlatformIO package for RP2040 by @ZZ-Cat in #112
  • refactor(CI): ♻️ Replace existing CIs with one Quality Control CI by @ZZ-Cat in #115
  • refactor(quality control): Use an isolated version of CFA_Config.hpp for Defect Detector environment. by @ZZ-Cat in #117

Chores

  • chore(library): Clean up deprecated CI and fix defects by @ZZ-Cat in #116

For more information

Full Changelog: v1.0.0...v1.0.3


Semantic Versioning

All releases of CRSF for Arduino follow the Semantic Versioning Guidelines.
This means "Major.Minor.Patch".
Major = New features that are incompatible with previous iterations.
Minor = New features &/or hardware support that retains compatibility with the current Major release.
Patch = Bug fixes.

This Patch Version is the third follow-up release to Version 1.0.x,
and is the first security-focused release of its kind for CRSF for Arduino.
While every effort has gone in to ensure the latest release is bug-free, there are no guarantees with firmware development.
Your feedback is always welcome. If you spot any bugs, don't hesitate to open an issue.
For general comments & questions, please use the discussions section.
New contributors are always welcome. Please read through my Contribution Guidelines before you go Gung Ho with coding.

Version 1.0.2

18 Mar 22:02
92200ea

Choose a tag to compare

Overview

This is the second maintenance release of CRSF for Arduino.
It resolves the initialisation bug where the underlying SerialReceiver::SerialReceiver() constructor was not being called when you instantiate CRSF for Arduino in your sketches.

For ESP32 targets, you are now able to assign custom UART pins via the constructor CRSFforArduino::CRSFforArduino(HardwareSerial *serialPort, int RxPin, int TxPin).

The API Reference has been updated to reflect the changes introduced by this release.

What's Changed

Fixes

  • fix(targets): Refine ESP32 compatibility by @ZZ-Cat in #99

More information

Full Changelog: v1.0.1...v1.0.2

The Wiki is available for your perusal.


Semantic Versioning

All releases of CRSF for Arduino follow the Semantic Versioning Guidelines.
This means "Major.Minor.Patch".
Major = New features that are incompatible with previous iterations.
Minor = New features &/or hardware support that retains compatibility with the current Major release.
Patch = Bug fixes.

This Patch Version is the second follow-up release to Major Version 1.x.x.
While every effort has gone in to ensure the latest release is bug-free, there are no guarantees with firmware development.
Your feedback is always welcome. If you spot any bugs, don't hesitate to open an issue.
For general comments & questions, please use the discussions section.
New contributors are always welcome. Please read through my Contribution Guidelines before you go Gung Ho with coding.


Installation

Installation instructions have moved to the Wiki. To install this version, view the Getting Started guide.

Version 1.0.1

06 Mar 21:45
c26e139

Choose a tag to compare

Overview

This is a follow-up release to Version 1.0.0, and it is for those that were unable to install or build CRSF for Arduino in the Arduino IDE.

What's Changed

Fixes

  • fix(arduino): Arduino IDE build failure by @ZZ-Cat in #94

Chores

  • ci(workflows): Arduino, Auto-close, and PlatformIO maintenance by @ZZ-Cat in #91

More information

Full Changelog: v1.0.0...v1.0.1


Semantic Versioning

All releases of CRSF for Arduino follow the Semantic Versioning Guidelines.
This means "Major.Minor.Patch".
Major = New features that are incompatible with previous iterations.
Minor = New features &/or hardware support that retains compatibility with the current Major release.
Patch = Bug fixes.

This is Patch Version is the first follow-up release to Major Version 1.x.x.
While every effort has gone in to ensure the latest release is bug-free, there are no guarantees with firmware development.
Your feedback is always welcome. If you spot any bugs, don't hesitate to open an issue.
For general comments & questions, please use the discussions section.
New contributors are always welcome. Please read through my Contribution Guidelines before you go Gung Ho with coding.


Installation

Arduino IDE v2.x.x

  1. Download the Source Code (ZIP) in the Assets section of this Release, and save to a convenient space on your hard drive.
  2. In the Arduino IDE, go to Sketch -> Include Library -> Add .ZIP Library...
  3. Click CRSFforArduino-1.0.1 and Arduino IDE will automatically install it for you.
  4. Build-test one of the examples. preferably the rc_channels example by File -> Examples -> CRSFforArduino -> rc_channels.
  5. Click Verify and the build should pass.

PlatformIO

Installing for the first time:

  1. Type pio pkg install -l https://github.com/ZZ-Cat/CRSFforArduino.git into your Terminal, using the version tag #1.0.1 suffix.
  2. Hit enter.
  3. PlatformIO will automatically install CRSF for Arduino for you.

Updating from a previous version:

You MUST delete the previous version before you update to this version.
The version tag suffix MUST match the Semantic Version of CRSF for Arduino that you currently have.

  1. Type: pio pkg install -l https://github.com/ZZ-Cat/CRSFforArduino.git into your Terminal, followed by your existing version suffix. EG #v1.0.0
  2. Hit enter.
  3. Once PlatformIO has cleared out CRSF for Arduino, this is where you install this version.
  4. Type: pio pkg install -l https://github.com/ZZ-Cat/CRSFforArduino.git#v1.0.1 into your Terminal.
  5. PlatformIO will automatically install this version of CRSF for Arduino.

You MAY build-test your side of things, to ensure compilation passes.

If you're unfamiliar with the Command Line, you MAY add https://github.com/ZZ-Cat/CRSFforArduino.git#v1.0.1 to your lib_deps section of your platformio.ini configuration file.

Version 1.0.0... at last!

23 Feb 06:05
35eb5c6

Choose a tag to compare

Overview

Wow, what a journey it has been!
The first MAJOR cut of CRSF for Arduino is finally here.

I can't say this enough: A huge thank you to you all for your contributions, hardware testing, Issues, Pull Requests, your patience with me, and your wonderful ideas in my Discussions tab.
You all have helped make Version 1.0.0 of CRSF for Arduino a reality.

Thank you very much from the bottom of my heart.
This project has been some two years in the making (both offline and online), through various iterations and attempts.
A few bumps along the way, plus a point where I simply wanted to give up, delete this repo and call it quits.
But, I found it in me to keep going, despite the setbacks... and gods, that has finally paid off.

Some say firmware and software development is a thank-less job.
I beg to differ. My own experience, I have had nothing but overwhelming support from my user-base.
You all have been what's kept me going through the times where I had reached my absolute lowest with CRSF for Arduino.
You folks are amazing.

So, here's to you all, my gift to you... CRSF for Arduino, Version 1.0.0.
Enjoy~ 🖤

What's new

Features

  • feat(telemetry): Add battery sensor telemetry by @ZZ-Cat in #45
  • feat(library): Add full telemetry support by @ZZ-Cat in #47
  • feat(link statistics): Add Link Statistics API by @ZZ-Cat in #78
  • feat(serial receiver interface): Add custom Flight Mode strings as telemetry by @berickson in #83

Hardware targets

  • feat(devboard): Add support for Teensy 3.x and 4.x by @ZZ-Cat in #37
  • feat(devboard): Add support for ESP32 by @ZZ-Cat in #39
  • feat(devboard): Add support for RP2040 by @ZZ-Cat in #72
  • feat(devboard) Add support for STM32 F103, F4, and H7 targets by @ZZ-Cat in #81

What's Changed

Fixes

  • fix(hal): Inherit from Stream instead of HardwareSerial across all supported targets by @ZZ-Cat in #44
  • fix(platformio): Remove $PROJECT_DIR from all relevant paths. by @ZZ-Cat in #64
  • fix(compatibility table): Add missing Arduino Nano 33 IoT compatibility by @Speshl in #57
  • fix(platformio): CRSF for Arduino not recognised as a dependency by @ZZ-Cat in #77

Re-factors and re-writes

  • refactor(rc channels): Improve readability of RC Channels in Serial Plotter by @Kristabel28 in #40
  • refactor(compatibility table): Permissive Incompatibility by @ZZ-Cat in #68
  • refactor(hal): Deprecate DevBoards class and bring HardwareSerial class up to the Sketch Layer by @ZZ-Cat in #71
  • refactor(rc channels): Use event handler for fail-safe and RC channels by @ZZ-Cat in #79
  • refactor(library): Flight Modes API and Custom Flight Modes integration, plus code and comments clean-up by @ZZ-Cat in #84

Chores

  • chore(library): Restructure entire repository by @ZZ-Cat in #46

Miscellaneous

  • build(ci): Trigger CI checks on pull requests by @ZZ-Cat in #41

Kia ora and haere mai to our new contributors

Full Changelog: v0.4.0...v1.0.0

Semantic Versioning

All releases of CRSF for Arduino follow the Semantic Versioning Guidelines.
This means "Major.Minor.Patch".
Major = New features that are incompatible with previous iterations.
Minor = New features &/or hardware support that retains compatibility with the current Major release.
Patch = Bug fixes.

This is Major Version 1.x.x and is considered stable.
While every effort has gone in to ensure the latest release is bug-free, there are no guarantees with firmware development.
Your feedback is always welcome. If you spot any bugs, don't hesitate to open an issue.
For general comments & questions, please use the discussions section.
New contributors are always welcome. Please read through my Contribution Guidelines before you go Gung Ho with coding.