Claude-skill-registry build-sitl

Build INAV SITL (Software In The Loop) firmware for testing without hardware

install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
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"
manifest: skills/data/build-sitl/SKILL.md
source content

Building 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:

  1. Kill any existing SITL process
  2. Start SITL in background
  3. Wait for it to be ready (port listening)
  4. 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

ProblemSolution
Build tries to compile all 281 targetsUse separate
build_sitl/
dir OR specify
make SITL.elf
CMake path errors
rm CMakeCache.txt && cmake -DSITL=ON ..
Wrong toolchain (ARM instead of host)Ensure
-DSITL=ON
in cmake command
Hardware builds disappearedUse separate
build_sitl/
directory
Linker error:
unrecognized option '--no-warn-rwx-segments'
Older ld versions (< 2.39) don't support this flag. Use
build_sitl.sh
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