Skip to content

Cix-ACPI: Initial work for support on vendor 2025Q4 & current/edge#9395

Open
HeyMeco wants to merge 14 commits intoarmbian:mainfrom
HeyMeco:cix-acpi-2025Q4
Open

Cix-ACPI: Initial work for support on vendor 2025Q4 & current/edge#9395
HeyMeco wants to merge 14 commits intoarmbian:mainfrom
HeyMeco:cix-acpi-2025Q4

Conversation

@HeyMeco
Copy link
Copy Markdown
Collaborator

@HeyMeco HeyMeco commented Feb 12, 2026

Description

Now that the Cix 2025Q4 Vendor kernel is available I started working on basic support.
+
Current & Edge based on https://github.com/Sky1-Linux latest ACPI additions.

Branch: Current & Edge

What works now (tested on Debian Trixie):

  • Booting via ACPI
  • First Setup (via SSH & Video output)
  • GPU: Panthor via Mesa Backports
  • VPU: Works 🎉 with Upstream Chrome (manual flags for V4L2 required)

What is missing:

  • armchina_npu disabled due to kernel crash on boot

Related sources:

Branch: Vendor

What works now (tested on Debian Trixie):

  • Booting via ACPI
  • First Setup (via SSH & Video output)
  • GPU: Panthor via Mesa Backports
  • Kernel drivers for VPU, NPU, Proprietary Mali GPU. All (untested in user space)

What is missing:

  • Alsa Audio Config, can be installed but might be board dependent (maybe disable the cix audio drivers in general?)

What makes me unhappy:

  • Micro stutters during usage. Not really daily drivable because of this imo but you have to start somewhere
  • Dmesg way too verbose not sure why. Maybe traces cause the stutters from above?

Related sources:

Boards covered by this PR:

  • Radxa Orion O6
  • Radxa Orion O6N (untested)
  • Minisforum MS-R1
  • OrangePI 6 Plus

This is a follow up on #8363

Checklist:

Please delete options that are not relevant.

  • My code follows the style guidelines of this project
  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas
  • My changes generate no new warnings
  • Any dependent changes have been merged and published in downstream modules

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai bot commented Feb 12, 2026

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

Adds Cix-ACPI board metadata and runtime hooks, introduces a new cix-p1 family with branch-scoped kernel/GRUB and firmware hooks, and adds three full kernel defconfigs (vendor/current/edge). Also adds a post-family tweak to conditionally install mesa-vulkan-drivers from Debian Trixie backports.

Changes

Cohort / File(s) Summary
Board configuration
config/boards/cix-acpi.conf
Adds BOARD_VENDOR, BOARDFAMILY, expands KERNEL_TARGET to vendor,current,edge, branch-scoped MODULES_BLACKLIST and BOARD_FIRMWARE_INSTALL, and a post_family_tweaks__cix_acpi_mesa_backports() that conditionally installs mesa-vulkan-drivers from trixie-backports.
Family sources & hooks
config/sources/families/cix-p1.conf
Introduces cix-p1 family (ARCH=arm64, LINUXFAMILY, BOOTCONFIG, UEFI_GRUB_TIMEOUT, SERIALCON), vendor branch kernel sources/patches/settings, firmware hook to disable embedded firmware when .config present, family_tweaks to install Sky1/mediatek firmware for current/edge, and a custom configure_grub override with GRUB fragments and optional wallpaper handling.
Kernel defconfigs
config/kernel/.../linux-cix-p1-vendor.config, config/kernel/.../linux-cix-p1-current.config, config/kernel/.../linux-cix-p1-edge.config
Adds three full defconfig payloads (vendor: 6.6, current: 6.18, edge: 6.19) containing large, static CONFIG_ lists enabling broad ARM64/ACPI/PCIe/USB/storage/networking/DRM/audio/power/platform features.

Sequence Diagram(s)

