Radxa Dragon Q6A firmware snapshot

The Dragon Q6A is shipped with the SPI boot firmware pre-flashed. Normally, you do not need to re-flash it. If you are using RadxaOS, the boot firmware could be updated using the rsetup utility.

However, if you are using a third-party Linux OS or Windows ARM64, you may need to update the boot firmware manually.

Latest release

2026-01-20 firmware release

There are two methods for manually updating the firmware, both of which require the edl-ng tool.

1. On-device update

First, navigate to the directory of the unpacked firmware package (dragon-q6a_flat_build.zip/flat_build/spinor/dragon-q6a). Then, run the following command directly on the device:

Linux OS:

sudo edl-ng --hostdev-as-target /dev/mtd0 rawprogram rawprogram0.xml patch0.xml

Windows ARM64:

edl-ng.exe --radxa-wos-platform rawprogram rawprogram0.xml patch0.xml

2. Update via a Host Computer

This method requires a USB A-to-A cable to connect your device to another computer.

  1. Make sure your device is in EDL mode. For Windows users, you need to install the drivers first: Entering EDL Mode | Radxa Docs
  2. On your host computer, navigate to the unpacked firmware package directory (dragon-q6a_flat_build.zip/flat_build/spinor/dragon-q6a).
  3. Execute the following command:
# Linux
sudo edl-ng --memory spinor --loader prog_firehose_ddr.elf rawprogram rawprogram0.xml patch0.xml

# Windows
edl-ng.exe --memory spinor --loader prog_firehose_ddr.elf rawprogram rawprogram0.xml patch0.xml

If you see the error message Unable to load DLL 'libusb-1.0' in Windows, please install Visual C++ Redist.

4 Likes

I’ve applied exactly that and am now left with a device that no longer boots. I’ve seen ā€œUbuntu-24.04.3ā€ mentioned and the count down, but it then shows this and stops there:

Start EBS        [ 6476] 
BDS: LogFs sync skipped, No Media
App Log Flush : 0 ms
Gunyah based bootup
Exit EBS        [ 6486] UEFI End

My board used to boot from the UFS flash, I’ve flashed it by booting it from it first then issued the edl-ng command above. There might be config changes to perform or any such thing, however at the moment I’m not sure what can be done.

I don’t understand the boot loader. I was recently advised to try Ctrl-C during the countdown. I tried it but it doesn’t say anything. By pressing random keys I’ve seen a succinct help prompt:

 (d)efault (t/T)imeout (e)dit (r/R)esolution (p)rint (O)ff re(B)oot (h)elp   

Pressing ā€œhā€ shows the same line. Pressing ā€œeā€ edits a cmdline parameter on a single line that scrolls from left to right:

root=UUID=cbddb2c3-3936-4129-a758-4bdfc1ee314b console=ttyMSM0,115200n8 quiet splash loglevel=4 rw earlycon consoleblank=0 console=tty1 coherent_pool=2M irqchip.gicv3_pseudo_nmi=0 cgroup_enable=cpuset cgroup_memory=1 cgroup_enable=memory swapaccount=1 kasan=off

I tried to change ā€œquietā€ to ā€œdebugā€ but it didn’t change anything different from the copy-paste above, proving that it fails in the boot loader.

Installing the micro-SD install media doesn’t change the result.

Removing the UFS flash lets the SD boot. So it seems thait this firmware upgrade makes the UFS flash unusable. Couldn’t it be this commit which broke the storage ?

2776025410 Revert UFS init speed to gear 3 rate B

or maybe this one ?

b2368ec381 Fix and enable eMMC

Removing the UFS flash lets the SD boot.

So the board can still boot from SD? Is the system in your UFS the same as the one in the SD?

BTW, could you check if the image here works? Releases Ā· radxa-build/radxa-dragon-q6a

The micro-SD was the initial ubuntu install image (from which I cannot recover the password BTW, I remeber having had to change it the first time but I didn’t note it). The UFS was the T2 image you pointed above. Here it’s clear that the BIOS tries to boot from UFS before SD (I already noticed and reported that a few weeks ago), so once it fails to boot on UFS you can’t use nor reinstall the UFS anymore since plugging it prevents the system from booting. I’ll have to reflash the SD with the original ubuntu image and try a future firmware image once one is emitted I guess, but for now it’s almost a brick :frowning:

In case that’s of any use, I had captured the pre-upgrade and post-upgrade boot messages, and the diff is quite limited, I’m attaching it (I cancelled the few lines that only differed by the boot timestamp). I’m particularly noticing this at the end:

+Start EBS        [ 6476]
 BDS: LogFs sync skipped, No Media
-Model: Radxa Dragon Q6A
-enable-kvm is not set in DTB, booting with EL1
 App Log Flush : 0 ms
 Gunyah based bootup
