Status: 🔴 UNRESOLVED - Community help needed
Last Updated: January 29, 2026
Hardware: Radxa Dragon Q6A (QCS6490, 8GB RAM)
Goal: Run AI inference (Llama 3.2 1B) on the Hexagon NPU (12 TOPS)
- Objective
- Hardware Overview
- The Problem
- Troubleshooting Journey
- Root Cause Analysis
- What Works
- What Doesn't Work
- Open Issues
- Potential Solutions
- Resources
- How to Contribute
Run the official Radxa Llama 3.2 1B demo on the Dragon Q6A's NPU following the documentation:
Expected outcome: Generate text using the Hexagon NPU with 12 TOPS of AI compute power.
Actual outcome: [ERROR] "Failed to create device: 14001" - Device Creation Failure
| Component | Specification |
|---|---|
| Board | Radxa Dragon Q6A |
| SoC | Qualcomm QCS6490 |
| CPU | Octa-core Kryo 670 (1x Prime @ 2.7GHz, 3x Gold @ 2.4GHz, 4x Silver @ 1.9GHz) |
| GPU | Adreno 643 (Vulkan 1.3, OpenCL 2.2, OpenGL ES 3.2) |
| NPU | Hexagon DSP + Tensor Accelerator, 12 TOPS |
| RAM | 8GB LPDDR5 |
| Storage | MicroSD card (119GB) |
Purchase: AliExpress (~$140 for 8GB variant)
When running the Qualcomm Genie text-to-text inference tool:
./genie-t2t-run -c htp-model-config-llama32-1b-gqa.json -p '<prompt>'Output:
Using libGenie.so version 1.13.0
[ERROR] "Failed to create device: 14001"
[ERROR] "Device Creation failure"
Failure to initialize model.
Failed to create the dialog.
$ sudo dmesg | grep -i fastrpc
qcom,fastrpc a300000.remoteproc:glink-edge.fastrpcglink-apps-dsp.-1.-1: no reserved DMA memory for FASTRPC
qcom,fastrpc 3700000.remoteproc:glink-edge.fastrpcglink-apps-dsp.-1.-1: no reserved DMA memory for FASTRPCTranslation: The kernel's device tree is missing DMA memory reservations required for FastRPC communication between the CPU and the Hexagon DSP/NPU.
Image: radxa-dragon-q6a_noble_kde_t4.output_512.img.xz
Kernel: 6.18.2-1-qcom
Source: https://github.com/radxa-build/radxa-dragon-q6a/releases
- Downloaded and flashed T4 image to SD card
- Installed required packages:
sudo apt update sudo apt install -y task-qualcomm embloader sdboot-is-embloader
- Downloaded Llama 3.2 1B model:
pip3 install modelscope --break-system-packages modelscope download --model radxa/Llama3.2-1B-1024-qairt-v68 --local_dir ~/llama-test - Ran inference: Got Error 14001
- FastRPC devices exist:
/dev/fastrpc-cdsp,/dev/fastrpc-adsp,/dev/fastrpc-cdsp-secure - Services running:
qrtr-ns,pd-mapper - Kernel reports DMA memory error
Engaged Google Gemini 3 Pro for troubleshooting assistance. Multiple approaches were attempted:
sudo apt install -y fastrpc libcdsprpc1 libadsprpc1 libpdmapper1Result: Packages not found in repositories.
sudo apt install -y qrtr-tools protection-domain-mapperResult: Services installed and running, but Error 14001 persists.
sudo cp ~/llama-test/*.so /usr/lib/rfsa/cdsp/default/
sudo cp ~/llama-test/*.so /usr/lib/rfsa/adsp/default/Result: No change.
Gemini identified that the 6.18 kernel from noble-test repository might lack proper DMA reservations, and suggested switching to the stable Ubuntu 6.8 kernel.
# Install 6.8 kernel
sudo apt install -y linux-image-qcom linux-headers-qcom
# Move 6.18 boot entry to force 6.8
sudo mkdir -p /boot/efi/loader/entries/disabled
sudo mv /boot/efi/loader/entries/*6.18*.conf /boot/efi/loader/entries/disabled/
sudo rebootResult: ❌ SYSTEM UNBOOTABLE
The 6.8 kernel installation had errors:
find: '/usr/lib/linux-image-6.8.0-1057-qcom/': No such file or directory
/usr/lib/kernel/install.d/99-update-overlay.install failed with exit status 1
dpkg: error processing package linux-image-6.8.0-1057-qcom
Moving the 6.18 boot entry left no working kernel to boot from.
⚠️ Never disable the only working boot entry without confirming the alternative kernel boots successfully first. Always test new kernels by selecting them manually from the bootloader before removing other options.
After the OS failure, performed a fresh installation.
# Identify SD card device
lsblk # Confirmed /dev/sdb is the SD card
# Unmount any mounted partitions
sudo umount /dev/sdb* 2>/dev/null
# Flash T4 image first
cd ~/Downloads
wget https://github.com/radxa-build/radxa-dragon-q6a/releases/download/rsdk-t4/radxa-dragon-q6a_noble_kde_t4.output_512.img.xz
xzcat radxa-dragon-q6a_noble_kde_t4.output_512.img.xz | sudo dd of=/dev/sdb bs=4M status=progress conv=fsync
sudo sync# SSH into the board (default: radxa/radxa)
ssh radxa@<board-ip>
# Critical: Install Qualcomm platform packages
sudo apt update
sudo apt install -y task-qualcomm embloader sdboot-is-embloader
sudo reboot- Kernel: 6.17.1-2-qcom
- dmesg: Still shows
no reserved DMA memory for FASTRPC - Error: 14001 persists
Found that T7 (January 2026) is available on GitHub releases:
radxa-dragon-q6a_noble_gnome_t7.output_512.img.xz
According to a Medium article by Anton Maltsev:
"For T3 and lower, I was not able to configure the NPU. From T5, it should work out of the box."
# Flash T7 image
xzcat radxa-dragon-q6a_noble_gnome_t7.output_512.img.xz | sudo dd of=/dev/sdb bs=4M status=progress conv=fsync
sudo sync$ sudo dmesg | grep -i fastrpc
qcom,fastrpc a300000.remoteproc:glink-edge.fastrpcglink-apps-dsp.-1.-1: no reserved DMA memory for FASTRPC
qcom,fastrpc 3700000.remoteproc:glink-edge.fastrpcglink-apps-dsp.-1.-1: no reserved DMA memory for FASTRPCT7 still has the same DMA memory issue. The NPU does not work.
The FastRPC (Fast Remote Procedure Call) driver requires reserved DMA memory regions defined in the kernel's device tree. This allows the CPU to communicate with the Hexagon DSP/NPU through shared memory.
Expected device tree entry:
reserved-memory {
fastrpc_mem: fastrpc@<address> {
compatible = "shared-dma-pool";
reg = <0x0 0x<address> 0x0 0x<size>>;
no-map;
};
};
Current state: The reserved-memory node in the kernel's DTB lacks FastRPC-specific allocations.
- Kernel source issue: The upstream kernel or Radxa's fork may not have complete device tree support for QCS6490's FastRPC requirements
- DTB override missing: The board-specific device tree overlay that should add these reservations is either missing or not being applied
- Software stack maturity: As noted in reviews, "the software stack is still maturing" for this platform
| Component | Status |
|---|---|
| Ubuntu 24.04 Noble boot | ✅ |
| SSH access | ✅ |
| Kernel modules load | ✅ |
| FastRPC device nodes exist | ✅ (/dev/fastrpc-cdsp, /dev/fastrpc-adsp) |
| QRTR name service | ✅ (qrtr-ns active) |
| Protection Domain Mapper | ✅ (pd-mapper active) |
| Model download | ✅ (ModelScope works) |
| Genie libraries load | ✅ (libGenie.so version 1.13.0) |
| Component | Status | Error |
|---|---|---|
| NPU device initialization | ❌ | Error 14001 |
| FastRPC DMA allocation | ❌ | "no reserved DMA memory" |
| Llama 3.2 inference | ❌ | Device Creation Failure |
Severity: Critical (blocks all NPU functionality)
Evidence:
dmesg: qcom,fastrpc: no reserved DMA memory for FASTRPC
Affects: All tested images (T4, T7)
Potential fixes:
- Device tree patch from Radxa
- Kernel update with proper reserved-memory nodes
- Custom DTB overlay
Observation: T4 KDE image boots to TTY, GDM fails with "no session desktop files installed"
Workaround: Use SSH or TTY directly
- Monitor Radxa GitHub releases for T8+
- Check Radxa Forum for announcements
Create a custom overlay to add reserved memory:
// fastrpc-memory.dts (UNTESTED - needs verification)
/dts-v1/;
/plugin/;
&{/reserved-memory} {
fastrpc_cdsp_mem: fastrpc_cdsp@0x88000000 {
compatible = "shared-dma-pool";
reg = <0x0 0x88000000 0x0 0x2000000>; // 32MB at 0x88000000
no-map;
};
};
⚠️ Memory addresses need to be determined from Qualcomm documentation or working Android DTB
Armbian has experimental support:
- https://www.armbian.com/radxa-dragon-q6a/
- Requires latest UEFI firmware: https://forum.radxa.com/t/radxa-dragon-q6a-firmware-snapshot/
Post on the forum with full details:
- Radxa Forum - Dragon Series
- Radxa Discord (developers reportedly very active)
If you have a working Dragon Q6A with NPU functionality, please share:
- Your image version (
cat /etc/radxa-releaseor image filename) - Kernel version (
uname -r) - dmesg output (
sudo dmesg | grep -i fastrpc) - Working configuration steps
# 1. Flash any official image (T4-T7 tested)
# 2. Boot and SSH in
# 3. Check for DMA error
sudo dmesg | grep -i fastrpc
# 4. Install test tools
pip3 install modelscope --break-system-packages
mkdir -p ~/llama-test && cd ~/llama-test
modelscope download --model radxa/Llama3.2-1B-1024-qairt-v68 --local_dir .
# 5. Run test
chmod +x genie-t2t-run
export LD_LIBRARY_PATH="$(pwd):$LD_LIBRARY_PATH"
./genie-t2t-run -c htp-model-config-llama32-1b-gqa.json -p '<|begin_of_text|><|start_header_id|>system<|end_header_id|>\n\nYou are a helpful assistant<|eot_id|><|start_header_id|>user<|end_header_id|>\n\nHello<|eot_id|><|start_header_id|>assistant<|end_header_id|>\n\n'| Date | Event |
|---|---|
| 2026-01-26 | Initial T4 setup, encountered Error 14001 |
| 2026-01-26 | Gemini troubleshooting session |
| 2026-01-26 | OS bricked after kernel switch attempt |
| 2026-01-28 | Fresh T4 install, same DMA error |
| 2026-01-29 | Discovered and tested T7, same DMA error |
| 2026-01-29 | Created this troubleshooting guide |
This document is released under CC BY-SA 4.0. Feel free to share, adapt, and contribute.
If this guide helped you or you found a solution, please share it back with the community!
https://forum.radxa.com/t/remoteproc-remoteproc0-direct-firmware-load-for-qcom-qcs6490-radxa-dragon-q6a-adsp-mbn-failed-with-error-2/30288
After a kernel upgrade, the
remoteprockernel modules may get included in the initramfs due toMODULES=mostin/etc/initramfs-tools/initramfs.conf. This causes the DSP subsystem to attempt firmware loading too early (during initramfs stage), before/lib/firmwareis available — resulting in errors like:To fix this, exclude the
remoteprocdrivers from initramfs using a hook script:After reboot, verify with:
dmesg | grep -i dspYou should see
remote processor adsp/cdsp is now upwithout early-2errors.