Claude-skill-registry build-sitl
Build INAV SITL (Software In The Loop) firmware for testing without hardware
git clone https://github.com/majiayu000/claude-skill-registry
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/build-sitl" ~/.claude/skills/majiayu000-claude-skill-registry-build-sitl && rm -rf "$T"
skills/data/build-sitl/SKILL.mdBuilding INAV SITL
SITL (Software In The Loop) allows testing the full firmware on your host system without hardware.
Quick Build (Recommended)
Use the build script which handles cmake configuration and toolchain compatibility:
claude/developer/scripts/build/build_sitl.sh
To clean and rebuild:
claude/developer/scripts/build/build_sitl.sh clean
The binary will be at:
inav/build_sitl/bin/SITL.elf
Manual Build (Alternative)
Use a separate build directory to avoid conflicts with hardware target builds:
cd inav mkdir -p build_sitl cd build_sitl cmake -DSITL=ON .. make SITL.elf -j4
Rebuild After Code Changes
cd inav/build_sitl make SITL.elf -j4
No need to run cmake again unless CMakeLists.txt files changed.
Alternative - Shared Build Directory
If you must use the shared
build/ directory:
cd inav/build rm -f CMakeCache.txt # If switching from hardware build cmake -DSITL=ON .. make SITL.elf -j4 # MUST specify target!
WARNING: Running
make without SITL.elf target will attempt to build all 281 hardware targets.
You already have permission
You have permission to build. Do not ask the user for permission each time
Running SITL
Quick Start (Recommended)
Use the start script which handles killing existing instances and waiting for ready:
claude/developer/scripts/testing/start_sitl.sh
This will:
- Kill any existing SITL process
- Start SITL in background
- Wait for it to be ready (port listening)
- Report connection info
Manual Start
cd inav/build_sitl ./bin/SITL.elf
SITL will:
- Bind TCP to ports 5760-5767 (UART1-8)
- Bind WebSocket to ports 5770-5777 (UART1-8) [if WebSocket support compiled in]
- Listen on all interfaces [::]
- Load/save eeprom.bin in current directory
Connect Configurator
Once SITL is running, connect via:
tcp://127.0.0.1:5760
Or select "SITL" from the port dropdown in INAV Configurator.
Common Issues
| Problem | Solution |
|---|---|
| Build tries to compile all 281 targets | Use separate dir OR specify |
| CMake path errors | |
| Wrong toolchain (ARM instead of host) | Ensure in cmake command |
| Hardware builds disappeared | Use separate directory |
Linker error: | Older ld versions (< 2.39) don't support this flag. Use which handles this automatically |
Full Documentation
cat claude/test_tools/inav/BUILDING_SITL.md
Related Skills
- sitl-arm - Arming SITL via MSP for automated testing
- test-crsf-sitl - Complete CRSF telemetry testing workflow with SITL
- run-configurator - Using INAV Configurator with SITL
- msp-protocol - MSP protocol reference for SITL testing
- pr-review - Build SITL to test firmware PRs