[Guide] Debian 13 on Orion O6 (and O6N) [Edited]

Hi guys,

I spent some time on this doing a lot of trial and error, so I’d like to share the result with you.

I managed to install Debian 13 on my Radxa Orion O6N with a working graphics driver.

It’s actually not that difficult.

Install debian 13 from the “official” arm image

Download:
https://get.debian.org/images/archive/13.1.0/arm64/iso-cd/debian-13.1.0-arm64-netinst.iso

Steps:

  • Copy the ISO to a USB stick
  • Insert it into the board
  • Press ESC at boot
  • Select the USB stick
  • Install Debian normally with the GNOME desktop

Install linux kernel from radxa git hub

After the first boot, the GUI should already work, but only with the generic driver, so you won’t be able to change the resolution.

Download and install the kernel:

su -
wget https://github.com/radxa-pkg/linux-sky1/releases/download/6.6.89-3/linux-headers-6.6.89-3-sky1_6.6.89-3_arm64.deb
wget https://github.com/radxa-pkg/linux-sky1/releases/download/6.6.89-3/linux-image-6.6.89-3-sky1_6.6.89-3_arm64.deb
wget https://github.com/radxa-pkg/linux-sky1/releases/download/6.6.89-3/linux-libc-dev_6.6.89-3_arm64.deb
dpkg -i *.deb
cp /usr/lib/linux-image-6.6.89-3-sky1/cix/sky1-orion-o6.dtb /boot

# For Orion O6 Network device, download it now that we have an internet connection
wget https://radxa-repo.github.io/bookworm/pool/main/r/r8126/r8126-dkms_10.015.00-2_all.deb

Configure boot (Grub)

I’m not 100% sure which parts are strictly required here, but this is what worked for me.

Get your filesystem UUID:

su -
blkid

Search for the UUID with ext4 type.

Add a new kernel entry in grub

su -
nano /etc/grub.d/40_custom

Add:

menuentry 'Debian GNU/Linux, with Linux 6.6.89-3-sky1 - DT'  {
  savedefault
  insmod gzio
  insmod part_gpt
  insmod ext2
  search --no-floppy --fs-uuid --set=root 51eef252-f59c-49a2-a9ef-c05a2d005db8
  echo    'Loading Linux 6.6.89-3-sky1 ...'
  linux   /boot/vmlinuz-6.6.89-3-sky1 root=UUID=51eef252-f59c-49a2-a9ef-c05a2d005db8 ro console=ttyAMA2,115200 earlycon=pl011,0x040d0000 loglevel=7 ignore_loglevel kasan=off
  echo    'Loading initial ramdisk ...'
  initrd  /boot/initrd.img-6.6.89-3-sky1
  devicetree /boot/sky1-orion-o6.dtb
}

Replace 51eef252-f59c-49a2-a9ef-c05a2d005db8 by your filesystem UUID

Optionally if you want grub to remember your kernel selection

su -
nano /etc/default/grub

Replace GRUB_DEFAULT=0 by

GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT=true

Then start update-grub

Install cix drivers

The moment of truth:

now reboot your device and select Debian GNU/Linux, with Linux 6.6.89-3-sky1 DT in grub menu

The screen will go black for a moment, then you should reach the login screen. At this point the correct graphics driver is loaded, but rendering is still done in software.

Network drivers (Orion O6 only, not needed for Orion O6N)

The network drivers does not work out of the box on the orion O6.
Installed it from the previously downloaded deb file

su -
dpkg -i r8126-dkms_10.015.00-2_all.deb

Now you can reboot the device and the networking should works on your board (thank you @blood )

Graphics drivers

Download cix-go-2025q4.tar.gz from https://developer.cixtech.com/ (you need to register)

Now install the drivers:

su -
tar xzf cix-go-2025q4.tar.gz
cd cix-go/
bash install.sh --dkms

You can enable HDMI audio output

su -
wget https://github.com/cixtech/cix_p1_ubuntu_adaption_debs/blob/cix_k6.6_25q4_ubuntu_dev/debs/cix-alsa-conf_1.0.0_arm64.deb
touch /etc/rc.local
dpkg -i cix-alsa-conf_1.0.0_arm64.deb

Now you can reboot.

What is working

  • Networking
  • Vulkan (version 1.4)
  • WebGL
  • HDMI audio output
  • YouTube plays smoothly but video decoding is still done in software

What does not work “yet”:

  • Hardware video decoding
  • I was not able to run any steam game with hardware acceleration

Did not try:

  • NPU
6 Likes

Nice!

I wonder if this will still work without the dtb, and with “acpi=force splash”, like in CIX example here?

Yes, I just try with acpi=force and removing the dtb and it worked too :slight_smile:

Edit: I can confirm that without acpi=force, it does not work.

Cool, so you can make the guide even shorter. :wink:

Also, thanks for pointing to the newer Mali driver (2025q4), I’m going to try it on the Radxa’s Debian 12 build just for the hell of it.

Update: it worked just fine, now I have Vulkan 1.4.

1 Like

Does this enable the use of Hangover/Wine with DXVK?

I was able to start with success a directx demo using DXVK. The frame rate is fast so DXVK is working as expected.

However, I installed steam and try a few games. Games start but is it very slow.
I am not sure if it is really using hardware acceleration.

You should be able to get GPU info and fps like How to Run Steam DX11 Games on Orion O6

You can try set CPU and GPU to performance mode

echo always_on > /sys/class/misc/mali0/device/power_policy
echo performance > /sys/class/devfreq/15000000.gpu/governor

