Skip to the content
PCBKitNew board
4 layers66.3 × 40.2 mmCm4 drone, the printed circuit board in 3D

Raspberry Pi based drone flight controller and remote control

Size
66.3 × 40.2 mm
Copper layers
4
Thickness
1.6 mm
Parts
56
Nets
208
Pads
472
Tracks, vias
1,773, 237
Pours
3
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
24 Jan 2016
Updated
25 Sep 2026

Overview

Cm4 drone is an open-source printed circuit board by dridri, from the dridri/bcflight repository on GitHub, published under the GPL-3.0 licence. It is a 4-layer board of 66.3 × 40.2 mm with 56 parts on 208 nets, routed with 1,773 tracks and 237 vias.

It is built around the ADS1115IDGS, BMP581 and IST8310, with the LM22676MR-5.0, 74LVC1G04Z and RFM95W-868S2 among its other parts. Its parts include 11 capacitors, 8 resistors, 6 diodes, 3 ICs and 2 connectors. It belongs with the robots and motor control and computers and single-board computers boards and the Raspberry Pi (Linux) boards of this library.

Main components

10

README

README.md

BCFlight

Build Status Tests Status License: GPL v3

BCFlight is an open-source Linux-based Raspberry Pi drone and ground controller system, offering a complete solution for flight control, stabilization, and telemetry.

Key Features

Performance

  • Low resource usage : ~25% CPU and ~100MB RAM on Raspberry Pi 4
  • High frequency : Sensors and stabilizer update rate up to 8kHz (on RPi4)
  • Ultra-low latency : ~5ms controls latency, ~50ms video latency over composite
  • Stabilization : Up to 8 motors with customizable configuration matrix

Motor Protocols

  • DShot (150 & 300) - Recommended
  • OneShot125 and OneShot42
  • Standard PWM

Communication

  • WiFi/Ethernet : Standard TCP/UDP/IP
  • Raw WiFi : Based on wifibroadcast
  • Radio : nRF24L01, SX1276/77/78/79 (FSK/LoRa)
  • S-BUS : Limited functionality support

Video & Recording

  • Composite output : Direct connection to 5GHz VTX modules, with SmartAudio support
  • Multi-camera recording : MKV format, up to ~120 MPix/s total throughput
  • Gyroflow output : Compatible with Gyroflow for video stabilization
  • Live HUD : Real-time telemetry, battery status, speed, acceleration

Configuration

  • LuaJIT : Flexible configuration and customizable event handling
  • User code : Execution of custom Lua functions
  • Full API : Access to all systems

Architecture

The project consists of three main components:

flight/ - Flight Controller

Core system managing:

  • Main thread : Sensor data collection, attitude calculation, stabilization
  • Controller thread : User input reception, telemetry transmission
  • Power thread : Battery monitoring and current consumption

controller_pc/ - PC Interface

Configurable GUI client for:

  • Remote control via PC
  • Sensor and telemetry visualization
  • Advanced configuration

controller_rc/ - Remote Control

Portable control interface with:

  • Touchscreen support
  • Adapted user interface
  • Lua configuration

Supported Sensors

IMUs

  • InvenSense ICM-42605, ICM-20608, MPU-9250, MPU-9150, MPU-6050
  • STMicroelectronics L3GD20H, LSM303

Altimeters/Barometers

  • Bosch BMP180, BMP280

Others

  • HC-SR04 (distance sensors)
  • ADS1015/ADS1115 (ADC)

Installation

Pre-built Images

Build Status

Automatically generated images based on Raspbian:

  • SSH : root:bcflight by default
  • System : Read-only by default (security)
  • Flight Service : Disabled by default for configuration
ImageBased onDShotAnalog video
2023-07-18-raspbian-bcflight.img2023-05-03-raspios-bullseye-armhf-lite✅¹✅¹

¹ DShot and composite output can be enabled via /boot/config.txt and /var/flight/config.lua

Building from Source

PC Controller (Ubuntu/Debian)
bash
# Dependencies
sudo apt-get install nasm qtmultimedia5-dev qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools libnl-3-dev libnl-genl-3-dev libnl-route-3-dev libiw-dev libfftw3-dev libqscintilla2-qt5-dev

