Skip to the content
4 layers106.6 × 106.7 mmGhost feather v1, the printed circuit board in 3D

Here: - -n myenv specifies the environment name - python=3.10 installs a specific Python version

Size
106.6 × 106.7 mm
Copper layers
4
Thickness
1.58 mm
Parts
97
Nets
97
Pads
323
Tracks, vias
559, 845
Pours
25
Routed
Yes
KiCad
KiCad 7 (file 20221018)
Created
17 Oct 2024
Updated
30 May 2026

Overview

Ghost feather v1 is an open-source printed circuit board by PanBabinicz, from the PanBabinicz/ghost-feather repository on GitHub. It is a 4-layer board of 106.6 × 106.7 mm with 97 parts on 97 nets, routed with 559 tracks and 845 vias.

It is built around the STM32F722RET6, BMI270 and USBLC6-2SC6, with the BSS138, AMPMGFB-16.0000T and CC4V-T1A-32.768KHZ-10PF-20PPM-TA-QC among its other parts. Its parts include 28 resistors, 21 capacitors, 8 connectors, 5 ICs and 4 transistors. It belongs with the microcontroller boards boards and the STM32 boards of this library.

Main components

7

README

README.md

Ghost Feather

GitHub tag (with filter)

[!NOTE] Please bear in mind that the workspace was primarily created for enjoyment and educational endeavors.

The MIT License (MIT)

Copyright (c) 2011-2024 The Bootstrap Authors

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Compilation process

[!NOTE] The current compilation process will be changed

console
~ arm-none-eabi-gcc -g -c -mfloat-abi=hard -mfpu=fpv4-sp-d16 -mcpu=cortex-m7 -mthumb \
                          -I memory -I bootloader \
                          startup/stm32f722xx/stm32722xx_startup.c -o build/stm32f722xx_startup.o
console
~ arm-none-eabi-gcc -g -c -mfloat-abi=hard -mfpu=fpv4-sp-d16 -mcpu=cortex-m7 -mthumb \
                          -I libopencm3/include -I memory -DSTM32F7 \
                          bootloader/stm32f722xx_first_bootloader.c -o build/stm32f722xx_first_bootloader.o
console
~ arm-none-eabi-as -g vectortable/stm32f722xx/stm32f722xx_vectortable.S -o build/stm32f722xx_vectortable.o
console
~ arm-none-eabi-gcc -g -nostartfiles -nostdlib -mfloat-abi=hard -mfpu=fpv4-sp-d16 -mcpu=cortex-m7 -mthumb \
                       build/stm32f722xx_first_bootloader.o build/stm32f722xx_startup.o build/stm32f722xx_vectortable.o -o build/stm32f722xx_first_bootloader.elf \
                       -T linkerscript/stm32f722xx/stm32f722xx_bootloader.ld -L linkerscript/stm32f722xx -L libopencm3/lib -lopencm3_stm32f7

CMake generators

Unix Makefiles

console
~ cmake -S . -B build -DCMAKE_TOOLCHAIN_FILE=arm-none-eabi-toolchain.cmake
~ cd build
~ cmake --build . --config Debug

Ninja Multi-Config

console
~ cmake -G "Ninja Multi-Config" -S . -B build -DCMAKE_TOOLCHAIN_FILE=arm-none-eabi-toolchain.cmake
~ cd build
~ cmake --build . --config Debug

CMake Presets

console
~ cmake --preset list
~ cmake --preset <build-type>

Build shell script

console
~ ./build.sh <build-type>

How to program

For now, CMake generates two elf files. Each of these files needs to be uploaded to the device.

Newlib

To use newlib with libopencm3 it is necessary to recomplie the libc to be able to use hard floating point numbers which use on-chip FPU. The second option is to use soft floating point numbers but the speed will be slower.

Marco Paland printf implementation

The Marco Paland printf implementation is a lightweight, standalone alternative designed specifically to address these limitations. This implementation offers a small memory footprint, portability, and independence from the full C standard library. It is widely used in embedded projects where developers require formatted output but cannot afford the code size and dependencies of a complete libc implementation.

DFU script

Description

The script enables firmware update over USART. It allows users to upload binary firmware files to microcontroller-based devices with minimal effort. The script handles communication setup, data formatting, and transmission to ensure reliable updates.

Usage

console
~ python3 dfu_usart.py <binary> <port> <baudrate>
  • <binary>: The firmware to be uploaded.
  • <port>: The name of the serial port connected to the target device (e.g., /dev/tty.usbmodem).
  • <baudrate>: The communication speed in bits per second (e.g., 9600, 115200).