sequenceDiagram
  autonumber
  participant Builder as Builder (host)
  participant BoardHook as post_family_tweaks (board)
  participant Chroot as chroot_sdcard
  participant Debian as Debian Trixie Backports Repo

  rect rgba(100,150,240,0.5)
  Builder->>BoardHook: invoke post_family_tweaks__cix_acpi_mesa_backports()
  end
  BoardHook->>Builder: display "Installing mesa-vulkan-drivers from backports"
  BoardHook->>Chroot: chroot_sdcard_apt_get install -t trixie-backports mesa-vulkan-drivers
  Chroot->>Debian: request mesa-vulkan-drivers (trixie-backports)
  Debian-->>Chroot: package archive response
  Chroot-->>BoardHook: install result
  BoardHook->>Builder: display success or warning (if not Debian Trixie)
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Possibly related issues

Poem

🐰
I hopped through configs, neat and spry,
Added kernels, hooks, and GRUB to try,
Mesa backports fetched from sky,
Firmware, branches, all set to fly,
Hoppity-hop — builds multiply!

🚥 Pre-merge checks | ✅ 3 | ❌ 1
❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Merge Conflict Detection ⚠️ Warning ❌ Merge conflicts detected (2 files):

⚔️ config/kernel/linux-rockchip-vendor.config (content)
⚔️ extensions/ti-debpkgs.sh (content)

