This repo has already simplified the build process.
Please download the official Linux 6.18.y code from tar or git to a parallel folder linux-6.18.y. And follow the general steps here:
git clone https://github.com/alexcaoys/allwinner-bsp.git -b linux-6.18.y --single-branch allwinner-bsp
cd linux-6.18.y
ln -s ../allwinner-bsp/ ./bsp
git apply ./bsp/patches/*.patch
cp ./bsp/configs/linux-6.18/*.dts* arch/arm64/boot/dts/allwinner/
cp ./bsp/configs/linux-6.18/defconfig .config
export BSP_TOP=$PWD/bsp/This is for native ARM64 compile:
make menuconfig
# to build ARM64 Image
make
# Or to build deb packages
make bindeb-pkgCROSS_COMPILE (on Ubuntu):
sudo apt install build-essential gcc-aarch64-linux-gnu
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- menuconfig
# to build ARM64 Image
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-
# Or to build deb packages, you might need some additional packages
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- bindeb-pkg
# Check if it asks for more packages, you might need the following to install arm64 packages
sudo dpkg --add-architecture arm64
# You might need to add http://ports.ubuntu.com/ubuntu-ports to /etc/apt/sources.list.d/ubuntu.sources here
sudo apt updateEverything here is tested on Radxa Cubie A7Z, I only have this device so I didn't really worked on device tree for A7A and A7S, PR welcome here.
This table adapts this page from linux-sunxi: https://linux-sunxi.org/Linux_mainlining_effort
| Driver | device-tree | Status | Note | |
|---|---|---|---|---|
| A733 | ||||
| ADC | GPADC | gpadc0 | BSP | |
| LRADC | lradc | OFF | ||
| Thermal | ths | BSP | ||
| Audio | sound | sunxi-snd* | BSP | Untested |
| Camera | vin | sunxi-vin* | UNK | [1] |
| Clocks | CCUs | *ccu | BSP | MAIN WIP[7] |
| CPUFreq | PATCH | |||
| CPUIdle | UNK | No drivers | ||
| Crypto | sunxi-ce | OFF | ||
| DRM | DE | display-engine | BSP | |
| DI | deinterlace | BSP | ||
| DSI | dsi*(combophy) | UNK | ||
| EDP | sunxi-edp | BSP | ||
| HDMI | sunxi-hdmi | BSP | ||
| LVDS | lvds* | OFF | ||
| RGB | rgb* | OFF | ||
| TCON | tcon-* | BSP | ||
| DMA | dma-v106 | BSP | ||
| ETH | GMAC | gmac* | OFF | |
| GPU | PowerVR | img-bxm-4-64 | PATCH | [2] |
| HW Spinlocks | hwspinlock | OFF | ||
| I2C | sun55i-a523-i2c | MAIN | Same as A523 | |
| IOMMU | iommu-v20 | BSP | ||
| IR | IR RX | irrx | UNK | |
| IR TX | irtx | OFF | ||
| LEDC | sunxi-leds | BSP | ||
| MsgBox | msgbox | OFF | ||
| NPU | npu | PATCH | Untested[3] | |
| NSI | sunxi-nsi | BSP | What's this? | |
| PCIE | pcie | BSP | Untested | |
| Pinctrl | *-pinctrl | BSP | MAIN WIP[8] | |
| PMU | A55&A76 | *-pmu | MAIN | |
| PCK600 | pck600 | MAIN | 7.1[11] | |
| PWM | sunxi-pwm* | BSP | ||
| RTC | rtc* | BSP | MAIN WIP[9] | |
| SERDES | cadence-* | BSP | USB DP PCIE PHY | |
| SID | EFUSE | sunxi-sid | BSP | Untested |
| SPI | sunxi-spi* | BSP | Untested | |
| Storage | SD/MMC | sunxi-mmc* | BSP | [4] |
| UFS | sunxi-ufs* | BSP | Untested | |
| Timer | SOC | soc_timer0 | BSP | |
| UART | uart* | MAIN | ||
| USB | USB | *hci* | BSP | |
| USB OTG | sunxi-udc/otg | BSP | ||
| USB 3.0 | dwc3 | BSP | [5] | |
| VE | sunxi-cedar-ve | BSP | Untested | |
| Watchdog | wdt-v103 | BSP | Untested | |
| WIFI/BT | aic8800 | BSP | Radxa PKG[6] | |
| A7Z Specific | ||||
| USB-C | PHY Switcher | phy_switcher | BSP | |
| Controller | et7304 | MAIN | 7.1[12] | |
| AXP PMU | axp8191 | BSP | MAIN WIP[10] |
Status:
- BSP: BSP drivers ported for 6.18.y
- MAIN: Mainline 6.18 drivers or backported 7.x drivers (in patch)
- PATCH: Off mainline patch
- OFF: Disabled on Radxa config and/or Radxa device tree
- UNK: Unknown, disabled now, but enabled on Radxa config/dt
[1] Didn't port VIN Drivers since I don't have any camera to test.
[2] Mainline Driver for BXM works, but patch for pck600 is needed (disable power_off).
[3] Mainline vivante,gc can be detected, but need extra clocks & resets.
[4] Mainline allwinner,sun55i-a523-mmc exists, might need more work.
[5] Mainline dwc exists, please check linux-sunxi website.
[6] Drivers incldued here is from Radxa repo. See below.
[7] https://lore.kernel.org/linux-sunxi/20260121-a733-rtc-v1-0-d359437f23a7@pigmoral.tech/
[7] https://lore.kernel.org/linux-sunxi/20260310-a733-clk-v1-0-36b4e9b24457@pigmoral.tech/
[8] https://lore.kernel.org/linux-sunxi/20250821004232.8134-1-andre.przywara@arm.com/
[9] https://lore.kernel.org/linux-sunxi/20260121-a733-rtc-v1-0-d359437f23a7@pigmoral.tech/
[10] https://lore.kernel.org/linux-sunxi/20250813235330.24263-1-andre.przywara@arm.com/
[11] https://lore.kernel.org/linux-sunxi/20260305-b4-pck600-a733-v2-0-ba6bbed7d253@gmail.com/
[12] https://lore.kernel.org/linux-usb/20260220-et7304-v3-0-ede2d9634957@gmail.com/
[12] https://lore.kernel.org/linux-usb/20260318-husb311-v4-0-69e029255430@flipper.net/
It looks like the Imagination driver on Linux 6.18 is working fine on A733.
After putting the firmware here to the correct place, it will load the driver.
After building the Mesa driver using the Mesa main branch, vulkaninfo can see the GPU, Wayland sway using GLES works, vkmark runs on screen.
Thanks icenowy & iuncuim for the help on debugging.
Radxa maintains a separate repo for drivers for AIC8800. The release there should work well with Debian-based distros.
Since this is on top of USB, it is not on device tree. Drivers included here is stripped from Radxa repo (I think it's this release)
Firmware is also needed. Please put the firmware here in the correct place. (dmesg will also warn you if driver didn't find them)