# Build
git clone https://github.com/dridri/bcflight.git
cd bcflight/controller_pc
cmake -DCMAKE_BUILD_TYPE=Release -S . -B build
cd build && make -j$(nproc)
./controller_pc
Flight Controller (Raspberry Pi)
bash
# Dependencies
sudo apt update
sudo apt install git pkg-config cmake make g++ libc6-dev libraspberrypi-dev libiw-dev libdrm-dev libgbm-dev libcamera-dev libgles2-mesa-dev libgps-dev libasound2-dev libcrypt-dev zlib1g-dev libpng-dev libshine-dev libavformat-dev libavutil-dev libavcodec-dev libpigpio-dev lua5.3 libfftw3-dev

# Build
git clone https://github.com/dridri/bcflight
cd bcflight/flight
cmake -Dboard=rpi -Ddebug=1 -S . -B build
cd build && make -j$(nproc)

Configuration

Basic Configuration Example

lua
-- Frame configuration (quadcopter)
frame = Multicopter {
    maxspeed = 1.0,
    air_mode = {
        trigger = 0.25,
        speed = 0.15
    },
    motors = {
        DShot( 4 ), DShot( 5 ), DShot( 6 ), DShot( 7 )
    },
    matrix = {
        Vector( -1.0,  1.0, -1.0, 1.0 ),
        Vector(  1.0,  1.0,  1.0, 1.0 ),
        Vector( -1.0, -1.0,  1.0, 1.0 ),
        Vector(  1.0, -1.0, -1.0, 1.0 )
    }
}

