Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .build/images/dietpi-build
Original file line number Diff line number Diff line change
Expand Up @@ -177,9 +177,12 @@ case $HW_MODEL in
104) iname='NanoPiZero2' HW_ARCH=3 PTTYPE='gpt' partition_start=16 root_size='rk35xx';;
105) iname='OrangePi4LTS' HW_ARCH=3 partition_start=16 root_size='rockchip64';;
106) iname='OrangePi5B' HW_ARCH=3 PTTYPE='gpt' partition_start=16 root_size='rockchip64';;
107) iname='OrangePi4Pro' HW_ARCH=3 partition_start=32 root_size='sun60iw2';;
108) iname='OrangePiZero3W' HW_ARCH=3 partition_start=32 root_size='sun60iw2';;
*) Error_Exit "Invalid hardware model \"$HW_MODEL\" passed";;
esac
case $root_size in
'sun60iw2') root_size=600;;
'riscv') root_size=650; (( $DISTRO > 8 )) && ((root_size+=100));;
'meson') root_size=650; (( $DISTRO > 7 && ! $boot_size )) && ((root_size+=50));;
'rockchip') root_size=700;;
Expand Down
28 changes: 25 additions & 3 deletions .build/images/dietpi-installer
Original file line number Diff line number Diff line change
Expand Up @@ -429,6 +429,7 @@ _EOF_
'89' ': Orange Pi 3 LTS'
'96' ': Orange Pi 4A'
'105' ': Orange Pi 4 LTS'
'107' ': Orange Pi 4 Pro'
'80' ': Orange Pi 5'
'106' ': Orange Pi 5B'
'93' ': Orange Pi 5 Pro'
Expand All @@ -438,6 +439,7 @@ _EOF_
'95' ': Orange Pi CM5'
'83' ': Orange Pi Zero 3'
'88' ': Orange Pi Zero 2W'
'108' ': Orange Pi Zero 3W'
'86' ': ASUS Tinker Board 2'
'23' ': Generic Rockchip RK3328'
'24' ': Generic Rockchip RK3399'
Expand Down Expand Up @@ -656,7 +658,7 @@ _EOF_
G_EXEC ln -sf /etc/kernel/post{inst,rm}.d/dietpi-initramfs_cleanup

# SBCs using Armbian build system for kernel/bootloader packages and boot.scr
elif [[ $G_HW_MODEL =~ ^(12|15|16|17|40|42|43|44|45|46|47|48|52|54|55|56|57|58|59|60|63|64|65|66|67|68|72|73|74|76|77|78|79|80|82|83|85|86|87|88|89|90|91|92|93|94|95|96|99|100|101|102|103|104|105|106)$ ]]
elif [[ $G_HW_MODEL =~ ^(12|15|16|17|40|42|43|44|45|46|47|48|52|54|55|56|57|58|59|60|63|64|65|66|67|68|72|73|74|76|77|78|79|80|82|83|85|86|87|88|89|90|91|92|93|94|95|96|99|100|101|102|103|104|105|106|107|108)$ ]]
then
# Amlogic 64-bit
armbian_packages=1
Expand Down Expand Up @@ -820,6 +822,24 @@ setenv rootuuid "true"' /boot/boot.cmd
*) G_EXEC sed --follow-symlinks -i 's/ttyAML0/ttyS0/' /boot/dietpiEnv.txt;;
esac

