Arm SDS
Arm SDS is a VS Code extension for capturing, replaying, inspecting, and validating synchronous data streams
from embedded systems. It provides a graphical interface for the
Synchronous Data Stream (SDS) Framework, which brings reproducible
real-world sensor, audio, image, video, and algorithm data into DSP, ML, and Edge AI development. Captured streams can
be reviewed, labeled, and exported for offline analysis, DSP development, and ML training and testing.
SDS recordings turn real-world observations into reusable datasets and repeatable test cases. Use them to train or
optimize ML models, reproduce a problem, compare algorithm or model versions, and verify a change on target hardware or
an FVP simulation model. Arm SDS lets you review SDS data from both environments; its built-in SDSIO-Server connects
only to physical targets to record and play back data.

What you can do
- Capture real-world sensor and media data from an embedded target and preserve it as a reusable engineering asset.
- Explore synchronized inputs and algorithm results together to understand system behavior and identify problems.
- Replay the same inputs to reproduce issues and compare algorithms, models, parameters, targets, or software versions.
- Turn recordings into repeatable test cases and datasets for DSP and ML development, validation, regression testing,
and CI workflows.
How it works
The SDS Framework manages periodic fixed-size data
blocks as well as variable-size or irregularly timed streams. An SDS-enabled application can record sensor, audio,
image, and video input streams together with algorithm output. During playback, it feeds previously captured streams
into the application while recording new output, enabling repeatable validation and optimization.
The diagram below shows a target connected through USB. A physical
target can also connect through a serial port, a TCP/IP socket, or an RTT connection. See
the SDS template application for the target-side
application structure and instructions for configuring these interfaces.

The Arm SDS VS Code extension provides a user interface for the SDSIO-Server and SDS data file viewers. It uses the following files:
| File |
Purpose |
*.sdsio.yml control file |
Controls the SDSIO interface, working directories, playback test cases, and flag labels. |
*.sds |
SDS data file that stores a recorded synchronous data stream. |
*.sds.yml or *.sds.yaml |
Describes stream names, data types, sample rates, scaling, units, and media formats. |
Prerequisites
Recording data from or playing data back to a target requires:
- A physical target running an application that integrates the SDS Framework and an SDSIO Client interface. The
application defines the streams to record or play and transfers them through USB, serial, a TCP/IP socket, or an RTT
connection exposed as a local socket. The
SDS template application provides a starting point
for integrating SDS with target hardware and an algorithm.
- An
*.sdsio.yml control file that matches the SDSIO interface implemented by the target. It configures the target
connection, directories for SDS data and metadata files, and optional playback steps. You can create this file with
Create Configuration or open one supplied with an SDS example.
The target application must be running and its configured USB, serial, network, or debug connection must be available
before Arm SDS can connect through the SDSIO-Server. Existing SDS recordings can be inspected without a
connected target.
Workflow
- Open the matching
*.sdsio.yml control file and connect Arm SDS to the SDS-enabled target.
- Capture changing real-world sensor, audio, image, or video input streams, optionally together with algorithm output.
- Inspect and label the recording, then preserve it as a reusable engineering asset.
- Replay the captured input streams on hardware or an FVP simulation model while recording new algorithm output.
- Compare results across models, parameter sets, targets, or software versions and add the test to regression or CI.
This workflow makes failures reproducible and provides evidence that an algorithm change fixes the original condition.
Making Edge AI development more productive exemplifies the overall development flow for ML applications.
Connect to a target
The SDSIO-Server records and plays SDS data through a physical target connection. It supports USB, serial,
and TCP/IP socket interfaces; RTT connections use a local socket exposed by the debug adapter. FVP simulation does not
use the SDSIO-Server, but connects through the VSI3 interface using the same *.sdsio.yml control file.
- Open the SDS view and select Open SDS Configuration to load an existing
*.sdsio.yml control file. Use
New SDS Configuration only when starting a new configuration.
- Select Connect SDSIO Monitor. Arm SDS starts the server with the active
*.sdsio.yml control file and connects the monitor to it.
- Use Record, Play, Stop, and the user flags to interact with the target.
The *.sdsio.yml control file configures both the extension UI and the data workflow. For a target connection, it selects the SDSIO-Server interface. A new USB target configuration looks like this:
sdsio:
interface:
usb:
workdir: .
metadir: .
play:
- step: Baseline test
labels:
- 0
flag-info:
- 0: Enable preprocessing
- 1: Input variant B
- 2: Record camera input
| Property |
Description |
interface |
Selects the USB, serial, or socket connection between a target and SDSIO-Server. Ignored by the VSI3 interface of FVP simulation models. |
workdir |
Directory containing recorded .sds files, relative to the *.sdsio.yml control file. |
metadir |
Directory containing *.sds.yml metadata, relative to the *.sdsio.yml control file. |
play |
Defines files and test cases available for playback. |
flag-info |
Labels for the eight application flags shown in the SDS View. |
User interface
Open the SDS view from the VS Code Activity Bar. It combines the active *.sdsio.yml control file, target connection controls,
user flags, stream groups, metadata, and SDS recordings.

- The SDS View Toolbar contains Actions for playback, recording, target connection, configuration-file
access, and other commands.
- Tree View item inline actions provide frequently used commands for a specific SDS stream or file, such as
editing its metadata or opening it in the SDS Viewer.
- The Tree View item context menu provides all commands available for the selected item, including validation,
metadata editing, viewing, CSV export, and deletion.
Commands
The View Actions and item menus provide commands for target control, configuration management, and SDS files. You can
also open the VS Code Command Palette
and type SDS to find commands that apply without a selected Tree View item.