echo performance > /sys/devices/system/cpu/cpufreq/policy0/scaling_governor
echo performance > /sys/devices/system/cpu/cpufreq/policy1/scaling_governor
echo performance > /sys/devices/system/cpu/cpufreq/policy5/scaling_governor
echo performance > /sys/devices/system/cpu/cpufreq/policy7/scaling_governor
echo performance > /sys/devices/system/cpu/cpufreq/policy9/scaling_governor

Hi all,

I’ve updated this small guide to polish it and to address an issue I was experiencing with my orion o6n.

I was getting random boot issues with this kernel: sometimes it would boot fine, and sometimes it wouldn’t. It make debugging quite difficult. After connecting a serial cable to debug, I noticed some errors related to the kernel address sanitizer. While disabling it isn’t ideal, doing so solved the issue for me.

I’m currently using firmware 1.1.0-1 on my orion o6n, maybe 1.1.0-2 fixes this problem. Is anyone else experiencing a similar issue, and do you know how to solve it properly?

Also, booting with acpi=force doesn’t seem to work for me anymore.

I tried to use the kernel and drivers from Sky1-Linux · GitHub but I does not work for me.

About Steam, I tried again by compiling manually box64 and run provided steam installation script but it did not worked for me too (errors in the logs…).

Thanks for posting this. I gave this a go since I prefer what Trixie has to offer and have it up and running now to the point where I am booting into the 6.6.89-3-sky1 kernel (but have not installed the cix drivers yet for accelerated graphics) - but I was surprised that neither of the 5g NICs are being enumerated. I tried manually loading the r8169 module as well as installing the r8125-dkms package (after booting back into ACPI mode with the stock Debian kernel to install it and then back into 6.6.89) and building that driver against 6.6.89-3-sky1 headers - but neither effort resulted in the kernel recognizing the NICs. lspci shows them as would be expected. This is on an O6 running firmware 1.1.0-1 and I’m running with device-tree chosen in the bios rather than ACPI.

I guess I don’t understand how the kernel attaches drivers to PCIe devices on this platform… I expected this to work since the devices show up as expected when I run lspci.

Are you able to use the onboard NICs with this kernel? I might try a PCIe NIC to get past this but would prefer to use the builtin NICs if I can. Any thoughts on other things to look at here?

Yes, the NICs on my Orion O6N are working fine. However you post made me remember that the network interfaces of the O6 are not the same. It is RTL8125 2.5GbE (still r8169).

Do you think I may need to specify a different dtb than what you’re using? The one I copied in was for O6 and not O6N so I’d think if it was wrong it would impact your board and not mine, but here I am! I might flip back to the bookworm image from Radxa and look closer on how it’s working.

Ultimately I want to be on a mainline kernel using Panfrost and PanVK and not dependent on the Cix vendor kernel, but I don’t know if that’s usable yet either.

Yes, I am using the o6 dtb on my o6n.
I tried to compare the dts in some GitHub repository a few days ago and it did not seem different.

The O6 uses RTL8126 which is handled by the r8126 driver, and neither r8125 nor r8169.

At least for the mainline kernel, r8169 can drive the 8126 NICs:

$ /sbin/ethtool -i enp49s0
driver: r8169
version: 6.12.63+deb13-arm64
...

That said, I do see a dkms package for r8126 in the Radxa repository so I’m going to give that a go and see how it goes.

Installing the r8126-dkms package and building that module for the Radxa kernel did the trick and I now have networking (which was very important as my home directory is automounted over NFS). I then installed the cix graphics package like you said and Wayland with Gnome is running like a champ now.

I think I might play some games this afternoon :smiley:

For anyone else that follows this, the alsa config deb gave me an error complaining about not having /etc/rc.local. I didn’t read the script, but all I had to do was touch that file and rerun the installation; it looks like the package looks for something in that file but doesn’t handle it not being present at all so it’s an easy workaround.

Great, have fun with your games :grinning_face:
I saw the video today about Radxa Dragon Q6A running a emulator. I am pretty sure Orion O6/O6N will be a beast.

Can you give me the instructions you used to install the r8126 module so I can update the instructions ?

I booted in ACPI mode using the stock Debian kernel so I had networking and then downloaded this package:

https://radxa-repo.github.io/bookworm/pool/main/r/r8126/r8126-dkms_10.015.00-2_all.deb

and installed it with dpkg -i r8126-dkms_10.015.00-2_all.deb. Then I rebooted, flipped the BIOS back to device-tree mode, and booted into the vendor kernel. It worked immediately after that since the modules were built for all installed kernels when the package was installed (but otherwise run dpkg-reconfigure r8126-dkms_10.015.00-2_all.debto get it to rebuild again).

As I mentioned above, I also needed to touch /etc/rc.local before installing the alsa conf package.

The full list of packages that Radxa provides can be viewed here. There are probably some others that might be worth pulling in.

Thank you, I updated the guide with your instructions.
Yes, for the touch /etc/rc.local, I noticed it myself before but I forgot to add it in the instructions.

1 Like

Hello there,

So I’m trying this to get on trixie (yeah!) on O6N, but when rebooting with the custom kernel i seem to lose the wifi card. It’s an Intel Corp. AX210 chipset in the corresponding M.2 socket.

it did work on radxa R1 iso, and it also works with the trixie default kernel.

.. Any idea how to get it back on the custom kernel ?

Hi,

You can start by comparing the output of

sudo dmesg

with the stock kernel and the custom kernel.
Search for firmware loading errors.