Share of Unofficial DietPi - Radxa Zero 3W

Sure! How do I get the image?

I’ve open a new thread and the link is added! :wink:
beware of the reboot trick :sweat_smile:

The script simply check whether ip l lists any WiFi interface. If none is there, the driver for this chip has not loaded (correctly), or other low level issue.

We seem to have the same issue on Orange Pi 5 Plus with 6.1 vendor kernel: Orange Pi 5+ should we have switched kernel? - #7 by b9AcE

Did anyone succeed to get another M.2 WiFi module to work on Radxa ZERO 3? I am wondering whether it is chip-specific or a general issue with mainline Linux and even Linux 6.1. As I mentioned over there, for mainline kernel, an additional device tree node seems to be required to get it working. In case of OPi 5 Plus, it is however the vendor kernel.

Same error has been reported on several other places, even Radxa forum: Wifi not detected - ROCK 4 Series - Radxa Community
So it could be also some chip-specifc issue.

em… actually the wifi chip used on my early version Radxa zero 3W is an AP6212, which is different from the later version equipped with AIC8800.

Is there anything I can help to check?

Okay, I need to be careful to not mix things up. We found that the Linux v6.1 kernel sources from Armbian were missing the RTL8852BE driver, and also Radxa added it not too long ago to their own sources. I made a new build of the kernel package (see above Orange Pi 5+ related topic) with this driver added.

The AP6212 should however work already. For the Orange Pi 5 non-Plus, there is a device tree overlay required to enable it, on Plus and also Radxa ZERO 3 however it is enabled OOTB: linux-rockchip/arch/arm64/boot/dts/rockchip/rk3566-radxa-zero3.dts at 2ef3143a76574ff6093c736f7c346f68cc5489cc · armbian/linux-rockchip · GitHub

Still, for Radxa ZERO 3, there is another device tree (not just overlay), explicitly for AP6212: linux-rockchip/arch/arm64/boot/dts/rockchip/rk3566-radxa-zero3-ap6212.dts at 2ef3143a76574ff6093c736f7c346f68cc5489cc · armbian/linux-rockchip · GitHub
It configures the node slightly different, especially sets wifi_chip_type = "ap6212";. However this is true in your case already. With Armbian’s Rockchip Linux 5.10 kernel sources, it is exactly the same.

So just to clarify, did the M.2 WiFi module with AP6212 every work for you on a Radxa ZERO 3 with any image? AIC8800 would be a different case to investigate. wifi_chip_type = "ap6212"; might then even be the issue, or again a missing driver.

… remembering the U-Boot error message posted on GitHub: Image | Radxa ZERO 3 · Issue #7024 · MichaIng/DietPi · GitHub

Failed to load '/boot/dtb/rockchip/rk3566-radxa-zero-3w-aic8800ds2.dtb'

Here is the device tree for this particular chip from Radxa sources: kernel/arch/arm64/boot/dts/rockchip/rk3566-radxa-zero-3w-aic8800ds2.dts at a2c6058d51d9ff269460c2268dbd967cbedbe43a · radxa/kernel · GitHub
So similar to AP6212, a dedicated device tree exists. Interestingly, the wireless_wlan node of that one matches exactly the default device tree from Armbian kernel sources. The default one from Radxa defines AP6212 explicitly. Seems more logic what Armbian does … so based on that, it AIC8800 should work OOTB with Armbian kernel, if the driver (and in case firmware) is present, while with Radxa kernel you need to switch the device tree.

So in case you were using the Radxa image so far. Please test our Linux 5.10 based ZERO 3 image, based on Armbian kernel sources, which seems to be configured to support AIC8800 OOTB: Index of /downloads/images/testing

And another image to test, again based on Linux 6.1: https://dietpi.com/downloads/images/testing/DietPi_RadxaZERO3-ARMv8-Bookworm_Linux6.1.img.xz

Nice works and thanks Michalng!
However, I do not have the AIC8800 chip version on hand.

From my previous conversion from Radxa stock image to Dietpi through script, I remember that the wifi AP6212 do not work OOTB after conversion. I need to manually copy the wifi firmware from stock image to Dietpi after conversion. Similar thing happened for the armbian image conversion, too.

Ah okay, firmware is missing. Are those binaries hosted somewhere? We could theoretically patch them into our builds or armbian-firmware.

