A unified command-line build and flash tool for Silicon Labs Simplicity Studio projects
ssutil streamlines your Silicon Labs embedded development workflow with a single script that auto-detects your project structure, build system, and provides a clean CLI interface with colored output.
- π Auto-detection - Automatically finds your project and bootloader directories
- π¨ Colored output - Compiler errors in red, warnings in yellow, build status in color
- π Dual compatibility - Works seamlessly with Studio 5 (Make) and Studio 6 (CMake/Ninja)
- β‘ Fast builds - Parallel compilation with optimal job count detection
- π― Flexible modes - Build-only, flash-only, or build-and-flash
- π Build logging - Automatic build.log with full output capture
- π§Ή Clean builds - One flag to clean and rebuild everything
- π« No dependencies - Pure bash, works with tools bundled in Simplicity Studio
# Clone the repo
git clone https://github.com/ckedmenec/ssutil.git
cd ssutil
# Copy to your Simplicity Studio solution directory
cp ssutil.sh /path/to/YourSimplicitySolution/
# Make it executable (if needed)
chmod +x ssutil.sh
# Run it!
./ssutil.sh# Download the script
curl -O https://raw.githubusercontent.com/ckedmenec/ssutil/main/ssutil.sh
chmod +x ssutil.sh
# Place it in your Simplicity Studio solution directory
mv ssutil.sh /path/to/YourProject/# Install globally (requires sudo)
curl -sSL https://raw.githubusercontent.com/ckedmenec/ssutil/main/install.sh | bash
# Now you can run from any Simplicity Studio solution directory
cd /path/to/YourProject
ssutil./ssutil.sh # Auto-detect, build and flash (default)
./ssutil.sh --help # Show all options and examples./ssutil.sh -B # Build only (no flash)
./ssutil.sh -F # Flash only (use existing binaries)
./ssutil.sh -c # Clean build and flash
./ssutil.sh -B -c # Clean build only (no flash)# Mass erase device and flash bootloader + application
./ssutil.sh -e
# Build bootloader + application (no flash/erase)
./ssutil.sh -B -e
# Specify project manually (skip auto-detection)
./ssutil.sh --project MyProject --bootloader MyBootloader
# Disable colored output (for CI/CD or logging)
./ssutil.sh --no-colorOptions:
-e, --erase Mass erase device and flash bootloader first
-c, --clean Clean build before compiling
-B, --build-only Build only (skip flashing and device operations)
-F, --flash-only Flash only (skip building, use existing binaries)
-p, --project <name> Specify project directory name (auto-detected if not provided)
-b, --bootloader <name> Specify bootloader directory name (auto-detected if not provided)
--no-color Disable colored output
-h, --help Show help message
- β GNU ARM v12.2.1 toolchain
- β Make-based builds
- β Matter, Thread, Zigbee, Bluetooth projects
- β
Build directory:
GNU ARM v12.2.1 - Default/
- β CMake + Ninja builds
- β
Auto-detects
cmake_gcc/buildstructure - β Full Matter SDK support
- β Automatic Ninja discovery in Silabs tools directory
- Auto-Detection: Scans for build directories (
GNU ARM*orcmake_gcc) - Build System Selection: Automatically chooses Make or CMake/Ninja
- Colored Output: Uses
scriptcommand to preserve compiler colors - Parallel Builds: Detects CPU count and runs parallel jobs
- Smart Flashing: Finds
.s37binaries and uses Simplicity Commander
- OS: macOS (tested on macOS 14.0+, should work on 11.0+)
- Tools: Simplicity Studio 5 or 6 installed
- Commander: Simplicity Commander (bundled with Studio)
- Shell: Bash 4.0+
Your Simplicity Studio solution should look like this:
YourSolution/
βββ ssutil.sh
βββ YourProject/
β βββ GNU ARM v12.2.1 - Default/
β βββ makefile
β βββ *.o, *.s37
βββ Matter-Bootloader/ # Optional
βββ GNU ARM v12.2.1 - Default/
YourSolution/
βββ ssutil.sh
βββ YourProject/
β βββ cmake_gcc/
β βββ build/
β βββ base/*.s37
βββ Matter-Bootloader/ # Optional
βββ cmake_gcc/build/
# Day-to-day development
./ssutil.sh # Quick build and flash
# After changing configuration or adding files
./ssutil.sh -c # Clean build and flash
# CI/CD pipeline
./ssutil.sh -B --no-color > build.log 2>&1
# Recovering from corruption
./ssutil.sh -e # Mass erase, rebuild bootloader, flash everything- Make sure you're running the script from your Simplicity Studio solution directory
- Check that your project has a
GNU ARM*orcmake_gcc/builddirectory
- The script will automatically find Ninja in
/Users/<you>/.silabs/slt/installs/ - If not found, it falls back to
cmake --build
- Colors are automatically disabled when output is piped
- Run directly in terminal:
./ssutil.sh(not./ssutil.sh | tee) - Use
--no-colorflag to explicitly disable
- Check
build.login your build directory for detailed errors - Try running with
-cfor a clean build - Verify Simplicity Studio can build the project
Contributions are welcome! Here's how you can help:
- Open an issue with the
buglabel - Include your OS version, Simplicity Studio version, and project type
- Attach relevant portions of
build.log
- Open an issue with the
enhancementlabel - Describe your use case and proposed solution
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Test with both SS5 and SS6 projects
- Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Built for the Silicon Labs embedded developer community
- Inspired by the need for faster CI/CD workflows
- Thanks to the Matter, Thread, and Zigbee communities for testing
- Simplicity Studio 5 support
- Simplicity Studio 6 support
- Auto-detection of projects
- Colored build output
- Linux support
- Windows support (WSL/Git Bash)
- Global installation script
- Configuration file support (
.ssutil.conf) - Multiple project builds in one command
Q: Does this replace Simplicity Studio? A: No, it's a complement. Use it for faster command-line builds, CI/CD, or when you prefer terminal workflows.
Q: Will this work with my Matter/Thread/Zigbee project? A: Yes! It works with any Simplicity Studio project that uses Make or CMake.
Q: Can I use this in CI/CD?
A: Absolutely! Use ./ssutil.sh -B --no-color for headless builds.
Q: Does it work on Linux/Windows? A: Currently macOS only. Linux support is planned. Windows may work via WSL (untested).
- Issues: GitHub Issues
- Discussions: GitHub Discussions
β If this tool saves you time, please consider giving it a star!
Made with β€οΈ for the Silicon Labs developer community