# Allwinner A733 64-bit vendor
elif [[ $G_HW_MODEL =~ ^(107|108)$ ]]
then
G_CONFIG_INJECT 'setenv kernel_addr_r ' 'setenv kernel_addr_r "0x41000000"' /boot/boot.cmd
G_CONFIG_INJECT 'setenv fdt_addr_r ' 'setenv fdt_addr_r "0x4a000000"' /boot/boot.cmd
G_CONFIG_INJECT 'setenv ramdisk_addr_r ' 'setenv ramdisk_addr_r "0x4b000000"' /boot/boot.cmd '^setenv fdt_addr_r'
G_CONFIG_INJECT 'setenv scriptaddr ' 'setenv scriptaddr "0x4d000000"' /boot/boot.cmd
# Device tree
case $G_HW_MODEL in
107) G_CONFIG_INJECT 'fdtfile=' 'fdtfile=allwinner/sun60i-a733-orangepi-4-pro.dtb' /boot/dietpiEnv.txt;;
108) G_CONFIG_INJECT 'fdtfile=' 'fdtfile=allwinner/sun60i-a733-orangepi-zero3w.dtb' /boot/dietpiEnv.txt;;
*) :;;
esac
# Overlay prefix
G_CONFIG_INJECT 'overlay_prefix=' 'overlay_prefix=sun60i-a733' /boot/dietpiEnv.txt
# Console args
G_EXEC sed --follow-symlinks -i 's/ttyAML0/ttyS0/' /boot/dietpiEnv.txt

# Allwinner H3 (32-bit)
elif [[ $G_HW_MODEL =~ ^(48|59|60|63|64|66)$ ]]
then
Expand Down Expand Up @@ -1191,6 +1211,8 @@ _EOF_
104) model='nanopi-zero2' kernel='rk35xx' branch='vendor';;
105) model='orangepi4-lts' kernel='rockchip64';;
106) model='orangepi5b' kernel='rockchip64';;
107) model='orangepi4pro' kernel='sun60iw2' branch='vendor';;
108) model='orangepizero3w' kernel='sun60iw2' branch='vendor';;
*) G_DIETPI-NOTIFY 1 "Unknown hardware ID \"$G_HW_MODEL\". Aborting ..."; exit 1;;
esac

Expand Down Expand Up @@ -1273,7 +1295,7 @@ fi' /boot/boot.cmd

# Compile U-Boot script
local arch='arm'
(( $G_HW_ARCH == 3 )) && arch='arm64'
(( $G_HW_ARCH == 3 && $G_HW_MODEL != 107 && $G_HW_MODEL != 108 )) && arch='arm64' # Orange Pi Allwinner vendor U-Boot is 32-bit
[[ -f '/boot/boot.cmd' ]] && G_EXEC mkimage -C none -A "$arch" -T script -d /boot/boot.cmd /boot/boot.scr

# Flash U-Boot
Expand Down Expand Up @@ -2039,7 +2061,7 @@ _EOF_'
/boot/dietpi/func/dietpi-set_hardware serialconsole enable ttyAML0

# Allwinner, StarFive, ROCK Pi S, RK3528/RK3576 mainline
elif [[ $kernel == 'sunxi' || $kernel == 'sunxi64' || $G_HW_MODEL =~ ^(73|81|84)$ || ( $G_HW_MODEL =~ ^(102|103|104)$ && $kernel == 'rockchip64' ) ]]
elif [[ $kernel == 'sunxi' || $kernel == 'sunxi64' || $kernel == 'sun60iw2' || $G_HW_MODEL =~ ^(73|81|84)$ || ( $G_HW_MODEL =~ ^(102|103|104)$ && $kernel == 'rockchip64' ) ]]
then
/boot/dietpi/func/dietpi-set_hardware serialconsole enable ttyS0