SOCAT tool

Usage

console
~ socat -d -d PTY,raw,echo=0 PTY,raw,echo=0
~ stty -f /dev/ttysxxx 115200
~ screen /dev/ttysxxx 115200

Unit tests

Description

The unit tests verify the functionality, reliability, and error handling of embedded system controllers using Google Test (GTest).

They cover various scenarios, including:

  • Core functionality validation.
  • Boundary condition testing.
  • Error handling and fault tolerance.
  • Performance and efficiency checks.

Usage

console
~ cmake -G "Ninja" -S . -B build -DPROJECT_ROOT_DIR=$(pwd)/../..
~ cmake --build build
~ cd build && ctest

Conda

What is Conda?

Conda is an open-source package manager and environment manager used for installing, running, and updating software packages and their dependencies. It is widely used in data science, machine learning, and scientific computing because it simplifies managing complex software environments.

Unlike pip, which only installs Python packages, Conda can manage packages written in multiple languages (such as Python, R, and C libraries) and handles system-level dependencies as well.

Conda is distributed with platforms such as:

  • Anaconda – a large distribution that includes many preinstalled scientific packages.
  • Miniconda – a lightweight version that installs only Conda and Python.

Why Use Conda?

Conda helps solve common development problems:

  • Dependency management – automatically installs required libraries.
  • Environment isolation – different projects can use different package versions.
  • Cross-language support – works with Python, R, and other tools.
  • Reproducibility – environments can be exported and recreated.

Example: one project may require Python 3.9 while another requires Python 3.11. Conda allows both to coexist without conflicts.

Creating an Environment

A Conda environment is an isolated workspace containing its own Python version and installed packages.

Create a new environment:

bash
conda create -n myenv python=3.10

Here:

  • -n myenv specifies the environment name
  • python=3.10 installs a specific Python version

Activating an Environment

Before using an environment, it must be activated.

bash
conda activate myenv

After activation, all installed packages and Python commands will come from this environment.

To deactivate:

bash
conda deactivate

Installing Packages

Packages can be installed directly into the active environment.

bash
conda install numpy pandas matplotlib

Conda will automatically resolve and install required dependencies.

Listing Environments

To see all available environments:

bash
conda env list

or:

bash
conda info --envs

Removing an Environment

If an environment is no longer needed, it can be deleted:

bash
conda remove -n myenv --all

Exporting an Environment

To share or reproduce an environment:

bash
conda env export > environment.yml

This file can later be used to recreate the same environment.

Recreating an Environment

bash
conda env create -f environment.yml

This installs all packages and dependencies exactly as defined in the exported file.

EASTER EGG!

CBR 929 broke. We have to repair it. I will do todays job tomorrow.

Parts

