Use this guide when you want to install fbuild, compile a first sketch, and understand what happens on the first run.
Install the published Python package:
pip install fbuildOr install from a local checkout:
git clone https://github.com/fastled/fbuild.git
cd fbuild
pip install -e .Source installs use Rust's fast dev profile by default (no Rust LTO), which keeps local rebuilds quick. To explicitly build an optimized Rust wheel, pass the PEP 517 backend setting:
pip install . --config-settings fbuild-profile=releasepip install . -- --release is not supported: pip does not forward arbitrary
arguments after -- to a PEP 517 backend. The fbuild-profile setting (or
FBUILD_BUILD_RELEASE=1) is the supported release override.
Create a project with a PlatformIO-compatible layout:
mkdir my-project
cd my-project
mkdir srcCreate platformio.ini:
[env:uno]
platform = atmelavr
board = uno
framework = arduinoCreate src/main.ino:
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
digitalWrite(LED_BUILTIN, HIGH);
delay(1000);
digitalWrite(LED_BUILTIN, LOW);
delay(1000);
}Build it:
fbuild buildThe first build downloads the AVR-GCC toolchain and Arduino AVR core, then
caches them. Later builds reuse the cache and write firmware under
.fbuild/build/<env>/.
Deploy to a connected board:
fbuild deploy -e unoDeploy and attach the serial monitor:
fbuild deploy -e uno --monitorRun the monitor by itself:
fbuild monitor -e uno --timeout 60Serial monitoring uses pyserial and follows the same general port-selection
model as PlatformIO. You can pass --port COM3 or --port /dev/ttyUSB0 when
auto-detection is not enough.
Run a build in the default emulator for the board:
fbuild test-emu . -e uno --timeout 10See the emulator testing guide for backend selection, QEMU notes, and CI-friendly halt conditions.
- CLI commands and options: reference/cli.md
platformio.inikeys: reference/platformio-ini.md- Supported boards: BOARD_STATUS.md
- Troubleshooting: development/README.md