Learn how to prepare supported Arduino boards to run applications built on the Zephyr RTOS by installing the Zephyr loader.
This article applies to the following boards:
- Arduino Portenta H7
- Arduino Portenta C33
- Arduino Opta
- Arduino GIGA R1 WiFi
- Arduino Nano RP2040 Connect
- Arduino Nano 33 BLE Sense
- Arduino Nicla Sense ME
- Arduino Nicla Vision
Note
This guide requires the Arduino Zephyr Boards core version 0.90.0 or later.
In this article:
- Overview {#overview}
- Prerequisites {#prerequisites}
- Automatic loader updates {#automatic-loader-updates}
- Flash the Zephyr loader manually {#flash-manually}
- Still need help? {#still-need-help}
Overview
Arduino is transitioning its high-performance board cores from the deprecated Arm Mbed OS to the modern, open-source Zephyr RTOS. Before running Zephyr-based sketches on a supported Arduino board for the first time, you must install the Zephyr loader onto your hardware. The loader is a small firmware utility that allows the board to accept and run applications built on the Zephyr RTOS architecture.
This guide walks you through the initial setup process in Arduino IDE.
Prerequisites
Before you begin, ensure you have the following:
- Arduino IDE 2.x installed.
- Arduino Zephyr Boards (v0.90.0 or later) installed via Tools > Board > Boards Manager.
- A data-compatible USB cable to connect your board directly to your computer.
Automatic loader updates
Starting with Arduino Zephyr Boards v0.90.0, the core includes automatic loader sync across all supported boards. During every sketch upload, the loader version is checked and updated behind the scenes if required.
This includes boards that have no Zephyr loader installed; uploading any sketch will automatically install the loader the very first time the board is used with a Zephyr-based core.
Important
For Portenta C33 users: Due to a required bootloader update on the Portenta C33, you must complete the manual loader flashing process below at least once. After completing this initial update manually, automatic loader updates will work seamlessly on the Portenta C33 as well.
Flash the Zephyr loader manually
Follow these steps to prepare your board for Zephyr for the first time, or to manually sync the loader with the core version:
-
Connect your board to your computer via USB.
-
Put the board in bootloader mode: Quickly double-click the physical RESET button on your board. The built-in LED will pulse or blink, indicating the board is in bootloader mode.
-
Select your board and port: In the Arduino IDE menu, go to Tools > Board and select your board under the Arduino Zephyr Boards platform. Then, select the correct port under Tools > Port.
-
Select a programmer: Go to Tools > Programmer and choose Factory Programmer (or any other available option specified for your board).
-
Burn the loader: Select Tools > Burn Bootloader. Wait for the process to complete. You should see a success message in the console output.
Important
Portenta C33 step: If this is your first time flashing the loader on a Portenta C33, an automatic bootloader update will start right after burning the loader. You must wait until the board’s LED starts flashing blue before proceeding to the next step.
-
Upload your sketch: Once the loader burn succeeds (and after waiting for the blue flashing LED on the Portenta C33), put the board into bootloader mode once more by double-clicking the physical RESET button, then upload a sketch.
To test that everything is working, you can upload a basic blink sketch:
- Open File > Examples > 01.Basics > Blink.
- Click the Upload button in Arduino IDE.
The blink example will now compile and run on top of the Zephyr RTOS!
Still need help?
If you encounter errors during the Burn Bootloader step:
- Ensure your USB cable supports data transfer (not power-only).
- Try putting the board back into bootloader mode by double-clicking the physical RESET button again.
- Visit the ArduinoCore-zephyr GitHub repository to view reported issues or request technical support.
- If you still need help, contact us or search the Arduino Forum.