

CRSF (Crossfire) is a long-range, low-latency radio control system designed for remote-controlled aircraft and drones. It ensures reliable communication between the transmitter and receiver, even in challenging environments. Known for its robust signal strength and minimal latency, CRSF is widely used in FPV (First Person View) drones, UAVs, and other RC applications where precision and reliability are critical.








| Parameter | Specification |
|---|---|
| Frequency Range | 868 MHz (EU) / 915 MHz (US) |
| Transmission Power | Up to 2W (adjustable) |
| Latency | As low as 4 ms |
| Communication Protocol | CRSF (Crossfire Serial Protocol) |
| Range | Up to 100+ km (line of sight) |
| Modulation | Frequency Hopping Spread Spectrum (FHSS) |
| Voltage Input (Receiver) | 4.5V - 8.4V |
| Current Consumption | ~100 mA (receiver, typical) |
| Pin Name | Description |
|---|---|
| GND | Ground connection |
| VCC | Power input (4.5V - 8.4V) |
| CH1 | PWM/PPM/SBUS output for channel 1 |
| CH2 | PWM/PPM/SBUS output for channel 2 |
| TX | CRSF protocol data output (to flight controller) |
| RX | CRSF protocol data input (from flight controller) |
| Pin Name | Description |
|---|---|
| GND | Ground connection |
| VCC | Power input (via RC transmitter module bay) |
| TX | CRSF protocol data output (to RC transmitter) |
| RX | CRSF protocol data input (from RC transmitter) |
Connecting the Receiver to a Flight Controller:
GND pin of the receiver to the ground pin of the flight controller.VCC pin of the receiver to a 5V or 8.4V power source.TX and RX pins to establish a CRSF protocol connection with the flight controller's UART port. Ensure the TX pin of the receiver connects to the RX pin of the flight controller, and vice versa.Binding the Receiver to the Transmitter:
Configuring the Flight Controller:
While CRSF is typically used with flight controllers, it can also interface with an Arduino UNO for custom applications. Below is an example of reading CRSF data using the Arduino's UART.
#include <SoftwareSerial.h>
// Define RX and TX pins for SoftwareSerial
#define RX_PIN 10
#define TX_PIN 11
// Initialize SoftwareSerial for CRSF communication
SoftwareSerial crsfSerial(RX_PIN, TX_PIN);
void setup() {
// Start the serial communication
Serial.begin(9600); // For debugging
crsfSerial.begin(115200); // CRSF protocol baud rate
Serial.println("CRSF Receiver Initialized");
}
void loop() {
// Check if data is available from the CRSF receiver
if (crsfSerial.available()) {
// Read and print the incoming data
char incomingByte = crsfSerial.read();
Serial.print("Received: ");
Serial.println(incomingByte, HEX); // Print data in hexadecimal format
}
}
TX pin is connected to the Arduino's RX_PIN (pin 10 in this example).crsfSerial object accordingly.No Signal Between Transmitter and Receiver:
Interference or Signal Dropouts:
Receiver Not Communicating with Flight Controller:
High Latency or Poor Performance:
Q: Can I use CRSF with other RC protocols?
A: CRSF is a proprietary protocol and is not directly compatible with other RC protocols like SBUS or DSMX. However, some receivers support outputting PWM or SBUS signals for compatibility with older systems.
Q: What is the maximum range of CRSF?
A: Under ideal conditions (line of sight, minimal interference), CRSF can achieve a range of over 100 km. However, real-world performance depends on factors like antenna placement and environmental conditions.
Q: How do I update the firmware on my CRSF receiver?
A: Firmware updates can typically be performed through the transmitter's configuration interface. Refer to the manufacturer's documentation for detailed instructions.
Q: Can I use CRSF with an Arduino for custom projects?
A: Yes, CRSF can interface with an Arduino using UART communication. This allows for custom telemetry or control applications.