Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
115 commits
Select commit Hold shift + click to select a range
90202b9
first commit
fidel-makatia Jul 11, 2025
fe05ca2
second commit
fidel-makatia Jul 20, 2025
1505523
Merge remote-tracking branch 'upstream/main'
fidel-makatia Jul 20, 2025
ef68ec5
Add Privacy-First LLM Smart Home System learning path for Raspberry Pi 5
fidel-makatia Jul 20, 2025
c2953f1
Deploy Apache Spark on Google Axion C4A virtual machine
odidev Jul 23, 2025
119e059
Initial version
Jul 31, 2025
5775d95
Rewrote CCA and RME section for clarity and SEO.
madeline-underwood Aug 12, 2025
f9bbf17
Updates
madeline-underwood Aug 12, 2025
ae878b4
Merge branch 'ArmDeveloperEcosystem:main' into CCA_DA
madeline-underwood Aug 12, 2025
317560d
add schema required "offers" and "hasCourseInstance" fields
JoeStech Aug 12, 2025
25d3be9
Merge pull request #2224 from JoeStech/json-ld-additions
pareenaverma Aug 13, 2025
073a4ba
Merge branch 'ArmDeveloperEcosystem:main' into CCA_DA
madeline-underwood Aug 13, 2025
e8a2420
Updated index file
madeline-underwood Aug 13, 2025
9f46022
Updates
madeline-underwood Aug 13, 2025
5df2148
Run Spark applications on the Microsoft Azure Cobalt 100 processors
odidev Jul 22, 2025
b96db01
Merge pull request #2151 from fidel-makatia/raspberry-pi-smart-home
pareenaverma Aug 13, 2025
5a8f489
add tune-network-workloads-on-bare-metal
Aug 14, 2025
f7c35eb
Merge branch 'main' of https://github.com/iJobsYuYing/arm-learning-paths
Aug 14, 2025
889903d
Updates
madeline-underwood Aug 14, 2025
9b1bcd8
Updates
madeline-underwood Aug 14, 2025
adfbf66
Update _index.md
pareenaverma Aug 14, 2025
b253985
Merge pull request #2177 from odidev/spark_GCP
pareenaverma Aug 14, 2025
135f19e
rewrite to put steps in the right order and add additional steps
JoeStech Aug 14, 2025
d59ddb2
Tech review of Spark on GCP
pareenaverma Aug 14, 2025
0984ee7
Merge pull request #2227 from pareenaverma/content_review
pareenaverma Aug 14, 2025
dbc2ff4
Tech review
pareenaverma Aug 14, 2025
e208170
Merge pull request #2228 from pareenaverma/content_review
pareenaverma Aug 14, 2025
ad7f397
Merge pull request #2226 from JoeStech/model-edits-distributed-inference
pareenaverma Aug 14, 2025
f73e5f2
specifying rpc ports is necessary, and adding an export statement mak…
JoeStech Aug 14, 2025
b441a78
add a note about how long it takes to load tensors on worker nodes
JoeStech Aug 15, 2025
4348ceb
set up rpc caching instead of copying gguf files
JoeStech Aug 15, 2025
0dc2d86
Merge pull request #2229 from JoeStech/model-edits-distributed-inference
pareenaverma Aug 15, 2025
4d704b7
Technical review of RPi5 smart home LP
annietllnd Aug 15, 2025
8834419
Restructuring, rewriting.
madeline-underwood Aug 15, 2025
b1af109
Updating LOs
madeline-underwood Aug 15, 2025
3abb349
Fixing indentation
madeline-underwood Aug 15, 2025
df553ac
Fixing trailing whitespace in input files
madeline-underwood Aug 15, 2025
f5d289a
updates
madeline-underwood Aug 15, 2025
a8f166f
Adjustments
madeline-underwood Aug 15, 2025
0e5efcd
Merge pull request #2230 from annietllnd/raspberry-pi-smart-home
pareenaverma Aug 16, 2025
7340247
Merge pull request #2231 from madeline-underwood/CCA_DA
pareenaverma Aug 16, 2025
1c4af8b
Updated index
madeline-underwood Aug 16, 2025
5591966
updated
madeline-underwood Aug 16, 2025
9fdd784
automatic update of stats files
Aug 18, 2025
f2beb0e
Merge branch 'ArmDeveloperEcosystem:main' into distrib_int
madeline-underwood Aug 18, 2025
9b62c04
- Applied Microsoft Learn style (sentence case, active voice, concise…
madeline-underwood Aug 18, 2025
61aa16c
Merge branch 'distrib_int' of https://github.com/madeline-underwood/a…
madeline-underwood Aug 18, 2025
2396b66
Content development review
madeline-underwood Aug 18, 2025
e41047f
Update benchmarking.md
pareenaverma Aug 18, 2025
32460b6
Merge pull request #2235 from pareenaverma/content_review
pareenaverma Aug 18, 2025
678f132
Merge pull request #2234 from madeline-underwood/distrib_int
pareenaverma Aug 18, 2025
eaa1272
Editorial review
madeline-underwood Aug 19, 2025
f9ae13b
SEO optimization
madeline-underwood Aug 19, 2025
ffcc90a
Fix
madeline-underwood Aug 19, 2025
6363543
Final tweaks
madeline-underwood Aug 19, 2025
8e87f16
Fixing overview headings
madeline-underwood Aug 19, 2025
2441f72
Merge pull request #2191 from odidev/spark_LP
pareenaverma Aug 19, 2025
f834d8d
Tech review of Azure Spark LP
pareenaverma Aug 19, 2025
5cb308b
Merge pull request #2240 from pareenaverma/content_review
pareenaverma Aug 19, 2025
599a160
Merge pull request #2237 from madeline-underwood/LXD-containers-on-Ch…
pareenaverma Aug 19, 2025
0f8ca2d
Merge pull request #2197 from juliensimon/arcee-foundation-model-on-gcp
pareenaverma Aug 19, 2025
aa7f7d6
Tech review of arcee on gcp
pareenaverma Aug 19, 2025
c4ae2b4
Merge pull request #2241 from pareenaverma/content_review
pareenaverma Aug 19, 2025
2139a5c
First-pass editorial
madeline-underwood Aug 19, 2025
b22b74c
SEO optimization
madeline-underwood Aug 19, 2025
4ee431f
Optimized alt text for accessibility & SEO
madeline-underwood Aug 19, 2025
0ef4c16
sized down the model to 70B and the instances to 4xl for ease of use
JoeStech Aug 19, 2025
f30aee8
resolve conflicts with upstream
JoeStech Aug 19, 2025
66a77f0
Updated FVP install guide for 11.29
RonanSynnottArm Aug 20, 2025
5e1c544
Remove redundant IG file
annietllnd Aug 20, 2025
bdac800
Editorial
madeline-underwood Aug 20, 2025
05ef7fc
SEO optimizations
madeline-underwood Aug 20, 2025
941ef70
Merge pull request #2243 from JoeStech/model-edits-distributed-inference
pareenaverma Aug 20, 2025
8c0f55b
Merge pull request #2245 from annietllnd/raspberry-pi-smart-home
pareenaverma Aug 20, 2025
72ae8c7
SEO optimizations
madeline-underwood Aug 20, 2025
c40e102
Final fixes
madeline-underwood Aug 20, 2025
a6f07b0
Adding diagram title and alt-text, and final checks.
madeline-underwood Aug 20, 2025
aa6cc28
Merge pull request #2242 from madeline-underwood/privacy-first
pareenaverma Aug 20, 2025
2f74170
Update contributors.csv
pareenaverma Aug 20, 2025
b1080b7
Update _index.md
pareenaverma Aug 20, 2025
5488ad2
Update baseline.md
pareenaverma Aug 20, 2025
88efa4b
Update baseline.md
pareenaverma Aug 20, 2025
bf81f77
Merge branch 'main' into apache_spark
pareenaverma Aug 20, 2025
0e17670
Merge pull request #2246 from madeline-underwood/apache_spark
pareenaverma Aug 20, 2025
386c5ed
Merge pull request #2244 from RonanSynnottArm/fvp
pareenaverma Aug 20, 2025
80e3918
Update _index.md
pareenaverma Aug 20, 2025
a866b5e
Merge pull request #2225 from iJobsYuYing/main
pareenaverma Aug 20, 2025
85eac49
Editorial review
madeline-underwood Aug 20, 2025
50ebadf
Update headings
madeline-underwood Aug 20, 2025
d2b2bd3
fixed YAML issue
madeline-underwood Aug 20, 2025
d12e437
Final tweaks, including labelling diagram.
madeline-underwood Aug 20, 2025
a76bd97
Starting content dev.
madeline-underwood Aug 20, 2025
b36a68b
Content dev
madeline-underwood Aug 20, 2025
dc6c7c4
Content dev
madeline-underwood Aug 20, 2025
d1b267b
Updates
madeline-underwood Aug 20, 2025
afdb537
Update 00_overview.md
madeline-underwood Aug 21, 2025
ed57a2c
Update to ALP "Build and run an Android chat app"
Aug 21, 2025
712b641
Update 07_evaluating_the_quantized_models.md
pareenaverma Aug 21, 2025
4324ba0
Update 08_conclusion.md
pareenaverma Aug 21, 2025
f4cf235
Merge pull request #2248 from madeline-underwood/arcee_axion
pareenaverma Aug 21, 2025
4e3ac4a
Update baseline.md
pareenaverma Aug 21, 2025
ed6b8c4
Update benchmarking.md
pareenaverma Aug 21, 2025
3d8e5af
Update deploy.md
pareenaverma Aug 21, 2025
5f8fee9
Merge pull request #2247 from madeline-underwood/spark_on_azure
pareenaverma Aug 21, 2025
2c65e94
Update 2-build-onnxruntime.md
pareenaverma Aug 21, 2025
73de356
Merge pull request #2250 from amalaugustinejose/build-android-chat-ap…
pareenaverma Aug 21, 2025
4d21e8c
Editorial
madeline-underwood Aug 21, 2025
94b66ae
Update ExecuTorch with RPi 5 Learning Path
annietllnd Aug 21, 2025
5535b79
Merge pull request #2252 from annietllnd/fix
pareenaverma Aug 21, 2025
818e93e
Update _index.md
pareenaverma Aug 21, 2025
88e066f
Update how-to-1.md
pareenaverma Aug 21, 2025
d128114
Update how-to-2.md
pareenaverma Aug 21, 2025
fee356f
Merge pull request #2251 from madeline-underwood/distrib_int_update
pareenaverma Aug 21, 2025
af58180
Spellcheck fixes
pareenaverma Aug 22, 2025
e5c3ba3
Merge pull request #2253 from pareenaverma/content_review
pareenaverma Aug 22, 2025
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
79 changes: 78 additions & 1 deletion .wordlist.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4590,4 +4590,81 @@ xdp
xhci
JFR
conv
servlet
servlet
tv
gpiozero
lgpio
TinyLlama
Superscalar
automations
gemma
tinyllama
pinout
Makatia
Omusilibwa
EdgeAI
Raspi
abyz
fidel
javascript
makatia
uk
STDDEV
Stdev
BytesToBytesMap
HashMap
LongToUnsafeRowMap
Stdev
UnsafeRow
UnsafeRowhash
agg
arrayEqual
codegen
hashmap
hugeMethodLimit
ints
kurtosis
stddev
wholestage
RDD
TEEs
paravirtualization
WholeStageCodegen
Wholestage
zshrc
hadoop
CBL
DataFrame
exitCode
Gerganov's
Radoslav
rgerganov
NSS
spatio
upsampling
UE
VGF
NNE
RDG
Configurator
RHI
RHIs
NNERuntimeRDGMLExtensionsForVulkan
Unreal's
ORT
MLEmulationLayerForVulkan
RenderDoc's
vgf
dataflow
Sandboxed
sandboxed
Termina
LXC
Crostini
ChromeOS's
crosh
Sommelier
chromeos
linuxcontainers


3 changes: 2 additions & 1 deletion assets/contributors.csv
Original file line number Diff line number Diff line change
Expand Up @@ -94,4 +94,5 @@ Peter Harris,Arm,,,,
Chenying Kuo,Adlink,evshary,evshary,,
William Liang,,,wyliang,,
Waheed Brown,Arm,https://github.com/armwaheed,https://www.linkedin.com/in/waheedbrown/,,
Aryan Bhusari,Arm,,https://www.linkedin.com/in/aryanbhusari,,
Aryan Bhusari,Arm,,https://www.linkedin.com/in/aryanbhusari,,
Fidel Makatia Omusilibwa,,,,,
18 changes: 9 additions & 9 deletions content/install-guides/fm_fvp/fvp.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,15 +11,20 @@ multi_install: false # Set to true if first page of multi-page artic
multitool_install_part: true # Set to true if a sub-page of a multi-page article, else false
layout: installtoolsall # DO NOT MODIFY. Always true for tool install articles
---
Arm Fixed Virtual Platforms (FVPs) are provided as a library of ready to use platforms.

{{% notice Arm Development Tools%}}
An appropriate subset of the FVP library is installed with [Arm Development Studio](/install-guides/armds) and [Keil MDK](/install-guides/mdk) Professional Edition.
{{% notice Note %}}
Arm Fixed Virtual Platforms (FVPs) were available as a library of ready to use platforms (and as a component of Arm Development Studio) up until version 11.28.

From 11.29 onwards the FVPs are provided solely as part of Arm Development Studio.

This install guide is only applicable to the legacy FVP library.

See the [Arm Development Studio Install Guide](/install-guides/armds) and the [Introduction to FVPs](https://developer.arm.com/documentation/110379/1129/Introduction-to-FVPs) documentation.
{{% /notice %}}

## Download installer packages

You can download the FVP library installer from the [Product Download Hub](https://developer.arm.com/downloads/view/FM000A).
You can download the FVP library installer from the [Product Download Hub](https://developer.arm.com/downloads/view/FMFVP).

Linux (AArch64 and x86) and Windows (x86 only) hosts are supported.

Expand Down Expand Up @@ -47,11 +52,6 @@ For full list of available options, use:

FVPs are license managed. License setup instructions are available in the [Arm Licensing install guide](/install-guides/license).

{{% notice Arm Development Tools%}}
The FVPs provided with Arm Development Studio and/or Keil MDK Professional Edition use the license of that product, not that of the FVP library.
{{% /notice %}}


## Verify installation

To verify everything is working OK, navigate to the install directory, and launch any of the supplied FVP executables. No additional command options are needed.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ Run the commands below to set up the ExecuTorch internal dependencies:

```bash
git submodule sync
git submodule update --init
git submodule update --init --recursive
./install_executorch.sh
```

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
---
title: Run LLMs locally on Raspberry Pi 5 for Edge AI

weight: 2

### FIXED, DO NOT MODIFY
layout: learningpathall
---

## Overview

This Learning Path walks you through deploying an efficient large language model (LLM) locally on the Raspberry Pi 5, powered by an Arm Cortex-A76 CPU. This setup enables you to control your smart home using natural language without relying on cloud services. With rapid advances in generative AI and the power of Arm Cortex-A processors, you can now run advanced language models directly in your home on the Raspberry Pi 5.

You will create a fully local, privacy-first smart home system that leverages the strengths of Arm Cortex-A architecture. The system can achieve 15+ tokens per second inference speeds using optimized models like TinyLlama and Qwen, while maintaining the energy efficiency that makes Arm processors well suited for always-on applications.

## Why Arm Cortex-A76 makes Raspberry Pi 5 ideal for Edge AI

The Raspberry Pi 5's Arm Cortex-A76 processor can manage high-performance computing tasks like AI inference. Key architectural features include:

- **Superscalar architecture**: Executes multiple instructions in parallel, improving throughput for compute-heavy tasks
- **128-bit NEON SIMD support**: Accelerates matrix and vector operations, common in the inner loops of language model inference
- **Multi-level cache hierarchy**: Reduces memory latency and improves data access efficiency during runtime
- **Thermal efficiency**: Enables sustained performance without active cooling, making it ideal for compact or always-on smart home setups

These characteristics make the Raspberry Pi 5 well suited for workloads like smart home assistants, where responsiveness, efficiency, and local processing are important. Running LLMs locally on Arm-based devices brings several practical benefits. Privacy is preserved, since conversations and routines never leave the device. With optimized inference, the system can offer responsiveness under 100 ms, even on resource-constrained hardware. It remains fully functional in offline scenarios, continuing to operate when internet access is unavailable. Developers also gain flexibility to customize models and automations. Additionally, software updates and an active ecosystem continue to improve performance over time.

## Leverage the Arm ecosystem for Raspberry Pi Edge AI

For the stack in this setup, Raspberry Pi 5 benefits from the extensive developer ecosystem:

- Optimized compilers including GCC and Clang with Arm-specific enhancements
- Native libraries such as gpiozero and lgpio are optimized for Raspberry Pi
- Community support from open-source projects where developers contribute Arm-optimized code
- Backward compatibility in Arm architecture reduces friction when updating kernels or deploying across platforms
- The same architecture powers smartphones, embedded controllers, edge devices, and cloud infrastructure—enabling consistent development practices across domains

## Performance benchmarks on Raspberry Pi 5

The table below shows inference performance for several quantized models running on a Raspberry Pi 5. Measurements reflect single-threaded CPU inference with typical prompt lengths and temperature settings suitable for command-based interaction.

| Model | Tokens/sec | Avg latency (ms) |
| ------------------- | ---------- | ---------------- |
| qwen:0.5b | 17.0 | 8,217 |
| tinyllama:1.1b | 12.3 | 9,429 |
| deepseek-coder:1.3b | 7.3 | 22,503 |
| gemma2:2b | 4.1 | 23,758 |
| deepseek-r1:7b | 1.6 | 64,797 |

## LLM benchmark insights on Raspberry Pi 5

- Qwen 0.5B and TinyLlama 1.1B deliver fast token generation and low average latency, making them suitable for real-time interactions such as voice-controlled smart home commands
- DeepSeek-Coder 1.3B and Gemma 2B trade some speed for improved language understanding, which can be useful for complex tasks or context-aware prompts
- DeepSeek-R1 7B offers advanced reasoning capabilities with acceptable latency, which may be viable for offline summarization, planning, or low-frequency tasks

## Supported Arm-powered devices

This Learning Path focuses on the Raspberry Pi 5, but you can adapt the concepts and code to other Arm-powered devices.

## Recommended platforms

| Platform | CPU | RAM | GPIO support | Model size suitability |
| ------------------- | -------------------------------- | -------------- | ------------------------------ | --------------------------- |
| **Raspberry Pi 5** | Arm Cortex-A76 quad-core @ 2.4GHz | Up to 16GB | Native `lgpio` (high-performance) | Large models (8–16GB) |
| **Raspberry Pi 4** | Arm Cortex-A72 quad-core @ 1.8GHz | Up to 8GB | Compatible with `gpiozero` | Small to mid-size models |
| **Other Arm devices** | Arm Cortex-A | 4GB min (8GB+ recommended) | Requires physical GPIO pins | Varies by RAM |

Additionally, the platform must meet the following requirements:

- GPIO pins available for hardware control
- Python 3.8 or newer
- Ability to run [Ollama](https://ollama.com/)

In the next section, you’ll set up the software dependencies needed to start building your privacy-first smart home system on Raspberry Pi 5.
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
---
title: Set up software dependencies on Raspberry Pi 5 for Ollama and LLMs
weight: 3

### FIXED, DO NOT MODIFY
layout: learningpathall
---

## Overview

In this section, you’ll prepare your Raspberry Pi 5 by installing Python, required libraries, and Ollama, so you can run large language models (LLMs) locally.

{{% notice Note %}}
This Learning Path assumes you have set up your Raspberry Pi with Raspberry Pi OS and network connectivity. For Raspberry Pi 5 setup support, see [Raspberry Pi Getting Started](https://www.raspberrypi.com/documentation/).
{{% /notice %}}

## Connect to your Raspberry Pi 5

### Option 1: Use a display

The easiest way to work on your Raspberry Pi is by connecting it to an external display through one of the micro‑HDMI ports. This setup also requires a keyboard and mouse.

### Option 2: Use SSH

You can also use SSH to access the terminal. To use this approach, you need to know the IP address of your device. Ensure your Raspberry Pi 5 is on the same network as your host computer. Access your device remotely via SSH using the terminal or any SSH client.

Replace `<user>` with your Pi's username (typically `pi`), and `<pi-ip>` with your Raspberry Pi 5's IP address.

```bash
ssh <user>@<pi-ip>
```

## Install Python and system dependencies

Create a directory called `smart-home` in your home directory and navigate into it:

```bash
mkdir -p "$HOME/smart-home"
cd "$HOME/smart-home"
```

The Raspberry Pi 5 includes Python 3 preinstalled, but you need additional packages:

```bash
sudo apt update && sudo apt upgrade -y
sudo apt install -y python3 python3-pip python3-venv git curl build-essential gcc python3-lgpio
```

## Configure a virtual environment

Create and activate a Python virtual environment to isolate project dependencies:

```bash
python3 -m venv venv
source venv/bin/activate
```

Install the required libraries:

```bash
pip install ollama gpiozero lgpio psutil httpx orjson numpy fastapi uvicorn uvloop
```

## Install Ollama

Install Ollama using the official installation script for Linux:

```bash
curl -fsSL https://ollama.com/install.sh | sh
```

Verify the installation:

```bash
ollama --version
```

If installation was successful, the output should be similar to:

```output
ollama version is 0.11.4
```

## Run a test LLM with Ollama on Raspberry Pi 5

Ollama supports various models. This guide uses `deepseek-r1:7b` as an example, but you can also use `tinyllama:1.1b`, `qwen:0.5b`, `gemma2:2b`, or `deepseek-coder:1.3b`.

The `run` command sets up the model automatically. You will see download progress in the terminal, followed by an interactive prompt when ready.

```bash
ollama run deepseek-r1:7b
```

{{% notice Troubleshooting %}}
If you run into issues with the model download, try the following:

- Confirm internet access and sufficient storage space on your microSD card.
- Try smaller models like `qwen:0.5b` or `tinyllama:1.1b` if you encounter memory issues. 16 GB of RAM is sufficient for small to medium models; very large models may require more memory or run slower.
- Clear storage or connect to a more stable network if errors occur.
{{% /notice %}}

With the model set up through Ollama, move on to the next section to start configuring the hardware.
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
---
title: Test Raspberry Pi 5 GPIO pins for smart home devices
weight: 4

### FIXED, DO NOT MODIFY
layout: learningpathall
---

## Overview

The next step is to test the GPIO functionality. In this section, you configure an LED light to simulate a smart home device.

## Verify GPIO setup on Raspberry Pi 5

Gather your electronic components. Connect the anode (long leg) of an LED in series with a 220Ω resistor to GPIO 17 (physical pin 11). Connect the cathode (short leg) to a ground (GND) pin.

See the image below for the full setup:

![Raspberry Pi connected to a breadboard with a green LED and jumper wires alt-text#center](pin_layout.jpg "Raspberry Pi connected to a breadboard with a green LED and jumper wires")

Create a Python script named `testgpio.py`:

```bash
cd $HOME/smart-home
vim testgpio.py
```

Add the following code to the file:

```python
#!/usr/bin/env python3
import time
from gpiozero import Device, LED
from gpiozero.pins.lgpio import LGPIOFactory

# Set lgpio backend for Raspberry Pi 5
Device.pin_factory = LGPIOFactory()

# Set up GPIO pin 17
pin1 = LED(17)

try:
while True:
pin1.toggle() # Switch pin 17 state
time.sleep(2) # Wait 2 seconds
except KeyboardInterrupt: # Ctrl+C pressed
pin1.close() # Clean up pin 17
```

Run the script:

```bash
python testgpio.py
```

The LED should blink every two seconds. If you observe this behavior, your GPIO setup works correctly.

{{% notice Troubleshooting %}}
If you run into issues with the hardware setup, check the following:

- Fix missing dependencies with:
```bash
sudo apt-get install -f
```
- If you encounter GPIO permission issues, run Python scripts with `sudo` or add your user to the `gpio` group. Don’t forget to log out for the changes to take effect:
```bash
sudo usermod -a -G gpio $USER
```
- Double-check wiring and pin numbers using the Raspberry Pi 5 pinout diagram
- Ensure proper LED and resistor connections
- Verify GPIO enablement in `raspi-config` if needed
- Use a high-quality power supply
{{% /notice %}}

With GPIO pins working, you can now move on to the next section to interact with devices using language models and the user interface.
Loading
Loading