# CMSIS-Toolbox

## About this Install Guide

| Reading time: | 15 min |
|---------------|--------|
| Last updated: | 31 Jul 2026 |

| Author: | Christopher Seidl, Arm |
|---------|-------------------------|
| Official docs: | [View](https://open-cmsis-pack.github.io/cmsis-toolbox/) |
| Tags: | CMSIS-Toolbox |

This guide shows you how to install and use the tool with the most common configuration. For advanced options and complete reference information, see the official documentation. Some install guides also include optional next steps to help you explore related workflows or integrations.

The [CMSIS-Toolbox](https://github.com/Open-CMSIS-Pack/cmsis-toolbox) is a suite of utilities for creating, building, and managing projects based on CMSIS-Packs. It is also used for creating and maintaining Software Packs.

`CMSIS-Toolbox` is part of the [Open-CMSIS-Pack project](https://open-cmsis-pack.github.io/Open-CMSIS-Pack-Spec/main/html/index.html). It is supported on Windows, Linux, and macOS host platforms.

> **Note**  
> The following install guide is for manual installation of `CMSIS-Toolbox`. An in-depth installation guide is available on [GitHub](https://open-cmsis-pack.github.io/cmsis-toolbox/installation/). For automation instructions using `vcpkg`, see [Install tools on the command line using vcpkg](https://learn.arm.com/learning-paths/embedded-and-microcontrollers/vcpkg-tool-installation/). `CMSIS-Toolbox` is also installed as part of a Keil MDK installation on Windows only.

## Before you begin

On Linux, you’ll need to install `CMake` and `Ninja`. For steps to install `CMake`, see the [CMake install guide](https://learn.arm.com/install-guides/cmake/).

To install `Ninja`, run:

```bash
sudo apt update
sudo apt install ninja-build -y
```

Check the versions of each tool:

```bash
cmake --version
ninja --version
```

Ensure that the version of `CMake` is at least `3.25.2`, and `Ninja` is at least `1.10.2`.

You can also download installers for all supported hosts:

- [CMake](https://cmake.org/download/)
- [Ninja](https://github.com/ninja-build/ninja/releases)

## Download CMSIS-Toolbox

Download and unpack the latest version of `CMSIS-Toolbox` from the [Arm Tools Artifactory](https://artifacts.tools.arm.com/cmsis-toolbox/).

For more information about the contents of the installation, see [Releases](https://github.com/Open-CMSIS-Pack/cmsis-toolbox/releases).

### Download for Arm64 hosts

The commands depend on the host operating system. Replace `2.13.0` with the latest version.

```bash
wget https://artifacts.tools.arm.com/cmsis-toolbox/2.13.0/cmsis-toolbox-windows-arm64.zip
tar -xf cmsis-toolbox-windows-arm64.zip
```

```bash
wget https://artifacts.tools.arm.com/cmsis-toolbox/2.13.0/cmsis-toolbox-linux-arm64.tar.gz
tar -xf cmsis-toolbox-linux-arm64.tar.gz
```

```bash
curl -L -o cmsis-toolbox-darwin-arm64.tar.gz https://artifacts.tools.arm.com/cmsis-toolbox/2.13.0/cmsis-toolbox-darwin-arm64.tar.gz
tar -xf cmsis-toolbox-darwin-arm64.tar.gz
```

### Download for x86_64 hosts

The commands depend on the host operating system. Replace `2.13.0` with the latest version.

```bash
wget https://artifacts.tools.arm.com/cmsis-toolbox/2.13.0/cmsis-toolbox-windows-amd64.zip
tar -xf cmsis-toolbox-windows-amd64.zip
```

```bash
wget https://artifacts.tools.arm.com/cmsis-toolbox/2.13.0/cmsis-toolbox-linux-amd64.tar.gz
tar -xf cmsis-toolbox-linux-amd64.tar.gz
```

```bash
curl -L -o cmsis-toolbox-darwin-amd64.tar.gz https://artifacts.tools.arm.com/cmsis-toolbox/2.13.0/cmsis-toolbox-darwin-amd64.tar.gz
tar -xf cmsis-toolbox-darwin-amd64.tar.gz
```

## Available compiler toolchains

Projects can be built with Arm Compiler for Embedded 6, Arm GNU Toolchain, LLVM Embedded Toolchain, or IAR tools.

For further setup instructions, see the following Install Guides:

- [Arm Compiler for Embedded](/install-guides/armclang/)
- [Arm GNU Toolchain](/install-guides/gcc/arm-gnu/)

This Install Guide uses `Arm Compiler for Embedded`, which is supported on Windows and Linux.

## Set up environment variables

Set environment variables as follows.

> **Note**  
> The exact name of the `TOOLCHAIN` variables will be based on the tool and version installed. In this way, you can register multiple build tools.

| Variable | Description | Notes |
|----------|-------------|-------|
| `<n>_TOOLCHAIN_<major>_<minor>_<patch>` | Path to toolchain binaries | `<n>` = `AC6`, `GCC`, `IAR`, or `CLANG` |
| `CMSIS_PACK_ROOT` | Path to CMSIS-Pack root directory | Use `cpackget init` to initialize |
| `PATH` | Add CMSIS-Toolbox `bin` to path | Also path to `CMake` and `Ninja` if necessary |
| `CMSIS_COMPILER_ROOT` | Path to CMSIS-Toolbox `etc` directory | Optional |

For example:

```bash
set AC6_TOOLCHAIN_6_24_0=%ProgramFiles%/ArmCompilerforEmbedded6.24/bin
set CMSIS_PACK_ROOT=%LocalAppData%/Arm/Packs
set PATH=%PATH%;%UserProfile%/cmsis-toolbox-windows-amd64/bin
set CMSIS_COMPILER_ROOT=%UserProfile%/cmsis-toolbox-windows-amd64/etc
```

```bash
export AC6_TOOLCHAIN_6_24_0=$HOME/ArmCompilerforEmbedded6.24/bin
export CMSIS_PACK_ROOT=$HOME/packs
export PATH=$HOME/cmsis-toolbox-linux-arm64/bin:$PATH
export CMSIS_COMPILER_ROOT=$HOME/cmsis-toolbox-linux-arm64/etc
```

Exact paths will depend on the versions and locations of installed tools.

## Initialize the CMSIS-Pack directory

Run the following command to initialize the directory specified by `CMSIS_PACK_ROOT`:

```bash
cpackget init https://www.keil.com/pack/index.pidx
```

`CMSIS-Toolbox` should now be ready for use.

## Test the CMSIS-Toolbox setup

You can find example projects on [GitHub](https://github.com/Open-CMSIS-Pack/csolution-examples).

Clone the repository to your build machine:

```bash
git clone https://github.com/Open-CMSIS-Pack/csolution-examples
```

Navigate to the `Hello` example:

```bash
cd csolution-examples/Hello
```

### Build the solution

Use the [cbuild](https://github.com/Open-CMSIS-Pack/cbuild) utility (a component of `CMSIS-Toolbox`) to build.

Add `--packs` to the command line to download and install any necessary software packs not currently installed.

```bash
cbuild Hello.csolution.yml --packs
```

The build will proceed and generate an executable image(s). The output is similar to:

```
__output__ ARM::CMSIS@6.0.0
__output__ ARM::CMSIS-Compiler@2.0.0
__output__ ARM::CMSIS-RTX@5.8.0
__output__ ARM::V2M_MPS3_SSE_300_BSP@1.5.0
__output__ I: Downloading ARM.CMSIS.pdsc...
__output__ I: Adding pack "ARM::CMSIS@6.0.0"
__output__ I: Downloading ARM.CMSIS.6.0.0.pack...
...
__output__ (1/2) Building context: "Hello.Debug+AVH"
__output__ Building CMake target 'Hello.Debug+AVH'
__output__ [1/31] Building C object CMakeFiles/Group_Main.dir/home/ubuntu/csolution-examples/Hello/main.o
...
__output__ [31/31] Linking C executable /home/ubuntu/csolution-examples/Hello/out/Hello/AVH/Debug/Hello.axf
__output__ Program Size: Code=29968 RO-data=1584 RW-data=244 ZI-data=37072
__output__ +------------------------------------------
__output__ (2/2) Building context: "Hello.Release+AVH"
__output__ Building CMake target 'Hello.Release+AVH'
__output__ [1/31] Building C object CMakeFiles/Group_App.dir/home/ubuntu/csolution-examples/Hello/hello.o
...
__output__ [31/31] Linking C executable /home/ubuntu/csolution-examples/Hello/out/Hello/AVH/Release/Hello.axf
__output__ Program Size: Code=17664 RO-data=988 RW-data=196 ZI-data=37112
__output__ +------------------------------------------------------------
__output__ Build summary: 2 succeeded, 0 failed - Time Elapsed: 00:00:03
__output__ +============================================================
```

You are now ready to use CMSIS-Toolbox.