Expand Down
3 changes: 3 additions & 0 deletions .github/workflows/armbian.yml
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ jobs:
'"kernel sunxi current",'\
'"kernel sunxi64 current",'\
'"kernel sunxi64 edge",'\
'"kernel sun60iw2 vendor",'\
'"kernel odroidxu4 current",'\
'"uboot nanopct4 current",'\
'"uboot nanopct6 current",'\
Expand Down Expand Up @@ -117,6 +118,7 @@ jobs:
'"uboot orangepi4-lts current",'\
'"uboot orangepi4-lts edge",'\
'"uboot orangepi-4a edge",'\
'"uboot orangepi4pro vendor",'\
'"uboot orangepi5 current",'\
'"uboot orangepi5 edge",'\
'"uboot orangepi5 vendor",'\
Expand All @@ -138,6 +140,7 @@ jobs:
'"uboot orangepicm5 vendor",'\
'"uboot orangepizero2w current",'\
'"uboot orangepizero3 current",'\
'"uboot orangepizero3w vendor",'\
'"uboot pine64 current",'\
'"uboot pinebook-a64 current",'\
'"uboot pinebook-pro current",'\
Expand Down
4 changes: 3 additions & 1 deletion .github/workflows/dietpi-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,9 @@ jobs:
'"-m 103 -d 7", "-m 103 -d 8", "-m 103 -d 9",'\
'"-m 104 -d 7", "-m 104 -d 8", "-m 104 -d 9", "-m 104 -d 8 --rk35xx-mainline",'\
'"-m 105 -d 7", "-m 105 -d 8", "-m 105 -d 9",'\
'"-m 106 -d 7", "-m 106 -d 8", "-m 106 -d 9"]' >> "$GITHUB_OUTPUT"
'"-m 106 -d 7", "-m 106 -d 8", "-m 106 -d 9",'\
'"-m 107 -d 7", "-m 107 -d 8", "-m 107 -d 9",'\
'"-m 108 -d 7", "-m 108 -d 8", "-m 108 -d 9"]]' >> "$GITHUB_OUTPUT"
elif [ "${{ github.event.inputs.buildargs }}" = 'quartz64' ]
then
echo buildargs=[\
Expand Down
2 changes: 2 additions & 0 deletions .meta/dietpi-survey_report
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,8 @@ shopt -s extglob # +(expr) syntax
[104]='NanoPi Zero2'
[105]='Orange Pi 4 LTS'
[106]='Orange Pi 5B'
[107]='Orange Pi 4 Pro'
[108]='Orange Pi Zero 3W'
)

## Benchmark data arrays: aBENCH_XX[$HW_MODEL,${aBENCH_XX_INDEX[$HW_MODEL]}]
Expand Down
3 changes: 3 additions & 0 deletions CHANGELOG.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
v10.6
(2026-07-18)

New images:
- Orange Pi 4 Pro / Orange Pi Zero 3W | Support and images for these new SBCs with Allwinner A733 SoC have been added. Mainline Linux support for this SoC is still outstanding, hence Xunlong's Linux 6.6 and U-Boot vendor sources are used.

Enhancements:
- Allwinner/Amlogic/Rockchip SBCs | A driver for certain ASUS USB keyboards has been added to all our kernel builds. Many thanks to @rouilj for reporting the issue with one of these: https://dietpi.com/forum/t/25290
- DietPi-Software | BirdNET-Go: The path to the ONNX runtime library is not set in (re)install to enable access to the additional bird classifier models. This can be also applied manually, following the instructions in the next link. Many thanks to @oradke for reporting this issue: https://github.com/MichaIng/DietPi/issues/8196
Expand Down
3 changes: 3 additions & 0 deletions dietpi/func/dietpi-obtain_hw_model
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
# G_HW_CPUID 10 Rockchip RK3568
# G_HW_CPUID 11 Rockchip RK3588
# G_HW_CPUID 12 Rockchip RK3576
# G_HW_CPUID 13 Allwinner A733
#////////////////////////////////////

#/////////////////////////////////////////////////////////////////////////////////////
Expand Down Expand Up @@ -173,6 +174,8 @@
local model # in case we want to read the revision from /proc/device-tree/model

