Skip to content

Hardware Compatibility

Cassandra "ZZ Cat" Robinson edited this page Feb 21, 2024 · 5 revisions

Alternatively titled "Can I use CRSF for Arduino on my development board?"
To that, I say "Yes, but..."

Minimum requirements

Your hardware MUST meet these requirements if you wish to use CRSF for Arduino:

  • Core Clock Speed: 48 MHz (or faster).
  • CPU: ARM Cortex M0+ (or later).
  • Flash Memory: 32 KB (or more).
  • UART Baud rate: 420,000 (target MUST be capable of at least 400,000).

The Compatibility Table

CRSF for Arduino comes with a "compatibility check" (Henceforth referred to as the "Compatibility Table") to ensure the target hardware (EG your development board) meets or exceeds the minimum requirements.

This is something of a first for any "Arduino Library", and the intention here is to set a minimum bar in-firmware for targets that do work with CRSF for Arduino and simultaneously filter out the ones that don't.
There are numerous reasons for a given target being incompatible, and most cases, it's legacy hardware with 8~16 MHz core clock and around 16 KB (or less) of flash memory. The issue with the core clock translates directly to CRSF for Arduino being unable to communicate to your receiver at the required 400K baud rate.
Memory incompatibility comes down to the simple fact that there isn't enough memory available on the target hardware for any firmware that uses CRSF for Arduino. CRSF for Arduino, at bare minimum (IE Configured to exclusively use RC Channels alone) has a memory footprint of around 20~25 KB. Even on targets with 32 KB of flash memory, this equates to 63~78 % of all available memory, which MAY NOT be sufficient for all use cases that CRSF for Arduino is capable of.

Is my device compatible

Architectures

CRSF for Arduino is compatible with a diverse range of targets that are from the following architectures:

  • ESP32
  • RP2040
  • SAMD21, SAMD5x and SAME5x
  • STM32
    • F103
    • F4xx
    • F7xx
    • H7xx
  • Teensy 3.x
    • NB: You SHOULD NOT use Teensy 3.x boards for new projects, as these have been discontinued by the manufacturer.
      Support for Teensy 3.x boards is limited and may be removed in the next MAJOR release.
      Instead, you SHOULD use Teensy 4.x or later.
  • Teensy 4.x

Targets

ESP32

  • Adafruit Feather ESP32
  • Adafruit Feather ESP32-S2
  • Adafruit Feather ESP32-S3 (2 MB PSRAM)
  • Adafruit Feather ESP32-S3 (NO PSRAM)
  • Adafruit ItsyBitsy ESP32
  • Adafruit Metro ESP32-S2
  • Adafruit QtPy ESP32
  • Adafruit QtPy ESP32 Pico
  • Adafruit QtPy ESP32-C3
  • Adafruit QtPy ESP32-S2
  • Adafruit QtPy ESP32-S3
  • Arduino Nano ESP32
  • Espressif ESP32-C3-DevKit
  • Espressif ESP32-S3-DevKit
  • Seeed Studio XIAO ESP32-C3
  • Seeed Studio XIAO ESP32-S3
  • SparkFun ESP32 RedBoard IoT
  • SparkFun ESP32 Thing
  • SparkFun ESP32 Thing Plus
  • SparkFun ESP32-S2 Thing Plus

RP2040

  • Arduino Nano RP2040 Connect
  • Raspberry Pi Pico RP2040

SAMD21

  • Adafruit Feather M0 and all of its variants, including the Adafruit Feather M0 Express
  • Adafruit ItsyBitsy M0 Express
  • Adafruit Metro M0 Express
  • Adafruit QtPy M0
  • Adafruit Trinket M0
  • Arduino MKR series:
    • MKR 1000
    • MKR Fox 1200
    • MKR GSM 1400
    • MKR NB 1500
    • MKR VIDOR 4000
    • MKR WAN 1300 and MKR WAN 1310
    • MKR WIFI 1010
    • MKR Zero
  • Arduino Nano 33 IoT
  • Arduino Zero
  • Seeed Studio XIAO SAMD21