97
QtyValueFootprintReferences
16MountingHoleMountingHole:MountingHole_2.7mm_M2.5H1, H2, H3, H4, H5, H6, H7, H8, H9, H10, H11, H12, H13, H14, H15, H16
11100nCapacitor_SMD:C_0402_1005MetricC1, C3, C4, C5, C6, C7, C9, C14, C15, C16, C17
115k1Resistor_SMD:R_0402_1005MetricR4, R5, R7, R8, R10, R11, R13, R14, R16, R17, R18
8FiducialFiducial:Fiducial_1.5mm_Mask4.5mmFID1, FID2, FID3, FID4, FID5, FID6, FID7, FID8
7220Resistor_SMD:R_0402_1005MetricR3, R6, R9, R12, R15, R23, R28
4BSS138Package_TO_SOT_SMD:SOT-23Q1, Q2, Q3, Q4
4Conn_01x03Connector_Molex:Molex_PicoBlade_53048-0310_1x03_P1.25mm_HorizontalJ3, J4, J5, J6
3100kResistor_SMD:R_0402_1005MetricR19, R21, R24
210pCapacitor_SMD:C_0402_1005MetricC11, C12
210uCapacitor_SMD:C_0603_1608MetricC18, C20
222uCapacitor_SMD:C_0603_1608MetricC19, C21
2MPM3610ghost-feather-v1:MPM3610U4, U5
1100Resistor_SMD:R_0402_1005MetricR2
110kResistor_SMD:R_0402_1005MetricR1
116MHzghost-feather-v1:AMPMGFB_1.6mm1.2mm_16MHzX1
119k1Resistor_SMD:R_0402_1005MetricR22
11nCapacitor_SMD:C_0402_1005MetricC10
11uCapacitor_SMD:C_0603_1608MetricC2
124kResistor_SMD:R_0402_1005MetricR27
12u2Capacitor_SMD:C_0603_1608MetricC13
132kHz768ghost-feather-v1:CC4V-T1A-32.768kHzX2
147kResistor_SMD:R_0402_1005MetricR20
14u7Capacitor_SMD:C_0603_1608MetricC8
175kResistor_SMD:R_0402_1005MetricR26
182k5Resistor_SMD:R_0402_1005MetricR25
1BMI270ghost-feather-v1:BMI270_BOSU2
1BOOT0Button_Switch_SMD:SW_SPST_EVQPE1SW2
1Conn_01x02Connector_AMASS:AMASS_XT60PW-M_1x02_P7.20mm_HorizontalJ8
1Conn_01x08Connector_Molex:Molex_PicoBlade_53048-0810_1x08_P1.25mm_HorizontalJ7
1Conn_ARM_SWD_TagConnect_TC2030Connector:Tag-Connect_TC2030-IDC-FP_2x03_P1.27mm_VerticalJ1
1LED_PW1LED_SMD:LED_0402_1005MetricD2
1LED_PW2LED_SMD:LED_0402_1005MetricD3
1LED_USERLED_SMD:LED_0402_1005MetricD1
1LOGOicons:sabre-with-moustacheG***
1STM32F722RETxPackage_QFP:LQFP-64_10x10mm_P0.5mmU1
1USBLC6-2SC6_MODPackage_TO_SOT_SMD:SOT-23-6U3
1USB_C_Receptacle_USB2.0Connector_USB:USB_C_Receptacle_GCT_USB4105-xx-A_16P_TopMnt_HorizontalJ2

More from PanBabinicz/ghost-feather

1
  • 4 layers52 × 25 mmFlying byte v1, the printed circuit board in 3D

    Flying byte v1

    PanBabinicz/ghost-feather

    Here: - -n myenv specifies the environment name - python=3.10 installs a specific Python version

    52 parts

Similar boards

  • 4 layers53.4 × 38.4 mmGSR Board, the printed circuit board in 3D

    GSR Board

    esl-epfl/GSR_monitor

    Discrete validation platform for the HEEPidermis low-power SoC, designed for low-noise Galvanic Skin Response (GSR) measurements

    159 parts1
  • 4 layers41 × 41 mmFlight Controller, the printed circuit board in 3D

    Flight Controller

    benwys/SparrowHawk

    Open source flight controller for FPV drones. Includes two complete hardware designs (kicad) with production files. Will include custom firmware (bare-metal cpp). In progress :-)

    103 partsMIT
  • 4 layers42 × 42 mmVayuF7, the printed circuit board in 3D

    VayuF7

    ishantmahatopro/Vayu-F722

    Custom 42x42mm 4-layer STM32F722 FPV flight controller for 5in and 7in cinematic and telemetry quads.

    146 partsMIT
  • 8 layers38.5 × 38.5 mmFlight Controller, the printed circuit board in 3D

    Flight Controller

    rishikesh2715/STM32F7_FC

    STM32F722RET6 Based Flight Controller with ICM-42688-P IMU, BMP388 Barometer, and much more!

    133 parts57MIT
  • 2 layers73 × 99.8 mmSodium, the printed circuit board in 3D

    Sodium

    kanengomibako/Sodium

    85 parts14Unlicense
  • 4 layers40 × 40 mmDreamscape F722, the printed circuit board in 3D

    Dreamscape F722

    sneakylizard123-4/Dreamscape-F722

    Dreamscape F722 Flight Controller

    113 parts5

Questions

How big is the Ghost feather v1 PCB?

It measures 106.6 × 106.7 mm and has 4 copper layers, 1.58 mm thick.

What parts does the Ghost feather v1 use?

97 parts, built around the STM32F722RET6, BMI270, USBLC6-2SC6 and BSS138. 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 Ghost feather v1 KiCad files?

From the PanBabinicz/ghost-feather repository on GitHub, at the commit this page was made from: the board is hardware/ghost-feather-v1/kicad/ghost-feather-v1.kicad_pcb and its schematic hardware/flying-byte-v1/flying-byte-v1.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Ghost feather v1 design in my own project?

Its repository states no licence, so its author keeps all rights: ask PanBabinicz before reusing the design.