Samples and Demos — Zephyr Project Documentation
Docs / Latest
Samples and Demos
Open on GitHub
Report an issue with this page
Samples and Demos
Zephyr offers a comprehensive collection of samples and demos that highlight the features of the
kernel and its subsystems.
These samples are crafted to be simple and easy to understand, serving as a starting point for your
own projects.
We welcome contributions of new samples to the project and you are encouraged to read more about
the
Sample Definition and Criteria
if you are interested in submitting your own sample.
Basic Synchronization
Manipulate basic kernel synchronization primitives.
Dining Philosophers
Implement a solution to the Dining Philosophers problem using Zephyr kernel services.
Hello World
Print "Hello World" to the console.
Application Development
Code relocation nocopy
Relocate code, data, or bss sections using a custom linker script.
External Library
Include an external static library into the Zephyr build system.
Architecture-dependent Samples
MMU/MPU
Memory Protection Unit (MPU)
Use memory protection to prevent common security issues.
Symmetric Multiprocessing (SMP)
SMP Pi
Calculate the first 240 digits of Pi on multiple execution units.
SMP pktqueue
Use SMP to process multiple packet headers in parallel.
Basic
Basic thread manipulation
Spawn multiple threads that blink LEDs and print information to the console.
Blinky
Blink an LED forever using the GPIO API.
Button
Handle GPIO button inputs using the input subsystem.
Fade LED
Fade an LED using the PWM API.
GPIO with custom Devicetree binding
Use custom Devicetree binding to control a GPIO.
Minimal footprint
Measure Zephyr's minimal ROM footprint in different configurations.
PWM Blinky
Blink an LED using the PWM API.
PWM RGB LED
Drive an RGB LED using the PWM API.
Servomotor
Drive a servomotor using the PWM API.
System hashmap
Insert, replace, and remove entries in a hashmap.
System heap
Print system heap usage to the console.
Bluetooth
Basic Audio Profile (BAP) Broadcast Audio Assistant
Use BAP Broadcast Assistant functionality.
Basic Audio Profile (BAP) Broadcast Audio Sink
Use BAP Broadcast Sink functionality.
Basic Audio Profile (BAP) Broadcast Audio Source
Use BAP Broadcast Source functionality.
Basic Audio Profile (BAP) Unicast Audio Client
Use BAP Unicast Client functionality.
Basic Audio Profile (BAP) Unicast Audio Server
Use BAP Unicast Server functionality.
Beacon
Advertise an Eddystone URL using GAP Broadcaster role.
Broadcaster
Periodically send out advertising packets with a manufacturer data element.
BTHome sensor template
Implement a BTHome sensor.
Call Control Profile (CCP) Call Control Server
CCP Call Control Server sample that registers one or more TBS bearers and advertises the
TBS UUID(s).
Call Control Profile (CCP) Call Control Server
CCP Call Control Server sample that registers one or more TBS bearers and advertises the
TBS UUID(s).
Central
Implement basic Bluetooth LE Central role functionality
(scanning and connecting).
Central / GATT Write
Scan for a Bluetooth LE device, connect to it and write a value to a characteristic.
Central Multilink
Scan, connect and establish connection to up to 62 peripherals.
Central OTC
Connect to a Bluetooth LE peripheral that supports the Object Transfer Service (OTS)
Central Periodic Advertising Sync Transfer (PAST)
Use the Periodic Advertising Sync Transfer (PAST) feature as the sender.
Channel Sounding
Use Channel Sounding functionality.
Common Audio Profile (CAP) Acceptor
Advertise audio availability to CAP Initiators using the CAP Acceptor role.
Common Audio Profile (CAP) Initiator
Connect to CAP Acceptors and setup unicast audio streaming or broadcast audio streams.
Cycling Speed and Cadence (CSC) Peripheral
Expose a Cycling Speed and Cadence (CSC) GATT Service.
Direct Advertising
Advertise directly to a bonded central device.
Direction Finding Central
Connect to a Bluetooth LE Direction Finding peripheral and request Constant Tone Extension.
Direction Finding Periodic Advertising Beacon
Implement Bluetooth LE Direction Finding CTE Broadcaster functionality.
Direction Finding Periodic Advertising Locator
Implement Bluetooth LE Direction Finding CTE Locator functionality.
Direction Finding Peripheral
Implement Bluetooth LE Direction Finding peripheral transmitting CTE in connected mode.
DIS Peripheral
Expose device information using the Device Information Service (DIS).
Eddystone
Export an Eddystone Configuration Service as a Bluetooth LE GATT service.
Elapsed Time Service (ETS) Peripheral
Expose an Elapsed Time Service (ETS) GATT Service.
Encrypted Advertising
Use the Bluetooth LE encrypted advertising feature.
ESP Peripheral
Expose environmental information using the Environmental Sensing Profile (ESP).
Extended Advertising
Use the Bluetooth LE extended advertising feature.
HCI 3-wire (H:5)
Expose a Bluetooth controller to another device or CPU over H5:HCI transport.
HCI IPC
Expose a Bluetooth controller to another device or CPU using the IPC subsystem.
HCI Power Control
Dynamically control the Tx power of a Bluetooth LE Controller using HCI vendor-specific commands.
HCI SPI
Expose a Bluetooth controller to another device or CPU over SPI.
HCI UART
Expose a Bluetooth controller to another device or CPU over UART.
HCI UART async
Expose a Bluetooth controller to another device or CPU over asynchronous UART.
HCI USB
Turn a Zephyr board into a USB Bluetooth dongle (compatible with all operating systems).
HCI Vendor-Specific Scan Request
Use vendor-specific HCI commands to enable Scan Request events when using legacy advertising.
Health Thermometer (Central)
Connect to a Bluetooth LE health thermometer sensor and read temperature measurements.
Health Thermometer (Peripheral)
Expose a Health Thermometer (HT) GATT Service generating dummy temperature values.
Hearing Access Profile (HAP) Hearing Aid (HA)
Advertise and await connection from a Hearing Aid Unicast Client or Remote Controller.
Heart-rate Monitor (Central)
Connect to a Bluetooth LE heart-rate monitor and read heart-rate measurements.
Heart-rate Monitor (Peripheral)
Expose a Heart Rate (HR) GATT Service generating dummy heart-rate values.
HID Peripheral
Implement a Bluetooth HID peripheral (generic mouse)
iBeacon
Advertise an Apple iBeacon using GAP Broadcaster role.
ISO (Central)
Transfer isochronous data to a peer device using an isochronous channel as a central.
ISO (Peripheral)
Implement a Bluetooth LE Peripheral that uses isochronous channels.
Isochronous Broadcaster
Use the Bluetooth Low Energy Isochronous Broadcaster functionality.
Isochronous Broadcaster Benchmark
Measure packet loss and sync loss of an ISO broadcaster against one or more receivers.
Isochronous Connected Channels Benchmark
Measure packet loss and sync loss in connected ISO channels.
L2CAP Connection Oriented Channels (Acceptor)
Accept incoming L2CAP Connection Oriented Channel connections.
L2CAP Connection Oriented Channels (Initiator)
Initiate L2CAP Connection Oriented Channel connections and send data.
Mesh
Use basic Bluetooth Mesh functionality.
Mesh Demo
Implement a Bluetooth Mesh demo application.
Mesh Provisioner
Provision a node and configure it using the Bluetooth Mesh APIs.
MTU Update
Configure and exchange MTU between two devices.
Multiple Broadcaster
Advertise multiple advertising sets.
Observer
Scan for Bluetooth devices nearby and print their information.
Periodic Advertising
Use Bluetooth LE Periodic Advertising functionality.
Periodic Advertising Connection Procedure (Initiator)
Initiate a connection to a device using the Periodic Advertising Connection Procedure.
Periodic Advertising Connection Procedure (Responder)
Respond to periodic advertising and establish a connection.
Periodic Advertising Synchronization
Use Bluetooth LE Periodic Advertising Synchronization functionality.
Periodic Advertising Synchronization Transfer Peripheral
Use the Periodic Advertising Sync Transfer (PAST) feature as the receiver.
Periodic Advertising with Responses (PAwR) Advertiser
Use Bluetooth LE Periodic Advertising with Responses (PAwR) Advertiser functionality.
Periodic Advertising with Responses (PAwR) Synchronization
Implement Bluetooth LE Periodic Advertising with Responses Synchronization.
Peripheral
Implement basic Bluetooth LE Peripheral role functionality (advertising and exposing GATT services).
Peripheral Accept List
Advertise and accept connections only from devices on an accept list.
Peripheral ANS
Send notification using Alert Notification Service (ANS).
Peripheral GAP service custom implementation
Implement a peripheral with GAP service that limits the accepted names
Peripheral GATT Write
Write a value to a characteristic using GATT Write Without Response.
Peripheral Identity
Use multiple identities to allow connections from multiple central devices.
Peripheral NUS
Implement a simple echo server using the Nordic UART Service (NUS).
Peripheral Object Transfer Service (OTS)
Expose an Object Transfer Service (OTS) GATT Service.
Peripheral SC-only
Enable "Secure Connections Only" mode for a Bluetooth LE peripheral.
Public Broadcast Profile (PBP) Public Broadcast Sink
Use PBP Public Broadcast Sink functionality.
Public Broadcast Profile (PBP) Public Broadcast Source
Use PBP Public Broadcast Source functionality.
Scan & Advertise
Combine Bluetooth LE Broadcaster & Observer roles to advertise and scan for devices simultaneously.
ST Bluetooth LE Sensor Demo
Export vendor-specific GATT services over Bluetooth.
Synchronized Receiver
Use Bluetooth LE Synchronized Receiver functionality.
Telephone and Media Audio Profile (TMAP) Broadcast Media Receiver (BMR)
Implement the TMAP Broadcast Media Receiver (BMR) role.
Telephone and Media Audio Profile (TMAP) Broadcast Media Sender (BMS)
Implement the LE Audio TMAP Broadcast Media Sender (BMS) role.
Telephone and Media Audio Profile (TMAP) Central
Implement the TMAP Call Gateway (CG) and Unicast Media Sender (UMS) roles.
Telephone and Media Audio Profile (TMAP) Peripheral
Implement the TMAP Call Terminal (CT) and Unicast Media Receiver (UMR) roles.
Bluetooth Classic
A2DP Sink
Use A2DP (Advanced Audio Distribution Profile) sink functionality.
A2DP Source
Use A2DP (Advanced Audio Distribution Profile) source functionality.
Hands-free
Use the Hands-Free Profile (HFP) APIs.
Hands-free Audio Gateway (AG)
Use the Hands-Free Profile Audio Gateway (AG) APIs.
Boards
96Boards
96Boards ArgonKey
Microphone
Acquire audio through the ArgonKey's on-board MP34DT05 microphone.
Sensors
Read sensor data from the ArgonKey board's onboard sensors.
BBC
BBC micro:bit
LED matrix display
Use the 5x5 LED matrix display on the BBC micro:bit board.
Line following robot
Implement a line following robot using a BBC micro:bit board and robot chassis.
Pong game
Play pong as single player or over Bluetooth between two micro:bit devices.
Sound
Use the piezo buzzer on the BBC micro:bit board.
EnjoyDigital
Espressif ESP32 boards
Deep Sleep
Use deep sleep with wake on timer, GPIO, and EXT1 sources on ESP32.
Flash Encryption
Encrypt/decrypt data stored in flash memory using ESP32 flash encryption feature.
Flash IPM on ESP32
Sample of flash API sharing between CPU cores using inter-processor mailbox (IPM).
Light Sleep
Use light sleep mode on ESP32 to save power while preserving the state of the memory,
CPU, and peripherals.
Memory-Mapped Flash
Write data into scratch area and read it using flash API and memory-mapped pointer.
SPIRAM
Allocate memory from SPIRAM.
XTAL32K Watchdog Timer (WDT)
Trigger watchdog interrupt on external 32K crystal failure.
Ultra Low Power coprocessor (ULP)
Low-Power CPU (LP CORE)
Debug ULP
Debug the LP Core in ESP32C6.
Echo ULP
Leverage Zephyr's UART API to use the LP UART on the ESP32-C6's LP core.
Interrupt ULP
HP Core interrupt LP Core.
LP GPIO Wakeup
LP Core wakes HP Core from deep sleep on LP GPIO level change.
LP Timer Wakeup
LP Core periodically wakes HP Core from deep sleep using LP timer.
Google
Power Delivery Analyzer
Implement a basic Power Delivery Analyzer to determine if a USB device is currently charging.
Intel
Code relocation
Relocate code using custom linker script.
Microchip
MEC15xxEVB Reference Board
Nordic Semiconductor
Battery Voltage Measurement
Measure the voltage of the device power supply.
Coresight STM benchmark
Coresight STM with remote shell
Dynamic Pin Control
Dynamically change pin configuration at boot time.
IEEE 802.15.4 over RPMsg
Expose nRF IEEE 802.15.4 radio driver to another device or CPU using RPMsg transport.
LED matrix
Use the nRF LED matrix display driver to drive an LED matrix.
Mesh Models
Setup a Bluetooth Mesh node with various models (generic OnOff, generic Level, ...).
Mesh OnOff Model
Control LEDs on a mesh network using the Bluetooth Mesh OnOff model.
Nordic IronSide SE firmware update
Update the Nordic IronSide SE firmware.
nRF clock control
Request minimum clock requirements at runtime.
nRF System Events
Manage global constant latency mode on Nordic SoCs using the nRF System Events API.
nRF5x Clock Skew
Measure the skew between the high-frequency and low-frequency clocks.
nrfx
Use nrfx library to interact with nRF peripherals.
nrfx peripheral resource sharing
Use nRF peripherals that share the same ID and base address.
SPIS wake up
Reduce current consumption by handling the wake line while using an SPIS.
Synchronized RTC
Synchronize system and network core RTC clocks.
System Off
Use deep sleep on Nordic platforms.
NXP
Audio output AMP sample.
AMP system example for NXP i.MX RTxxx platforms - audio loopback.
Audio output AMP sample.
AMP system example for NXP i.MX RTxxx platforms - audio output.
Blinky AMP sample
AMP system example for NXP i.MX RTxxx platforms - blinking LED.
FLEXRAM magic address
Configure an interrupt that triggers on arbitrary RAM/TCM address access.
FRDM-MCXA156 lpdac opamp lpadc example
Amplify the input of the OPAMP and sample it using the ADC.
mbox API AMP sample
AMP system example for NXP i.MX RTxxx platforms - IPC using the mbox API.
Number crunching using optimized library
Set up and use different backends for complex math operations.
OpenAMP DSP AMP Sample
Send messages between multiple cores using OpenAMP with concurrent communication channels.
RT1060 System Off
Use soft-off on MIMXRT1060-EVK.
RT595 System Off
Use soft-off on MIMXRT595-EVK.
S32 Network Controller (NETC)
Configure NXP S32 Network Controller (NETC)
PHYTEC
reel board
Bluetooth Mesh badge
Implement a smart badge using the reel board and Bluetooth Mesh.
QuickLogic
Raspberry Pi
Pico W WiFi + LED
Blink the onboard LED while scanning for WiFi networks.
Renesas
OpenAMP Linux Zephyr RPMsg
Enable message exchange between two cores, with the application core running Linux
and the real-time core running Zephyr, using the OpenAMP library.
Renesas comparator
Monitor the output of comparator.
Renesas ELC Sample
Integrating the Renesas ELC with PWM Functionality
Renesas Low-voltage Detection Sample using Comparator
Demonstrates monitoring and reacting to voltage levels.
STMicroelectronics
Backup SRAM
Use Backup SRAM to store a variable that persists across power cycles.
Core Coupled Memory (CCM)
Place and use variables in the Core Coupled Memory (CCM).
Hardware Semaphore (HSEM) Inter-Processor Communication on STM32 H7
Use the Hardware Semaphore (HSEM) to trigger LED blinking from one core to another.
I2C V2 timings
Retrieve I2C V2 timings at runtime.
Master Clock Output (MCO)
Output an internal clock for external use by the application.
SensorTile.box sensors
Read sensor data from the various SensorTile.box sensors.
Bluetooth
Bluetooth: ST Interactive GUI
Expose ST BlueNRG Bluetooth network coprocessor over UART.
Power Management
ADC power management
Use ADC in a low-power context on STM32.
Blinky with power management
Blink an LED using the GPIO API in a low-power context on STM32
Bluetooth Low Energy Power Management on STM32WB
Perform Bluetooth LE operations with Zephyr power management enabled on STM32WB.
GPIO as a wake-up pin source
Use a GPIO as a wake-up pin source.
Serial wakeup
Wake up on serial activity on STM32.
STOP3 mode
Use STOP3 low power mode on STM32U5.
Suspend to RAM
Use suspend to RAM low power mode on STM32.
PWM
STM32 pwm mastermode
Devicetree configuration for generation of timer events.
SensorTile.box Pro
SensorTile.box Pro sensors
Read sensor data from the various SensorTile.box Pro sensors.
STWIN.box
STWIN.box sensors
Read sensor data from the various STWIN SensorTile wireless industrial node sensors.
UART
Single-wire UART
Use single-wire/half-duplex UART functionality of STM32 devices.
UART circular mode
Read data from the console and echo it back using a circular DMA configuration.
Texas Instruments
CC13x2/CC26x2 System Off
Exercise the various sleep modes on TI CC13x2/CC26x2 platforms.
C++
C++ synchronization
Use Zephyr synchronization primitives from C++ code.
Hello C++ world
Print "Hello World" to the console in C++.
Data Structures
Min-Heap Data Structure
Demonstrate usage of a min-heap implementation in a Zephyr application.
Red-Black Tree Data Structure
Use a red-black tree data structure in a Zephyr application.
Drivers
AT45 DataFlash driver
Use the AT45 family DataFlash driver to interact with the flash memory over SPI.
Auxiliary digits display
Output increasing numbers to an auxiliary display.
Auxiliary display
Output "Hello World" to an auxiliary display.
Charger
Charge a battery using the charger driver API.
Crypto
Use the crypto APIs to perform various encryption/decryption operations.
Cyclic Redundancy Check Drivers (CRC)
Compute and verify a CRC checksum using the CRC driver API.
Digital-to-Analog Converter (DAC)
Generate an analog sawtooth signal using the DAC driver API.
Display
Draw basic rectangles on a display device.
EEPROM
Store a boot count value in EEPROM.
Enhanced Serial Peripheral Interface (eSPI)
Use eSPI to connect to a slave device and exchange virtual wire packets.
Flash shell
Explore a flash device using shell commands.
Fuel Gauge
Use fuel gauge API to access fuel gauge properties and get charge information.
GNSS
Connect to a GNSS device to obtain time, navigation data, and satellite information.
HD44780 LCD controller
Control an HD44780-based LCD display using GPIO pins.
HT16K33 LED driver with keyscan
Control up to 128 LEDs connected to an HT16K33 LED driver and log keyscan events.
HWSPINLOCK
Demonstrate cross-core synchronization using the HWSPINLOCK API together
with the MBOX API.
JEDEC SPI-NOR flash
Use the flash API to interact with an SPI NOR serial flash memory device.
JESD216 flash
Use the JESD216 flash API to extract information from a compatible serial memory device.
LiteX clock control driver
Use LiteX clock control driver to generate multiple clock signals.
MBOX
Perform inter-processor mailbox communication using the MBOX API.
MBOX Data
Perform inter-processor mailbox communication using the MBOX API with data.
Memory controller (MEMC) driver
Access memory-mapped external RAM
Multi-Function Device (MFD) with Charger, Fuel Gauge, and Regulators
Demonstrate a multi-function device using charger, fuel gauge, and regulator subsystems.
nRF SoC Internal Storage
Use the flash API to interact with the SoC flash.
PECI interface
Monitor CPU temperature using PECI.
PS/2 interface
Communicate with a PS/2 mouse.
PSI5 interface
Use the PSI5 (Peripheral Sensor Interface) driver.
Real-Time Clock (RTC)
Set and read the date/time from a Real-Time Clock.
SENT interface
Use the SENT (Single Edge Nibble Transmission) driver.
SMBus shell
Interact with SMBus peripherals using shell commands.
SPI bitbang
Use the bitbang SPI driver for communicating with a slave.
Time-aware GPIO
Synchronize clocks.
Watchdog
Use the watchdog driver API to reset the board when it gets stuck in an infinite loop.
ADC
Analog-to-Digital Converter (ADC) sequence sample
Read analog inputs from ADC channels, using a sequence.
Analog-to-Digital Converter (ADC) with devicetree
Read analog inputs from ADC channels.
Generic ADC stream
Get data from a ADC using stream.
Audio
audio codec
mic to speaker loopback.
Digital Microphone (DMIC)
Perform PDM transfers using different configurations.
Biometrics
Fingerprint sensor
Demonstrate fingerprint sensor enrollment, verification, identification, and template
management using the biometric driver API.
Controller Area Network (CAN)
Controller Area Network (CAN) babbling node
Simulate a babbling CAN node.
Controller Area Network (CAN) counter
Send and receive CAN messages.
Counter
Counter Alarm
Implement an alarm application using the counter API.
DS3231 TCXO RTC
Interact with a DS3231 real-time clock using the counter API and dedicated driver API.
Ethernet
Inter-VM Shared Memory (ivshmem) Ethernet
Communicate with another "cell" in the Jailhouse hypervisor using IVSHMEM Ethernet.
Firmware Samples
SCMI Platform Interaction
Interact with the SCMI platform using various protocols.
FPGA
FPGA Controller
Load a bitstream into an FPGA and perform basic operations on it.
General Purpose I/O (GPIO)
Bouffalolab GPIO FIFO / Wire Out UART
Output UART using Wire Out
Button interrupt
Handle GPIO inputs with interrupts.
Haptics
CS40L5x Haptic Driver
Drive an LRA using the CS40L5x haptic driver chip.
DRV2605 Haptic Driver
Drive an LRA using the DRV2605 haptic driver chip.
Inter-Integrated Circuit (I2C) Bus
I2C Custom Target
Setup a custom I2C target on the I2C interface.
I2C RTIO loopback
Perform I2C transfers between I2C controller and custom I2C target using RTIO.
I2C Target
Setup an I2C target on the I2C interface.
I2S
I2S codec
Process an audio stream to codec.
I2S echo
Process an audio stream to add an echo effect.
I2S output
Send I2S output stream
Inter-Processor Mailbox (IPM)
IPM on ESP32
Implement inter-processor mailbox (IPM) between ESP32 APP and PRO CPUs.
IPM on NXP i.MX
Implement inter-processor mailbox (IPM) on i.MX SoCs containing a Messaging Unit peripheral.
IPM on NXP LPC
Implement inter-processor mailbox (IPM) on NXP LPC family.
IPM over IVSHMEM
Implement inter-processor mailbox (IPM) over IVSHMEM (Inter-VM shared memory)
IPM with ARM MHU
Implement inter-processor mailbox (IPM) using an MHU (Message Handling Unit)
Light-Emitting Diode (LED)
Breathing-blinking LED (BBLED)
Control a BBLED (Breathing-Blinking LED) using Microchip XEC driver.
IS31FL319x RGB LED
Cycle colors on an RGB LED connected to the IS31FL3194 or IS31FL3197
using the LED API.
IS31FL3216A LED
Control up to 16 PWM LEDs connected to an IS31FL3216A driver chip.
IS31FL3733 LED Matrix
Control a matrix of up to 192 LEDs connected to an IS31FL3733 driver chip.
LED PWM
Control PWM LEDs using the LED API.
LED strip
Control an LED strip.
LP3943 RGBW LED
Control up to 16 RGBW LEDs connected to an LP3943 driver chip.
LP50XX RGB LED
Control up to 12 RGB LEDs connected to an LP50xx driver chip.
LP5562 RGB LED
Control 4 RGB LEDs connected to an LP5562 driver chip.
LP5569 9-channel LED controller
Control 9 LEDs connected to an LP5569 driver chip.
PCA9633 LED
Control 4 LEDs connected to a PCA9633 driver chip.
SCT2024 LED Controller
Control up to 16 LEDs connected to an SCT2024 chip.
SX1509B RGB LED
Control an RGB LED connected to an SX1509B driver chip.
LoRa
LoRa duty cycle
Receive LoRa packets using hardware RX duty cycling (wake-on-radio).
LoRa receive
Receive packets in both synchronous and asynchronous mode using the LoRa
radio.
LoRa send
Transmit a preconfigured payload every second using the LoRa radio.
Miscellaneous
FT800
Display various shapes and text using FT800 Embedded Video Engine.
Grove LCD
Display an incrementing counter and change the backlight color.
Modem
AT Command Client
Create a bidirectional UART bridge between console and modem for AT command communication.
Hello hl78xx modem driver
get & set basic hl78xx modem information & functionality with HL78XX modem APIs
Multi-bit SPI Bus (MSPI)
Ambiq MSPI timing scan
Find the appropriate timing for a given device on a given board.
JEDEC MSPI-NOR flash
Use the flash API to interact with a MSPI NOR serial flash memory device.
MSPI asynchronous transfer
Use the MSPI API to interact with MSPI memory device asynchronously.
MSPI throughput performance test
Measure MSPI throughput performance with different buffer sizes and packet counts.
OPAMP
Operational Amplifier (OPAMP) output measure sample
Amplify the input of the OPAMP and sample it using the ADC.
PWM
PWM Capture
Capture a PWM signal.
PWM Event
Events on a PWM signal.
Stepper
Stepper
Rotate a stepper motor in 4 different modes.
TMC50XX stepper
Rotate a TMC50XX stepper motor and change velocity at runtime.
TMCM-3216 stepper
Control a stepper motor using the ADI TMCM-3216 standalone stepper motor
controller and driver board over RS485.
Universal Asynchronous Receiver-Transmitter (UART)
Native TTY UART
Use native TTY driver to send and receive data between two UART-to-USB bridge dongles.
UART ASYNC API
Demonstrate the use of the asynchronous API
UART echo
Read data from the console and echo it back.
UART Passthrough
Pass data directly between the console and another UART interface.
Video
Video capture
Use the video API to retrieve video frames from a capture device.
Video capture to LVGL
Capture video frames and display them on an LCD using LVGL.
Video TCP server sink
Capture video frames and send them over the network to a TCP client.
Virtualization
IVSHMEM doorbell
Use Inter-VM Shared Memory to exchange messages between two processes running on different
operating systems.
1-Wire
1-Wire scanner
Scan for 1-Wire devices and print their family ID and serial number.
Kernel and Scheduler
Bootargs
Print received bootargs to the console.
Condition Variables
Manipulate condition variables in a multithreaded application.
Message Queue
Implement a basic message queue producer/consumer thread pair.
Meta-IRQ Thread Priority
Implement a thread running at a Meta-IRQ priority level.
External modules
Android's Context Hub Runtime Environment (CHRE)
Run nanoapps on Zephyr using the Context Hub Runtime Environment (CHRE).
CANopenNode
Use the CANopenNode CANopen protocol stack in Zephyr.
Nanopb
Serialize and deserialize structured data using the nanopb module.
CMSIS-DSP
CMSIS-DSP moving average
Use the CMSIS-DSP library to calculate the moving average of a signal.
LVGL
LVGL demos
Run LVGL built-in demos.
LVGL line chart with accelerometer data
Display acceleration data on a real-time chart using LVGL.
LVGL Multi-display
Run different LVGL demos on multiple displays.
LVGL screen transparency
Rendering to screens with transparency support using LVGL.
TensorFlow Lite for Microcontrollers
Hello World
Replicate a sine wave using TensorFlow Lite for Microcontrollers.
Magic Wand
Recognize gestures from an accelerometer using TensorFlow Lite for Microcontrollers and a 20KB
neural network.
TensorFlow Lite for Microcontrollers on Arm Ethos-U
Run an inference using an optimized TFLite model on Arm Ethos-U NPU.
Networking
802.15.4 "serial-radio"
Implement a slip-radio device for Contiki-based border routers.
Cellular modem
Use a cellular modem to communicate with a UDP server.
DHCPv4 client
Start a DHCPv4 client to obtain an IPv4 address from a DHCPv4 server.
DNS resolve
Resolve an IP address for a given hostname.
FTP client shell sample
FTP client sample interacting with FTP server over Zephyr shell.
IPv4 autoconf client
Perform IPv4 autoconfiguration and self-assign a random IPv4 address
Latmon Client
Measures delta time between GPIO events and reports the latency metrics via latmon to the latmus
service executing on the SUT.
LwM2M client
Implement a LwM2M client that connects to a LwM2M server.
mDNS responder
Listen and respond to mDNS queries.
MIDI2 network transport
Exchange Universal MIDI Packets over the Network MIDI 2.0 protocol
MQTT publisher
Send MQTT PUBLISH messages to an MQTT server.
MQTT-SN publisher
Send MQTT-SN PUBLISH messages to an MQTT-SN gateway.
Network packet capture
Capture network packets and send them to a remote host via IPIP tunnel.
Network packet filter
Install network packet filter hooks.
Network statistics
Query and display network statistics from a user application.
OCPP charge point
Implement an OCPP charge point that connects to a Central System server and
simulates the meter readings.
Prometheus Sample
Implement a Prometheus Metric Server demonstrating various metric types.
Promiscuous mode
Enable promiscuous mode on all interfaces and print information about incoming packets.
PTP
Enable PTP support and monitor messages and events via logging.
Remote syslog
Enable a remote syslog service that sends syslog messages to a remote server
Secure MQTT Sensor/Actuator
Implement an MQTT-based IoT sensor/actuator device
Telnet console
Access Zephyr shell over telnet.
TFTP client
Use the TFTP client library to get/put files from/to a TFTP server.
Virtual network interface
Create a sample virtual network interface.
Wireguard VPN
Implement a echo-server application that sends received packets back to
the sender over Wireguard VPN connection.
zperf: Network Traffic Generator
Use the zperf shell utility to evaluate network bandwidth.
IoT Cloud
AWS IoT Core MQTT
Connect to AWS IoT Core and publish messages using MQTT.
Microsoft Azure IoT Hub MQTT
Connect to Azure IoT Hub and publish messages using MQTT.
TagoIO HTTP Post
Send random temperature values to TagoIO IoT Cloud Platform using HTTP.
Network Ethernet
10BASE-T1S tests (OA_TC6)
Setup tests to examine long term stability of 10BASE-T1S communication
bridge
Test and debug Ethernet bridge
DSA (Distributed Switch Architecture)
Test and debug Distributed Switch Architecture
gPTP
Enable gPTP support and monitor functionality using net-shell.
Link Layer Discovery Protocol (LLDP)
Enable LLDP support and setup VLANs.
Virtual LAN
Setup two virtual LAN networks and use net-shell to view the networks' settings.
OpenThread
OpenThread BorderRouter
Test Wi-Fi and IEEE 802.15.4 using the OpenThread Border Router.
OpenThread co-processor
Build a Thread border-router using OpenThread's co-processor designs.
OpenThread CoAP client and server application
Build a Full Thread Device (FTD) CoAP server and client.
OpenThread shell
Test Thread and IEEE 802.15.4 using the OpenThread shell.
Quality of Service
Quality of Service
Implements a demo of quality of service on the ethernet layer.
QUIC API
Echo client (QUIC)
Implements a simple IPv4/IPv6 echo client using QUIC API and socket service API.
Echo server (QUIC)
Implements a simple IPv4/IPv6 echo server using QUIC API and socket service API.
Sockets API
Asynchronous echo server using poll()
Implement an asynchronous IPv4/IPv6 TCP echo server using BSD sockets and poll()
Asynchronous echo server using select()
Implement an asynchronous IPv4/IPv6 TCP echo server using BSD sockets and select()
CoAP client
Use the CoAP library to implement a client that fetches a resource.
CoAP download
Use the CoAP client API to download data via a GET request
CoAP service
Use the CoAP server subsystem to register CoAP resources.
CoAP TCP Client
Use the CoAP over TCP client to communicate with a CoAP server.
CoAP upload
Use the CoAP client API to upload data via a PUT request
Dumb HTTP server
Implement a simple, portable, HTTP server using BSD sockets.
Dumb HTTP server (multi-threaded)
Implement a simple HTTP server supporting simultaneous connections using BSD sockets.
Echo client (advanced)
Implement a client that sends IP packets, waits for data to be sent back, and verifies it.
Echo server (advanced)
Implement a UDP/TCP server that sends received packets back to the sender.
Echo server (service)
Implements a simple IPv4/IPv6 TCP echo server using BSD sockets and socket service API.
Echo server (simple)
Implements a simple IPv4/IPv6 TCP echo server using BSD sockets.
HTTP Client
Implement an HTTP(S) client that issues a variety of HTTP requests.
HTTP GET using plain sockets
Implement an HTTP(S) client using plain BSD sockets.
HTTP Server
Implement an HTTP(s) Server demonstrating various resource types.
Large HTTP download
Download a large file from a web server using BSD sockets.
Network management socket
Listen to network management events using a network management socket.
Packet socket
Use raw packet sockets over Ethernet.
SNTP client
Use SNTP to get the current time from the host.
SocketCAN
Send and receive raw CAN frames using BSD sockets API.
Socketpair
Implement communication between threads using socket pairs.
TCP sample for TTCN-3 based sanity check
Use TTCN-3 to validate the functionality of the TCP stack.
UDP sender using SO_TXTIME
Control the transmission time of a packet using SO_TXTIME socket option.
WebSocket Client
Implement a Websocket client that connects to a Websocket server.
Wi-Fi
Wi-Fi AP-STA mode
Configure a Wi-Fi board to operate as both an Access Point (AP) and a Station (STA).
Wi-Fi provisioning over BLE
Receive Wi-Fi credentials over a BLE GATT service and connect to
the access point.
Wi-Fi shell
Test Wi-Fi functionality using the Wi-Fi shell module.
PSA
PSA Crypto persistent key
Manage and use persistent keys via the PSA Crypto API.
PSA Internal Trusted Storage API
Use the PSA ITS API.
Regulator
Regulator Shell Sample
Interact with regulators using the shell module.
Sensors
6dof device FIFO streaming
Get accelerometer/gyroscope/temperature FIFO data frames from a sensor using
SENSOR_TRIG_FIFO_WATERMARK as a trigger.
Accelerometer trigger
Test and debug accelerometer with interrupts.
ADT7420 high-accuracy digital I2C temperature sensor
Get temperature data from an ADT7420 sensor using polling and window mode.
AMG88XX infrared array sensor
Get temperature data from an AMG88XX 8x8 thermal camera sensor.
ams iAQcore indoor air quality sensor
Get CO2 equivalent and VOC data from an ams iAQcore sensor.
APDS9960 RGB, ambient light, and gesture sensor
Get ambient light, RGB, and proximity/gesture data from an APDS9960 sensor.
Barometric pressure and temperature sensor interrupt example
Manage interrupts from a barometric pressure and temperature sensor.
Barometric pressure and temperature sensor polling example
Get barometric pressure and temperature data from a sensor.
BME280 humidity and pressure sensor
Get temperature, pressure, and humidity data from a BME280 sensor.
BMG160 3-axis gyroscope
Get temperature, and angular velocity data from a BMG160 sensor.
BMI270 6-axis IMU sensor
Configure and read accelerometer and gyroscope data from a BMI270 sensor.
BQ274XX fuel gauge sensor
Get various fuel gauge parameters from a BQ274XX sensor.
CCS811 indoor air quality sensor
Get CO2 equivalent and VOC data from a CCS811 sensor.
CPU die temperature polling
Get CPU die temperature data from a sensor using polling.
DS18B20 1-Wire Temperature Sensor
Get ambient temperature data from a DS18B20 sensor (polling mode).
FDC2X1X Capacitance-to-Digital Converter
Get capacitance and frequency data from a FDC2X1X sensor (polling & trigger).
FXAS21002 Gyroscope Sensor
Get gyroscope data synchronously from an FXAS21002 sensor.
Generic 3-Axis accelerometer polling
Get 3-Axis accelerometer data from a sensor (polling mode).
Generic 3-Axis accelerometer streaming
Get 3-Axis accelerometer data from a sensor (stream mode).
Generic 6DOF Motion Dataready
Get 6-Axis accelerometer and gyroscope data from a sensor (data ready interrupt mode).
Generic CO2 polling sample
Get CO2 data from a sensor (polling mode).
Generic device sample streaming using Data Ready trigger
Get accelerometer data frames from a sensor using SENSOR_TRIG_DATA_READY.
Generic digital humidity temperature sensor polling
Get temperature and humidity data from a DHT sensor (polling mode).
Generic distance measurement
Measure distance to an object using a distance sensor
Generic Light Sensor Polling
Get illuminance data from a light sensor.
Grove Temperature Sensor
Get temperature data from a Grove temperature sensor and display it on an LCD display.
GROW R502-A Fingerprint Sensor
Store and match fingerprints using the GROW R502-A fingerprint sensor.
Heart Rate Sensor
Get heart rate data from a sensor (polling/interrupt mode).
HTS221 Temperature and Humidity Monitor
Get temperature and humidity data from an HTS221 sensor (polling & trigger mode).
I3G4250D 3-axis gyroscope sensor
Get gyroscope data from an I3G4250D sensor.
Iclegend S3KM1110 mmWave sensor
Read standard and custom channels from an Iclegend S3KM1110 mmWave radar sensor.
INA219 Bidirectional Power/Current Monitor
Get shunt voltage, bus voltage, power and current from an INA219 sensor.
ISL29035 Digital Light Sensor
Get light intensity data from an ISL29035 sensor (polling & trigger mode).
JEDEC JC 42.4 compliant Temperature Sensor
Get ambient temperature from a JEDEC JC 42.4 compliant temperature sensor (polling & trigger
mode).
LIS2DH Motion Sensor
Get accelerometer data from an LIS2DH sensor (polling & trigger mode).
LPS22HB Temperature and Pressure Sensor
Get pressure and temperature data from an LPS22HB sensor (polling mode).
LPS22HH Temperature and Pressure Sensor
Get pressure and temperature data from an LPS22HH sensor (polling & trigger mode).
LPS22HH Temperature and Pressure Sensor (I3C)
Get pressure and temperature data from an LPS22HH sensor over I3C (polling &
trigger mode).
LSM303DLHC Magnetometer and Accelerometer sensor
Get magnetometer and accelerometer data from an LSM303DLHC sensor (polling
mode).
LSM6DSL IMU sensor
Get accelerometer and gyroscope data from an LSM6DSL sensor (polling & trigger
mode).
LSM6DSO IMU sensor
Get accelerometer and gyroscope data from an LSM6DSO sensor (polling & trigger
mode).
LSM6DSO IMU sensor (I2C on I3C bus)
Get accelerometer and gyroscope data from an LSM6DSO sensor using I2C on I3C
bus (polling & trigger mode).
Magnetometer Sensor
Get magnetometer data from a magnetometer sensor (polling mode).
Magnetometer trigger
Test and debug magnetometer with interrupts
MAX17262 Fuel Gauge Sensor
Get voltage, current and temperature data from a MAX17262 sensor (polling mode).
MAX32664C + MAX86141 Sensor Hub
MAX6675 K-thermocouple to digital converter
Get temperature from a MAX6675 K-thermocouple to digital converter (polling
mode).
MPU6050 Invensense Motion Tracking Device
Get temperature, acceleration, and angular velocity from an ICM42605 sensor (polling & trigger
mode).
MPU6050 motion tracking device
Get temperature, acceleration, and angular velocity from an MPU6050 sensor (polling & trigger
mode).
MS5837 Digital Pressure Sensor
Get pressure and temperature data from an MS5837 sensor (polling mode).
MTCH9010 Liquid Leak Detector Testbench
Configure an MTCH9010 and receive data from it periodically.
NPCX ADC Comparator
Detect upper/lower voltage limits using NPCX ADC Comparator driver.
NXP MCUX Analog Comparator (ACMP)
Get analog comparator data from an NXP MCUX Analog Comparator (ACMP).
NXP MCUX Low-power Analog Comparator (LPCMP)
Get analog comparator data from an NXP MCUX Low-power Analog Comparator (LPCMP).
PAJ7620 Gesture Sensor
Get hand gesture data from PAJ7620 sensor.
Proximity sensor
Get proximity data from up to 10 proximity sensors (polling mode).
Quadrature Decoder Sensor
Get rotation data from a quadrature decoder sensor.
Sensor Clock
Test and debug Sensor Clock functionality.
Sensor shell
Interact with sensors using the shell module.
SGP40 and SHT4X digital humidity and multipixel gas sensor
Get temperature, humidity and gas sensor data from SGP40 and SHT4X sensors (polling mode).
SHT3XD humidity sensor
Get temperature and humidity from a SHT3XD sensor (polling & trigger mode).
SM351LT Magnetoresistive Sensor
Detect a magnet's presence using the SM351LT magnetoresistive sensor (polling & trigger mode).
SoC Voltage Sensor
Get voltage data from an SoC's voltage sensor(s).
SX9500 SAR proximity sensor
Get proximity data from an SX9500 SAR proximity sensor.
TDK Advanced Pedometer and Event Detection (APEX)
Get TDK APEX event detection (trigger mode).
TH02 Temperature and Humidity Sensor
Get temperature and humidity data from a TH02 sensor (polling mode).
Thermometer
Get ambient temperature data from a temperature sensor and get alerts when temperature drifts
above a threshold. (polling & trigger mode).
TMP108 Temperature Sensor
Get temperature data from a TMP108 sensor (polling & trigger mode).
TMP112 Temperature Sensor
Get temperature data from a TMP112 sensor (polling & trigger mode).
VCNL4040 Proximity and Ambient Light Sensor
Get proximity and ambient light data from a VCNL4040 sensor (polling & trigger mode).
VEAA-X-3 proportional pressure control valve
Control a VEAA-X-3 proportional pressure control valve.
VEML6031 High Accuracy Ambient Light Sensor
Get ambient light data from a VEML4040 sensor (polling mode).
VEML6046 RGBIR Color Sensor
Get red, green, blue and IR light data from a VEML6046 sensor (polling
mode).
VL53L0X Time Of Flight sensor
Get distance data from a VL53L0X sensor (polling mode).
Shields
nPM13xx EK
Interact with an nPM1300 or nPM1304 PMIC using the shell interface and buttons.
nPM2100 EK
Interact with the nPM2100 PMIC using the EK buttons and the shell interface.
nPM6001 EK
Interact with the nPM6001 PMIC using the shell interface.
RTK0EG0019B01002BJ Capacitive Touch Application Shield
Interact with the Capacitive Touch Sensor and LED matrix on the RTK0EG0019B01002BJ shield
X-NUCLEO-53L0A1 shield
Interact with the 7-segment display and VL53L0X ranging sensor of an X-NUCLEO-53L0A1 shield.
X-NUCLEO-IKS01A1 shield
Interact with all the sensors of an X-NUCLEO-IKS01A1 shield.
X-NUCLEO-IKS01A2 shield
X-NUCLEO-IKS01A2 shield - SensorHub (Mode 2)
Interact with all the sensors of an X-NUCLEO-IKS01A2 shield using Sensor Hub mode.
X-NUCLEO-IKS01A2 shield - Standard (Mode 1)
Interact with all the sensors of an X-NUCLEO-IKS01A2 shield using Standard Mode.
X-NUCLEO-IKS01A3 shield
X-NUCLEO-IKS01A3 shield - SensorHub (Mode 2)
Interact with all the sensors of an X-NUCLEO-IKS01A3 shield using Sensor Hub mode.
X-NUCLEO-IKS01A3 shield - Standard (Mode 1)
Interact with all the sensors of an X-NUCLEO-IKS01A3 shield using Standard mode.
X-NUCLEO-IKS02A1 shield
X-NUCLEO-IKS02A1 shield - MEMS microphone
Acquire audio using the digital MEMS microphone on X-NUCLEO-IKS02A1 shield.
X-NUCLEO-IKS02A1 shield - SensorHub (Mode 2)
Interact with all the sensors of an X-NUCLEO-IKS02A1 shield using Sensor Hub mode.
X-NUCLEO-IKS02A1 shield - Standard (Mode 1)
Interact with all the sensors of an X-NUCLEO-IKS02A1 shield using Standard mode.
X-NUCLEO-IKS4A1 shield
Subsystems
Arm SiP Services on Intel Agilex SoC FPGA
Use the SiP SVC subsystem to interact with the Secure Device Manager on Intel Agilex SoC FPGA.
CMSIS-DAP
Implement a custom CMSIS-DAP controller using SWDP interface driver.
Cyclic Redundancy Check Subsystem (CRC Subsys)
Compute and verify a CRC computation using the CRC subsys API.
Demand paging
Leverage demand paging to deal with code bigger than available RAM.
EDAC shell
Test error detection and correction (EDAC) using shell commands.
Instrumentation
Demonstrate the instrumentation subsystem tracing and profiling features.
Settings API
Load and save configuration values using the settings API.
Task watchdog
Monitor a thread using a task watchdog.
Tracing
Send tracing formatted packet to the host with supported backends.
UUID
Manipulate UUID v4 and v5 compliant with IETF RFC 9562.
Binary Descriptor
Binary descriptors "Hello World"
Set and access binary descriptors for a basic Zephyr application.
Binary descriptors read
Define some binary descriptors and read them.
Controller Area Network (CAN) Bus
ISO-TP library
Use ISO-TP library to exchange messages between two boards.
Console
Console echo
Echo an input character back to the output using the Console API.
console_getchar()
Use console_getchar() to read an input character from the console.
console_getline()
Use console_getline() to read an input line from the console.
CPU Freq
On-demand CPU frequency scaling
Dynamically scale CPU frequency using the on-demand policy.
Pressure based CPU frequency scaling
Dynamically scale CPU frequency using the pressure policy.
Debug
Debug Monitor
Configure the Debug Monitor feature on a Cortex-M processor.
Fuzzing
Integrate fuzz testing with Zephyr apps.
Display
Character frame buffer
Display character strings using the Character Frame Buffer (CFB).
Character Framebuffer shell module
Use the CFB shell module to interact with a monochrome display.
Custom fonts
Generate and use a custom font.
LVGL basic sample
Display a "Hello World" and react to user input using LVGL.
File Systems
EXT2 filesystem fstab
Define ext2 filesystems in the devicetree.
Fatfs filesystem fstab
Define fatfs filesystems in the devicetree.
File system manipulation
Use file system API with various filesystems and storage devices.
Format filesystem
Format different storage devices for different file systems.
LittleFS filesystem
Use file system API over LittleFS.
virtiofs filesystem
Use file system API over virtiofs.
Input
Draw touch events
Visualize touch events on a display.
Input dump
Print all input events.
Inter-Processor Communication (IPC)
IPC service: icmsg backend
Send messages between two cores using the IPC service and icmsg backend.
IPC service: Multi-endpoint
Use the IPC Service with multiple endpoints.
IPC service: static vrings backend
Send messages between two cores using the IPC service and static vrings backend.
OpenAMP
Send messages between two cores using OpenAMP.
OpenAMP using resource table
Send messages between two cores using OpenAMP and a resource table.
RPMsg service
Send messages between cores using RPMsg service.
Key-Value Storage Systems
Non-Volatile Storage (NVS)
Store and retrieve data from flash using the NVS API.
Zephyr Memory Storage (ZMS)
Store and retrieve data from storage using the ZMS API.
Linkable Loadable Extensions (LLEXT)
Linkable loadable extensions "module" sample
Call a function in a loadable extension module,
either built-in or loaded at runtime.
Linkable loadable extensions EDK
Enable linkable loadable extension development outside the Zephyr tree using
LLEXT EDK (Extension Development Kit).
Linkable loadable extensions shell module
Manage loadable extensions using shell commands.
Logging
Bluetooth logging backend
Send log messages over Bluetooth using the Bluetooth logging backend.
Dictionary-based logging
Output binary log data using the dictionary-based logging API.
Logging
Output log messages to the console using the logging subsystem.
LoRaWAN
LoRaWAN class A device
Join a LoRaWAN network and send a message periodically.
LoRaWAN FUOTA
Perform a LoRaWAN firmware-upgrade over the air (FUOTA) operation.
Management
Eclipse hawkBit Direct Device Integration API
Update a device using Eclipse hawkBit DDI API.
SMP server
Implement a Simple Management Protocol (SMP) server.
UpdateHub embedded Firmware Over-The-Air (FOTA) update
Perform Firmware Over-The-Air (FOTA) updates using UpdateHub.
Modbus
Modbus RTU client
Communicate with a Modbus RTU server.
Modbus RTU server
Implement a Modbus RTU server exposing Modbus commands to control LEDs.
Modbus TCP server
Implement a Modbus TCP server exposing Modbus commands to control LEDs.
Modbus TCP-to-serial gateway
Implement a gateway between an Ethernet TCP-IP network and a Modbus serial line.
Power Management
Device Idle Power Management
Use device runtime power management with a parent-child device hierarchy.
PMCI
MCTP
MCTP Endpoint Sample
Create an MCTP endpoint over UART.
MCTP Host Sample
Create an MCTP host over UART.
MCTP I2C GPIO Endpoint Node Sample
Create an MCTP endpoint node controlling I2C with GPIO signaling.
MCTP I2C GPIO Top Node Sample
Create an MCTP top node controlling I2C with GPIO signaling.
MCTP I3C Endpoint Node Sample
Create an MCTP endpoint node over I3C.
MCTP I3C Top Node Sample
Create an MCTP top node controlling I3C.
MCTP USB Endpoint Node Sample
Create an MCTP endpoint node using the USB device interface.
Portability
CMSIS RTOS v1
Dining Philosophers (CMSIS RTOS V1 APIs)
Implement a solution to the Dining Philosophers problem using CMSIS RTOS V1.
Synchronization using CMSIS RTOS V1 APIs
Use timers and message queues from CMSIS RTOS v1 API to synchronize threads.
CMSIS RTOS v2
Dining Philosophers (CMSIS RTOS V2 APIs)
Implement a solution to the Dining Philosophers problem using CMSIS RTOS V2.
Synchronization using CMSIS RTOS V2 APIs
Use timers and message queues from CMSIS RTOS v2 API to synchronize threads.
POSIX API
Environment Variables
Manipulate environment variables from a Zephyr application.
eventfd()
Use eventfd() to create a file descriptor for event notification.
gettimeofday() with clock initialization
Use gettimeofday() with clock initialization over SNTP.
POSIX Philosophers
Implement a solution to the Dining Philosophers problem using the POSIX API.
uname()
Use uname() to acquire system information and output it to the console.
Profiling
Perf tool
Send perf samples to the host with console support
Real Time I/O (RTIO)
Producer Consumer
Implement a producer->consumer pipe using RTIO.
Sensor batch processing
Implement a sensor device using RTIO for asynchronous data processing.
Sensing
Sensing subsystem
Get high-level sensor data in defined intervals.
Shell
Custom Shell module
Register shell commands using the Shell API
devmem load shell
Load data to device memory using devmem shell cmd.
File system shell
Access a LittleFS file system partition in flash using the file system shell.
State Machine Framework
Hierarchical State Machine Demo based on example from PSiCC2
Implement an event-driven hierarchical state machine using State Machine Framework (SMF).
SMF Calculator
Create a simple desk calculator using the State Machine Framework.
Test suites
Pytest shell application testing
Execute pytest tests against the Zephyr shell.
zephyr benchmark sample
Showcases how to use Zephyr Benchmarking subsystem to measure
performance of code sections.
USB
Console over USB CDC ACM
Output "Hello World!" to the console over USB CDC ACM.
USB Audio asynchronous explicit feedback sample
USB Audio 2 explicit feedback sample playing audio on I2S.
USB Audio asynchronous implicit feedback sample
USB Audio 2 implicit feedback sample playing stereo and recording mono audio
on I2S interface.
USB CDC ACM UART sample
Use USB CDC ACM UART driver to implement a serial port echo.
USB CDC-ACM bridge
Use USB CDC-ACM driver to implement a serial port bridge.
USB device testing application
Test USB device drivers using a loopback function.
USB DFU
Implement a basic USB DFU device
USB HID keyboard
Implement a basic HID keyboard device.
USB HID mouse
Implement a basic HID mouse device.
USB Host UVC Camera
Capture video from a USB camera.
USB Mass Storage
Expose board's RAM or FLASH as a USB disk using USB Mass Storage driver.
USB MIDI2 device
Implements a simple USB MIDI loopback and keyboard device.
USB shell
Use shell commands to interact with USB device stack.
USB Video webcam
Send video frames over USB.
WebUSB
Receive and echo data from a web page using WebUSB API.
Legacy USB device support
Legacy console over USB CDC ACM
Output "Hello World!" to the console over USB CDC ACM.
Legacy HCI USB
Turn a Zephyr board into a USB Bluetooth dongle (compatible with all operating systems).
Legacy USB Audio headset
Implement a USB Audio headset device with audio IN/OUT loopback.
Legacy USB Audio microphone & headphones
Implement a USB Audio microphone + headphones device with audio IN/OUT loopback.
Legacy USB CDC ACM UART sample
Use USB CDC ACM UART driver to implement a serial port echo.
Legacy USB device netusb sample
Use USB CDC EEM/ECM or RNDIS implementation
Legacy USB DFU (Device Firmware Upgrade)
Implement device firmware upgrade using the USB DFU class driver.
Legacy USB HID mouse
Implement a basic HID mouse device.
Legacy USB Mass Storage
Expose board's RAM as a USB disk using USB Mass Storage driver.
Legacy WebUSB
Receive and echo data from a web page using WebUSB API.
USB-C device support
Basic USB-C DRP
Implement a USB-C Power Delivery application in the form of a USB-C DRP (Dual Role Power).
Basic USB-C Sink
Implement a USB-C Power Delivery application in the form of a USB-C Sink.
Basic USB-C Source
Implement a USB-C Power Delivery application in the form of a USB-C Source.
zbus
Benchmarking
Measure the time for sending 256KB from a producer to N consumers.
Confirmed channel
Use confirmed zbus channels to ensure all subscribers consume a message.
Dynamic channel
Use zbus channels with dynamically allocated messages.
Message subscriber
Use zbus message subscribers to listen to messages published to channels.
Remote mock sample
Publish to a zbus instance using UART as a bridge.
Runtime observer registration
Use zbus' runtime observer registration to filter data generated by a producer.
UART bridge
Redirect channel events to the host over UART.
Work queue
Use a work queue to process zbus messages in various ways.
zbus Async Listeners
Demonstrate the usage of zbus async listeners.
zbus Hello World
Make three threads talk to each other using zbus.
zbus Priority Boost
Illustrates zbus priority boost feature with a priority inversion scenario.
zbus Proxy agent - IPC
Forward zbus messages between different domains using IPC proxy agents.
Sysbuild
Hello World for multiple board targets using Sysbuild
Run a hello world sample on multiple board targets
MCUboot with sysbuild
Build a Zephyr application + MCUboot using sysbuild.
TF-M Integration
TF-M IPC
Implement communication between the secure and non-secure images using IPC.
TF-M PSA crypto
Use the PSA Crypto API for cryptography and device certificate signing requests.
TF-M PSA Protected Storage
Use the Protected Storage (PS) API to store encrypted data.
TF-M Secure Partition
Create a secure partition that exposes secure services.
Userspace
Hello World
Print a simple "Hello World" from userspace.
Producer/consumer
Manipulate basic user mode concepts.
Syscall performance
Measure performance overhead of a system calls compared to direct function calls.
Userspace Protected Memory
Use memory partitioning to protect memory between threads.