-Exit EBS        [ 6323] UEFI End
-[    0.763049] msm_dpu ae01000.display-controller: [drm:adreno_request_fw] *ERROR* failed to load a660_sqe.fw
-thermal thermal_zone0: power_allocator: sustainable_power will be estimated

[ sorry for the ZIP attachment, the forum doesn’t let me post a text-only file]
q6aboot-old-new.diff.zip (5.5 KB)

After some investigation, we found the problem is that the 250929 firmware does not load the embedded device tree in UEFI properly, while the T2 image does not contain a DTB itself and relies on the firmware provided one.

This has been fixed in the next firmware release. But unfortunately, the next release has updated the embedded DTB to be used with an upcoming v6.17 based Linux kernel. So it will not be compatible with the T2 or earlier images (without specifying devicetree in GRUB2).

However, I think you should be able to see the GRUB menu. Then you can press ā€˜c’ and type ā€˜exit’. It will then exit the current GRUB and fallback to launch the GRUB in your SD card.

I just realized that the T2 image uses systemd-boot instead of GRUB2, so the method above won’t work. Sorry for the confusion.

2025-10-13 firmware release

dragon-q6a_flat_build_251013.zip

Major changes

1. Update UEFI embedded DTB for linux v6.17

NOTE: This firmware is not compatible with the t2 or earlier versions of the test builds here. radxa-build/radxa-dragon-q6a

2. Add UiApp


3. Add support for fixed boot device order

Now this board can boot in a fixed order. The configurable device order will be added later.
Default boot device order: USB > SD > NVMe > eMMC > UFS > USB

Changelog (since 250929)

Boot: Update UEFI embedded DTB for linux v6.17
Boot: Fix BoardInfoDxe to get rid of the errors about serial number
Boot: Remove code and logging that is known to be unused or harmless
Boot: Reboot after exiting UEFI Shell instead of asserting
Boot: Reduce the waiting time for USB enumeration
Boot: Move SD card detection to SdccDxe init
Boot: Kodiak: Add missing libraries for UiApp
Boot: UefiBootManagerLib: Add boot option description for Misc Device
Boot: QcomBds: Initial boot device order supports
Boot: Add UiApp and BootManagerMenuApp
Boot: QcomPkg: Library: Add BootOrderLib
Boot: Remove unused drivers to reduce size
Boot: SimpleTextInOutSerialDxe: Improve SimpleTextOutput to run UiApp
Boot: DtPlatformDxe: fix LoadDtbOnReadyToBoot to accept buffer size
4 Likes

Cool, great news! What image would you recommend then ? I installed t2 to try more up-to-date kernel, but I don’t have a strong preference. Any image that you consider worth testing will do it. I’d just prefer to use mainline kernel than an outdated BSP since there’s not much value in testing kernels of the past.

Thanks!

I could finally update the firmware to version 251013 above, I could boot again from the SD with UFS connected, I could flash the t4 image on it and I can confirm that works fine now. I’m now on kernel 6.17.1-2-qcom, it’s nice to be running close to mainline. Thank you @strongtz!

1 Like

Is this error normal?

When installing " 2025-10-13 firmware release" using the method in the first post:

radxa@radxa-dragon-q6a:~/Downloads/flat_build/spinor/dragon-q6a$ sudo edl-ng --hostdev-as-target /dev/mtd0 rawprogram rawprogram0.xml patch0.xml
[sudo] password for radxa:
05:22:17.239 [INFO] Operating in host device mode (direct MTD access)
05:22:17.239 [INFO] — Processing LUN 0 using rawprogram0.xml —
05:22:17.241 [INFO] Host device initialized: /dev/mtd0
05:22:17.241 [INFO] Device size: 32.00 MiB (33554432 bytes)
05:22:17.242 [INFO] Erase block size: 4096 bytes
Writing cdt (cdt.bin): 100.0% ( 0.00 / 0.00 MiB) [N/A ]
Writing XBL (xbl.elf): 100.0% ( 0.80 / 0.80 MiB) [98.49 KiB/s]
Writing XblRamdump (XblRamdump.elf): 100.0% ( 0.19 / 0.19 MiB) [99.37 KiB/s]
Writing XBL_CONFIG (xbl_config.elf): 100.0% ( 0.31 / 0.31 MiB) [99.11 KiB/s]
Writing UEFI (uefi.elf): 100.0% ( 4.51 / 4.51 MiB) [99.45 KiB/s]
Writing AOP (aop.mbn): 100.0% ( 0.20 / 0.20 MiB) [97.24 KiB/s]
Writing TZ (tz.mbn): 100.0% ( 3.98 / 3.98 MiB) [97.76 KiB/s]
Writing DEVCFG (devcfg.mbn): 100.0% ( 0.05 / 0.05 MiB) [97.40 KiB/s]
Writing HYP (hypvm.mbn): 100.0% ( 1.46 / 1.46 MiB) [98.65 KiB/s]
Writing QUP (qupv3fw.elf): 100.0% ( 0.05 / 0.05 MiB) [103.01 KiB/s]
Writing CPUCP (cpucp.elf): 100.0% ( 0.18 / 0.18 MiB) [99.78 KiB/s]
Writing SHRM (shrm.elf): 100.0% ( 0.04 / 0.04 MiB) [102.88 KiB/s]
Writing ImageFv (imagefv.elf): 100.0% ( 0.02 / 0.02 MiB) [107.93 KiB/s]
05:24:19.602 [ERROR] Error: Image file ā€˜/home/radxa/Downloads/flat_build/spinor/dragon-q6a/fat12test.bin’ for (Label: FATTEST) not found. Skipping this file.
Writing PrimaryGPT (gpt_main0.bin): 100.0% ( 0.02 / 0.02 MiB) [100.22 KiB/s]
Writing BackupGPT (gpt_backup0.bin): 100.0% ( 0.02 / 0.02 MiB) [100.70 KiB/s]
05:24:20.041 [INFO] — Patching LUN 0 using patch0.xml —
05:24:20.490 [INFO] ā€˜rawprogram’ command finished in 123.25s.
05:24:20.490 [INFO] ā€˜rawprogram’ command finished successfully.
radxa@radxa-dragon-q6a:~/Downloads/flat_build/spinor/dragon-q6a$