| Command |
What it does |
| Start Playback |
Connect to the SDSIO-Server if necessary, select a configured playback test case, and start playback to the target. |
| Start Recording |
Connect to the SDSIO-Server if necessary and start recording SDS streams from the target. |
| Stop IO (Playback/Recording) |
Stop the active recording or playback operation. |
| (Dis-)Connect SDSIO Monitor |
Start or stop the SDSIO-Server using the target information in the active *.sdsio.yml control file. |
| Open sdsio.yml file |
Open the active *.sdsio.yml control file in the editor. |
| Open Configuration in Workspace |
Select an *.sdsio.yml control file found in the current workspace and make it active. |
| Create Configuration |
Create an *.sdsio.yml control file from the default template, make it active, and open it in the editor. |
| Open SDS Configuration |
Select an *.sdsio.yml control file with a file picker. If it is outside the workspace, open its folder as the workspace. |
| Close Configuration |
Close the active *.sdsio.yml control file. |
| Refresh |
Refresh the SDS View. |
| Open SDS Viewer |
Open an SDS file in the interactive data viewer; prompt for a file when none is selected. |
| Open Media Viewer |
Open image, audio, or video content from an SDS file in the media viewer. |
| Check Data File |
Run the extension's bundled SDS Check on the selected SDS file. Results appear in a task terminal. |
| Export SDS to CSV |
Decode the selected SDS file using its metadata and save the data as CSV. |
| Create / Edit Metadata (YAML) |
Create a metadata template when needed and open the stream's metadata file in the editor. |
| Open Metadata Information |
Open the existing metadata file associated with an SDS stream group. |
| Delete SDS File |
Confirm and permanently delete the selected SDS file, then refresh the SDS View. |
| Quick Open SDS File |
Find SDS files in the workspace, select one with Quick Pick, and open it in the SDS Viewer. |
| Initialize SDS Workspace |
Open or create a workspace and ensure that it contains an sds_recordings directory. |
| Show Diagnostics |
Show the Arm SDS output channel. |
| Clear Diagnostics Log |
Clear the Arm SDS output channel. |
View SDS data
Open an .sds file from the SDS View. Its
*.sds.yml metadata defines how
the stream is decoded and displayed. The SDS Viewer shows values and charts, while the Media Viewer handles audio,
image, and video. Related viewers synchronize by timestamp so you can correlate algorithm input and output streams.


User flags
User flags are application-defined bits in the target's sdsFlags value. Arm SDS can set or clear these bits through
the SDSIO-Server monitor interface; the target application decides what each bit does. A single firmware image can
therefore select algorithm options, run A/B tests, or inject test conditions without rebuilding the application.
The flag-info: section of the *.sdsio.yml control file assigns meaningful labels to the flags displayed by Arm SDS. These
labels are for the user interface and do not define the target behavior. Playback steps can also set or clear flags to
apply the required application state before replaying a stream. See
User flags in the SDSIO documentation
for the related flag-info:, setflags:, and clearflags: properties.
You can rename a flag in the SDS View; the label is saved in the active *.sdsio.yml control file.

Settings
Configure Arm SDS under Extensions > Arm SDS in the VS Code Settings editor, which describes each option and its
default value. The SDSIO monitor-port setting is machine-scoped; when using a remote extension host, change it in
Remote Settings. Changes apply on the next connection.
Troubleshooting
The SDSIO-Server does not connect
- Make sure an
*.sdsio.yml control file is active and its interface matches the target firmware and connection.
- Confirm that the target application is running and its USB, Ethernet, or RTT connection is available.
- Open View > Output, select Arm SDS, and review the executable,
*.sdsio.yml control file, monitor port, and errors.
- Disconnect before changing the
*.sdsio.yml control file or connection interface, then connect again.
The preferred monitor port is unavailable
The local monitor uses TCP port 6060 by default. Before starting SDSIO, the extension checks the preferred port. If
it is occupied or access is denied, the operating system selects an available port, which is passed to both server and
client. The selected port appears in the Arm SDS output channel; the setting itself is not changed.
This check cannot detect firewall filtering, and another process could claim the port before server startup. If
problems persist, allow the SDSIO-Server through the local firewall or choose another
cmsis-sds.sdsio.monitorPort in VS Code User or Remote Settings.
- Check that
workdir and metadir are valid paths relative to the active *.sdsio.yml control file.
- Refresh the SDS View after files are created outside VS Code.
- Check that metadata uses the stream-group base name and ends in
.sds.yml or .sds.yaml.
A viewer cannot decode a file
- Verify the data type, sample rate, block layout, and media properties in the associated metadata.
- Use Check Data File to verify the recording.
- Use Open SDS Viewer for sensor data and Open Media Viewer for audio, image, or video data.
Check Data File cannot find SDS Check
SDS Check is bundled in the extension's tools directory (sds-check.exe on Windows, sds-check on Linux/macOS).
It does not require an installed SDS software pack, CMSIS_PACK_ROOT, or a separate Python installation.
If the executable is missing, reinstall the extension for your platform. When running from source, download the bundled
SDS tools as described in CONTRIBUTING.md.
Links