These conflicts must be resolved before merging into main.
Resolve conflicts locally and push changes to this branch.
✅ Passed checks (3 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly describes the main change: initial support for Cix-ACPI on vendor 2025Q4 and current/edge branches, which aligns with the PR's primary objective of adding Armbian support for the Cix 2025Q4 vendor kernel across multiple branches.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions github-actions bot added size/large PR with 250 lines or more 02 Milestone: First quarter release labels Feb 12, 2026
@github-actions

This comment was marked as outdated.

@github-actions github-actions bot added Needs review Seeking for review Hardware Hardware related like kernel, U-Boot, ... labels Feb 12, 2026
@chainsx
Copy link
Copy Markdown
Member

chainsx commented Feb 13, 2026

nice work!

@github-actions

This comment was marked as outdated.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Fix all issues with AI agents
In `@config/kernel/linux-cix-p1-vendor.config`:
- Around line 1191-1192: The vendor kernel config enables KASAN which causes
runtime overhead; remove or disable CONFIG_KASAN and CONFIG_KASAN_HW_TAGS for
release builds by setting CONFIG_KASAN to n (or removing the CONFIG_KASAN line)
and CONFIG_KASAN_HW_TAGS to n (or removing that line) in the vendor config so
KASAN is not compiled into the kernel; ensure any build profiles for development
still re-enable these options separately if needed.
🧹 Nitpick comments (3)
config/kernel/linux-cix-p1-vendor.config (2)

763-765: Multiple debug/test options left enabled — likely source of verbose dmesg.

The PR notes "overly verbose dmesg output (possible trace-related)" as a known issue. Several debug and test configs are enabled that would contribute to this:

  • Line 70: CONFIG_PM_DEBUG=y
  • Line 395: CONFIG_CIX_HF_TEST_CASE=y
  • Lines 763–765: CONFIG_SND_DEBUG=y, CONFIG_SND_DEBUG_VERBOSE=y, CONFIG_SND_PCM_XRUN_DEBUG=y
  • Line 964: CONFIG_DMATEST=y
  • Line 1000: CONFIG_CIX_CLK_DEBUG=y

Consider disabling these for the release config. At minimum, SND_DEBUG_VERBOSE and CIX_CLK_DEBUG are likely high-volume dmesg contributors. Note that since the PR also mentions ALSA audio configuration is missing, disabling the sound debug options should have no negative impact on functionality.

Also applies to: 1000-1000, 395-395, 964-964, 70-70


49-61: Broad architecture enablement for a CIX-specific vendor kernel.

Lines 49–60 enable many unrelated ARM64 SoC families (Actions, Apple, Broadcom, Keembay, NXP, Nuvoton, Realtek, Intel SoCFPGA, STM32, etc.) alongside CONFIG_ARCH_CIX=y. For a vendor-specific kernel targeting CIX boards only, these add unnecessary code to the kernel image and increase build time. Consider trimming to just ARCH_CIX (and any actual dependencies) unless there's a specific reason to keep them.

config/boards/cix-acpi.conf (1)

15-15: Trixie-specific guard is appropriate but will need updating for future releases.

The trixie check is correct for the current target. As a minor note for future maintenance: when Debian moves beyond trixie, this condition and the backports source will need to be revisited. This is acceptable for initial support work.

@github-actions

This comment was marked as outdated.

@HeyMeco HeyMeco changed the title Cix-ACPI: Initial work for support on vendor 2025Q4 release Cix-ACPI: Initial work for support on vendor 2025Q4 & current/edge Feb 13, 2026
@HeyMeco HeyMeco requested a review from amazingfate February 13, 2026 17:27
- Remove unneeded drivers that cause firmware lookup issues.
- Make CONFIG_BT=Y (so it includes BLE by default)

# Install Sky1 firmware package
display_alert "Installing Sky1 firmware" "sky1-firmware" "info"
chroot_sdcard_apt_get_install sky1-firmware
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We can consider pushing kernel drivers to armbian's firmware repo and package alsa config file to armbian's bsp package.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could you do the armbian-firmware part? I was not able to source the firmware files besides the binaries from the sky1-firmware repo (where do they come from?)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

mali firmware is already merged upstream. vpu and dsp firmware are from cix sdk, maybe we should set subdir like /lib/firmware/cix/vpu instead of /lib/firmware.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

100%, not sure how to link it though. Probably patch the kernel driver

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Decide for one option and lets merge this.

Copy link
Copy Markdown
Contributor

@amazingfate amazingfate left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

sky1-firmware has kernel firmware for mali and vpu/dsp, and alsa config file. They can all get intergated into armbian's framework, no need to add a third party repo and install a third party package.

@HeyMeco HeyMeco mentioned this pull request Feb 16, 2026
10 tasks

# Install Sky1 firmware package
display_alert "Installing Sky1 firmware" "sky1-firmware" "info"
chroot_sdcard_apt_get_install sky1-firmware
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Decide for one option and lets merge this.


# Only install on Debian Trixie
if [[ "${RELEASE}" == "trixie" && "${DISTRIBUTION}" == "Debian" ]]; then
# Update mesa from backports
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why don't we deal with mesa in the mesa extension?

@web0net
Copy link
Copy Markdown

web0net commented Mar 3, 2026

Hi
tired to compile CIX Ubuntu -

🐳|🌱] Adding Sky1 repository
[🐳|🌱] Restricting Sky1 repository to sky1-firmware package
[🐳|🌱] Updating package lists [ apt update ]
[🐳|🔨]   Hit:1 http://github.armbian.com/configng stable InRelease
[🐳|🔨]   Hit:2 http://ports.ubuntu.com noble InRelease
[🐳|🔨]   Hit:3 http://ports.ubuntu.com noble-security InRelease
[🐳|🔨]   Hit:4 http://ports.ubuntu.com noble-updates InRelease
[🐳|🔨]   Hit:5 http://ports.ubuntu.com noble-backports InRelease
[🐳|🔨]   Hit:6 https://sky1-linux.github.io/apt sid InRelease
[🐳|🔨]   Reading package lists...
[🐳|🌱] Installing Sky1 firmware [ sky1-firmware ]
[🐳|🔨]   Selecting previously unselected package sky1-firmware.
[🐳|🔨]   (Reading database ... 70096 files and directories currently installed.)
[🐳|🔨]   Preparing to unpack .../sky1-firmware_1.2.1_all.deb ...
[🐳|🔨]   Unpacking sky1-firmware (1.2.1) ...
[🐳|🔨]   Setting up sky1-firmware (1.2.1) ...
[🐳|🌱] Installing Mediatek firmware [ sky1-firmware ]
[🐳|🔨]   E: Unable to locate package firmware-mediatek
[🐳|💥] Error 1 occurred in main shell [ at /armbian/lib/functions/logging/runners.sh:15
   chroot_sdcard_apt_get_install() --> lib/functions/logging/runners.sh:15
                  family_tweaks() --> config/sources/families/cix-p1.conf:110
   install_distribution_agnostic() --> lib/functions/rootfs/distro-agnostic.sh:458
                do_with_logging() --> lib/functions/logging/section-logging.sh:81
         build_rootfs_and_image() --> lib/functions/main/rootfs-image.sh:31
   full_build_packages_rootfs_and_image() --> lib/functions/main/default-build.sh:36
          do_with_default_build() --> lib/functions/main/default-build.sh:42
         cli_standard_build_run() --> lib/functions/cli/cli-build.sh:25
        armbian_cli_run_command() --> lib/functions/cli/utils-cli.sh:136
                 cli_entrypoint() --> lib/functions/cli/entrypoint.sh:208
                           main() --> compile.sh:50
 ]