EDIT: Let’s keep discussion on GitHub. I am confused with the multiple Radxa ZERO 3 related threads :smile:.

Hello MichaIng,

it seems that current DietPi-Raxda-Zero-3W-Images support AP6212 (in dtb), but not AIC8800 (not in dtb).

This is fine for most boards, since in Germany most boards have AP6212. Unfortunatly I have a new China-Import with AIC8800.

So Wifi works (with Wifi-6 and 600mbit), but Bluetooth does not. (Neither with DietPi nor Armbian.)

What can I do to get it working?

thanks in advance

It should support both OOTB, since our U-Boot build picks the correct device tree based on hardware identifiers: radxa-zero3: fix U-Boot dtb choice for Armbian kernel builds · MichaIng/build@d8a8e28 · GitHub

  • rk3566-radxa-zero3.dtb supports AIC8800
  • rk3566-radxa-zero3-ap6212.dtb is self-explaining

Does it not work for you?
EDIT: Ah, you mean only Bluetooth does not work. I remember it requires some additional firmware (device tree and driver is all there).

(thanks for immediate support)

Yes, only Bluetooth doesn’t work. Wifi works with the wifi-6-speed of the AIC8800. So I would guess, that BT-firmware is missing. (well known in Linux also from other Bluetooth-Devices like USB-Dongles…)

…and the same behaviour in Armbian BTW…
(tested a few days ago)

The firmware is actually all there, AFAICS.

Can you check for kernel errors:

dmesg -l 0,1,2,3

If there is nothing related:

dmesg | grep -E 'aic8800|bt'
[   15.228950] usbcore: registered new interface driver usbtouchscreen
[   16.030831] [WLAN_RFKILL]: rfkill_set_wifi_bt_power: 1
[   16.060205] [BT_RFKILL]: Request irq for bt wakeup host
[   16.072939] [BT_RFKILL]: bt shut off power
[   16.077198] [BT_RFKILL]: bt_default device registered.
[   22.207468] rwnx_load_firmware :firmware path = /lib/firmware/aic8800/SDIO/aic8800D80//fw_patch_table_8800d80_u02.bin  
[   22.302268] rwnx_load_firmware :firmware path = /lib/firmware/aic8800/SDIO/aic8800D80//fw_adid_8800d80_u02.bin  
[   22.307482] rwnx_load_firmware :firmware path = /lib/firmware/aic8800/SDIO/aic8800D80//fw_patch_8800d80_u02.bin  
[   22.340173] aicbt_patch_table_load bt btmode[3]:5 
[   22.340181] aicbt_patch_table_load bt uart_baud[3]:1500000 
[   22.340184] aicbt_patch_table_load bt uart_flowctrl[3]:1 
[   22.340187] aicbt_patch_table_load bt lpm_enable[3]:0 
[   22.340190] aicbt_patch_table_load bt tx_pwr[3]:28463 
[   22.345375] aicbsp: bt patch version: - Nov 06 2023 12:44:17 - git 1f5d13b
[   22.345528] rwnx_load_firmware :firmware path = /lib/firmware/aic8800/SDIO/aic8800D80//fmacfw_8800d80_u02.bin  
[   22.461723] [BT_RFKILL]: bt shut off power