case $G_HW_MODEL in
108) G_HW_MODEL_NAME='Orange Pi Zero 3W' G_HW_CPUID=13;;
107) G_HW_MODEL_NAME='Orange Pi 4 Pro' G_HW_CPUID=13;;
106) G_HW_MODEL_NAME='Orange Pi 5B' G_HW_CPUID=11;;
105) G_HW_MODEL_NAME='Orange Pi 4 LTS' G_HW_CPUID=3;;
104) G_HW_MODEL_NAME='NanoPi Zero2';;
Expand Down
16 changes: 16 additions & 0 deletions dietpi/func/dietpi-set_hardware
Original file line number Diff line number Diff line change
Expand Up @@ -1152,6 +1152,7 @@ _EOF_
102|103) aBLUETOOTH_MODULES+=('hci_uart');; # NanoPi R76S/M5 official M.2 WiFi card. This kernel module is used by other SBCs, but e.g. on ROCK 4 SE it is needed as well for WiFi: https://github.com/MichaIng/DietPi/issues/6943. On RPi, it is not needed to blacklist it, since it is not loaded with dtoverlay=disable-bt
95) aBLUETOOTH_MODULES+=('btsdio');; # Orange Pi CM5 onboard WiFi
83|88|89|99|105) aBLUETOOTH_MODULES+=('sprdbt_tty');; # Orange Pi Zero 3/Zero 2W/3 LTS/3/4 LTS
107|108) aBLUETOOTH_MODULES+=('aic8800_btlpm');; # Orange Pi 4 Pro/Zero 3W with Xunlong sun60iw2 vendor kernel in-tree AIC8800 driver
87) [[ $G_HW_REVISION == '1.1' ]] && aBLUETOOTH_MODULES+=('sprdbt_tty');; # Orange Pi 3B v1.1
*) :;;
esac
Expand Down Expand Up @@ -1233,6 +1234,11 @@ _EOF_
then
G_EXEC eval 'echo '\''sprdbt_tty'\'' > /etc/modules-load.d/dietpi-enable_bluetooth.conf'
G_AG_CHECK_INSTALL_PREREQ sprd-bluetooth

# - Orange Pi 4 Pro/Zero 3W with Xunlong sun60iw2 vendor kernel in-tree AIC8800 driver module does not load automatically
elif (( $G_HW_MODEL == 107 || $G_HW_MODEL == 108 ))
then
G_EXEC eval 'echo '\''aic8800_btlpm'\'' > /etc/modules-load.d/dietpi-enable_bluetooth.conf'
fi
else
Unknown_Input_Mode
Expand Down Expand Up @@ -1320,6 +1326,11 @@ _EOF_
elif [[ $G_HW_MODEL =~ ^(83|88|89|99|105)$ || ( $G_HW_MODEL == 87 && $G_HW_REVISION == '1.1' ) ]]
then
aWIFI_MODULES+=('sprdwl_ng')

# Orange Pi 4 Pro/Zero 3W with Xunlong sun60iw2 vendor kernel in-tree AIC8800 driver
elif (( $G_HW_MODEL == 107 || $G_HW_MODEL == 108 ))
then
aWIFI_MODULES+=('aic8800_fdrv')
fi

if [[ $INPUT_DEVICE_VALUE == 'disable' ]]; then
Expand Down Expand Up @@ -1362,6 +1373,11 @@ _EOF_
elif [[ $G_HW_MODEL =~ ^(83|88|89|99|105)$ || ( $G_HW_MODEL == 87 && $G_HW_REVISION == '1.1' ) ]]
then
G_EXEC eval 'echo -e '\''cpufreq_dt\nsprdwl_ng'\'' > /etc/modules-load.d/dietpi-enable_wifi.conf'

# - Orange Pi 4 Pro/Zero 3W with Xunlong sun60iw2 vendor kernel in-tree AIC8800 driver module does not load automatically
elif (( $G_HW_MODEL == 107 || $G_HW_MODEL == 108 ))
then
G_EXEC eval 'echo '\''aic8800_fdrv'\'' > /etc/modules-load.d/dietpi-enable_wifi.conf'
fi

# Remove blacklists
Expand Down
2 changes: 2 additions & 0 deletions dietpi/func/dietpi-set_software
Original file line number Diff line number Diff line change
Expand Up @@ -295,6 +295,8 @@ $FP_SCRIPT rpi_kernel_choice <empty> Supported on Debian Bookworm or newer on R
104) all_components='nanopizero2';;
105) all_components='orangepi4lts';;
106) all_components='orangepi5b';;
107) all_components='orangepi4pro';;
108) all_components='orangepizero3w';;
*) :;;
esac
G_EXEC eval "echo 'deb https://dietpi.com/apt $G_DISTRO_NAME $components' > /etc/apt/sources.list.d/dietpi.list"
Expand Down
Loading