/ :slight_smile:
sorry if this is obvious but how do you get here>

Yes, the error is harmless. We will remove the unnecessary file in the next update.

1 Like

That GUI currently only appears in UART console when there’s nothing to boot. Support for HDMI output in UEFI will be added in the next update.

3 Likes

whats the timeline for the hdmi uefi menu update?

what about output to mipi display and key to enter uefi ?

I tested with radxa 8ā€ display and it was black and broke my install when enabled, Windows on Radxa Dragon Q6A firmware ment for windows adds Uefi interface accesable my pressing F2 on Startup

Hi, MIPI DSI displays are not yet supported in UEFI and Windows. But it should work in Linux after the kernel boots up when the DT overlay is properly enabled in rsetup.

mine never did anything other than remaining black, after enabling in rssetup in t6 radxa os i did not get any picture from board without reflash of os image. (maybe i got a dead screen)

Similar issue as the first person here. A bit different, I only used an sdcard, no ufs connected. Using the latest radxa image T6.

I used the patch method 1. On-device update.

My dragon does not boot anymore after patching with 2025_11_13 with the exact command line from my radxa T6. Not happy it seems i have no other option than to seek and purchase a specific USB cable to try and fix.

Please, be very detailed and specific in upgrade firmware procedure, there might be steps skip out of obviousness for you and we may have missed as people May not have as much understanding of firmware update for radxa dragon q6a because we simply just purchased and got one.

1 Like

2026-01-20 firmware release

dragon-q6a_flat_build_wp_260120.zip

The recommended RadxaOS images to use with this firmware is r1 or newer.

Major changes

1. Changed base Qualcomm code

The code base used to compile the firmware is changed from qualcomm-linux-spf-1-0_ap_standard_oem to qcm6490-wp-1-0_ap_standard_oem.

The firmware is now compatible with both Windows and Linux.

2. Supported HDMI output in UEFI BIOS

Summary




3. UEFI network boot

Support for UEFI networking has been added. The board can now boot using PXE and HTTP.

4. GPIO configuration in UEFI

5. Auto-detection of Linux kernel version

The firmware will try to detect the Linux kernel version and load an appropriate DTB if one is not provided by the bootloader.

Currently supported kernel versions: 6.17, 6.18

6. Persistent UEFI variables

UEFI variables are now persistent across reboots. It is also now possible to access these variables from Linux.

Note that this feature depends on the new v6.18 kernel in RadxaOS T7 or newer.

7. Configurable boot order

Known issues

  1. Audio is broken after updating to this firmware release (waiting for a new package release in radxa-pkg/alsa-ucm-conf)
    If you are using rsdk-t7 or older version, please update the alsa-ucm-conf package to version 1.2.14-1radxa2 or newer for working audio.
  2. The Vulkan driver cannot be loaded (RadxaOS T7 specific).
    Vulkan driver needs to be installed manually.
  3. OS images using the old v6.17 kernel will no longer be able to access the onboard SPI flash for firmware updates.

Third-party OS

For third-party OS maintainers, please cherry-pick the latest kernel patches from radxa/kernel at linux-6.18.2. These patches have undergone extensive testing and work better with the new firmware.

In order to get working audio, you will need some patches for alsa-ucm-conf as well: radxa-pkg/alsa-ucm-conf

2 Likes

Is it now safe to update in rsetup? Has that situation been fixed?