Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
---
title: Install Ubuntu on ChromeOS Crostini as an LXC container

description: Learn how to create and run Ubuntu containers on ChromeOS Crostini using LXC with file sharing and GUI application support on Arm-based Chromebooks.

minutes_to_complete: 60

who_is_this_for: This Learning Path is for software developers who want to install Ubuntu and other Linux distributions on their Arm-based Chromebook with ChromeOS file sharing and GUI support.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
---
title: Build Robot Simulation and Reinforcement Learning Workflows with Isaac Sim and Isaac Lab on DGX Spark

description: Learn how to build and deploy high-fidelity robotic simulations and reinforcement learning pipelines using Isaac Sim and Isaac Lab on Arm-based NVIDIA DGX Spark with Grace-Blackwell architecture.

minutes_to_complete: 90

who_is_this_for: This is an advanced topic for robotics developers, simulation engineers, and AI researchers who want to run high-fidelity robotic simulations and reinforcement learning (RL) pipelines using NVIDIA Isaac Sim and Isaac Lab on Arm-based NVIDIA DGX Spark system powered by the Grace–Blackwell (GB10) architecture.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
---
title: Unlock quantized LLM performance on Arm-based NVIDIA DGX Spark

description: Learn how to build and optimize quantized LLMs using llama.cpp on NVIDIA DGX Spark with Grace-Blackwell architecture, leveraging Armv9 SIMD acceleration.

minutes_to_complete: 60

who_is_this_for: This is an introductory topic for AI practitioners, performance engineers, and system architects who want to learn how to deploy and optimize quantized large language models (LLMs) on NVIDIA DGX Spark systems powered by the Grace-Blackwell (GB10) architecture.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
---
title: Build a RAG pipeline on Arm-based NVIDIA DGX Spark

description: Learn how to build a Retrieval-Augmented Generation (RAG) pipeline on NVIDIA DGX Spark combining Arm Grace CPU orchestration with Blackwell GPU-accelerated inference using llama.cpp.

minutes_to_complete: 60

who_is_this_for: This is an advanced topic for developers who want to build a Retrieval-Augmented Generation (RAG) pipeline on the NVIDIA DGX Spark platform. You'll learn how Arm-based Grace CPUs handle document retrieval and orchestration, while Blackwell GPUs speed up large language model inference using the open-source llama.cpp REST server. This is a great fit if you're interested in combining Arm CPU management with GPU-accelerated AI workloads.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -248,7 +248,7 @@ This demo shows the real-time transcription pipeline in action, running on an Ar

Notice the clean terminal output and low latency, demonstrating how the pipeline is optimized for local, real-time voice recognition on resource-efficient hardware.

