Skip to content

Zephyr SDK Installation

SDK Management

Click the Zephyr SDK Management card to access SDK installation. The SDK provides cross-compilation toolchains for various architectures (ARM, x86, RISC-V, etc.).

The extension uses West’s SDK integration for version management:

  • Select which SDK versions to install
  • Install multiple SDKs for different architectures
  • Manage SDK updates through the extension

For new users:

  1. Click the Zephyr SDK Management card
  2. Select the latest SDK version
  3. Choose architectures to install (or select all for convenience)
  4. Click Install SDK

You can add specific architectures later if storage is a concern.

  • SDK installation is a one-time process per computer
  • SDKs can be shared across multiple projects
  • SDK installation uses the west SDK command
  • A west workspace must be configured before SDK management can occur

Declaring Required Toolchains in zephyr-ide.json

Section titled “Declaring Required Toolchains in zephyr-ide.json”

To make a project reproducible across machines and contributors, you can declare the toolchains your workspace requires directly in .vscode/zephyr-ide.json:

{
"toolchains": ["arm-zephyr-eabi", "riscv64-zephyr-elf"],
"sdkVersion": "0.17.0",
"projects": {}
}

sdkVersion is optional. When the workspace setup flow needs to install a Zephyr SDK to satisfy the declared toolchains, it picks the version to install in this priority order:

  1. The sdkVersion declared in zephyr-ide.json.
  2. The version recorded in the Zephyr source tree’s SDK_VERSION file.
  3. Any Zephyr SDK that is already installed locally.
  4. The latest released SDK if none of the above is available.

The SDK panel always exposes two buttons for managing the workspace’s declared toolchain list:

  • Install from zephyr-ide.json — install every declared toolchain that isn’t already available locally.
  • Modify zephyr-ide.json — open a quick-pick that lets you check or uncheck toolchains. Toolchains already installed locally are listed first; items currently declared in zephyr-ide.json are pre-checked. Saving with no items selected clears the toolchains field.

When the toolchains list is non-empty, the workspace setup flow installs any missing toolchains automatically once the Zephyr SDK is in place.

The same operations are available from the command palette:

  • Zephyr IDE: Modify zephyr-ide.json Toolchains
  • Zephyr IDE: Install Toolchains from zephyr-ide.json

See the full field reference at .vscode/zephyr-ide.json schema.

Declaring Required Blobs in zephyr-ide.json

Section titled “Declaring Required Blobs in zephyr-ide.json”

Some Zephyr modules ship binary blobs (e.g. wireless firmware) that must be fetched separately with west blobs fetch. Modules whose blobs your workspace requires can be listed under the blobs key:

{
"blobs": ["hal_nordic", "hal_st"],
"toolchains": ["arm-zephyr-eabi"],
"projects": {}
}

When the workspace is set up the extension runs west blobs fetch <module> for each declared module. You can also manage blobs interactively via:

  • Zephyr IDE: Modify zephyr-ide.json Blobs — opens a quick-pick listing modules that declare blobs (discovered via west blobs list); already declared modules are pre-checked.
  • Zephyr IDE: Install Blobs from zephyr-ide.json — fetches any blobs declared in zephyr-ide.json.

Declaring Required Pip Packages and Requirements in zephyr-ide.json

Section titled “Declaring Required Pip Packages and Requirements in zephyr-ide.json”

Additional Python packages can be declared under the pipPackages key and additional requirements.txt files can be declared under pipRequirements. Both are installed together into the workspace’s virtual environment after workspace setup, once you confirm the install prompt (or when you explicitly run the install action from the manager panel or command palette):

{
"pipPackages": ["dtsh", "pyocd"],
"pipRequirements": [
"external/nrf/scripts/requirements.txt",
"external/bootloader/mcuboot/boot/zephyr/scripts/requirements.txt"
],
"toolchains": ["arm-zephyr-eabi"],
"projects": {}
}

The extension always installs dtsh and pyocd (used for devicetree shell and CMSIS-DAP flashing/debugging). Packages listed under pipPackages and paths listed under pipRequirements are installed in addition to those defaults.

Paths in pipRequirements may be relative to the workspace root or absolute, must end in .txt, and relative paths must not contain path traversal components (..).

During workspace setup, the extension installs Zephyr’s own Python requirements (west packages pip with fallback to pip install -r <zephyr>/scripts/requirements.txt) plus required IDE tools. After that, if zephyr-ide.json declares pipPackages and/or pipRequirements, the extension prompts to install them together in one step.

To manage these fields interactively, open the Zephyr IDE Manager panel or use the command palette commands:

  • Zephyr IDE: Modify zephyr-ide.json Pip Packages
  • Zephyr IDE: Modify zephyr-ide.json Pip Requirements
  • Zephyr IDE: Install Pip Packages and Requirements from zephyr-ide.json

After installing the SDK, you’re ready to: