Support Orange Pi 4A

This commit is contained in:
baiywt
2024-07-04 09:22:22 +08:00
parent ca72325974
commit 0a00a8bc4d
40 changed files with 33698 additions and 171 deletions

11
external/config/boards/orangepi4a.conf vendored Executable file
View File

@@ -0,0 +1,11 @@
# Allwinner T527 quad core 2GB/4GB RAM
BOARD_NAME="OPI 4A"
BOARDFAMILY="sun55iw3"
BOOTCONFIG="sun55iw3p1_t527_defconfig"
BOOT_FDT_FILE="allwinner/sun55i-t527-orangepi-4a.dtb"
MODULES="bcmdhd vin_v4l2"
KERNEL_TARGET="current"
DISTRIB_TYPE_CURRENT="bookworm jammy"
BOOT_LOGO="desktop"
REVISION="1.0.0"
SRC_EXTLINUX="yes"

View File

@@ -31,3 +31,4 @@ ucf
udev
whiptail
wireless-regdb
dconf-cli

View File

@@ -19,3 +19,6 @@ sysfsutils
toilet
u-boot-tools
usbutils
libpython3-dev
python3-dev
python3.11-venv

View File

@@ -1,180 +1,41 @@
anacron
apt-config-auto-update
apt-xapian-index
at-spi2-core
bubblewrap
colord
cups
dbus-x11
dictionaries-common
dmz-cursor-theme
evolution-data-server
evolution-data-server-common
fonts-freefont-ttf
fonts-urw-base35
dconf-cli
eject
foomatic-db-compressed-ppds
gcr
fonts-noto-cjk
fonts-ubuntu
fonts-ubuntu-console
gdebi
gdm3
genisoimage
geoclue-2.0
ghostscript
ghostscript-x
gir1.2-accountsservice-1.0
gir1.2-atspi-2.0
gir1.2-gck-1
gir1.2-gcr-3
gir1.2-gdesktopenums-3.0
gir1.2-gdm-1.0
gir1.2-geoclue-2.0
gir1.2-gnomebluetooth-1.0
gir1.2-gnomedesktop-3.0
gir1.2-goa-1.0
gir1.2-graphene-1.0
gir1.2-gweather-3.0
gir1.2-ibus-1.0
gir1.2-json-1.0
gir1.2-mutter-7
gir1.2-nm-1.0
gir1.2-nma-1.0
gir1.2-polkit-1.0
gir1.2-rsvg-2.0
gir1.2-snapd-1
gir1.2-soup-2.4
gir1.2-upowerglib-1.0
gjs
gnome-calculator
gnome-control-center
gnome-disk-utility
gnome-desktop3-data
gnome-keyring
gnome-menus
gnome-packagekit
gnome-screenshot
gnome-disk-utility
gnome-system-monitor
gnome-terminal
gnome-session
gnome-session-bin
gnome-session-common
gnome-settings-daemon
gnome-settings-daemon-common
gnome-shell
gnome-shell-common
gnome-shell-extension-appindicator
gnome-shell-extension-desktop-icons
gnome-shell-extension-trash
gvfs-backends
gvfs-bin
hunspell-en-us
inputattach
libaccountsservice0
libasound2
libasound2-plugins
libaspell15
libatk-adaptor
libcairo-gobject-perl
libcairo-perl
libcamel-1.2-62
libcue2
libdee-1.0-4
libebackend-1.2-10
libebook-1.2-20
libebook-contacts-1.2-3
libecal-2.0-1
libedata-book-1.2-26
libedata-cal-2.0-1
libedataserver-1.2-25
libedataserverui-1.2-2
libenchant-2-2
libexempi8
libexiv2-27
libextutils-depends-perl
libextutils-pkgconfig-perl
libfontenc1
libgck-1-0
libgcr-base-3-1
libgcr-ui-3-1
libgdata22
libgdata-common
libgdm1
libgeoclue-2-0
libgeocode-glib0
libgexiv2-2
libgjs0g
libglib-object-introspection-perl
libglib-perl
libglu1-mesa
libgnome-autoar-0-0
libgnome-bluetooth13
libgnome-desktop-3-19
libgoa-1.0-0b
libgoa-1.0-common
libgraphene-1.0-0
libgs9
libgs9-common
libgsf-1-114
libgsf-1-common
libgtk3-perl
libgweather-3-16
libgweather-common
libgxps2
libibus-1.0-5
libical3
libidn11
libijs-0.35
libimobiledevice6
libjavascriptcoregtk-4.0-18
libjbig2dec0
libmutter-7-0
libnautilus-extension1a
libnma0
libnotify-bin
libpaper1
libphonenumber8
libplist3
libpoppler-glib8
libprotobuf23
libpulsedsp
libsasl2-modules
libspeexdsp1
libtext-iconv-perl
libtotem-plparser18
libtotem-plparser-common
libtracker-control-2.0-0
libtracker-miner-2.0-0
libtracker-sparql-2.0-0
libu2f-udev
libunwind8
libupower-glib3
libusbmuxd6
libwebkit2gtk-4.0-37
libxaw7
libxfont2
libxkbfile1
libxmu6
libxmuu1
libxtst6
libxxf86dga1
libyelp0
mutter
mutter-common
lm-sensors
nautilus
nautilus-data
openprinting-ppds
p11-kit
p11-kit-modules
pavucontrol
pinentry-gnome3
poppler-data
printer-driver-pnm2ppa
profile-sync-daemon
pulseaudio
pulseaudio-module-bluetooth
pulseaudio-utils
python3-click
python3-colorama
python3-dateutil
python3-debconf
python3-debian
python3-distutils
python3-distutils-extra
python3-yaml
software-properties-gtk
spice-vdagent
synaptic
system-config-printer
system-config-printer-common
terminator
tracker
tracker-extract
@@ -183,22 +44,13 @@ upower
x11-apps
x11-session-utils
x11-utils
x11-xkb-utils
x11-xserver-utils
xdg-dbus-proxy
xdg-desktop-portal
xarchiver
xdg-user-dirs
xdg-user-dirs-gtk
xfonts-base
xinit
xinput
xorg
xorg-docs-core
xserver-common
xserver-xorg
xserver-xorg-video-fbdev
xwayland
yelp
yelp-xsl
zenity
zenity-common
lightdm
lightdm-settings

View File

@@ -0,0 +1 @@
gdm3

View File

@@ -1 +0,0 @@
../../../buster/environments/gnome/debian

View File

@@ -0,0 +1,42 @@
# overwrite stock lightdm greeter configuration
if [ -d /etc/orangepi/lightdm ]; then cp -R /etc/orangepi/lightdm /etc/; fi
if [ -f /etc/lightdm/slick-greeter.conf ]; then sed -i 's/orangepi-lightdm\/orangepi-default.png/warty-final-ubuntu.png/g' /etc/lightdm/slick-greeter.conf; fi
if [ -f /etc/lightdm/lightdm.conf.d/11-orangepi.conf ]; then sed -i "s/user-session.*/user-session=gnome-wayland/" /etc/lightdm/lightdm.conf.d/11-orangepi.conf; fi
# Disable Pulseaudio timer scheduling which does not work with sndhdmi driver
if [ -f /etc/pulse/default.pa ]; then sed "s/load-module module-udev-detect$/& tsched=0/g" -i /etc/pulse/default.pa; fi
# set wallpapper to armbian
keys=/etc/dconf/db/local.d/00-bg
profile=/etc/dconf/profile/user
install -Dv /dev/null $keys
install -Dv /dev/null $profile
# set default shortcuts
echo "
[org/gnome/shell]
favorite-apps = ['terminator.desktop', 'org.gnome.Nautilus.desktop', 'google-chrome.desktop', 'thunderbird.desktop', 'code.desktop', 'Zoom.desktop']
[org/gnome/desktop/background]
picture-uri='file:///usr/share/backgrounds/warty-final-ubuntu.png'
picture-options='zoom'
primary-color='#456789'
secondary-color='#FFFFFF'
[org/gnome/desktop/screensaver]
picture-uri='file:///usr/share/backgrounds/warty-final-ubuntu.png'
picture-options='zoom'
primary-color='#456789'
secondary-color='#FFFFFF'" >> $keys
echo "user-db:user
system-db:local" >> $profile
dconf update
#compile schemas
if [ -d /usr/share/glib-2.0/schemas ]; then
glib-compile-schemas /usr/share/glib-2.0/schemas
fi

View File

@@ -1 +0,0 @@
../../../buster/environments/gnome/only_for

View File

@@ -0,0 +1 @@
arm64, amd64

View File

@@ -1 +0,0 @@
../../../buster/environments/gnome/orangepi

View File

@@ -0,0 +1,164 @@
# install lightdm greeter
cp -R "${EXTER}"/packages/blobs/desktop/lightdm "${destination}"/etc/orangepi
# install default desktop settings
mkdir -p "${destination}"/etc/skel
cp -R "${EXTER}"/packages/blobs/desktop/skel/. "${destination}"/etc/skel
#install cinnamon desktop bar icons
mkdir -p "${destination}"/usr/share/icons/orangepi
cp "${EXTER}"/packages/blobs/desktop/desktop-icons/*.png "${destination}"/usr/share/icons/orangepi
# install wallpapers
mkdir -p "${destination}"/usr/share/backgrounds/orangepi/
cp "${EXTER}"/packages/blobs/desktop/desktop-wallpapers/*.png "${destination}"/usr/share/backgrounds/orangepi
# install wallpapers
mkdir -p "${destination}"/usr/share/backgrounds/orangepi-lightdm/
cp "${EXTER}"/packages/blobs/desktop/lightdm-wallpapers/*.png "${destination}"/usr/share/backgrounds/orangepi-lightdm
# install logo for login screen
mkdir -p "${destination}"/usr/share/pixmaps/orangepi
cp "${EXTER}"/packages/blobs/desktop/icons/orangepi.png "${destination}"/usr/share/pixmaps/orangepi
#generate wallpaper list for background changer
mkdir -p "${destination}"/usr/share/gnome-background-properties
cat <<EOF > "${destination}"/usr/share/gnome-background-properties/orangepi.xml
<?xml version="1.0"?>
<!DOCTYPE wallpapers SYSTEM "gnome-wp-list.dtd">
<wallpapers>
<wallpaper deleted="false">
<name>OrangePi black-pyscho</name>
<filename>/usr/share/backgrounds/orangepi/orangepi-default.png</filename>
<options>zoom</options>
<pcolor>#ffffff</pcolor>
<scolor>#000000</scolor>
</wallpaper>
<wallpaper deleted="false">
<name>OrangePi bluie-circle</name>
<filename>/usr/share/backgrounds/orangepi/orangepi-default.png</filename>
<options>zoom</options>
<pcolor>#ffffff</pcolor>
<scolor>#000000</scolor>
</wallpaper>
<wallpaper deleted="false">
<name>OrangePi blue-monday</name>
<filename>/usr/share/backgrounds/orangepi/orangepi-default.png</filename>
<options>zoom</options>
<pcolor>#ffffff</pcolor>
<scolor>#000000</scolor>
</wallpaper>
<wallpaper deleted="false">
<name>OrangePi blue-penguin</name>
<filename>/usr/share/backgrounds/orangepi/orangepi-default.png</filename>
<options>zoom</options>
<pcolor>#ffffff</pcolor>
<scolor>#000000</scolor>
</wallpaper>
<wallpaper deleted="false">
<name>OrangePi gray-resultado</name>
<filename>/usr/share/backgrounds/orangepi/orangepi-default.png</filename>
<options>zoom</options>
<pcolor>#ffffff</pcolor>
<scolor>#000000</scolor>
</wallpaper>
<wallpaper deleted="false">
<name>OrangePi green-penguin</name>
<filename>/usr/share/backgrounds/orangepi/orangepi-default.png</filename>
<options>zoom</options>
<pcolor>#ffffff</pcolor>
<scolor>#000000</scolor>
</wallpaper>
<wallpaper deleted="false">
<name>OrangePi green-retro</name>
<filename>/usr/share/backgrounds/orangepi/orangepi-default.png</filename>
<options>zoom</options>
<pcolor>#ffffff</pcolor>
<scolor>#000000</scolor>
</wallpaper>
<wallpaper deleted="false">
<name>OrangePi green-wall-penguin</name>
<filename>/usr/share/backgrounds/orangepi/orangepi-default.png</filename>
<options>zoom</options>
<pcolor>#ffffff</pcolor>
<scolor>#000000</scolor>
</wallpaper>
<wallpaper deleted="false">
<name>OrangePi 4k-neglated</name>
<filename>/usr/share/backgrounds/orangepi/orangepi-default.png</filename>
<options>zoom</options>
<pcolor>#ffffff</pcolor>
<scolor>#000000</scolor>
</wallpaper>
<wallpaper deleted="false">
<name>OrangePi neon-gray-penguin</name>
<filename>/usr/share/backgrounds/orangepi/orangepi-default.png</filename>
<options>zoom</options>
<pcolor>#ffffff</pcolor>
<scolor>#000000</scolor>
</wallpaper>
<wallpaper deleted="false">
<name>OrangePi plastic-love</name>
<filename>/usr/share/backgrounds/orangepi/orangepi-default.png</filename>
<options>zoom</options>
<pcolor>#ffffff</pcolor>
<scolor>#000000</scolor>
</wallpaper>
<wallpaper deleted="false">
<name>OrangePi purple-penguine</name>
<filename>/usr/share/backgrounds/orangepi/orangepi-default.png</filename>
<options>zoom</options>
<pcolor>#ffffff</pcolor>
<scolor>#000000</scolor>
</wallpaper>
<wallpaper deleted="false">
<name>OrangePi purplepunk-resultado</name>
<filename>/usr/share/backgrounds/orangepi/orangepi-default.png</filename>
<options>zoom</options>
<pcolor>#ffffff</pcolor>
<scolor>#000000</scolor>
</wallpaper>
<wallpaper deleted="false">
<name>OrangePi red-penguin-dark</name>
<filename>/usr/share/backgrounds/orangepi/orangepi-default.png</filename>
<options>zoom</options>
<pcolor>#ffffff</pcolor>
<scolor>#000000</scolor>
</wallpaper>
<wallpaper deleted="false">
<name>OrangePi red-penguin</name>
<filename>/usr/share/backgrounds/orangepi/orangepi-default.png</filename>
<options>zoom</options>
<pcolor>#ffffff</pcolor>
<scolor>#000000</scolor>
</wallpaper>
<wallpaper deleted="false">
<name>OrangePi light</name>
<filename>/usr/share/backgrounds/orangepi/orangepi-default.png</filename>
<options>zoom</options>
<pcolor>#ffffff</pcolor>
<scolor>#000000</scolor>
</wallpaper>
<wallpaper deleted="false">
<name>OrangePi dark</name>
<filename>/usr/share/backgrounds/orangepi/orangepi-default.png</filename>
<options>zoom</options>
<pcolor>#ffffff</pcolor>
<scolor>#000000</scolor>
</wallpaper>
<wallpaper deleted="false">
<name>OrangePi uc</name>
<filename>/usr/share/backgrounds/orangepi/orangepi-default.png</filename>
<options>zoom</options>
<pcolor>#ffffff</pcolor>
<scolor>#000000</scolor>
</wallpaper>
<wallpaper deleted="false">
<name>OrangePi clear</name>
<filename>/usr/share/backgrounds/orangepi/orangepi-default.png</filename>
<options>zoom</options>
<pcolor>#ffffff</pcolor>
<scolor>#000000</scolor>
</wallpaper>
</wallpapers>
EOF

View File

@@ -1 +0,0 @@
../../../buster/environments/gnome/support

View File

@@ -0,0 +1 @@
supported

View File

@@ -175,3 +175,5 @@ yaru-theme-icon
yaru-theme-sound
yaru-theme-unity
yaru-theme-gtk
language-pack-zh-hans
language-pack-gnome-zh-hans

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,128 @@
source "${BASH_SOURCE%/*}/include/sunxi64_common.inc"
LINUXFAMILY=sun55iw3
NAME_KERNEL="uImage"
NAME_INITRD="uInitrd"
SRC_CMDLINE="earlycon=uart8250,mmio32,0x02500000 clk_ignore_unused initcall_debug=0 console=ttyAS0,115200 console=tty0 loglevel=8 cma=64M init=/sbin/init rw no_console_suspend consoleblank=0 fsck.fix=yes fsck.repair=yes net.ifnames=0 splash plymouth.ignore-serial-consoles"
[[ -z $CPUMIN ]] && CPUMIN=480000
[[ -z $CPUMAX ]] && CPUMAX=1512000
GOVERNOR=ondemand
#ASOUND_STATE=asound.state.sun55iw3-${BRANCH}
case $BRANCH in
current)
OVERLAY_PREFIX='sun55i-t527'
KERNELBRANCH="branch:orange-pi-5.15-sun55iw3"
LINUXCONFIG="linux-5.15-sun55iw3-current"
[[ $BOARD =~ orangepi4a ]] && BOOTBRANCH='branch:v2018.05-t527'
KERNELPATCHDIR=${BOARDFAMILY}-${BRANCH}
UBOOT_TARGET_MAP=";;dts/${BOARD}-u-boot.dts boot0_sdcard.fex boot_package.fex"
UBOOT_COMPILER="arm-linux-gnueabi-"
UBOOT_USE_GCC='> 6.0'
BOOTENV_FILE=sun50iw9-default.txt
BOOTSCRIPT='boot-sun50iw9.cmd:boot.cmd'
KERNEL_USE_GCC='> 10.0'
OFFSET=20
ATFSOURCE=""
ATF_COMPILE="no"
INITRD_ARCH=arm
;;
esac
family_tweaks_s()
{
if [[ ${DESKTOP_ENVIRONMENT} == gnome ]]; then
run_on_sdcard "DEBIAN_FRONTEND=noninteractive apt-get install -y gnome-screenshot tightvncserver gnome-bluetooth"
cp $EXTER/packages/blobs/desktop/desktop-wallpapers/orangepi-default.png ${SDCARD}/usr/share/backgrounds/warty-final-ubuntu.png
fi
if [[ $RELEASE == bookworm && ${DESKTOP_ENVIRONMENT} == gnome ]]; then
sed -i "s/user-session.*/user-session=gnome-wayland/" ${SDCARD}/etc/lightdm/lightdm.conf.d/22-orangepi-autologin.conf
run_on_sdcard "systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target" > /dev/null 2>&1
fi
if [[ "${BOARD}x" == orangepi4ax ]]; then
nvram=$EXTER/cache/sources/orangepi-firmware-git
[[ -f ${nvram}/nvram_ap6256.txt-$BOARD ]] && cp ${nvram}/nvram_ap6256.txt-${BOARD} ${SDCARD}/lib/firmware/nvram_ap6256.txt
fi
rsync -a --chown=root:root "${EXTER}"/packages/bsp/overlays_arm64/* ${SDCARD}/
chroot $SDCARD /bin/bash -c "apt-get -y -qq install rfkill bluetooth bluez bluez-tools ir-keytable tree lirc v4l-utils dnsmasq" >/dev/null 2>&1
if [[ $BUILD_DESKTOP == yes ]]; then
sed -i "s/auto-profiles = yes/auto-profiles = no/" ${SDCARD}/usr/share/pulseaudio/alsa-mixer/profile-sets/default.conf
if [[ $BRANCH =~ legacy ]]; then
echo "load-module module-alsa-sink device=hw:0,0 sink_name=AudioCodec-Playback sink_properties=\"device.description='Audio Codec'\"" >> ${SDCARD}/etc/pulse/default.pa
echo "load-module module-alsa-sink device=hw:1,0 sink_name=HDMI-Playback sink_properties=\"device.description='HDMI Audio'\"" >> ${SDCARD}/etc/pulse/default.pa
elif [[ $BRANCH =~ current|next ]]; then
echo "load-module module-alsa-sink device=hw:0,0 sink_name=AudioCodec-Playback sink_properties=\"device.description='Audio Codec'\"" >> ${SDCARD}/etc/pulse/default.pa
echo "load-module module-alsa-sink device=hw:2,0 sink_name=HDMI-Playback sink_properties=\"device.description='HDMI Audio'\"" >> ${SDCARD}/etc/pulse/default.pa
fi
fi
if [[ ${BRANCH} == current ]]; then
[[ ${SRC_EXTLINUX} != "yes" ]] && sed -i 's/^debug_uart.*/debug_uart=ttyAS0/' "${SDCARD}"/boot/orangepiEnv.txt
SERIALCON="ttyAS0"
fi
install_wiringop
}
family_tweaks_bsp()
{
install -m 755 $EXTER/packages/blobs/bt/brcm_patchram_plus/brcm_patchram_plus_${ARCH} $destination/usr/bin/brcm_patchram_plus
}
uboot_custom_postprocess()
{
if [[ ${BRANCH} =~ legacy|current && $(dpkg --print-architecture) == amd64 ]]; then
rm dts/*.dts sys_config ${BOARD}-u-boot-${BRANCH}.dtb -r
export PATH=${EXTER}/packages/pack-uboot/${BOARDFAMILY}/tools/:$PATH
cp ${EXTER}/packages/pack-uboot/${BOARDFAMILY}/bin/* . -r
cp sys_config/sys_config_${BOARD}.fex sys_config.fex
cp u-boot.bin u-boot.fex
if [[ $KERNELBRANCH == "branch:orange-pi-5.15-sun55iw3" ]]; then
mv monitor.fex-linux5.15 monitor.fex
mv boot_package.cfg-linux5.15 boot_package.cfg
mv boot0_sdcard.fex-linux5.15 boot0_sdcard.fex
fi
cp dts/${BOARD}-u-boot-${BRANCH}.dts dts/${BOARD}-u-boot.dts
# make u-boot dtb
$EXTER/packages/pack-uboot/${BOARDFAMILY}/tools/dtc -p 2048 -W no-unit_address_vs_reg -@ -O dtb -o ${BOARD}-u-boot.dtb -b 0 dts/${BOARD}-u-boot-${BRANCH}.dts
[[ ! -f ${BOARD}-u-boot.dtb ]] && exit_with_error "dts compilation failed"
busybox unix2dos sys_config.fex
$EXTER/packages/pack-uboot/${BOARDFAMILY}/tools/script sys_config.fex
cp ${BOARD}-u-boot.dtb sunxi.fex
$EXTER/packages/pack-uboot/${BOARDFAMILY}/tools/update_dtb sunxi.fex 4096
$EXTER/packages/pack-uboot/${BOARDFAMILY}/tools/update_uboot -no_merge u-boot.fex sys_config.bin
update_uboot -no_merge u-boot.bin sys_config.bin
#pack boot package
busybox unix2dos boot_package.cfg
$EXTER/packages/pack-uboot/${BOARDFAMILY}/tools/dragonsecboot -pack boot_package.cfg
if [[ ${MERGE_UBOOT} == yes ]]; then
display_alert "Merge u-boot" "u-boot-${BOARD}-merged.bin" "info"
dd if=/dev/zero of=u-boot-${BOARD}-merged.bin bs=1M count=20
dd if=boot0_sdcard.fex of=u-boot-${BOARD}-merged.bin bs=8k seek=1 conv=fsync
dd if=boot_package.fex of=u-boot-${BOARD}-merged.bin bs=8k seek=2050 conv=fsync
mv u-boot-${BOARD}-merged.bin ${DEB_STORAGE}/u-boot/
fi
fi
}