[🐳|💥] Cleaning up [ please wait for cleanups to finish ]
[🐳|🌿] Unmounting recursively [ SDCARD - be patient ]
[🐳|🌱] Unmounted OK after 2 attempt(s) [ SDCARD ]
[🐳|🌿] Unmounting recursively [ MOUNT - be patient ]
[🐳|✨] Repeat Build Options [ ./compile.sh build BOARD=cix-acpi BRANCH=edge BUILD_DESKTOP=yes BUILD_MINIMAL=no DESKTOP_APPGROUPS_SELECTED= DESKTOP_ENVIRONMENT=gnome DESKTOP_ENVIRONMENT_CONFIG_NAME=config_base KERNEL_CONFIGURE=no RELEASE=noble ]
[🐳|🌿] ANSI log file built; inspect it by running: [ less -RS output/logs/log-build-no-uuidgen-yet-13325-1286.log.ans ]
[🐳|🌱] Share log manually: [ use one of the commands below (or add SHARE_LOG=yes next time!) ]
[🐳|🌿] Share log manually: [ curl --data-binary @output/logs/log-build-no-uuidgen-yet-13325-1286.log.ans https://paste.armbian.com/log ]
[🐳|🌿] Share log manually: [ curl --data-binary @output/logs/log-build-no-uuidgen-yet-13325-1286.log.ans https://paste.armbian.de/log ]
[🐳|🌿] Share log manually: [ curl --data-binary @output/logs/log-build-no-uuidgen-yet-13325-1286.log.ans https://paste.next.armbian.com/log ]
[🐳|🌿] Share log manually: [ curl --data-binary @output/logs/log-build-no-uuidgen-yet-13325-1286.log.ans https://paste.armbian.eu/log ]
[💥] -------------Docker run failed after 1592s-------------------------- [ 🐳 failed ]
[🌱] Cleaning up [ please wait for cleanups to finish ]

https://paste.armbian.com/vicezutozi

chroot_sdcard_apt_get_install sky1-firmware

display_alert "Installing Mediatek firmware" "sky1-firmware" "info"
chroot_sdcard_apt_get_install firmware-mediatek # Install Mediatek firmware for WiFi and Bluetooth (used on MS-R1)
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

mediatek need to be installed from different source -

[🐳|🌱] Installing Mediatek firmware [ sky1-firmware ]
[🐳|🔨]   E: Unable to locate package firmware-mediatek
[🐳|💥] Error 1 occurred in main shell [ at /armbian/lib/functions/logging/runners.sh:15
   chroot_sdcard_apt_get_install() --> lib/functions/logging/runners.sh:15
                  family_tweaks() --> config/sources/families/cix-p1.conf:110
   install_distribution_agnostic() --> lib/functions/rootfs/distro-agnostic.sh:458
                do_with_logging() --> lib/functions/logging/section-logging.sh:81
         build_rootfs_and_image() --> lib/functions/main/rootfs-image.sh:31
   full_build_packages_rootfs_and_image() --> lib/functions/main/default-build.sh:36
          do_with_default_build() --> lib/functions/main/default-build.sh:42
         cli_standard_build_run() --> lib/functions/cli/cli-build.sh:25
        armbian_cli_run_command() --> lib/functions/cli/utils-cli.sh:136
                 cli_entrypoint() --> lib/functions/cli/entrypoint.sh:208
                           main() --> compile.sh:50
 ]
[🐳|💥] Cleaning up [ please wait for cleanups to finish ]

@HeyMeco HeyMeco modified the milestones: 26.02, 26.05 Mar 4, 2026
BOARD_NAME="Cix-ACPI"
BOARD_VENDOR="cixtech"
BOARDFAMILY="cix-p1"
KERNEL_TARGET="current, edge, vendor"
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why are there spaces?

@AIWintermuteAI
Copy link
Copy Markdown

Great job! Looking forward to seeing it merged

@EvilOlaf
Copy link
Copy Markdown
Member

Also works for 7.0-rc1 btw.
However these additional spaces between the branch names create all sorts of issue for me.

@HeyMeco
Copy link
Copy Markdown
Collaborator Author

HeyMeco commented Mar 19, 2026

Also works for 7.0-rc1 btw. However these additional spaces between the branch names create all sorts of issue for me.

Will revise. How do those issues show?

@EvilOlaf
Copy link
Copy Markdown
Member

Will revise. How do those issues show?

The most obvious is error messages when motd pops up (requires first boot user setup completed).
Also armbian-install showed errors regarding this.

@SuperKali
Copy link
Copy Markdown
Member

Also armbian-install showed errors regarding this.

I noticed the same thing

@ArminiusTux
Copy link
Copy Markdown

Looking forward to this board addition to Armbian!

Since Linux is allergic to multiple GPUs in one system, hopefully there will be an easy off-switch for the Immortalis iGPU (at least for the Radxa Orion O6).

@ouni666
Copy link
Copy Markdown

ouni666 commented Mar 27, 2026

Hi everyone,

Exciting progress on the CIX front! It looks like CIX has just updated their kernel patchsets for 6.18 and 7.0:

Mainline kernel patches:
https://github.com/cixtech/cix-linux-main

NPU driver (7.0 kernel):
https://github.com/cixtech/cix_opensource__npu_driver/tree/cix_mainline_dev

VPU driver (7.0 kernel):
https://github.com/cixtech/cix_opensource__vpu_driver/tree/cix_mainline_dev

Really nice to see upstream work moving forward. Hopefully this helps the Armbian integration effort!

Cheers

@EvilOlaf
Copy link
Copy Markdown
Member

Has anyone successfully used armbian-install to move OS to nvme? For me it just drops into uefi, refuses to boot. sdcard works fine.

@HeyMeco
Copy link
Copy Markdown
Collaborator Author

HeyMeco commented Mar 30, 2026

For SD Card idk but for nvme I would guess it has something to do with how we don’t do GPT with armbian-install+ move the boot partition on this family

@web0net
Copy link
Copy Markdown

web0net commented Mar 30, 2026

Has anyone successfully used armbian-install to move OS to nvme? For me it just drops into uefi, refuses to boot. sdcard works fine.

install os from armbian build tool stable -> you don't have video -> install mainline kernel 7 and you get video and all hardware work -> update all packages -> armbian-config and move os and boot to nvme -> done!

@SuperKali
Copy link
Copy Markdown
Member

Has anyone successfully used armbian-install to move OS to nvme? For me it just drops into uefi, refuses to boot. sdcard works fine.

You need to go into the BIOS and manually specify the location of the EFI boot file; it doesn't seem to detect it automatically.

@HeyMeco
Copy link
Copy Markdown
Collaborator Author

HeyMeco commented Mar 30, 2026

it doesn't seem to detect it automatically

and that is because we don’t do GPT partitioning and don’t keep the boot partitions efi guid (C12A7328-F81F-11D2-BA4B-00A0C93EC93B). See https://wiki.archlinux.org/title/EFI_system_partition#GPT_partitioned_disks

It is something we are already aware of here: #9454

@EvilOlaf
Copy link
Copy Markdown
Member

just dding the image to nvme works interestingly.

@HeyMeco
Copy link
Copy Markdown
Collaborator Author

HeyMeco commented Mar 30, 2026

just dding the image to nvme works interestingly.

If you don’t keep the storage medium connected from where you installed that is one way currently to keep partition uuid's correct but you have to remove the base storage medium as it will lead to conflict otherwise.

@EvilOlaf
Copy link
Copy Markdown
Member

EvilOlaf commented Mar 30, 2026

I did not dd directly from the microsd but from an actual image which I moved to the sdcard which I booted from beforehand.
Installed gnome via tasksel, GUI works :)
Using 7.0-rc1

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

02 Milestone: First quarter release Hardware Hardware related like kernel, U-Boot, ... Needs review Seeking for review size/large PR with 250 lines or more

Development

Successfully merging this pull request may close these issues.

10 participants