Releases: ZZ-Cat/CRSFforArduino
2025-12-11 — Official support for Arduino Library Manager and PlatformIO Registry
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
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
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.8by @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
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
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
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
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 byCRSF_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
- @ddanilchenko made their first contribution in #134
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
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 yourCRSFforArduino::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 theCRSF_DEBUG_ENABLEDset to1.
If you want to view your current configuration in the Serial Monitor, setCRSF_DEBUG_ENABLE_CONFIGURATION_DUMPto1inCFA_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
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
Security
Fixes
- fix(targets): Refine ESP32 compatibility by @ZZ-Cat in #99
- fix(compatibility table): 🚑 Add missing
STM32F405RGstring todeviceNames[]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.hppfor Defect Detector environment. by @ZZ-Cat in #117
Chores
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
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
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
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
Chores
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
- Download the
Source Code (ZIP)in theAssetssection of this Release, and save to a convenient space on your hard drive. - In the Arduino IDE, go to
Sketch->Include Library->Add .ZIP Library... - Click
CRSFforArduino-1.0.1and Arduino IDE will automatically install it for you. - Build-test one of the examples. preferably the
rc_channelsexample byFile->Examples->CRSFforArduino->rc_channels. - Click
Verifyand the build should pass.
PlatformIO
Installing for the first time:
- Type
pio pkg install -l https://github.com/ZZ-Cat/CRSFforArduino.gitinto your Terminal, using the version tag#1.0.1suffix. - Hit enter.
- 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.
- Type:
pio pkg install -l https://github.com/ZZ-Cat/CRSFforArduino.gitinto your Terminal, followed by your existing version suffix. EG#v1.0.0 - Hit enter.
- Once PlatformIO has cleared out CRSF for Arduino, this is where you install this version.
- Type:
pio pkg install -l https://github.com/ZZ-Cat/CRSFforArduino.git#v1.0.1into your Terminal. - 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!
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_DIRfrom 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
DevBoardsclass and bringHardwareSerialclass 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
Miscellaneous
Kia ora and haere mai to our new contributors
- @Kristabel28 made their first contribution in #40
- @Speshl made their first contribution in #57
- @berickson made their first contribution in #83
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.