SAMD51

  • Adafruit Feather M4 Express
  • Adafruit Grand Central M4
  • Adafruit ItsyBitsy M4 Express
  • Adafruit Metro M4 Express
  • Adafruit Metro M4 Express AirLift Lite

SAME51

  • Adafruit Feather M4 CAN Express

STM32

  • Adafruit
    • Feather F405
  • Arduino
    • Arduino Nicla Vision
    • Arduino Opta
    • Arduino Portenta H7
  • Black Pill
    • F103C8
    • F103C8 (128 KB Flash memory variant)
    • F401CC
    • F411CE
  • Blue Pill
    • F103C6
    • F103C8
    • F103C8 (128 KB Flash memory variant)
  • Generic STM32F103xx
    • STM32F103C6
    • STM32F103C8
    • STM32F103CB
    • STM32F103R6
    • STM32F103R8
    • STM32F103RB
    • STM32F103RC
    • STM32F103RD
    • STM32F103RE
    • STM32F103RF
    • STM32F103RG
    • STM32F103T6
    • STM32F103T8
    • STM32F103TB
    • STM32F103V8
    • STM32F103VB
    • STM32F103VC
    • STM32F103VD
    • STM32F103VE
    • STM32F103VF
    • STM32F103VG
    • STM32F103ZC
    • STM32F103ZD
    • STM32F103ZE
    • STM32F103ZF
    • STM32F103ZG
  • Generic STM32F4xxyy
    • STM32F401CB
    • STM32F401CC
    • STM32F401CD
    • STM32F401CE
    • STM32F401RB
    • STM32F401RC
    • STM32F401RD
    • STM32F401RE
    • STM32F405OE (Only available with stm32duino, and not available in PlatformIO)
    • STM32F405OG (Only available with stm32duino, and not available in PlatformIO)
    • STM32F405RG
    • STM32F405VG (Only available with stm32duino, and not available in PlatformIO)
    • STM32F405ZG (Only available with stm32duino, and not available in PlatformIO)
    • STM32F407VE
    • STM32F407VG
    • STM32F410C8
    • STM32F410CB
    • STM32F410R8
    • STM32F410RB
    • STM32F411CE
    • STM32F411RC
    • STM32F411RE
    • STM32F412CE
    • STM32F412CG
    • STM32F412RE
    • STM32F412RG
    • STM32F413CG
    • STM32F413CH
    • STM32F413RG
    • STM32F413RH
    • STM32F415RG
    • STM32F417VE
    • STM32F417VG
    • STM32F423CH
    • STM32F423RH
    • STM32F446RC
    • STM32F446RE
  • Generic STM32F722xx (Only available with stm32duino, and not available in PlatformIO)
    • STM32F722IC
    • STM32F722IE
    • STM32F722RC
    • STM32F722RE
    • STM32F722VC
    • STM32F722VE
    • STM32F722ZC
    • STM32F722ZE
  • Generic STM32H745xx (Only available with stm32duino, and not available in PlatformIO)
    • STM32H745BG
    • STM32H745BI
    • STM32H745IG
    • STM32H745II
    • STM32H745ZG
    • STM32H745ZI
  • Generic STM32H750xx
    • STM32H750BT
  • SparkFun
    • MicroMod F405
  • ST
    • Black F407VE
    • Black F407VG
    • Black F407ZE
    • Black F407ZG
    • Blue F407VE Mini
    • Discovery F413ZH
    • Disocvery F746NG
    • Nucleo F401RE
    • Nucleo F411RE
    • Nucleo F429ZI
    • Nucleo F446RE
    • Nucleo F722ZE
    • Nucleo F746ZG
    • Nucleo F756ZG
    • Nucleo F767ZI
    • Nucleo H723ZG
    • Nucleo H743ZI

Teensy

  • Teensy 3.x
  • Teensy 4.x

Compatible receivers

Any receiver that uses ExpressLRS or TBS Crossfire firmwares can be used with CRSF for Arduino.

Clone this wiki locally