System Monitoring

Track your AI HAT system performance with real-time NPU metrics, including utilization, temperature, and memory usage. Professional edge AI monitoring ensures your Raspberry Pi 5 deployment remains efficient and ready for stable edge AI operation.

System Monitoring

Monitor the AI HAT+ on Raspberry Pi 5

From real-time NPU utilisation down to kernel-level driver diagnostics — the canonical reference for every monitoring command on Sixfab AI HAT+. Use it as a field reference while running inference or troubleshooting.

dxtop dxrt-cli lspci journalctl DEEPX DX-M1M
AI HAT+ · Operations · System Monitoring · Updated 2026-05-09
How do I monitor the Sixfab AI HAT+ on Raspberry Pi 5?

Sixfab AI HAT+ exposes monitoring at four stack layers. Use dxtop for live NPU utilisation, dxrt-cli -s for a full hardware snapshot, lspci to confirm PCIe enumeration, and journalctl -xeu dxrt.service for runtime logs. Each command targets one layer of the DEEPX software stack on Raspberry Pi 5.

Software stack overview

AI HAT+ on Raspberry Pi 5 runs as a four-layer stack. Each layer below has its own monitoring command. When something goes wrong, this map tells you which layer to inspect first.

4
Your application
Python or C++ code calling the DEEPX runtime API, OpenCV, demos, or your own pipeline
Python / C++ journalctl
3
DEEPX Runtime (DX-RT)
Model loading, inference scheduling, memory management, async execution on the NPU
sixfab-dx dxtop / dxrt-cli
2
DEEPX kernel driver
Linux kernel module — exposes the NPU as a PCIe device. Compiled against the running kernel at install time.
sixfab-dx lsmod / dmesg
1
NPU hardware + firmware
DEEPX DX-M1M or DX-M1ML on the AI HAT+. Firmware on onboard flash, loaded at driver startup.
onboard flash lspci

Quick reference

Every command in this table maps to one layer of the stack above. The "Layer" column tells you which part of the system you're inspecting.

Command Layer What it shows When to use
dxtop 3 · Runtime Real-time NPU utilisation, temperature, voltage, clock per core During active inference to watch performance
dxrt-cli -s 3 · Runtime Full hardware status: device, versions, firmware, memory, PCIe link After installation or to verify the full stack is healthy
lspci 1 · Hardware PCIe device enumeration, confirms NPU is detected First check if something isn't working
lsmod | grep -i dx 2 · Kernel Whether the DEEPX kernel module is loaded If dxrt-cli fails to find a device
dmesg | grep -i dx 2 · Kernel Kernel messages from the DEEPX driver during init Diagnosing driver init errors or PCIe link failures
journalctl -xeu dxrt.service 4 · Application Full systemd service log for the runtime daemon When the runtime starts but inference fails

Installed CLI tools

The sixfab-dx package installs three command-line tools alongside the kernel driver and DEEPX runtime. Each one targets a different monitoring or diagnostic job.

dxrt-cli

Hardware status, firmware version, and firmware update. First command to run when diagnosing any issue.

dxtop

Real-time NPU monitor — per-core utilisation, temperature, voltage, and clock. Like htop for the NPU.

run_model

Headless model runner. Test any compiled .dxnn file without writing application code.

bash Quick reference
# 1. Full hardware status
dxrt-cli -s

# 2. Real-time NPU utilisation (q to quit)
dxtop

# 3. Test a compiled model
run_model --model_path <model_path>.dxnn

# 4. Update NPU firmware (only when a new fw.bin is released)
dxrt-cli -u <firmware_path>.bin
NPU-specific metrics

dxtop and dxrt-cli are the only tools that surface NPU-internal telemetry — per-core utilisation, voltage, clock, and on-die temperature. Standard Linux tools (top, htop, sensors) cannot see inside the DEEPX silicon. For NPU-aware monitoring in a production fleet, scrape dxrt-cli -s output or the dxtop machine-readable feed.

dxtop: real-time NPU monitor

dxtop is a live terminal dashboard for the NPU — like htop but for the AI accelerator. It shows per-core utilisation, memory, voltage, clock speed, and temperature, updating continuously.

bash
dxtop

Press q to quit, n / p to page through devices, h for help.

Output at idle

dxtop · idle state
DX-RT: v3.2.0   NPU Device driver: v2.1.0   DX-TOP: v1.0.1

Device :0  Variant: M1  PCIe Bus Number: 01:00:00  Firmware: v2.5.0
NPU Memory: [3.98 MiB / 3.82 GiB (0.05%)]
  Core :0  Util:  0.0%  Temp: 49 °C  Voltage: 750 mV  Clock: 1000 MHz
  Core :1  Util:  0.0%  Temp: 48 °C  Voltage: 750 mV  Clock: 1000 MHz
  Core :2  Util:  0.0%  Temp: 49 °C  Voltage: 750 mV  Clock: 1000 MHz