-- IMU configuration
imu = IMU {
    gyroscopes = { imu_sensor.gyroscope },
    accelerometers = { imu_sensor.accelerometer },
    filters = {
        rates = { input = Vector( 80, 80, 80 ), output = Vector( 0.25, 0.25, 0.25 ) },

Demo

Demo video

More videos on YouTube @drichfpv

User Interface

PC Controller

Camera view

Sensors and Telemetry

Sensors view

Hardware

Custom CM4 Carrier Board

CM4 schematics

Features:

  • 5V 3A LM22676 regulator (max 42V input)
  • ADS1115 ADC for battery voltage measurement
  • Dual RFM95W radio sockets with external antennas
  • High-precision ICM-42605 IMU
  • BMP581 barometer
  • Dual CSI camera connectors
  • Direct composite video output to VTX

Hardware Photos

CM4 front CM4 back CM4 on drone

Documentation

Contributing

Contributions are welcome! The project is licensed under GPL v3.

License

This project is distributed under the GNU General Public License v3.0. See the LICENSE file for more details.

Useful Links


⚠️ Warning : This software is provided for educational and research purposes. Drone usage can be dangerous. Please respect local regulations and use at your own risk.

Parts

56
QtyValueFootprintReferences
8Conn_01x03_FemaleConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalPWM0, PWM1, PWM2, PWM3, PWM4, PWM5, PWM6, PWM7
4100nFCapacitor_SMD:C_0603_1608MetricC4, C5, C7, C8
4330Resistor_SMD:R_0603_1608MetricR7, R8, R9, R11
4Conn_01x04_Femalecm4_drone:Breakout_1x04_2mm_SMDADC1, I2C1, UART0, USB1
4LEDLED_SMD:LED_0805_2012MetricD2, D3, D4, D5
310uFCapacitor_SMD:C_1206_3216MetricC2, C12, C13
21.8kResistor_SMD:R_0603_1608MetricR6, R10
2Conn_01x02_FemaleConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_HorizontalJ8, J9
2Conn_01x22_FemaleConnector_FFC-FPC:Hirose_FH12-22S-0.5SH_1x22-1MP_P0.50mm_HorizontalCAM0, CAM1
2RFM95W-868S2RF_Module:HOPERF_RFM9XW_SMDRADIO1, RADIO2
1100uFCapacitor_SMD:C_1206_3216MetricC6
110kResistor_SMD:R_0603_1608MetricR4
110nFCapacitor_SMD:C_0603_1608MetricC3
110uFCapacitor_SMD:C_0603_1608MetricC1
14.7uFCapacitor_SMD:C_0603_1608MetricC9
174LVC1G04Package_TO_SOT_SMD:SOT-23-5U1
175kResistor_SMD:R_0603_1608MetricR3
1ADS1115IDGSPackage_SO:TSSOP-10_3x3mm_P0.5mmU3
1ANT0_uFLConnector_Coaxial:U.FL_Hirose_U.FL-R-SMT-1_VerticalAE1
1ANT1_uFLConnector_Coaxial:U.FL_Hirose_U.FL-R-SMT-1_VerticalAE2
1BMP581footprints:BMP581BARO1
1Compute_Module_4_ConnectorsRPi_Compute_Module_4:Raspberry-Pi-4-Compute-ModuleU5
1Conn_01x02_FemaleConnector_Coaxial:U.FL_Hirose_U.FL-R-SMT-1_VerticalTV1
1Conn_01x02_Femalecm4_drone:Breakout_1x02_2mm_SMDSBUS1
1ICM-42605cm4_drone:PQFN50P300X250X97-14NIMU1
1IST8310Package_LGA:LGA-16_3x3mm_P0.5mmMAG1
1LM22676MR-5Package_SO:TI_SO-PowerPAD-8DC1
1Micro_SD_Card_DetConnector_Card:microSD_HC_Hirose_DM3AT-SF-PEJM5SD1
1SL54-3GDiode_SMD:D_SMBD1
1SMAJ36ADiode_SMD:D_SMAD6
1SRP6030VA-100MInductor_SMD:L_Bourns_SRP7028A_7.3x6.6mmL1

Questions

How big is the Cm4 drone PCB?

It measures 66.3 × 40.2 mm and has 4 copper layers, 1.6 mm thick.

What parts does the Cm4 drone use?

56 parts, built around the ADS1115IDGS, BMP581, IST8310 and LM22676MR-5.0. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Cm4 drone KiCad files?

From the dridri/bcflight repository on GitHub, at the commit this page was made from: the board is electronics/cm4_drone/cm4_drone.kicad_pcb and its schematic electronics/cm4_drone/cm4_conn.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Cm4 drone design in my own project?

Its repository publishes it under the GPL-3.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

Similar boards

  • 4 layers161 × 100 mmCurrent3x3A Artiq, the printed circuit board in 3D

    Current3x3A Artiq

    KLFAMO/current3x3A_Artiq

    3 channel current driver (up to 3A each channel) compatible with Artiq

    365 parts
  • 2 layers33 × 74.9 mmSmart penetrometer v0.4.0, the printed circuit board in 3D

    Smart penetrometer v0.4.0

    ARTS-Laboratory/SPECIES

    Design and development of a deployable UAV smart penetrometer

    45 parts6CC-BY-SA-4.0
  • 4 layers73 × 56 mmSensors, the printed circuit board in 3D

    Sensors

    heeplr/pilotpi

    RaspberryPi HAT for ardupilot / PX4

    117 partsMIT
  • 4 layers200 × 99 mmMRIRobot PCB, the printed circuit board in 3D

    MRIRobot PCB

    biomimetics/MRIRobot_PCB

    PC boards for MRI robogt control, specifically for STM32 motherboard

    339 parts2
  • 2 layers172 × 99 mmMRIRobot PCB, the printed circuit board in 3D

    MRIRobot PCB

    naichenzhao/pressure

    126 parts
  • 2 layers68 × 68 mmCMOD A7 Upper, the printed circuit board in 3D

    CMOD A7 Upper

    ucb-bar/riskybear-PCB

    37 parts1
  • 2 layers100 × 80 mmRobot main, the printed circuit board in 3D

    Robot main

    johnugbor/RoboSolar

    SKiDL-generated draft v0.1. NOT FOR FABRICATION — see blockers below.

    78 partsMIT
  • 2 layers87 × 67.5 mmResoDriver, the printed circuit board in 3D

    ResoDriver

    NickNiski/ResoDriver

    A control board for a mini resonant IGBT inverter

    102 partsGPL-3.0