description: Build INAV SITL (Software In The Loop) firmware for testing without hardware triggers:
- build SITL
- compile SITL
- compile SITL.elf
- build SITL.elf
- make SITL
- create SITL build
- SITL build
- build sitl firmware
- build simulator
- start SITL
- run SITL
- launch SITL
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:
- 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 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
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