Output during active inference

dxtop · inference running (YOLOv8n) Live
Device :0  Variant: M1  PCIe Bus Number: 01:00:00  Firmware: v2.5.0
NPU Memory: [1.20 GiB / 3.82 GiB (31.4%)]
  Core :0  Util: 87.0%  Temp: 52 °C  Voltage: 750 mV  Clock: 1000 MHz
  Core :1  Util: 92.0%  Temp: 51 °C  Voltage: 750 mV  Clock: 1000 MHz
  Core :2  Util: 89.0%  Temp: 52 °C  Voltage: 750 mV  Clock: 1000 MHz

Typical values at a glance

Idle temp
46–49 °C
No inference running
Core voltage
750 mV
Idle and inference
Core clock
1000 MHz
Normal operating speed
Idle power (HAT+)
0.5–1 W
Driver loaded, no model
Max observed temp
85 °C
100 % load, heatsink, 25 °C ambient
Temperatures above 65–70 °C during sustained inference?

Add a heatsink or connect a 3.3 V micro fan to the AI HAT+ JST fan connector. Without active cooling the chip can reach 85 °C under full load.

dxrt-cli: hardware status & firmware

The dxrt-cli tool is the primary interface for querying hardware state and managing NPU firmware. Use it any time you need a full snapshot of the stack.

dxrt-cli -s Full hardware and firmware status report

Displays device type, runtime version, driver versions, firmware version, memory spec, board revision, PCIe link speed, and per-core voltage / clock / temperature. Use this as the first diagnostic command after installation or when something behaves unexpectedly.

bash
dxrt-cli -s
Expected output OK
DXRT v3.2.0
 * Device 0: M1, Accelerator type
 * RT Driver version  : v2.1.0
 * PCIe Driver version: v2.0.1
 * FW version         : v2.5.0
 * Memory : LPDDR5x 6000 Mbps, 3.92 GiB
 * Board  : M.2, Rev 1.0
 * PCIe   : Gen3 X1 [01:00:00]
NPU 0: voltage 750 mV, clock 1000 MHz, temperature 46 °C
NPU 1: voltage 750 mV, clock 1000 MHz, temperature 46 °C
NPU 2: voltage 750 mV, clock 1000 MHz, temperature 46 °C
dxrt-cli -u <fw.bin> Update NPU firmware

Flashes a firmware binary to the onboard NPU flash. Download the firmware file from deepx.ai first. Only needed when a standalone firmware update is released outside a full runtime upgrade.

bash
dxrt-cli -u <firmware_path>.bin

System diagnostic commands

These standard Linux utilities complement the DEEPX-specific tools. Use them to verify hardware detection and kernel-level driver state when something higher up the stack isn't responding.

lspci Verify NPU is detected on PCIe bus

Confirms the Raspberry Pi 5 has enumerated the AI HAT+ NPU over PCIe. If this line is missing from the output, the hardware connection has a problem — check FFC cable latches and confirm the HAT+ is seated correctly.

Expected line in output
0001:01:00.0  Processing accelerators: DEEPX Co., Ltd. DX_M1A
Nothing listed?

If lspci shows no DEEPX device, check the 16-pin FFC cable connections on both the AI HAT+ and Raspberry Pi 5 ends. A loose latch is the most common cause.

lsmod | grep -i dx Confirm kernel driver is loaded

The DEEPX kernel module must be loaded for the runtime to communicate with the NPU. Empty output means the module is not loaded — reboot or reinstall sixfab-dx.

bash
lsmod | grep -i dx
dmesg | grep -i dx View kernel messages from the DEEPX driver

Shows kernel ring buffer messages from driver initialisation. Look for PCIe link errors, firmware load failures, or device enumeration issues here. Use sudo dmesg if output is empty without elevated permissions.

bash
dmesg | grep -i dx
journalctl -xeu dxrt.service View runtime service logs

Full systemd log for the DEEPX runtime daemon. Use when the runtime starts but inference jobs fail or behave unexpectedly. Add -f to follow the log live, or --since "10 minutes ago" to limit output.

bash
journalctl -xeu dxrt.service

# Follow live
journalctl -xeuf dxrt.service

# Only last 10 minutes
journalctl -xeu dxrt.service --since "10 minutes ago"
Permissions

Some dmesg and journalctl commands may require sudo on restricted systems. If you see empty output or a permission error, prefix the command with sudo.