![Real-time speech transcription demo with volume visualization alt-txt#center](fasterwhipser_demo1.gif "Real-time speech transcription with audio volume bar")
![Animated terminal session demonstrating real-time speech-to-text transcription on DGX Spark. The terminal displays timestamped transcribed text as someone speaks into a USB microphone, with a volume visualization bar at the bottom showing live audio input levels.#center](fasterwhipser_demo1.gif "Real-time speech transcription with audio volume bar")

The device runs audio capture and transcription in parallel. Use `threading.Thread` to collect audio without blocking, store audio frames in a `queue.Queue`, and in the main thread, poll for new data and run STT.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -304,7 +304,7 @@ Once both the STT and LLM services are live, you'll be able to speak naturally a

### Demo: Multi-turn voice chatbot with context memory on DGX Spark

![Animated terminal session showing real-time speech-to-text transcription and AI responses in a multi-turn customer service conversation, with a volume bar at the bottom indicating live audio input levels from a microphone alt-txt#center](fasterwhipser_vllm_demo2.gif "Full function voice-to-AI with volume bar")
![Animated terminal showing an offline voice assistant in action on DGX Spark. The session displays multi-turn customer service conversation with real-time speech transcription and AI responses. A volume bar at the bottom indicates live microphone input levels throughout the interaction.#center](fasterwhipser_vllm_demo2.gif "Full function voice-to-AI with volume bar")

This demo showcases a fully offline voice assistant that combines real-time transcription (via faster-whisper) and intelligent response generation (via vLLM). Running on an Arm-based DGX Spark system, the assistant captures live audio, transcribes it, and generates context-aware replies using a local language model, all in a seamless loop.

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
---
title: Build an offline voice chatbot with faster-whisper and vLLM on DGX Spark

description: Learn how to build an offline voice assistant combining speech-to-text via faster-whisper and text generation via vLLM on Arm-based DGX Spark for privacy-focused deployments.

minutes_to_complete: 60

who_is_this_for: This is an advanced topic for developers and ML engineers who want to build private, offline voice assistant systems on Arm-based servers such as DGX Spark.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
---
title: Run AI models with Docker Model Runner

description: Learn how to run pre-trained AI models locally using Docker Model Runner and build containerized applications integrating large language models.

minutes_to_complete: 45

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
---
title: Develop cross-platform desktop applications with Electron on Windows on Arm

description: Learn how to develop and build cross-platform desktop applications using the Electron Framework on Windows on Arm devices.

minutes_to_complete: 30

who_is_this_for: This learning path is for developers who want to learn how to develop cross-platform desktop applications using the Electron Framework on Windows on Arm (WoA).
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
---
title: Automate Windows on Arm Builds with GitHub Arm-hosted Runners

description: Learn how to automate Windows application builds on Arm architecture using GitHub Arm-hosted runners and GitHub Actions workflows.

minutes_to_complete: 20

who_is_this_for: This introductory tutorial is for software developers looking to automate Windows application builds on Arm architecture using GitHub Actions.
Expand Down
2 changes: 2 additions & 0 deletions content/learning-paths/laptops-and-desktops/hyper-v/_index.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
---
title: Create Linux virtual machines with Hyper-V

description: Learn how to create and manage Arm-based Linux virtual machines using Hyper-V on Windows on Arm devices.

minutes_to_complete: 60

who_is_this_for: This is an introductory topic for software developers who want to use Linux virtual machines with Windows on Arm devices.
Expand Down
2 changes: 2 additions & 0 deletions content/learning-paths/laptops-and-desktops/intro/_index.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
---
title: Get started with Laptops and Desktops

description: Learn where the Arm architecture is used in desktop and laptop computers and find hardware for software development on Arm platforms.

minutes_to_complete: 10

who_is_this_for: This is an introductory topic for developers working on laptops and desktops and new to the Arm architecture.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
---
title: Build and test KleidiCV on macOS

description: Learn how to build, test, and verify KleidiCV with Scalable Matrix Extensions (SME) on Apple Silicon Macs for accelerated computer vision performance.

minutes_to_complete: 30

who_is_this_for: This is an introductory topic for software developers who want to build and test KleidiCV on macOS.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
---
title: Build a Windows on Arm native application with clang

description: Learn how to configure the LLVM toolchain with Visual Studio to build native Windows on Arm applications using the open-source PuTTY project.

minutes_to_complete: 60

who_is_this_for: This is an introductory topic for software developers doing native development on Windows on Arm computers.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
---
title: Adding Memory Tagging to a Dynamic Memory Allocator

description: Learn how to apply Arm Memory Tagging Extension (MTE) to protect dynamic memory allocations and prevent common memory use errors.

minutes_to_complete: 120

who_is_this_for: This is an advanced topic for software developers who want to learn how to use the Memory Tagging Extension (MTE) to protect dynamic memory allocations.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -103,8 +103,8 @@ different tags to each allocation (and assign tag `0` to free space).

### Accessing Range Headers

The ranges have headers that are stored in tagged memory. This means we cannot simply implement a pointer that pointed to one
range and expect it to be able to read from a subsequent range.
The ranges have headers that are stored in tagged memory. This means a pointer that pointed to one
range cannot be used to read from a subsequent range.

For example, if we have done one allocation, the ranges might be:
```text
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
---
title: Install Arch Linux with the i3 window manager on a Pinebook Pro

description: Learn how to install and configure Arch Linux for Arm with the i3 window manager and Neovim editor on the Pinebook Pro laptop.

minutes_to_complete: 120

who_is_this_for: This is an advanced topic for developers who want to use the Pinebook Pro as an Arm Linux development machine.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
---
title: Fine-tune PyTorch models on DGX Spark

description: Learn how to fine-tune large language models using PyTorch and Hugging Face on NVIDIA DGX Spark to improve domain-specific accuracy.

minutes_to_complete: 60

who_is_this_for: This is an advanced topic for AI developers and ML engineers who want to fine-tune large language models using PyTorch and Hugging Face on the NVIDIA DGX Spark platform.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
---
title: Use Self-Hosted Arm64-based runners in GitHub Actions for CI/CD

description: Learn how to create a CI/CD pipeline in GitHub using self-hosted Arm64 runners to build and push Docker images to DockerHub.

minutes_to_complete: 20

who_is_this_for: This Learning Path is for software developers and IT practitioners who want to learn how to use GitHub Actions for CI/CD purposes.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ Before completing this Learning Path you can complete the Hello World [example](

You will extend that knowledge here with a comprehensive set of operations critical for real-world application deployment:

1. *Environment Set up*: There are detailed steps on preparing the self-hosted runner with the necessary tools such as .NET SDK and Docker, which are essential for building real applications, not just running simple scripts.
1. *Environment Set up*: There are detailed steps on preparing the self-hosted runner with the necessary tools such as .NET SDK and Docker, which are essential for building real applications, not running simple scripts.

2. *Complex Workflow Configuration*: This Learning Path demonstrates how to use GitHub Actions to manage complex workflows involving multiple jobs and steps, along with job dependencies, which are crucial for sophisticated CI/CD pipelines.

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
---
title: Create OpenCV applications on Windows on Arm

description: Learn how to build the OpenCV library for Windows on Arm devices and develop computer vision applications using OpenCV.

minutes_to_complete: 90

who_is_this_for: This is an advanced topic for software developers who want to build and develop applications on Windows on Arm devices using OpenCV.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
---
title: Measure application resource and power usage on Windows on Arm with FFmpeg and PowerShell

description: Learn how to measure application resource usage, benchmark video encoding tasks, and monitor CPU, memory, and power consumption on Windows on Arm using FFmpeg and PowerShell.

minutes_to_complete: 60

who_is_this_for: This is an introductory topic for developers who want to measure resource usage of applications on Windows on Arm devices using FFmpeg.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
---
title: Automate Windows on Arm virtual machine deployment with QEMU and KVM on Arm Linux

description: Learn how to automate Windows on Arm VM creation on Arm Linux systems using QEMU, KVM, and Bash scripts for development and testing.

minutes_to_complete: 90

who_is_this_for: This is an introductory topic for developers and system administrators who want to automate Windows on Arm virtual machine (VM) creation on Arm Linux systems using QEMU and KVM.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ This modular approach allows you to understand each component while maintaining

## Virtual machine creation

The creation script, `create-win11-vm.sh` is responsible for building a complete Windows 11 on Arm VM from scratch. It handles everything from directory setup to Windows installation, with each step clearly defined and independently executable.
The creation script, `create-win11-vm.sh` is responsible for building a complete Windows 11 on Arm VM from scratch. It handles everything from directory setup to Windows installation, with each step defined and independently executable.

The script handles resource detection and allocation, provides unattended Windows installation, and has a flexible command line to change default values.

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
---
title: Use Arm64EC with Windows 11 on Arm

description: Learn how to build native Arm applications and migrate x86/x64 applications to Arm using Arm64EC on Windows on Arm devices.

minutes_to_complete: 30

who_is_this_for: This is an introductory topic for software developers who want to use Arm64EC with Windows on Arm devices.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
---
title: Port Applications to Arm64 using Arm64EC

description: Learn how to port Qt-based Python desktop applications with C/C++ dependencies to Arm64 using Arm64EC on Windows on Arm.

minutes_to_complete: 90

who_is_this_for: This is an introductory topic for developers who want to learn how to port their applications to Arm64 using Arm64EC.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
---
title: Build and run a native Windows on Arm Qt application

description: Learn how to build and run Qt-based desktop applications on Windows on Arm and investigate native Arm64 performance improvements.

minutes_to_complete: 20

who_is_this_for: This is an introductory topic for software developers who want to use the native performance of the Qt framework for building desktop applications on Windows on Arm (WoA).
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
---
title: Run ASP.NET Core Web Server on Arm64

description: Learn how to build and run an ASP.NET Core 8 web server application with Web API and dependency injection services on Windows on Arm.

minutes_to_complete: 30

who_is_this_for: This is an advanced topic for developers who are interested in building a web server for a headless IoT applications.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -191,7 +191,7 @@ app.MapControllers();
app.Run();
```

This approach ensures that a single instance of the TemperatureSensor class is available to the entire application. Any web API controller requiring access to that sensor can simply use the constructor injection.
This approach ensures that a single instance of the TemperatureSensor class is available to the entire application. Any web API controller requiring access to that sensor can use the constructor injection.

You will also use the Swagger toolset. As shown above, the default ASP.NET Core Web API project template also registers two services, `EndpointsApiExplorer` and `SwaggerGen`:

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ layout: "learningpathall"
---

## Objective
In this section, you will build and run the Arm64.HeadlessIoT project you have just created.
In this section, you will build and run the Arm64.HeadlessIoT project you created.

## Building and running the application
To build and run the application proceed as follows.
Expand Down Expand Up @@ -56,7 +56,7 @@ The web server outputs an emulated sensor reading which in this case reported a

## Test the POST request

To test the POST method of the `IoTController` class, use curl, Postman, or Swagger. Swagger is the simplest to use as it's available in the project you just created.
To test the POST method of the `IoTController` class, use curl, Postman, or Swagger. Swagger is the simplest to use as it's available in the project you created.

To access Swagger, type http://localhost:<port>/swagger in the web browser's address bar. This URL takes you to the following screen:

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
---
title: Create IoT applications with Windows on Arm and AWS IoT Core

description: Learn how to create Node.js IoT applications that stream sensor data from Windows on Arm devices to AWS IoT Core using MQTT.

minutes_to_complete: 120

who_is_this_for: This learning path is for developers who want to learn how to create IoT applications using Windows on Arm and AWS IoT Core.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
---
title: Use Amazon DynamoDB for your IoT applications running on Arm64

description: Learn how to configure AWS IoT Core rules to parse MQTT messages and store IoT data in Amazon DynamoDB from Windows on Arm devices.

minutes_to_complete: 30

who_is_this_for: This is an advanced topic for developers who are interested in using Amazon DynamoDB as a database for storing data.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
---
title: Use AWS Lambda for IoT applications running on Arm64

description: Learn how to process IoT data using AWS Lambda functions triggered by AWS IoT Core messages from Windows on Arm devices.

minutes_to_complete: 45

who_is_this_for: This is an advanced topic for developers who are interested in using AWS Lambda for processing data streamed by IoT applications and devices.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,6 @@ This query ensures that only temperature readings are sent to the AWS Lambda fun

![fig8](figures/08.webp)

This means that the AWS Lambda function you have just created has an input trigger set to AWS IoT. Specifically, the AWS Lambda function is invoked whenever a new message is sent to the 'Emulators/Weather/SensorReadings' topic.
This means that the AWS Lambda function you created has an input trigger set to AWS IoT. Specifically, the AWS Lambda function is invoked whenever a new message is sent to the 'Emulators/Weather/SensorReadings' topic.

You are now ready to implement and test the Lambda function.
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
---
title: Integrate AWS Lambda with DynamoDB for IoT applications running Windows on Arm

description: Learn how to implement AWS Lambda functions that process and aggregate IoT data stored in DynamoDB tables from Windows on Arm devices.

minutes_to_complete: 45

who_is_this_for: This is an advanced topic for developers who are interested in using AWS Lambda for processing data stored in DynamoDB.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
---
title: Use Amazon S3 for your IoT applications running Windows on Arm

description: Learn how to create a static website hosted on Amazon S3 that interacts with AWS Lambda functions to display IoT data from Windows on Arm devices.

minutes_to_complete: 30

who_is_this_for: This is an advanced topic for developers who are interested in using Amazon Web Services (AWS) S3 for hosting their IoT websites.
Expand Down
2 changes: 2 additions & 0 deletions content/learning-paths/laptops-and-desktops/win_cef/_index.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
---
title: Develop desktop applications with Chromium Embedded Framework on Windows on Arm

description: Learn how to create and build Chromium Embedded Framework desktop applications using CMake and web technologies on Windows on Arm.

minutes_to_complete: 30

who_is_this_for: This learning path is for developers who want to learn how to use web technologies for developing Desktop apps on Windows on Arm (WoA).
Expand Down
Loading
Loading