Yes but this is the armbian image proposal for this device.
I also tried to build my own trixie image with the armbian builder because my old dietpi installer script rejected forky, same issue with minipcie.
I made some test and a minipcie card “hotplug” while running detect the lte modem so it’s looklike a powering sequence delay problem (USB phy need to be up before releasing LTE_RESET)
So as far as I can see, you do not need all this DKMS hassle. WiFi should work OOTB. That Armbian’s board configs enable this extension unconditionally in all board configs where this chip is used for onboard WiFi, is basically a bug. It is needed (in vanilla Armbian) only for mainline Linux builds (not yet supported for these reComputer boards), or if needed for USB or M.2 cards (which I never heard of being relevant). And if you use DietPi and can use mainline Linux, you do not need the DKMS driver at all.
And yes, especially for a public tutorial, prefer Debian Trixie. The only good reason to use Forky is if you need GPU/VPU acceleration via Mesa, and Mesa on Trixie does not support it well yet, there are no Trixie-backports which do, and Forky does. Not sure about it in case of RK3576. If you have no GPU applications and do not do video streaming, Forky (Debian testing) adds quite some upgrade/migration/transition hassle for regular users, not advised if you do not know well how APT and dpkg work, and do not need to use edge software versions.
Hi MichaIng,
thanks for your very informative reply.
my only try was to compile armbian with kernel configure on (menu config) ./compile.sh BOARD=recomputer-rk3576-devkit BRANCH=vendor RELEASE=trixie BUILD_MINIMAL=yes BUILD_DESKTOP=no KERNEL_CONFIGURE=yes ENABLE_SEEED_RK_EXTENSION=yes OTA_ENABLE=no
i change “m” to “*” for in tree AIC8800 wifi driver and wifi was not autodetected at dietpi bootup. Maybe i miss some logic about sdio wifi driver.
Also AIC8800 is embedded in a quectel module FCS960K with bluetooth, so maybe dkms is easier for debug and dev testing.
About graphics needs or new thing, i’ m only want to test NPU for run small local A2B LLM but i’m not sure if this NPU is ready like RK3588.
I agree trixie preference.
Also thanks for all you dietpi project, i use this free of shit distrib on my home router and on my VPS. Very stable, free of mind, easy to backup so thanks you very much MichaIng and all the team
m is the right value, i.e. it should be enabled by default as module. Check via modinfo aic8800_fdrv whether the module has been compiled, and via lsmod | grep aic8800 whether it has been loaded, else try via modprobe aic8800_fdrv.
It is the exact same driver from the same sources. The only thing, maybe it is not the AIC8800D80 chip, but the AIC8800D80N or AIC8800D80X2? Can you check dmesg whether you see which chip it is, or which firmare it loads?
Since the driver only takes a subdir as firmware dir, the blobs would need to be merged into a single dir. But that is possible, since the blobs all have individual names based on the chip revision.
Since we do not support the reComputer boards directly, this is not something I’ll do for now. But it might become relevant later, and as hint if anyone else aims to tackle it. IMO absolutely worth to prevent users from the need to fiddle with DKMS, requiring kernel headers and dev tools, adding significant time and load to every kernel upgrade, and another point of failure, like if the headers do not work, which was the case with the vendor kernel for some months in the past. In that stage of an upgrade failure, especially with vanilla Armbian kernel packages, the device could be unbootable if crashing or rebooted, until the full package configuration incl. DKMS driver build finished.
This the default value in armbian build and when i execute dietpi installer script, all driver ko modules was gone. I use “debian” and “generic device”. this why i try to include the wifi driver inside the kernel with * instead of m
[ 14.330060] aic8800_bsp: loading out-of-tree module taints kernel.
[ 14.331389] aicbsp_init
[ 14.331400] RELEASE_DATE:2026_0123_5f7be68d
[ 14.331403] aicbsp_resv_mem_init
[ 14.489626] input: rk805 pwrkey as /devices/platform/2ac40000.i2c/i2c-1/1-0023/rk805-pwrkey.1.auto/input/input6
[ 14.497098] aicbsp: aicbsp_set_subsys, subsys: AIC_WIFI, state to: 1
[ 14.497114] aicbsp: aicbsp_set_subsys, power state change to 1 dure to AIC_WIFI
[ 14.497119] aicbsp: aicbsp_platform_power_on
[ 14.551090] aicbsp: aicbsp_sdio_probe:1 vid:0xC8A1 did:0x0082
[ 14.551225] aicbsp: aicbsp_sdio_probe:2 vid:0xC8A1 did:0x0182
[ 14.551234] aicbsp: aicbsp_sdio_probe after replace:1
[ 14.551238] aicbsp: aicbsp_get_feature, set FEATURE_SDIO_CLOCK 150 MHz
[ 14.551242] aicbsp: aicwf_sdio_reg_init
[ 14.552104] rwnx_load_firmware :firmware path = /lib/firmware/aic8800/SDIO/aic8800D80//fw_patch_table_8800d80_u02.bin
[ 14.562662] file md5:0e6fd98c0a89c62ebd4c1a430fafa59f]
I totally agree with your goal of predictability and simplicity to keep dietpi efficient and stable.
I just put this Wifi Tips, not a tutorial grade, because i was looking a solution, and i share my humble result, maybe moving this topic for better place?
That should not be the case. The kernel modules are part of the kernel package. If that was removed, the device wouldn’t boot at all. Either this particular module is present in the resulting kernel package, or it is not. But by default, it should be, and it is for our own builds where we do not touch the defconfig.
So luckily it is the AIC8800D80. Let’s check again regarding the kernel module:
# CONFIG_SCSI_AIC7XXX is not set
# CONFIG_SCSI_AIC79XX is not set
# CONFIG_SCSI_AIC94XX is not set
CONFIG_AIC_WLAN_SUPPORT=y
CONFIG_AIC_FW_PATH="/lib/firmware/aic8800/SDIO/aic8800D80/"
CONFIG_AIC8800_WLAN_SUPPORT=m
CONFIG_AIC8800_BTLPM_SUPPORT=m
CONFIG_VIDEO_TLV320AIC23B=m
# CONFIG_SND_SOC_TLV320AIC23_I2C is not set
# CONFIG_SND_SOC_TLV320AIC23_SPI is not set
# CONFIG_SND_SOC_TLV320AIC31XX is not set
# CONFIG_SND_SOC_TLV320AIC32X4_I2C is not set
# CONFIG_SND_SOC_TLV320AIC32X4_SPI is not set
# CONFIG_SND_SOC_TLV320AIC3X_I2C is not set
# CONFIG_SND_SOC_TLV320AIC3X_SPI is not set
So weird, indeed I checked the package content at Index of /apt/pool/main/l/linux-6.1.115/ as well and it does not contain the modules, despite the config showing the keys are valid and set correctly (just like in the regular vendor kernel).
The linux-image-vendor-rk35xx package on the other hand, with same effective config, does contain the modules. So there must be some patch which renders the keys ineffective, or removes the modules somehow as post build step, without actually removing the driver from the sources.
But I checked again: Both use the same source repo, same branch, same patch directory, and the defconf has only minimal differences, unrelated to AIC8800 drivers.
So this is not an Armbian image, but a vendor image put on top of the Armbian build system, with all the often weird and intransparent custom surprises implied. I do not see where it happens, but it looks like the in-tree driver modules are actively removed from the kernel build somewhere among all these vendor patches (instead of disabling it properly via defconf). So the kernel config will surely result in the driver built, but the modules removed afterwards. You might find it in the build logs somewhere, searching for “aic8800”. You might want to test a build without ENABLE_SEEED_RK_EXTENSION=yes to skip at least this external repo, though one particular patch regarding added U-Boot blobs might be necessary.
If you find the part in the logs where the modules are removed, or do not find them being compiled as part of the package build, that would give a hint where to look at to fix this nonsense.
Yep, this bsp kernel seem to be a great crap! I try the rknpu thing and it’s does not work as rk3588, npu is different, yeah again die area wasted!
No vulcan driver enable …
Anyway i try to build mainline kernel and i will waiting for CSI driver, the only driver missing for my usage. I don’t find AIC8800 driver … anyway with the bsp kernel wifi connection wasn’t stable if use the standard gouvernor but if i set fixed cpu frequency its looklike a little better.
In other hand, the flipper one use the same RK3576 and looklike they will add this seedstudio recomputer on the supported device soon, so maybe it 's will be a better build for mainline, as they are more conscern about security Build system - Flipper One Documentation
Try BRANCH=vendor, but skip ENABLE_SEEED_RK_EXTENSION=yes. I would assume the Rockchip vendor kernel RKNPU does support the RK3576 NPU. And if there is no other mechanism which removes the AIC8800 driver that is enabled by default for the vendor kernel, it should be included.
With mainline Linux (“current”, “edge”, “bleedingedge”) it cannot work, since there is no device tree for this device.
The compilation build use native x64 compiler instead arm64 for building the aic8800 module :
cat /mnt/img2/var/lib/dkms/aic8800-sdio/5.0+git20260123.5f7be68d-6/6.1.115-vendor-seeed-rk3576/aarch64/log/make.log
Building module(s)
# command: make -j8 KERNELRELEASE=6.1.115-vendor-seeed-rk3576 -C /lib/modules/6.1.115-vendor-seeed-rk3576/build M=/var/lib/dkms/aic8800-sdio/5.0+git20260123.5f7be68d-6/build/SDIO/driver_fw/driver/aic8800
warning: the compiler differs from the one used to build the kernel
The kernel was built by: aarch64-linux-gnu-gcc (Debian 14.2.0-19) 14.2.0
You are using: gcc (Debian 14.2.0-19) 14.2.0
MODPOST /var/lib/dkms/aic8800-sdio/5.0+git20260123.5f7be68d-6/build/SDIO/driver_fw/driver/aic8800/Module.symvers
CC [M] /var/lib/dkms/aic8800-sdio/5.0+git20260123.5f7be68d-6/build/SDIO/driver_fw/driver/aic8800/aic8800_bsp/aic8800_bsp.mod.o
CC [M] /var/lib/dkms/aic8800-sdio/5.0+git20260123.5f7be68d-6/build/SDIO/driver_fw/driver/aic8800/aic8800_btlpm/aic8800_btlpm.mod.o
CC [M] /var/lib/dkms/aic8800-sdio/5.0+git20260123.5f7be68d-6/build/SDIO/driver_fw/driver/aic8800/aic8800_fdrv/aic8800_fdrv.mod.o
LD [M] /var/lib/dkms/aic8800-sdio/5.0+git20260123.5f7be68d-6/build/SDIO/driver_fw/driver/aic8800/aic8800_fdrv/aic8800_fdrv.ko
LD [M] /var/lib/dkms/aic8800-sdio/5.0+git20260123.5f7be68d-6/build/SDIO/driver_fw/driver/aic8800/aic8800_bsp/aic8800_bsp.ko
LD [M] /var/lib/dkms/aic8800-sdio/5.0+git20260123.5f7be68d-6/build/SDIO/driver_fw/driver/aic8800/aic8800_btlpm/aic8800_btlpm.ko
BTF [M] /var/lib/dkms/aic8800-sdio/5.0+git20260123.5f7be68d-6/build/SDIO/driver_fw/driver/aic8800/aic8800_btlpm/aic8800_btlpm.ko
Skipping BTF generation for /var/lib/dkms/aic8800-sdio/5.0+git20260123.5f7be68d-6/build/SDIO/driver_fw/driver/aic8800/aic8800_btlpm/aic8800_btlpm.ko due to unavailability of vmlinux
BTF [M] /var/lib/dkms/aic8800-sdio/5.0+git20260123.5f7be68d-6/build/SDIO/driver_fw/driver/aic8800/aic8800_bsp/aic8800_bsp.ko
Skipping BTF generation for /var/lib/dkms/aic8800-sdio/5.0+git20260123.5f7be68d-6/build/SDIO/driver_fw/driver/aic8800/aic8800_bsp/aic8800_bsp.ko due to unavailability of vmlinux
BTF [M] /var/lib/dkms/aic8800-sdio/5.0+git20260123.5f7be68d-6/build/SDIO/driver_fw/driver/aic8800/aic8800_fdrv/aic8800_fdrv.ko
Skipping BTF generation for /var/lib/dkms/aic8800-sdio/5.0+git20260123.5f7be68d-6/build/SDIO/driver_fw/driver/aic8800/aic8800_fdrv/aic8800_fdrv.ko due to unavailability of vmlinux
I don’t understand why the module is build in dkms directory instead /lib/modules/…
Thanks i will try this good tip.
I see good move on flipper one build mainline tree, like a vibe coded driver for MIPI CSI done from rk3588 mipi driver as input code (NDA free).
Can I use a BSP uboot with mainline kernel? I read somewhere in armbian documentation that is possible to specify a personnal git repository for kernel for building armbian.
I edit config/kernel/linux-rk35xx-vendor.config and config/kernel/linux-seeed-rk3576-vendor.config
to add at line around 900 CONFIG_AIC_WLAN_SUPPORT=y
I run the build script ./compile.sh BOARD=recomputer-rk3576-devkit BRANCH=vendor RELEASE=trixie BUILD_MINIMAL=yes BUILD_DESKTOP=no KERNEL_CONFIGURE=yes
and after exiting menuconfig and while starting building, i need to patch on other terminal this one :
sudo nano ./cache/sources/linux-kernel-worktree/6.1__seeed-rk3576__arm64/drivers/net/wireless/Makefile