but an error (?9 occurs here:

[   16.030835] [WLAN_RFKILL]: Exit rfkill_wlan_probe
[   16.032204] [BT_RFKILL]: bluetooth_platdata_parse_dt: get property: uart_rts_gpios = 77.
[   16.043450] [BT_RFKILL]: bluetooth_platdata_parse_dt: get property: BT,reset_gpio = 17.
[   16.047659] [BT_RFKILL]: bluetooth_platdata_parse_dt: get property: BT,wake_gpio = 12.
[   16.051840] [BT_RFKILL]: bluetooth_platdata_parse_dt: get property: BT,wake_host_irq = 11.
[   16.055989] [BT_RFKILL]: bluetooth_platdata_parse_dt: clk_get failed!!!.
[   16.060205] [BT_RFKILL]: Request irq for bt wakeup host
[   16.060219] mmc_host mmc1: Bus speed (slot 0) = 148500000Hz (slot req 150000000Hz, actual 148500000HZ div = 0)
[   16.064406] [BT_RFKILL]: ** disable irq
[   16.072939] [BT_RFKILL]: bt shut off power
[   16.077198] [BT_RFKILL]: bt_default device registered.
[   16.081695] Key type dns_resolver registered

It seems to be disabled by rfkill. We ship images without any soft block, but it may have been hard blocked:

apt install rfkill
rfkill list # to see block statuses
rfkill unblock bluetooth

thanks again

this released the locks on bluetooth, but didn’t solve the problem.

here the log from Your first dmesg-line for kernel errors:

[ 11.937857] fiq_debugger fiq_debugger.0: IRQ fiq not found
[ 11.937919] fiq_debugger fiq_debugger.0: IRQ wakeup not found
[ 11.937955] fiq_debugger_probe: could not install nmi irq handler
[ 13.784334] mpp-iep2 fdef0000.iep: allocate roi buffer failed
[ 13.803695] arm-scmi firmware:scmi: Failed. SCMI protocol 22 not active.
[ 13.824564] dwhdmi-rockchip fe0a0000.hdmi: IRQ index 1 not found
[ 14.196576] no ATF memory for init
[ 14.220970] no ATF memory for init
[ 14.232413] rk_gmac-dwmac fe010000.ethernet: no regulator found
[ 15.087320] Error: Driver ‘Goodix-TS’ is already registered, aborting…
[ 15.375903] rk817-battery rk817-battery: Failed to find matching dt id
[ 15.391051] rk817-charger rk817-charger: Failed to find matching dt id
[ 15.466134] OF: graph: no port node found in /i2c@fe5c0000/fusb302@22
[ 15.639379] arm-scmi firmware:scmi: Failed. SCMI protocol 17 not active.
[ 15.813816] mmc1: tuning execution failed: -5
[ 16.067026] mpp_rkvenc fdf40000.rkvenc: Failed to get leakage
[ 16.084069] mpp_rkvenc fdf40000.rkvenc: failed to find power_model node
[ 16.088127] mpp_rkvenc fdf40000.rkvenc: failed to initialize power model
[ 16.092076] mpp_rkvenc fdf40000.rkvenc: failed to get dynamic-coefficient
[ 16.109008] mpp_rkvdec2 fdf80200.rkvdec: shared_niu_a is not found!
[ 16.112418] rkvdec2_init:1022: No niu aclk reset resource define
[ 16.115807] mpp_rkvdec2 fdf80200.rkvdec: shared_niu_h is not found!
[ 16.119196] rkvdec2_init:1025: No niu hclk reset resource define
[ 16.142487] mpp_rkvdec2 fdf80200.rkvdec: failed to find power_model node
[ 16.145416] mpp_rkvdec2 fdf80200.rkvdec: failed to initialize power model
[ 16.148308] mpp_rkvdec2 fdf80200.rkvdec: failed to get dynamic-coefficient
[ 16.174766] mali fde60000.gpu: IRQ JOB not found
[ 16.177485] mali fde60000.gpu: IRQ MMU not found
[ 16.180197] mali fde60000.gpu: IRQ GPU not found
[ 16.185309] mali fde60000.gpu: Insufficient register space, will override to the required size
[ 16.190414] mali fde60000.gpu: Register window unavailable
[ 16.195462] mali fde60000.gpu: Failed to map registers
[ 16.200511] mali fde60000.gpu: Register map failed error = -5
[ 16.205578] mali fde60000.gpu: Device initialization failed
[ 16.239961] rockchip-dmc dmc: failed to get vop pn to msch rl
[ 16.245877] rockchip-dmc dmc: could not find power_model node
[ 22.501573] aicbsp: sdio_err:<aicwf_sdio_bus_pwrctl,1382>: bus down
[ 23.226322] ieee80211 phy0:
*******************************************************
** CAUTION: USING PERMISSIVE CUSTOM REGULATORY RULES **
*******************************************************

Some Hardware Information:

Raxda Zero 3W

  • 8GB RAM
  • 64GB eMMC (not used at this time)
  • AIC8880 Wifi-6/BT5.4
  • booting from MicroSD

currently running in ‘conservative’ power mode

at this moment I found the following note
from raxda/armbian:

If you have a Radxa Zero with eMMC (any model with 2GB or 4GB of RAM), you’ll need to erase the eMMC before you can boot it from a microSD card and use Armbian. 1GB version is not supported.

Full instructions are available on the Radxa wiki, but here are some quick notes.

Maybe the unerased eMMC is harmful in a subtle way…?!