Agent skill

build-sitl

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

Stars 163
Forks 31

Install this agent skill to your Project

npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/data/build-sitl

SKILL.md

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:

bash
claude/developer/scripts/build/build_sitl.sh

To clean and rebuild:

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

bash
cd inav
mkdir -p build_sitl
cd build_sitl
cmake -DSITL=ON ..
make SITL.elf -j4

Rebuild After Code Changes

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

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

bash
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

bash
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 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 disappeared Use 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

bash
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

Didn't find tool you were looking for?

Be as detailed as possible for better results