diff mbox series

[meta-rockchip] luckfox-lyra-plus: add

Message ID 20260127205141.26089-1-mbober1@gmail.com
State New
Headers show
Series [meta-rockchip] luckfox-lyra-plus: add | expand

Commit Message

Marcin Bober Jan. 27, 2026, 8:51 p.m. UTC
The Luckfox Lyra Plus is ultra-small, tri-core single board computer
based on the Rockchip RK3506G2, with a very compact form factor.

Signed-off-by: Marcin Bober <mbober1@gmail.com>
---
 README                                        |  1 +
 conf/machine/include/rk3506.inc               | 20 +++++++++++++
 conf/machine/include/rk3568.inc               |  1 -
 conf/machine/include/rk3588s.inc              |  1 -
 conf/machine/luckfox-lyra-plus.conf           | 27 +++++++++++++++++
 recipes-bsp/rkbin/rockchip-rkbin-ddr_git.bb   |  9 ++++++
 .../rkbin/rockchip-rkbin-optee-os_git.bb      |  5 ++++
 recipes-bsp/rkbin/rockchip-rkbin.inc          |  1 +
 recipes-bsp/u-boot/u-boot-rockchip.inc        |  2 ++
 recipes-bsp/u-boot/u-boot_%.bbappend          |  4 +++
 recipes-kernel/linux/linux-armbian_git.bb     | 29 +++++++++++++++++++
 11 files changed, 98 insertions(+), 2 deletions(-)
 create mode 100644 conf/machine/include/rk3506.inc
 create mode 100644 conf/machine/luckfox-lyra-plus.conf
 create mode 100644 recipes-kernel/linux/linux-armbian_git.bb

Comments

Quentin Schulz Jan. 28, 2026, 10:35 a.m. UTC | #1
Hi Marcin,

On 1/27/26 9:51 PM, Marcin Bober via lists.yoctoproject.org wrote:
> [You don't often get email from mbober1=gmail.com@lists.yoctoproject.org. Learn why this is important at https://aka.ms/LearnAboutSenderIdentification ]
> 
> The Luckfox Lyra Plus is ultra-small, tri-core single board computer
> based on the Rockchip RK3506G2, with a very compact form factor.
> 
> Signed-off-by: Marcin Bober <mbober1@gmail.com>
> ---
>   README                                        |  1 +
>   conf/machine/include/rk3506.inc               | 20 +++++++++++++
>   conf/machine/include/rk3568.inc               |  1 -
>   conf/machine/include/rk3588s.inc              |  1 -
>   conf/machine/luckfox-lyra-plus.conf           | 27 +++++++++++++++++
>   recipes-bsp/rkbin/rockchip-rkbin-ddr_git.bb   |  9 ++++++
>   .../rkbin/rockchip-rkbin-optee-os_git.bb      |  5 ++++
>   recipes-bsp/rkbin/rockchip-rkbin.inc          |  1 +
>   recipes-bsp/u-boot/u-boot-rockchip.inc        |  2 ++
>   recipes-bsp/u-boot/u-boot_%.bbappend          |  4 +++
>   recipes-kernel/linux/linux-armbian_git.bb     | 29 +++++++++++++++++++
>   11 files changed, 98 insertions(+), 2 deletions(-)
>   create mode 100644 conf/machine/include/rk3506.inc
>   create mode 100644 conf/machine/luckfox-lyra-plus.conf
>   create mode 100644 recipes-kernel/linux/linux-armbian_git.bb
> 
> diff --git a/README b/README
> index 6bceba0..3991415 100644
> --- a/README
> +++ b/README
> @@ -23,6 +23,7 @@ Status of supported boards:
>                          tinker-board
>                          tinker-board-s
>                          vyasa-rk3288
> +                       luckfox-lyra-plus

Please keep the list ordered alphabetically.

> 
>                  64-bit:
>                          nanopi-m4
> diff --git a/conf/machine/include/rk3506.inc b/conf/machine/include/rk3506.inc
> new file mode 100644
> index 0000000..e204283
> --- /dev/null
> +++ b/conf/machine/include/rk3506.inc
> @@ -0,0 +1,20 @@
> +MACHINEOVERRIDES =. "rk3506:"
> +SOC_FAMILY = "rk3506"
> +DEFAULTTUNE = "cortexa7thf-neon-vfpv4"
> +
> +ROCKCHIP_CLOSED_TPL ?= "1"
> +
> +require conf/machine/include/soc-family.inc
> +require conf/machine/include/rockchip-defaults.inc
> +require conf/machine/include/arm/armv7a/tune-cortexa7.inc
> +require conf/machine/include/rockchip-wic.inc
> +
> +PREFERRED_PROVIDER_optee-os = "rockchip-rkbin-optee-os"
> +

Ooooh, I believe this would mean OP-TEE OS blob from Rockchip can be 
used with upstream U-Boot? Have you actually tried? This would be 
interesting for me for 
https://lore.kernel.org/yocto-patches/20260126-optee-os-v1-0-874261a77dad@cherry.de/ 
to check if I got it right for rockchip-rkbin-optee-os as well.

Is OP-TEE OS *required* on rk3506 to be able to boot? Do you know?

Essentially, with the patch series listed above applied, you would need 
to set RK_UBOOT_TEE = "1" and then U-Boot would automatically add the 
necessary dependency and add the correct filepath to the TEE environment 
variable.

> +KBUILD_DEFCONFIG ?= "rk3506_defconfig"

Usually we would rather have multi_v7_defconfig and if needed apply 
.scc+.cfg config fragments (see what's been done for nanopi-r4s).

> +KERNEL_CLASSES = "kernel-fitimage"
> +KERNEL_IMAGETYPE ?= "fitImage"
> +

Isn't a FIT image the default when you include rockchip-defaults? See 
RK_KERNEL_FITIMAGE variable.

> +UBOOT_SUFFIX ?= "itb"
> +UBOOT_ENTRYPOINT ?= "0x02800000"
> +UBOOT_EXTLINUX_FDT = "${@bb.utils.contains('KERNEL_IMAGETYPE', 'fitImage', '', '/boot', d)}"

isn't that already handled with RK_KERNEL_FITIMAGE from within 
conf/machine/include/rockchip-extlinux.inc (you may then want to require 
this file).

> diff --git a/conf/machine/include/rk3568.inc b/conf/machine/include/rk3568.inc
> index bcf9dd8..12f0ba2 100644
> --- a/conf/machine/include/rk3568.inc
> +++ b/conf/machine/include/rk3568.inc
> @@ -10,7 +10,6 @@ require conf/machine/include/arm/armv8-2a/tune-cortexa55.inc
>   require conf/machine/include/rockchip-wic.inc
> 
>   KBUILD_DEFCONFIG ?= "defconfig"
> -KERNEL_FEATURES:append:rk3568 = " bsp/rockchip/remove-non-rockchip-arch-arm64.scc"

This has nothing to do with adding support for this new device no?

>   KERNEL_CLASSES = "kernel-fitimage"
>   KERNEL_IMAGETYPE ?= "fitImage"
> 
> diff --git a/conf/machine/include/rk3588s.inc b/conf/machine/include/rk3588s.inc
> index 6ec344a..d0654c1 100644
> --- a/conf/machine/include/rk3588s.inc
> +++ b/conf/machine/include/rk3588s.inc
> @@ -9,7 +9,6 @@ require conf/machine/include/arm/armv8-2a/tune-cortexa76-cortexa55.inc
>   require conf/machine/include/rockchip-wic.inc
> 
>   KBUILD_DEFCONFIG ?= "defconfig"
> -KERNEL_FEATURES:append:rk3588s = " bsp/rockchip/remove-non-rockchip-arch-arm64.scc"

This has nothing to do with adding support for this new device no?

>   KERNEL_CLASSES = "kernel-fitimage"
>   KERNEL_IMAGETYPE ?= "fitImage"
> 
> diff --git a/conf/machine/luckfox-lyra-plus.conf b/conf/machine/luckfox-lyra-plus.conf
> new file mode 100644
> index 0000000..529a472
> --- /dev/null
> +++ b/conf/machine/luckfox-lyra-plus.conf
> @@ -0,0 +1,27 @@
> +#@TYPE: Machine
> +#@NAME: Luckfox Lyra Plus
> +#@DESCRIPTION: RK3506G2 based Linux Micro Development Board
> +#https://www.luckfox.com/Luckfox-Lyra-Plus
> +
> +require conf/machine/include/rk3506.inc
> +
> +KERNEL_DEVICETREE ?= "rk3506g-luckfox-lyra-plus-sd.dtb"
> +MACHINE_EXTRA_RRECOMMENDS += "kernel-modules"
> +PREFERRED_PROVIDER_virtual/kernel = "linux-armbian"

I believe we only take boards which are supported by linux-yocto or 
linux-yocto-dev from the master branch of OE-Core. I don't even see 
patches on the linux-rockchip mailing list

> +EXTERNAL_KERNEL_DEVICETREE = "${DEPLOY_DIR_IMAGE}/devicetree"
> +
> +UBOOT_MACHINE = "luckfox-lyra-rk3506_defconfig"
> +
> +MACHINE_FEATURES = " \
> +  rtc \
> +  screen \
> +  serial \
> +  usbgadget \
> +  usbhost \
> +  vfat \
> +"
> +
> +KERNEL_FEATURES += " \
> +  cfg/fs/ext4.scc \
> +  features/cgroups/cgroups.scc \
> +"

KERNEL_FEATURES must be listed in the kernel recipe not in the machine.

> diff --git a/recipes-bsp/rkbin/rockchip-rkbin-ddr_git.bb b/recipes-bsp/rkbin/rockchip-rkbin-ddr_git.bb
> index 3227a53..7f654ff 100644
> --- a/recipes-bsp/rkbin/rockchip-rkbin-ddr_git.bb
> +++ b/recipes-bsp/rkbin/rockchip-rkbin-ddr_git.bb
> @@ -10,6 +10,15 @@ do_deploy:rk3308() {
>          install -m 644 ${S}/bin/rk33/${DDRBIN_FILE} ${DEPLOYDIR}/ddr-rk3308.bin
>   }
> 

Wait.... This doesn't exist anymore. Against which branch did you 
develop this patch?

The master branch has a completely different mechanism which is much 
more automatic than what's needed below.

> +DDRBIN_VERS:rk3506 ?= "v1.02"
> +DDRBIN_FILE:rk3506 ?= "rk3506_ddr_750MHz_${DDRBIN_VERS}.bin"
> +
> +do_deploy:rk3506() {
> +       # Prebuilt U-Boot TPL (DDR init)
> +       install -m 644 ${S}/bin/rk35/${DDRBIN_FILE} ${DEPLOYDIR}/ddr-rk3506.bin
> +       install -m 644 ${S}/bin/rk35/rk3506_tee_v1.23.bin ${DEPLOYDIR}/tee-rk3506.bin

This is TEE, not DRAM init blob so shouldn't be deployed in this recipe.

> +}
> +>   DDRBIN_VERS:rk3566 ?= "v1.23"
>   DDRBIN_FILE:rk3566 ?= "rk3566_ddr_1056MHz_${DDRBIN_VERS}.bin"
> 
> diff --git a/recipes-bsp/rkbin/rockchip-rkbin-optee-os_git.bb b/recipes-bsp/rkbin/rockchip-rkbin-optee-os_git.bb
> index 6d25368..cbd376c 100644
> --- a/recipes-bsp/rkbin/rockchip-rkbin-optee-os_git.bb
> +++ b/recipes-bsp/rkbin/rockchip-rkbin-optee-os_git.bb
> @@ -9,6 +9,11 @@ do_deploy:rk3308() {
>          install -m 644 ${S}/bin/rk33/rk3308_bl32_v*.bin ${DEPLOYDIR}/tee-rk3308.bin
>   }
> 
> +do_deploy:rk3506() {
> +       # Prebuilt OPTEE-OS
> +       install -m 644 ${S}/bin/rk35/rk3506_tee_v*.bin ${DEPLOYDIR}/tee-rk3506.bin
> +}
> +
>   # NOTE: the following are not typos
>   #       the rk3566 uses the same bl32 as the rk3568
>   do_deploy:rk3566() {
> diff --git a/recipes-bsp/rkbin/rockchip-rkbin.inc b/recipes-bsp/rkbin/rockchip-rkbin.inc
> index 9264db9..8dfdc09 100644
> --- a/recipes-bsp/rkbin/rockchip-rkbin.inc
> +++ b/recipes-bsp/rkbin/rockchip-rkbin.inc
> @@ -11,6 +11,7 @@ S = "${WORKDIR}/git"
> 
>   COMPATIBLE_MACHINE = "^$"
>   COMPATIBLE_MACHINE:rk3308 = "rk3308"
> +COMPATIBLE_MACHINE:rk3506 = "rk3506"
>   COMPATIBLE_MACHINE:rk3566 = "rk3566"
>   COMPATIBLE_MACHINE:rk3568 = "rk3568"
>   COMPATIBLE_MACHINE:rk3588s = "rk3588s"
> diff --git a/recipes-bsp/u-boot/u-boot-rockchip.inc b/recipes-bsp/u-boot/u-boot-rockchip.inc
> index 2b5bbd7..67c4418 100644
> --- a/recipes-bsp/u-boot/u-boot-rockchip.inc
> +++ b/recipes-bsp/u-boot/u-boot-rockchip.inc
> @@ -11,7 +11,9 @@ do_compile[depends] .= "${TFA_DEPENDS}"
>   ROCKCHIP_TPL:closed-tpl = "${DEPLOY_DIR_IMAGE}/ddr-${SOC_FAMILY}.bin"
>   # SOC_FAMILY for RK3588S is rk3588s but it should use the binaries from rk3588
>   ROCKCHIP_TPL:closed-tpl:rk3588s = "${DEPLOY_DIR_IMAGE}/ddr-rk3588.bin"
> +ROCKCHIP_TEE:closed-tpl:rk3506 = "${DEPLOY_DIR_IMAGE}/tee-rk3506.bin"
>   EXTRA_OEMAKE:append:closed-tpl = " ROCKCHIP_TPL=${ROCKCHIP_TPL}"
> +EXTRA_OEMAKE:append:closed-tpl:rk3506 = " TEE=${ROCKCHIP_TEE}"
> 

I think you only want

ROCKCHIP_TEE:rk3506

and

EXTRA_OEMAKE:append:rk3506

as I believe TEE has nothing to do with whether we're using a DRAM init 
blob?

Also, this isn't working because you forgot to add the dependency on 
optee-os (see do_compile[depends] .= "${TFA_DEPENDS}" for how we have 
the dependency for trsuted-firmware-a on Aarch64).

>   INIT_FIRMWARE_DEPENDS ??= ""
>   INIT_FIRMWARE_DEPENDS:closed-tpl = " rockchip-rkbin-ddr:do_deploy"
> diff --git a/recipes-bsp/u-boot/u-boot_%.bbappend b/recipes-bsp/u-boot/u-boot_%.bbappend
> index 08e1730..fc6a36e 100644
> --- a/recipes-bsp/u-boot/u-boot_%.bbappend
> +++ b/recipes-bsp/u-boot/u-boot_%.bbappend
> @@ -8,6 +8,10 @@ DEPENDS:append:rk3308 = " u-boot-tools-native"
>   DEPENDS:append:rock-pi-4 = " gnutls-native"
>   DEPENDS:append:rk-u-boot-env = " u-boot-mkenvimage-native"
> 
> +BRANCH:luckfox-lyra-plus = "rk3506"
> +SRC_URI:luckfox-lyra-plus = "git://source.denx.de/u-boot/contributors/kwiboo/u-boot.git;protocol=https;branch=${BRANCH}"
> +SRCREV:luckfox-lyra-plus = "c6782a37feee4a8aee08d321c01b4ca0b0562f0b"
> +

That's a BIG no-no.

Have a separate recipe for this.

Knowing Jonas, there are chances this branch will get rebased, so I 
don't think we want this at all.

I see patches on the U-Boot mailing list for RK3506 support in U-Boot, 
see 
https://lore.kernel.org/u-boot/20260109005008.101506-1-jonas@kwiboo.se/ 
and Jonas "promised" a v2. Maybe work with him on getting the v2 sent 
upstream?

>   do_compile:append:rock2-square () {
>          # copy to default search path
>          if [ "${SPL_BINARY}" = "u-boot-spl-dtb.bin" ]; then
> diff --git a/recipes-kernel/linux/linux-armbian_git.bb b/recipes-kernel/linux/linux-armbian_git.bb
> new file mode 100644
> index 0000000..42dad4f
> --- /dev/null
> +++ b/recipes-kernel/linux/linux-armbian_git.bb

I'll let Trevor speak his mind here but I don't think Armbian Linux 
kernel is something we're interested in supporting. Work with upstream 
to get the board supported in upstream Linux and then we can have it here.

Cheers,
Quentin
Trevor Woerner Jan. 28, 2026, 4:04 p.m. UTC | #2
Thank you, Quentin, for your thorough review!

On Wed 2026-01-28 @ 11:35:17 AM, Quentin Schulz via lists.yoctoproject.org wrote:
> Hi Marcin,
> 
> On 1/27/26 9:51 PM, Marcin Bober via lists.yoctoproject.org wrote:
> > [You don't often get email from mbober1=gmail.com@lists.yoctoproject.org. Learn why this is important at https://aka.ms/LearnAboutSenderIdentification ]
> > 
> > The Luckfox Lyra Plus is ultra-small, tri-core single board computer
> > based on the Rockchip RK3506G2, with a very compact form factor.
> > 
> > Signed-off-by: Marcin Bober <mbober1@gmail.com>
> > ---
> >   README                                        |  1 +
> >   conf/machine/include/rk3506.inc               | 20 +++++++++++++
> >   conf/machine/include/rk3568.inc               |  1 -
> >   conf/machine/include/rk3588s.inc              |  1 -
> >   conf/machine/luckfox-lyra-plus.conf           | 27 +++++++++++++++++
> >   recipes-bsp/rkbin/rockchip-rkbin-ddr_git.bb   |  9 ++++++
> >   .../rkbin/rockchip-rkbin-optee-os_git.bb      |  5 ++++
> >   recipes-bsp/rkbin/rockchip-rkbin.inc          |  1 +
> >   recipes-bsp/u-boot/u-boot-rockchip.inc        |  2 ++
> >   recipes-bsp/u-boot/u-boot_%.bbappend          |  4 +++
> >   recipes-kernel/linux/linux-armbian_git.bb     | 29 +++++++++++++++++++
> >   11 files changed, 98 insertions(+), 2 deletions(-)
> >   create mode 100644 conf/machine/include/rk3506.inc
> >   create mode 100644 conf/machine/luckfox-lyra-plus.conf
> >   create mode 100644 recipes-kernel/linux/linux-armbian_git.bb
> > 
> > diff --git a/README b/README
> > index 6bceba0..3991415 100644
> > --- a/README
> > +++ b/README
> > @@ -23,6 +23,7 @@ Status of supported boards:
> >                          tinker-board
> >                          tinker-board-s
> >                          vyasa-rk3288
> > +                       luckfox-lyra-plus
> 
> Please keep the list ordered alphabetically.
> 
> > 
> >                  64-bit:
> >                          nanopi-m4
> > diff --git a/conf/machine/include/rk3506.inc b/conf/machine/include/rk3506.inc
> > new file mode 100644
> > index 0000000..e204283
> > --- /dev/null
> > +++ b/conf/machine/include/rk3506.inc
> > @@ -0,0 +1,20 @@
> > +MACHINEOVERRIDES =. "rk3506:"
> > +SOC_FAMILY = "rk3506"
> > +DEFAULTTUNE = "cortexa7thf-neon-vfpv4"
> > +
> > +ROCKCHIP_CLOSED_TPL ?= "1"
> > +
> > +require conf/machine/include/soc-family.inc
> > +require conf/machine/include/rockchip-defaults.inc
> > +require conf/machine/include/arm/armv7a/tune-cortexa7.inc
> > +require conf/machine/include/rockchip-wic.inc
> > +
> > +PREFERRED_PROVIDER_optee-os = "rockchip-rkbin-optee-os"
> > +
> 
> Ooooh, I believe this would mean OP-TEE OS blob from Rockchip can be used
> with upstream U-Boot? Have you actually tried? This would be interesting for
> me for https://lore.kernel.org/yocto-patches/20260126-optee-os-v1-0-874261a77dad@cherry.de/
> to check if I got it right for rockchip-rkbin-optee-os as well.
> 
> Is OP-TEE OS *required* on rk3506 to be able to boot? Do you know?
> 
> Essentially, with the patch series listed above applied, you would need to
> set RK_UBOOT_TEE = "1" and then U-Boot would automatically add the necessary
> dependency and add the correct filepath to the TEE environment variable.
> 
> > +KBUILD_DEFCONFIG ?= "rk3506_defconfig"
> 
> Usually we would rather have multi_v7_defconfig and if needed apply
> .scc+.cfg config fragments (see what's been done for nanopi-r4s).
> 
> > +KERNEL_CLASSES = "kernel-fitimage"
> > +KERNEL_IMAGETYPE ?= "fitImage"
> > +
> 
> Isn't a FIT image the default when you include rockchip-defaults? See
> RK_KERNEL_FITIMAGE variable.
> 
> > +UBOOT_SUFFIX ?= "itb"
> > +UBOOT_ENTRYPOINT ?= "0x02800000"
> > +UBOOT_EXTLINUX_FDT = "${@bb.utils.contains('KERNEL_IMAGETYPE', 'fitImage', '', '/boot', d)}"
> 
> isn't that already handled with RK_KERNEL_FITIMAGE from within
> conf/machine/include/rockchip-extlinux.inc (you may then want to require
> this file).
> 
> > diff --git a/conf/machine/include/rk3568.inc b/conf/machine/include/rk3568.inc
> > index bcf9dd8..12f0ba2 100644
> > --- a/conf/machine/include/rk3568.inc
> > +++ b/conf/machine/include/rk3568.inc
> > @@ -10,7 +10,6 @@ require conf/machine/include/arm/armv8-2a/tune-cortexa55.inc
> >   require conf/machine/include/rockchip-wic.inc
> > 
> >   KBUILD_DEFCONFIG ?= "defconfig"
> > -KERNEL_FEATURES:append:rk3568 = " bsp/rockchip/remove-non-rockchip-arch-arm64.scc"
> 
> This has nothing to do with adding support for this new device no?
> 
> >   KERNEL_CLASSES = "kernel-fitimage"
> >   KERNEL_IMAGETYPE ?= "fitImage"
> > 
> > diff --git a/conf/machine/include/rk3588s.inc b/conf/machine/include/rk3588s.inc
> > index 6ec344a..d0654c1 100644
> > --- a/conf/machine/include/rk3588s.inc
> > +++ b/conf/machine/include/rk3588s.inc
> > @@ -9,7 +9,6 @@ require conf/machine/include/arm/armv8-2a/tune-cortexa76-cortexa55.inc
> >   require conf/machine/include/rockchip-wic.inc
> > 
> >   KBUILD_DEFCONFIG ?= "defconfig"
> > -KERNEL_FEATURES:append:rk3588s = " bsp/rockchip/remove-non-rockchip-arch-arm64.scc"
> 
> This has nothing to do with adding support for this new device no?
> 
> >   KERNEL_CLASSES = "kernel-fitimage"
> >   KERNEL_IMAGETYPE ?= "fitImage"
> > 
> > diff --git a/conf/machine/luckfox-lyra-plus.conf b/conf/machine/luckfox-lyra-plus.conf
> > new file mode 100644
> > index 0000000..529a472
> > --- /dev/null
> > +++ b/conf/machine/luckfox-lyra-plus.conf
> > @@ -0,0 +1,27 @@
> > +#@TYPE: Machine
> > +#@NAME: Luckfox Lyra Plus
> > +#@DESCRIPTION: RK3506G2 based Linux Micro Development Board
> > +#https://www.luckfox.com/Luckfox-Lyra-Plus

Usually I would be excited about a tiny rockchip-based SBC with
hardwired ethernet. But a new SoC based on CortexA7 (i.e. 32-bit)??
And no SDcard?

Hopefully someone comes out with something new to replace the zero-3e
which appears to be out of production.

> > +
> > +require conf/machine/include/rk3506.inc
> > +
> > +KERNEL_DEVICETREE ?= "rk3506g-luckfox-lyra-plus-sd.dtb"
> > +MACHINE_EXTRA_RRECOMMENDS += "kernel-modules"
> > +PREFERRED_PROVIDER_virtual/kernel = "linux-armbian"
> 
> I believe we only take boards which are supported by linux-yocto or
> linux-yocto-dev from the master branch of OE-Core. I don't even see patches
> on the linux-rockchip mailing list
> 
> > +EXTERNAL_KERNEL_DEVICETREE = "${DEPLOY_DIR_IMAGE}/devicetree"
> > +
> > +UBOOT_MACHINE = "luckfox-lyra-rk3506_defconfig"
> > +
> > +MACHINE_FEATURES = " \
> > +  rtc \
> > +  screen \
> > +  serial \
> > +  usbgadget \
> > +  usbhost \
> > +  vfat \
> > +"
> > +
> > +KERNEL_FEATURES += " \
> > +  cfg/fs/ext4.scc \
> > +  features/cgroups/cgroups.scc \
> > +"
> 
> KERNEL_FEATURES must be listed in the kernel recipe not in the machine.
> 
> > diff --git a/recipes-bsp/rkbin/rockchip-rkbin-ddr_git.bb b/recipes-bsp/rkbin/rockchip-rkbin-ddr_git.bb
> > index 3227a53..7f654ff 100644
> > --- a/recipes-bsp/rkbin/rockchip-rkbin-ddr_git.bb
> > +++ b/recipes-bsp/rkbin/rockchip-rkbin-ddr_git.bb
> > @@ -10,6 +10,15 @@ do_deploy:rk3308() {
> >          install -m 644 ${S}/bin/rk33/${DDRBIN_FILE} ${DEPLOYDIR}/ddr-rk3308.bin
> >   }
> > 
> 
> Wait.... This doesn't exist anymore. Against which branch did you develop
> this patch?
> 
> The master branch has a completely different mechanism which is much more
> automatic than what's needed below.
> 
> > +DDRBIN_VERS:rk3506 ?= "v1.02"
> > +DDRBIN_FILE:rk3506 ?= "rk3506_ddr_750MHz_${DDRBIN_VERS}.bin"
> > +
> > +do_deploy:rk3506() {
> > +       # Prebuilt U-Boot TPL (DDR init)
> > +       install -m 644 ${S}/bin/rk35/${DDRBIN_FILE} ${DEPLOYDIR}/ddr-rk3506.bin
> > +       install -m 644 ${S}/bin/rk35/rk3506_tee_v1.23.bin ${DEPLOYDIR}/tee-rk3506.bin
> 
> This is TEE, not DRAM init blob so shouldn't be deployed in this recipe.
> 
> > +}
> > +>   DDRBIN_VERS:rk3566 ?= "v1.23"
> >   DDRBIN_FILE:rk3566 ?= "rk3566_ddr_1056MHz_${DDRBIN_VERS}.bin"
> > 
> > diff --git a/recipes-bsp/rkbin/rockchip-rkbin-optee-os_git.bb b/recipes-bsp/rkbin/rockchip-rkbin-optee-os_git.bb
> > index 6d25368..cbd376c 100644
> > --- a/recipes-bsp/rkbin/rockchip-rkbin-optee-os_git.bb
> > +++ b/recipes-bsp/rkbin/rockchip-rkbin-optee-os_git.bb
> > @@ -9,6 +9,11 @@ do_deploy:rk3308() {
> >          install -m 644 ${S}/bin/rk33/rk3308_bl32_v*.bin ${DEPLOYDIR}/tee-rk3308.bin
> >   }
> > 
> > +do_deploy:rk3506() {
> > +       # Prebuilt OPTEE-OS
> > +       install -m 644 ${S}/bin/rk35/rk3506_tee_v*.bin ${DEPLOYDIR}/tee-rk3506.bin
> > +}
> > +
> >   # NOTE: the following are not typos
> >   #       the rk3566 uses the same bl32 as the rk3568
> >   do_deploy:rk3566() {
> > diff --git a/recipes-bsp/rkbin/rockchip-rkbin.inc b/recipes-bsp/rkbin/rockchip-rkbin.inc
> > index 9264db9..8dfdc09 100644
> > --- a/recipes-bsp/rkbin/rockchip-rkbin.inc
> > +++ b/recipes-bsp/rkbin/rockchip-rkbin.inc
> > @@ -11,6 +11,7 @@ S = "${WORKDIR}/git"
> > 
> >   COMPATIBLE_MACHINE = "^$"
> >   COMPATIBLE_MACHINE:rk3308 = "rk3308"
> > +COMPATIBLE_MACHINE:rk3506 = "rk3506"
> >   COMPATIBLE_MACHINE:rk3566 = "rk3566"
> >   COMPATIBLE_MACHINE:rk3568 = "rk3568"
> >   COMPATIBLE_MACHINE:rk3588s = "rk3588s"
> > diff --git a/recipes-bsp/u-boot/u-boot-rockchip.inc b/recipes-bsp/u-boot/u-boot-rockchip.inc
> > index 2b5bbd7..67c4418 100644
> > --- a/recipes-bsp/u-boot/u-boot-rockchip.inc
> > +++ b/recipes-bsp/u-boot/u-boot-rockchip.inc
> > @@ -11,7 +11,9 @@ do_compile[depends] .= "${TFA_DEPENDS}"
> >   ROCKCHIP_TPL:closed-tpl = "${DEPLOY_DIR_IMAGE}/ddr-${SOC_FAMILY}.bin"
> >   # SOC_FAMILY for RK3588S is rk3588s but it should use the binaries from rk3588
> >   ROCKCHIP_TPL:closed-tpl:rk3588s = "${DEPLOY_DIR_IMAGE}/ddr-rk3588.bin"
> > +ROCKCHIP_TEE:closed-tpl:rk3506 = "${DEPLOY_DIR_IMAGE}/tee-rk3506.bin"
> >   EXTRA_OEMAKE:append:closed-tpl = " ROCKCHIP_TPL=${ROCKCHIP_TPL}"
> > +EXTRA_OEMAKE:append:closed-tpl:rk3506 = " TEE=${ROCKCHIP_TEE}"
> > 
> 
> I think you only want
> 
> ROCKCHIP_TEE:rk3506
> 
> and
> 
> EXTRA_OEMAKE:append:rk3506
> 
> as I believe TEE has nothing to do with whether we're using a DRAM init
> blob?
> 
> Also, this isn't working because you forgot to add the dependency on
> optee-os (see do_compile[depends] .= "${TFA_DEPENDS}" for how we have the
> dependency for trsuted-firmware-a on Aarch64).
> 
> >   INIT_FIRMWARE_DEPENDS ??= ""
> >   INIT_FIRMWARE_DEPENDS:closed-tpl = " rockchip-rkbin-ddr:do_deploy"
> > diff --git a/recipes-bsp/u-boot/u-boot_%.bbappend b/recipes-bsp/u-boot/u-boot_%.bbappend
> > index 08e1730..fc6a36e 100644
> > --- a/recipes-bsp/u-boot/u-boot_%.bbappend
> > +++ b/recipes-bsp/u-boot/u-boot_%.bbappend
> > @@ -8,6 +8,10 @@ DEPENDS:append:rk3308 = " u-boot-tools-native"
> >   DEPENDS:append:rock-pi-4 = " gnutls-native"
> >   DEPENDS:append:rk-u-boot-env = " u-boot-mkenvimage-native"
> > 
> > +BRANCH:luckfox-lyra-plus = "rk3506"
> > +SRC_URI:luckfox-lyra-plus = "git://source.denx.de/u-boot/contributors/kwiboo/u-boot.git;protocol=https;branch=${BRANCH}"
> > +SRCREV:luckfox-lyra-plus = "c6782a37feee4a8aee08d321c01b4ca0b0562f0b"
> > +
> 
> That's a BIG no-no.
> 
> Have a separate recipe for this.
> 
> Knowing Jonas, there are chances this branch will get rebased, so I don't
> think we want this at all.
> 
> I see patches on the U-Boot mailing list for RK3506 support in U-Boot, see
> https://lore.kernel.org/u-boot/20260109005008.101506-1-jonas@kwiboo.se/ and
> Jonas "promised" a v2. Maybe work with him on getting the v2 sent upstream?
> 
> >   do_compile:append:rock2-square () {
> >          # copy to default search path
> >          if [ "${SPL_BINARY}" = "u-boot-spl-dtb.bin" ]; then
> > diff --git a/recipes-kernel/linux/linux-armbian_git.bb b/recipes-kernel/linux/linux-armbian_git.bb
> > new file mode 100644
> > index 0000000..42dad4f
> > --- /dev/null
> > +++ b/recipes-kernel/linux/linux-armbian_git.bb
> 
> I'll let Trevor speak his mind here but I don't think Armbian Linux kernel
> is something we're interested in supporting. Work with upstream to get the
> board supported in upstream Linux and then we can have it here.

I agree with Quentin's assessment. If rockchip were a platform that had
little or no upstream support then we would need to have all sorts of
recipes for bootloaders and kernels from wherever we could find them.
But with rockchip, upstream support is usually just a matter of time.
I'll take new machines if they're in linux-yocto-dev, but would rather
stay away from vendor kernels.

If a board is wildly popular and will never have upstream support then I
would consider it. But if Jonas is already working on it, then we will
probably see upstream support shortly.

> Cheers,
> Quentin
> 
> 
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#3129): https://lists.yoctoproject.org/g/yocto-patches/message/3129
> Mute This Topic: https://lists.yoctoproject.org/mt/117496463/900817
> Group Owner: yocto-patches+owner@lists.yoctoproject.org
> Unsubscribe: https://lists.yoctoproject.org/g/yocto-patches/leave/13168745/900817/63955952/xyzzy [twoerner@gmail.com]
> -=-=-=-=-=-=-=-=-=-=-=-
> 
>
Trevor Woerner Jan. 28, 2026, 4:07 p.m. UTC | #3
On Wed 2026-01-28 @ 11:04:11 AM, Trevor Woerner via lists.yoctoproject.org wrote:
> Thank you, Quentin, for your thorough review!
> 
> On Wed 2026-01-28 @ 11:35:17 AM, Quentin Schulz via lists.yoctoproject.org wrote:
> > Hi Marcin,
> > 
> > On 1/27/26 9:51 PM, Marcin Bober via lists.yoctoproject.org wrote:
> > > [You don't often get email from mbober1=gmail.com@lists.yoctoproject.org. Learn why this is important at https://aka.ms/LearnAboutSenderIdentification ]
> > > 
> > > The Luckfox Lyra Plus is ultra-small, tri-core single board computer
> > > based on the Rockchip RK3506G2, with a very compact form factor.
> > > 
> > > Signed-off-by: Marcin Bober <mbober1@gmail.com>
> > > ---
> > >   README                                        |  1 +
> > >   conf/machine/include/rk3506.inc               | 20 +++++++++++++
> > >   conf/machine/include/rk3568.inc               |  1 -
> > >   conf/machine/include/rk3588s.inc              |  1 -
> > >   conf/machine/luckfox-lyra-plus.conf           | 27 +++++++++++++++++
> > >   recipes-bsp/rkbin/rockchip-rkbin-ddr_git.bb   |  9 ++++++
> > >   .../rkbin/rockchip-rkbin-optee-os_git.bb      |  5 ++++
> > >   recipes-bsp/rkbin/rockchip-rkbin.inc          |  1 +
> > >   recipes-bsp/u-boot/u-boot-rockchip.inc        |  2 ++
> > >   recipes-bsp/u-boot/u-boot_%.bbappend          |  4 +++
> > >   recipes-kernel/linux/linux-armbian_git.bb     | 29 +++++++++++++++++++
> > >   11 files changed, 98 insertions(+), 2 deletions(-)
> > >   create mode 100644 conf/machine/include/rk3506.inc
> > >   create mode 100644 conf/machine/luckfox-lyra-plus.conf
> > >   create mode 100644 recipes-kernel/linux/linux-armbian_git.bb
> > > 
> > > diff --git a/README b/README
> > > index 6bceba0..3991415 100644
> > > --- a/README
> > > +++ b/README
> > > @@ -23,6 +23,7 @@ Status of supported boards:
> > >                          tinker-board
> > >                          tinker-board-s
> > >                          vyasa-rk3288
> > > +                       luckfox-lyra-plus
> > 
> > Please keep the list ordered alphabetically.
> > 
> > > 
> > >                  64-bit:
> > >                          nanopi-m4
> > > diff --git a/conf/machine/include/rk3506.inc b/conf/machine/include/rk3506.inc
> > > new file mode 100644
> > > index 0000000..e204283
> > > --- /dev/null
> > > +++ b/conf/machine/include/rk3506.inc
> > > @@ -0,0 +1,20 @@
> > > +MACHINEOVERRIDES =. "rk3506:"
> > > +SOC_FAMILY = "rk3506"
> > > +DEFAULTTUNE = "cortexa7thf-neon-vfpv4"
> > > +
> > > +ROCKCHIP_CLOSED_TPL ?= "1"
> > > +
> > > +require conf/machine/include/soc-family.inc
> > > +require conf/machine/include/rockchip-defaults.inc
> > > +require conf/machine/include/arm/armv7a/tune-cortexa7.inc
> > > +require conf/machine/include/rockchip-wic.inc
> > > +
> > > +PREFERRED_PROVIDER_optee-os = "rockchip-rkbin-optee-os"
> > > +
> > 
> > Ooooh, I believe this would mean OP-TEE OS blob from Rockchip can be used
> > with upstream U-Boot? Have you actually tried? This would be interesting for
> > me for https://lore.kernel.org/yocto-patches/20260126-optee-os-v1-0-874261a77dad@cherry.de/
> > to check if I got it right for rockchip-rkbin-optee-os as well.
> > 
> > Is OP-TEE OS *required* on rk3506 to be able to boot? Do you know?
> > 
> > Essentially, with the patch series listed above applied, you would need to
> > set RK_UBOOT_TEE = "1" and then U-Boot would automatically add the necessary
> > dependency and add the correct filepath to the TEE environment variable.
> > 
> > > +KBUILD_DEFCONFIG ?= "rk3506_defconfig"
> > 
> > Usually we would rather have multi_v7_defconfig and if needed apply
> > .scc+.cfg config fragments (see what's been done for nanopi-r4s).
> > 
> > > +KERNEL_CLASSES = "kernel-fitimage"
> > > +KERNEL_IMAGETYPE ?= "fitImage"
> > > +
> > 
> > Isn't a FIT image the default when you include rockchip-defaults? See
> > RK_KERNEL_FITIMAGE variable.
> > 
> > > +UBOOT_SUFFIX ?= "itb"
> > > +UBOOT_ENTRYPOINT ?= "0x02800000"
> > > +UBOOT_EXTLINUX_FDT = "${@bb.utils.contains('KERNEL_IMAGETYPE', 'fitImage', '', '/boot', d)}"
> > 
> > isn't that already handled with RK_KERNEL_FITIMAGE from within
> > conf/machine/include/rockchip-extlinux.inc (you may then want to require
> > this file).
> > 
> > > diff --git a/conf/machine/include/rk3568.inc b/conf/machine/include/rk3568.inc
> > > index bcf9dd8..12f0ba2 100644
> > > --- a/conf/machine/include/rk3568.inc
> > > +++ b/conf/machine/include/rk3568.inc
> > > @@ -10,7 +10,6 @@ require conf/machine/include/arm/armv8-2a/tune-cortexa55.inc
> > >   require conf/machine/include/rockchip-wic.inc
> > > 
> > >   KBUILD_DEFCONFIG ?= "defconfig"
> > > -KERNEL_FEATURES:append:rk3568 = " bsp/rockchip/remove-non-rockchip-arch-arm64.scc"
> > 
> > This has nothing to do with adding support for this new device no?
> > 
> > >   KERNEL_CLASSES = "kernel-fitimage"
> > >   KERNEL_IMAGETYPE ?= "fitImage"
> > > 
> > > diff --git a/conf/machine/include/rk3588s.inc b/conf/machine/include/rk3588s.inc
> > > index 6ec344a..d0654c1 100644
> > > --- a/conf/machine/include/rk3588s.inc
> > > +++ b/conf/machine/include/rk3588s.inc
> > > @@ -9,7 +9,6 @@ require conf/machine/include/arm/armv8-2a/tune-cortexa76-cortexa55.inc
> > >   require conf/machine/include/rockchip-wic.inc
> > > 
> > >   KBUILD_DEFCONFIG ?= "defconfig"
> > > -KERNEL_FEATURES:append:rk3588s = " bsp/rockchip/remove-non-rockchip-arch-arm64.scc"
> > 
> > This has nothing to do with adding support for this new device no?
> > 
> > >   KERNEL_CLASSES = "kernel-fitimage"
> > >   KERNEL_IMAGETYPE ?= "fitImage"
> > > 
> > > diff --git a/conf/machine/luckfox-lyra-plus.conf b/conf/machine/luckfox-lyra-plus.conf
> > > new file mode 100644
> > > index 0000000..529a472
> > > --- /dev/null
> > > +++ b/conf/machine/luckfox-lyra-plus.conf
> > > @@ -0,0 +1,27 @@
> > > +#@TYPE: Machine
> > > +#@NAME: Luckfox Lyra Plus
> > > +#@DESCRIPTION: RK3506G2 based Linux Micro Development Board
> > > +#https://www.luckfox.com/Luckfox-Lyra-Plus
> 
> Usually I would be excited about a tiny rockchip-based SBC with
> hardwired ethernet. But a new SoC based on CortexA7 (i.e. 32-bit)??
> And no SDcard?

Oops, my mistake. There is an SDcard slot.
(hadn't scrolled down far enough)

> 
> Hopefully someone comes out with something new to replace the zero-3e
> which appears to be out of production.
> 
> > > +
> > > +require conf/machine/include/rk3506.inc
> > > +
> > > +KERNEL_DEVICETREE ?= "rk3506g-luckfox-lyra-plus-sd.dtb"
> > > +MACHINE_EXTRA_RRECOMMENDS += "kernel-modules"
> > > +PREFERRED_PROVIDER_virtual/kernel = "linux-armbian"
> > 
> > I believe we only take boards which are supported by linux-yocto or
> > linux-yocto-dev from the master branch of OE-Core. I don't even see patches
> > on the linux-rockchip mailing list
> > 
> > > +EXTERNAL_KERNEL_DEVICETREE = "${DEPLOY_DIR_IMAGE}/devicetree"
> > > +
> > > +UBOOT_MACHINE = "luckfox-lyra-rk3506_defconfig"
> > > +
> > > +MACHINE_FEATURES = " \
> > > +  rtc \
> > > +  screen \
> > > +  serial \
> > > +  usbgadget \
> > > +  usbhost \
> > > +  vfat \
> > > +"
> > > +
> > > +KERNEL_FEATURES += " \
> > > +  cfg/fs/ext4.scc \
> > > +  features/cgroups/cgroups.scc \
> > > +"
> > 
> > KERNEL_FEATURES must be listed in the kernel recipe not in the machine.
> > 
> > > diff --git a/recipes-bsp/rkbin/rockchip-rkbin-ddr_git.bb b/recipes-bsp/rkbin/rockchip-rkbin-ddr_git.bb
> > > index 3227a53..7f654ff 100644
> > > --- a/recipes-bsp/rkbin/rockchip-rkbin-ddr_git.bb
> > > +++ b/recipes-bsp/rkbin/rockchip-rkbin-ddr_git.bb
> > > @@ -10,6 +10,15 @@ do_deploy:rk3308() {
> > >          install -m 644 ${S}/bin/rk33/${DDRBIN_FILE} ${DEPLOYDIR}/ddr-rk3308.bin
> > >   }
> > > 
> > 
> > Wait.... This doesn't exist anymore. Against which branch did you develop
> > this patch?
> > 
> > The master branch has a completely different mechanism which is much more
> > automatic than what's needed below.
> > 
> > > +DDRBIN_VERS:rk3506 ?= "v1.02"
> > > +DDRBIN_FILE:rk3506 ?= "rk3506_ddr_750MHz_${DDRBIN_VERS}.bin"
> > > +
> > > +do_deploy:rk3506() {
> > > +       # Prebuilt U-Boot TPL (DDR init)
> > > +       install -m 644 ${S}/bin/rk35/${DDRBIN_FILE} ${DEPLOYDIR}/ddr-rk3506.bin
> > > +       install -m 644 ${S}/bin/rk35/rk3506_tee_v1.23.bin ${DEPLOYDIR}/tee-rk3506.bin
> > 
> > This is TEE, not DRAM init blob so shouldn't be deployed in this recipe.
> > 
> > > +}
> > > +>   DDRBIN_VERS:rk3566 ?= "v1.23"
> > >   DDRBIN_FILE:rk3566 ?= "rk3566_ddr_1056MHz_${DDRBIN_VERS}.bin"
> > > 
> > > diff --git a/recipes-bsp/rkbin/rockchip-rkbin-optee-os_git.bb b/recipes-bsp/rkbin/rockchip-rkbin-optee-os_git.bb
> > > index 6d25368..cbd376c 100644
> > > --- a/recipes-bsp/rkbin/rockchip-rkbin-optee-os_git.bb
> > > +++ b/recipes-bsp/rkbin/rockchip-rkbin-optee-os_git.bb
> > > @@ -9,6 +9,11 @@ do_deploy:rk3308() {
> > >          install -m 644 ${S}/bin/rk33/rk3308_bl32_v*.bin ${DEPLOYDIR}/tee-rk3308.bin
> > >   }
> > > 
> > > +do_deploy:rk3506() {
> > > +       # Prebuilt OPTEE-OS
> > > +       install -m 644 ${S}/bin/rk35/rk3506_tee_v*.bin ${DEPLOYDIR}/tee-rk3506.bin
> > > +}
> > > +
> > >   # NOTE: the following are not typos
> > >   #       the rk3566 uses the same bl32 as the rk3568
> > >   do_deploy:rk3566() {
> > > diff --git a/recipes-bsp/rkbin/rockchip-rkbin.inc b/recipes-bsp/rkbin/rockchip-rkbin.inc
> > > index 9264db9..8dfdc09 100644
> > > --- a/recipes-bsp/rkbin/rockchip-rkbin.inc
> > > +++ b/recipes-bsp/rkbin/rockchip-rkbin.inc
> > > @@ -11,6 +11,7 @@ S = "${WORKDIR}/git"
> > > 
> > >   COMPATIBLE_MACHINE = "^$"
> > >   COMPATIBLE_MACHINE:rk3308 = "rk3308"
> > > +COMPATIBLE_MACHINE:rk3506 = "rk3506"
> > >   COMPATIBLE_MACHINE:rk3566 = "rk3566"
> > >   COMPATIBLE_MACHINE:rk3568 = "rk3568"
> > >   COMPATIBLE_MACHINE:rk3588s = "rk3588s"
> > > diff --git a/recipes-bsp/u-boot/u-boot-rockchip.inc b/recipes-bsp/u-boot/u-boot-rockchip.inc
> > > index 2b5bbd7..67c4418 100644
> > > --- a/recipes-bsp/u-boot/u-boot-rockchip.inc
> > > +++ b/recipes-bsp/u-boot/u-boot-rockchip.inc
> > > @@ -11,7 +11,9 @@ do_compile[depends] .= "${TFA_DEPENDS}"
> > >   ROCKCHIP_TPL:closed-tpl = "${DEPLOY_DIR_IMAGE}/ddr-${SOC_FAMILY}.bin"
> > >   # SOC_FAMILY for RK3588S is rk3588s but it should use the binaries from rk3588
> > >   ROCKCHIP_TPL:closed-tpl:rk3588s = "${DEPLOY_DIR_IMAGE}/ddr-rk3588.bin"
> > > +ROCKCHIP_TEE:closed-tpl:rk3506 = "${DEPLOY_DIR_IMAGE}/tee-rk3506.bin"
> > >   EXTRA_OEMAKE:append:closed-tpl = " ROCKCHIP_TPL=${ROCKCHIP_TPL}"
> > > +EXTRA_OEMAKE:append:closed-tpl:rk3506 = " TEE=${ROCKCHIP_TEE}"
> > > 
> > 
> > I think you only want
> > 
> > ROCKCHIP_TEE:rk3506
> > 
> > and
> > 
> > EXTRA_OEMAKE:append:rk3506
> > 
> > as I believe TEE has nothing to do with whether we're using a DRAM init
> > blob?
> > 
> > Also, this isn't working because you forgot to add the dependency on
> > optee-os (see do_compile[depends] .= "${TFA_DEPENDS}" for how we have the
> > dependency for trsuted-firmware-a on Aarch64).
> > 
> > >   INIT_FIRMWARE_DEPENDS ??= ""
> > >   INIT_FIRMWARE_DEPENDS:closed-tpl = " rockchip-rkbin-ddr:do_deploy"
> > > diff --git a/recipes-bsp/u-boot/u-boot_%.bbappend b/recipes-bsp/u-boot/u-boot_%.bbappend
> > > index 08e1730..fc6a36e 100644
> > > --- a/recipes-bsp/u-boot/u-boot_%.bbappend
> > > +++ b/recipes-bsp/u-boot/u-boot_%.bbappend
> > > @@ -8,6 +8,10 @@ DEPENDS:append:rk3308 = " u-boot-tools-native"
> > >   DEPENDS:append:rock-pi-4 = " gnutls-native"
> > >   DEPENDS:append:rk-u-boot-env = " u-boot-mkenvimage-native"
> > > 
> > > +BRANCH:luckfox-lyra-plus = "rk3506"
> > > +SRC_URI:luckfox-lyra-plus = "git://source.denx.de/u-boot/contributors/kwiboo/u-boot.git;protocol=https;branch=${BRANCH}"
> > > +SRCREV:luckfox-lyra-plus = "c6782a37feee4a8aee08d321c01b4ca0b0562f0b"
> > > +
> > 
> > That's a BIG no-no.
> > 
> > Have a separate recipe for this.
> > 
> > Knowing Jonas, there are chances this branch will get rebased, so I don't
> > think we want this at all.
> > 
> > I see patches on the U-Boot mailing list for RK3506 support in U-Boot, see
> > https://lore.kernel.org/u-boot/20260109005008.101506-1-jonas@kwiboo.se/ and
> > Jonas "promised" a v2. Maybe work with him on getting the v2 sent upstream?
> > 
> > >   do_compile:append:rock2-square () {
> > >          # copy to default search path
> > >          if [ "${SPL_BINARY}" = "u-boot-spl-dtb.bin" ]; then
> > > diff --git a/recipes-kernel/linux/linux-armbian_git.bb b/recipes-kernel/linux/linux-armbian_git.bb
> > > new file mode 100644
> > > index 0000000..42dad4f
> > > --- /dev/null
> > > +++ b/recipes-kernel/linux/linux-armbian_git.bb
> > 
> > I'll let Trevor speak his mind here but I don't think Armbian Linux kernel
> > is something we're interested in supporting. Work with upstream to get the
> > board supported in upstream Linux and then we can have it here.
> 
> I agree with Quentin's assessment. If rockchip were a platform that had
> little or no upstream support then we would need to have all sorts of
> recipes for bootloaders and kernels from wherever we could find them.
> But with rockchip, upstream support is usually just a matter of time.
> I'll take new machines if they're in linux-yocto-dev, but would rather
> stay away from vendor kernels.
> 
> If a board is wildly popular and will never have upstream support then I
> would consider it. But if Jonas is already working on it, then we will
> probably see upstream support shortly.
> 
> > Cheers,
> > Quentin
> > 
> > 
> > 
> > 
> > 
> 
> 
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#3136): https://lists.yoctoproject.org/g/yocto-patches/message/3136
> Mute This Topic: https://lists.yoctoproject.org/mt/117496463/900817
> Group Owner: yocto-patches+owner@lists.yoctoproject.org
> Unsubscribe: https://lists.yoctoproject.org/g/yocto-patches/leave/13168745/900817/63955952/xyzzy [twoerner@gmail.com]
> -=-=-=-=-=-=-=-=-=-=-=-
> 
>
Marcin Bober Jan. 29, 2026, 5:08 p.m. UTC | #4
ok

On Wed, Jan 28, 2026, 17:07 Trevor Woerner <twoerner@gmail.com> wrote:

> On Wed 2026-01-28 @ 11:04:11 AM, Trevor Woerner via lists.yoctoproject.org
> wrote:
> > Thank you, Quentin, for your thorough review!
> >
> > On Wed 2026-01-28 @ 11:35:17 AM, Quentin Schulz via
> lists.yoctoproject.org wrote:
> > > Hi Marcin,
> > >
> > > On 1/27/26 9:51 PM, Marcin Bober via lists.yoctoproject.org wrote:
> > > > [You don't often get email from mbober1=
> gmail.com@lists.yoctoproject.org. Learn why this is important at
> https://aka.ms/LearnAboutSenderIdentification ]
> > > >
> > > > The Luckfox Lyra Plus is ultra-small, tri-core single board computer
> > > > based on the Rockchip RK3506G2, with a very compact form factor.
> > > >
> > > > Signed-off-by: Marcin Bober <mbober1@gmail.com>
> > > > ---
> > > >   README                                        |  1 +
> > > >   conf/machine/include/rk3506.inc               | 20 +++++++++++++
> > > >   conf/machine/include/rk3568.inc               |  1 -
> > > >   conf/machine/include/rk3588s.inc              |  1 -
> > > >   conf/machine/luckfox-lyra-plus.conf           | 27
> +++++++++++++++++
> > > >   recipes-bsp/rkbin/rockchip-rkbin-ddr_git.bb   |  9 ++++++
> > > >   .../rkbin/rockchip-rkbin-optee-os_git.bb      |  5 ++++
> > > >   recipes-bsp/rkbin/rockchip-rkbin.inc          |  1 +
> > > >   recipes-bsp/u-boot/u-boot-rockchip.inc        |  2 ++
> > > >   recipes-bsp/u-boot/u-boot_%.bbappend          |  4 +++
> > > >   recipes-kernel/linux/linux-armbian_git.bb     | 29
> +++++++++++++++++++
> > > >   11 files changed, 98 insertions(+), 2 deletions(-)
> > > >   create mode 100644 conf/machine/include/rk3506.inc
> > > >   create mode 100644 conf/machine/luckfox-lyra-plus.conf
> > > >   create mode 100644 recipes-kernel/linux/linux-armbian_git.bb
> > > >
> > > > diff --git a/README b/README
> > > > index 6bceba0..3991415 100644
> > > > --- a/README
> > > > +++ b/README
> > > > @@ -23,6 +23,7 @@ Status of supported boards:
> > > >                          tinker-board
> > > >                          tinker-board-s
> > > >                          vyasa-rk3288
> > > > +                       luckfox-lyra-plus
> > >
> > > Please keep the list ordered alphabetically.
> > >
> > > >
> > > >                  64-bit:
> > > >                          nanopi-m4
> > > > diff --git a/conf/machine/include/rk3506.inc
> b/conf/machine/include/rk3506.inc
> > > > new file mode 100644
> > > > index 0000000..e204283
> > > > --- /dev/null
> > > > +++ b/conf/machine/include/rk3506.inc
> > > > @@ -0,0 +1,20 @@
> > > > +MACHINEOVERRIDES =. "rk3506:"
> > > > +SOC_FAMILY = "rk3506"
> > > > +DEFAULTTUNE = "cortexa7thf-neon-vfpv4"
> > > > +
> > > > +ROCKCHIP_CLOSED_TPL ?= "1"
> > > > +
> > > > +require conf/machine/include/soc-family.inc
> > > > +require conf/machine/include/rockchip-defaults.inc
> > > > +require conf/machine/include/arm/armv7a/tune-cortexa7.inc
> > > > +require conf/machine/include/rockchip-wic.inc
> > > > +
> > > > +PREFERRED_PROVIDER_optee-os = "rockchip-rkbin-optee-os"
> > > > +
> > >
> > > Ooooh, I believe this would mean OP-TEE OS blob from Rockchip can be
> used
> > > with upstream U-Boot? Have you actually tried? This would be
> interesting for
> > > me for
> https://lore.kernel.org/yocto-patches/20260126-optee-os-v1-0-874261a77dad@cherry.de/
> > > to check if I got it right for rockchip-rkbin-optee-os as well.
> > >
> > > Is OP-TEE OS *required* on rk3506 to be able to boot? Do you know?
> > >
> > > Essentially, with the patch series listed above applied, you would
> need to
> > > set RK_UBOOT_TEE = "1" and then U-Boot would automatically add the
> necessary
> > > dependency and add the correct filepath to the TEE environment
> variable.
> > >
> > > > +KBUILD_DEFCONFIG ?= "rk3506_defconfig"
> > >
> > > Usually we would rather have multi_v7_defconfig and if needed apply
> > > .scc+.cfg config fragments (see what's been done for nanopi-r4s).
> > >
> > > > +KERNEL_CLASSES = "kernel-fitimage"
> > > > +KERNEL_IMAGETYPE ?= "fitImage"
> > > > +
> > >
> > > Isn't a FIT image the default when you include rockchip-defaults? See
> > > RK_KERNEL_FITIMAGE variable.
> > >
> > > > +UBOOT_SUFFIX ?= "itb"
> > > > +UBOOT_ENTRYPOINT ?= "0x02800000"
> > > > +UBOOT_EXTLINUX_FDT = "${@bb.utils.contains('KERNEL_IMAGETYPE',
> 'fitImage', '', '/boot', d)}"
> > >
> > > isn't that already handled with RK_KERNEL_FITIMAGE from within
> > > conf/machine/include/rockchip-extlinux.inc (you may then want to
> require
> > > this file).
> > >
> > > > diff --git a/conf/machine/include/rk3568.inc
> b/conf/machine/include/rk3568.inc
> > > > index bcf9dd8..12f0ba2 100644
> > > > --- a/conf/machine/include/rk3568.inc
> > > > +++ b/conf/machine/include/rk3568.inc
> > > > @@ -10,7 +10,6 @@ require
> conf/machine/include/arm/armv8-2a/tune-cortexa55.inc
> > > >   require conf/machine/include/rockchip-wic.inc
> > > >
> > > >   KBUILD_DEFCONFIG ?= "defconfig"
> > > > -KERNEL_FEATURES:append:rk3568 = "
> bsp/rockchip/remove-non-rockchip-arch-arm64.scc"
> > >
> > > This has nothing to do with adding support for this new device no?
> > >
> > > >   KERNEL_CLASSES = "kernel-fitimage"
> > > >   KERNEL_IMAGETYPE ?= "fitImage"
> > > >
> > > > diff --git a/conf/machine/include/rk3588s.inc
> b/conf/machine/include/rk3588s.inc
> > > > index 6ec344a..d0654c1 100644
> > > > --- a/conf/machine/include/rk3588s.inc
> > > > +++ b/conf/machine/include/rk3588s.inc
> > > > @@ -9,7 +9,6 @@ require
> conf/machine/include/arm/armv8-2a/tune-cortexa76-cortexa55.inc
> > > >   require conf/machine/include/rockchip-wic.inc
> > > >
> > > >   KBUILD_DEFCONFIG ?= "defconfig"
> > > > -KERNEL_FEATURES:append:rk3588s = "
> bsp/rockchip/remove-non-rockchip-arch-arm64.scc"
> > >
> > > This has nothing to do with adding support for this new device no?
> > >
> > > >   KERNEL_CLASSES = "kernel-fitimage"
> > > >   KERNEL_IMAGETYPE ?= "fitImage"
> > > >
> > > > diff --git a/conf/machine/luckfox-lyra-plus.conf
> b/conf/machine/luckfox-lyra-plus.conf
> > > > new file mode 100644
> > > > index 0000000..529a472
> > > > --- /dev/null
> > > > +++ b/conf/machine/luckfox-lyra-plus.conf
> > > > @@ -0,0 +1,27 @@
> > > > +#@TYPE: Machine
> > > > +#@NAME: Luckfox Lyra Plus
> > > > +#@DESCRIPTION: RK3506G2 based Linux Micro Development Board
> > > > +#https://www.luckfox.com/Luckfox-Lyra-Plus
> >
> > Usually I would be excited about a tiny rockchip-based SBC with
> > hardwired ethernet. But a new SoC based on CortexA7 (i.e. 32-bit)??
> > And no SDcard?
>
> Oops, my mistake. There is an SDcard slot.
> (hadn't scrolled down far enough)
>
> >
> > Hopefully someone comes out with something new to replace the zero-3e
> > which appears to be out of production.
> >
> > > > +
> > > > +require conf/machine/include/rk3506.inc
> > > > +
> > > > +KERNEL_DEVICETREE ?= "rk3506g-luckfox-lyra-plus-sd.dtb"
> > > > +MACHINE_EXTRA_RRECOMMENDS += "kernel-modules"
> > > > +PREFERRED_PROVIDER_virtual/kernel = "linux-armbian"
> > >
> > > I believe we only take boards which are supported by linux-yocto or
> > > linux-yocto-dev from the master branch of OE-Core. I don't even see
> patches
> > > on the linux-rockchip mailing list
> > >
> > > > +EXTERNAL_KERNEL_DEVICETREE = "${DEPLOY_DIR_IMAGE}/devicetree"
> > > > +
> > > > +UBOOT_MACHINE = "luckfox-lyra-rk3506_defconfig"
> > > > +
> > > > +MACHINE_FEATURES = " \
> > > > +  rtc \
> > > > +  screen \
> > > > +  serial \
> > > > +  usbgadget \
> > > > +  usbhost \
> > > > +  vfat \
> > > > +"
> > > > +
> > > > +KERNEL_FEATURES += " \
> > > > +  cfg/fs/ext4.scc \
> > > > +  features/cgroups/cgroups.scc \
> > > > +"
> > >
> > > KERNEL_FEATURES must be listed in the kernel recipe not in the machine.
> > >
> > > > diff --git a/recipes-bsp/rkbin/rockchip-rkbin-ddr_git.bb
> b/recipes-bsp/rkbin/rockchip-rkbin-ddr_git.bb
> > > > index 3227a53..7f654ff 100644
> > > > --- a/recipes-bsp/rkbin/rockchip-rkbin-ddr_git.bb
> > > > +++ b/recipes-bsp/rkbin/rockchip-rkbin-ddr_git.bb
> > > > @@ -10,6 +10,15 @@ do_deploy:rk3308() {
> > > >          install -m 644 ${S}/bin/rk33/${DDRBIN_FILE}
> ${DEPLOYDIR}/ddr-rk3308.bin
> > > >   }
> > > >
> > >
> > > Wait.... This doesn't exist anymore. Against which branch did you
> develop
> > > this patch?
> > >
> > > The master branch has a completely different mechanism which is much
> more
> > > automatic than what's needed below.
> > >
> > > > +DDRBIN_VERS:rk3506 ?= "v1.02"
> > > > +DDRBIN_FILE:rk3506 ?= "rk3506_ddr_750MHz_${DDRBIN_VERS}.bin"
> > > > +
> > > > +do_deploy:rk3506() {
> > > > +       # Prebuilt U-Boot TPL (DDR init)
> > > > +       install -m 644 ${S}/bin/rk35/${DDRBIN_FILE}
> ${DEPLOYDIR}/ddr-rk3506.bin
> > > > +       install -m 644 ${S}/bin/rk35/rk3506_tee_v1.23.bin
> ${DEPLOYDIR}/tee-rk3506.bin
> > >
> > > This is TEE, not DRAM init blob so shouldn't be deployed in this
> recipe.
> > >
> > > > +}
> > > > +>   DDRBIN_VERS:rk3566 ?= "v1.23"
> > > >   DDRBIN_FILE:rk3566 ?= "rk3566_ddr_1056MHz_${DDRBIN_VERS}.bin"
> > > >
> > > > diff --git a/recipes-bsp/rkbin/rockchip-rkbin-optee-os_git.bb
> b/recipes-bsp/rkbin/rockchip-rkbin-optee-os_git.bb
> > > > index 6d25368..cbd376c 100644
> > > > --- a/recipes-bsp/rkbin/rockchip-rkbin-optee-os_git.bb
> > > > +++ b/recipes-bsp/rkbin/rockchip-rkbin-optee-os_git.bb
> > > > @@ -9,6 +9,11 @@ do_deploy:rk3308() {
> > > >          install -m 644 ${S}/bin/rk33/rk3308_bl32_v*.bin
> ${DEPLOYDIR}/tee-rk3308.bin
> > > >   }
> > > >
> > > > +do_deploy:rk3506() {
> > > > +       # Prebuilt OPTEE-OS
> > > > +       install -m 644 ${S}/bin/rk35/rk3506_tee_v*.bin
> ${DEPLOYDIR}/tee-rk3506.bin
> > > > +}
> > > > +
> > > >   # NOTE: the following are not typos
> > > >   #       the rk3566 uses the same bl32 as the rk3568
> > > >   do_deploy:rk3566() {
> > > > diff --git a/recipes-bsp/rkbin/rockchip-rkbin.inc
> b/recipes-bsp/rkbin/rockchip-rkbin.inc
> > > > index 9264db9..8dfdc09 100644
> > > > --- a/recipes-bsp/rkbin/rockchip-rkbin.inc
> > > > +++ b/recipes-bsp/rkbin/rockchip-rkbin.inc
> > > > @@ -11,6 +11,7 @@ S = "${WORKDIR}/git"
> > > >
> > > >   COMPATIBLE_MACHINE = "^$"
> > > >   COMPATIBLE_MACHINE:rk3308 = "rk3308"
> > > > +COMPATIBLE_MACHINE:rk3506 = "rk3506"
> > > >   COMPATIBLE_MACHINE:rk3566 = "rk3566"
> > > >   COMPATIBLE_MACHINE:rk3568 = "rk3568"
> > > >   COMPATIBLE_MACHINE:rk3588s = "rk3588s"
> > > > diff --git a/recipes-bsp/u-boot/u-boot-rockchip.inc
> b/recipes-bsp/u-boot/u-boot-rockchip.inc
> > > > index 2b5bbd7..67c4418 100644
> > > > --- a/recipes-bsp/u-boot/u-boot-rockchip.inc
> > > > +++ b/recipes-bsp/u-boot/u-boot-rockchip.inc
> > > > @@ -11,7 +11,9 @@ do_compile[depends] .= "${TFA_DEPENDS}"
> > > >   ROCKCHIP_TPL:closed-tpl =
> "${DEPLOY_DIR_IMAGE}/ddr-${SOC_FAMILY}.bin"
> > > >   # SOC_FAMILY for RK3588S is rk3588s but it should use the binaries
> from rk3588
> > > >   ROCKCHIP_TPL:closed-tpl:rk3588s =
> "${DEPLOY_DIR_IMAGE}/ddr-rk3588.bin"
> > > > +ROCKCHIP_TEE:closed-tpl:rk3506 =
> "${DEPLOY_DIR_IMAGE}/tee-rk3506.bin"
> > > >   EXTRA_OEMAKE:append:closed-tpl = " ROCKCHIP_TPL=${ROCKCHIP_TPL}"
> > > > +EXTRA_OEMAKE:append:closed-tpl:rk3506 = " TEE=${ROCKCHIP_TEE}"
> > > >
> > >
> > > I think you only want
> > >
> > > ROCKCHIP_TEE:rk3506
> > >
> > > and
> > >
> > > EXTRA_OEMAKE:append:rk3506
> > >
> > > as I believe TEE has nothing to do with whether we're using a DRAM init
> > > blob?
> > >
> > > Also, this isn't working because you forgot to add the dependency on
> > > optee-os (see do_compile[depends] .= "${TFA_DEPENDS}" for how we have
> the
> > > dependency for trsuted-firmware-a on Aarch64).
> > >
> > > >   INIT_FIRMWARE_DEPENDS ??= ""
> > > >   INIT_FIRMWARE_DEPENDS:closed-tpl = " rockchip-rkbin-ddr:do_deploy"
> > > > diff --git a/recipes-bsp/u-boot/u-boot_%.bbappend
> b/recipes-bsp/u-boot/u-boot_%.bbappend
> > > > index 08e1730..fc6a36e 100644
> > > > --- a/recipes-bsp/u-boot/u-boot_%.bbappend
> > > > +++ b/recipes-bsp/u-boot/u-boot_%.bbappend
> > > > @@ -8,6 +8,10 @@ DEPENDS:append:rk3308 = " u-boot-tools-native"
> > > >   DEPENDS:append:rock-pi-4 = " gnutls-native"
> > > >   DEPENDS:append:rk-u-boot-env = " u-boot-mkenvimage-native"
> > > >
> > > > +BRANCH:luckfox-lyra-plus = "rk3506"
> > > > +SRC_URI:luckfox-lyra-plus = "git://
> source.denx.de/u-boot/contributors/kwiboo/u-boot.git;protocol=https;branch=${BRANCH}
> <http://source.denx.de/u-boot/contributors/kwiboo/u-boot.git;protocol=https;branch=$%7BBRANCH%7D>
> "
> > > > +SRCREV:luckfox-lyra-plus =
> "c6782a37feee4a8aee08d321c01b4ca0b0562f0b"
> > > > +
> > >
> > > That's a BIG no-no.
> > >
> > > Have a separate recipe for this.
> > >
> > > Knowing Jonas, there are chances this branch will get rebased, so I
> don't
> > > think we want this at all.
> > >
> > > I see patches on the U-Boot mailing list for RK3506 support in U-Boot,
> see
> > >
> https://lore.kernel.org/u-boot/20260109005008.101506-1-jonas@kwiboo.se/
> and
> > > Jonas "promised" a v2. Maybe work with him on getting the v2 sent
> upstream?
> > >
> > > >   do_compile:append:rock2-square () {
> > > >          # copy to default search path
> > > >          if [ "${SPL_BINARY}" = "u-boot-spl-dtb.bin" ]; then
> > > > diff --git a/recipes-kernel/linux/linux-armbian_git.bb
> b/recipes-kernel/linux/linux-armbian_git.bb
> > > > new file mode 100644
> > > > index 0000000..42dad4f
> > > > --- /dev/null
> > > > +++ b/recipes-kernel/linux/linux-armbian_git.bb
> > >
> > > I'll let Trevor speak his mind here but I don't think Armbian Linux
> kernel
> > > is something we're interested in supporting. Work with upstream to get
> the
> > > board supported in upstream Linux and then we can have it here.
> >
> > I agree with Quentin's assessment. If rockchip were a platform that had
> > little or no upstream support then we would need to have all sorts of
> > recipes for bootloaders and kernels from wherever we could find them.
> > But with rockchip, upstream support is usually just a matter of time.
> > I'll take new machines if they're in linux-yocto-dev, but would rather
> > stay away from vendor kernels.
> >
> > If a board is wildly popular and will never have upstream support then I
> > would consider it. But if Jonas is already working on it, then we will
> > probably see upstream support shortly.
> >
> > > Cheers,
> > > Quentin
> > >
> > >
> > >
> > >
> > >
> >
> >
> > -=-=-=-=-=-=-=-=-=-=-=-
> > Links: You receive all messages sent to this group.
> > View/Reply Online (#3136):
> https://lists.yoctoproject.org/g/yocto-patches/message/3136
> > Mute This Topic: https://lists.yoctoproject.org/mt/117496463/900817
> > Group Owner: yocto-patches+owner@lists.yoctoproject.org
> > Unsubscribe:
> https://lists.yoctoproject.org/g/yocto-patches/leave/13168745/900817/63955952/xyzzy
> [twoerner@gmail.com]
> > -=-=-=-=-=-=-=-=-=-=-=-
> >
> >
>
diff mbox series

Patch

diff --git a/README b/README
index 6bceba0..3991415 100644
--- a/README
+++ b/README
@@ -23,6 +23,7 @@  Status of supported boards:
 			tinker-board
 			tinker-board-s
 			vyasa-rk3288
+			luckfox-lyra-plus
 
 		64-bit:
 			nanopi-m4
diff --git a/conf/machine/include/rk3506.inc b/conf/machine/include/rk3506.inc
new file mode 100644
index 0000000..e204283
--- /dev/null
+++ b/conf/machine/include/rk3506.inc
@@ -0,0 +1,20 @@ 
+MACHINEOVERRIDES =. "rk3506:"
+SOC_FAMILY = "rk3506"
+DEFAULTTUNE = "cortexa7thf-neon-vfpv4"
+
+ROCKCHIP_CLOSED_TPL ?= "1"
+
+require conf/machine/include/soc-family.inc
+require conf/machine/include/rockchip-defaults.inc
+require conf/machine/include/arm/armv7a/tune-cortexa7.inc
+require conf/machine/include/rockchip-wic.inc
+
+PREFERRED_PROVIDER_optee-os = "rockchip-rkbin-optee-os"
+
+KBUILD_DEFCONFIG ?= "rk3506_defconfig"
+KERNEL_CLASSES = "kernel-fitimage"
+KERNEL_IMAGETYPE ?= "fitImage"
+
+UBOOT_SUFFIX ?= "itb"
+UBOOT_ENTRYPOINT ?= "0x02800000"
+UBOOT_EXTLINUX_FDT = "${@bb.utils.contains('KERNEL_IMAGETYPE', 'fitImage', '', '/boot', d)}"
diff --git a/conf/machine/include/rk3568.inc b/conf/machine/include/rk3568.inc
index bcf9dd8..12f0ba2 100644
--- a/conf/machine/include/rk3568.inc
+++ b/conf/machine/include/rk3568.inc
@@ -10,7 +10,6 @@  require conf/machine/include/arm/armv8-2a/tune-cortexa55.inc
 require conf/machine/include/rockchip-wic.inc
 
 KBUILD_DEFCONFIG ?= "defconfig"
-KERNEL_FEATURES:append:rk3568 = " bsp/rockchip/remove-non-rockchip-arch-arm64.scc"
 KERNEL_CLASSES = "kernel-fitimage"
 KERNEL_IMAGETYPE ?= "fitImage"
 
diff --git a/conf/machine/include/rk3588s.inc b/conf/machine/include/rk3588s.inc
index 6ec344a..d0654c1 100644
--- a/conf/machine/include/rk3588s.inc
+++ b/conf/machine/include/rk3588s.inc
@@ -9,7 +9,6 @@  require conf/machine/include/arm/armv8-2a/tune-cortexa76-cortexa55.inc
 require conf/machine/include/rockchip-wic.inc
 
 KBUILD_DEFCONFIG ?= "defconfig"
-KERNEL_FEATURES:append:rk3588s = " bsp/rockchip/remove-non-rockchip-arch-arm64.scc"
 KERNEL_CLASSES = "kernel-fitimage"
 KERNEL_IMAGETYPE ?= "fitImage"
 
diff --git a/conf/machine/luckfox-lyra-plus.conf b/conf/machine/luckfox-lyra-plus.conf
new file mode 100644
index 0000000..529a472
--- /dev/null
+++ b/conf/machine/luckfox-lyra-plus.conf
@@ -0,0 +1,27 @@ 
+#@TYPE: Machine
+#@NAME: Luckfox Lyra Plus
+#@DESCRIPTION: RK3506G2 based Linux Micro Development Board
+#https://www.luckfox.com/Luckfox-Lyra-Plus
+
+require conf/machine/include/rk3506.inc
+
+KERNEL_DEVICETREE ?= "rk3506g-luckfox-lyra-plus-sd.dtb"
+MACHINE_EXTRA_RRECOMMENDS += "kernel-modules"
+PREFERRED_PROVIDER_virtual/kernel = "linux-armbian"
+EXTERNAL_KERNEL_DEVICETREE = "${DEPLOY_DIR_IMAGE}/devicetree"
+
+UBOOT_MACHINE = "luckfox-lyra-rk3506_defconfig"
+
+MACHINE_FEATURES = " \
+  rtc \
+  screen \
+  serial \
+  usbgadget \
+  usbhost \
+  vfat \
+"
+
+KERNEL_FEATURES += " \
+  cfg/fs/ext4.scc \
+  features/cgroups/cgroups.scc \
+"
diff --git a/recipes-bsp/rkbin/rockchip-rkbin-ddr_git.bb b/recipes-bsp/rkbin/rockchip-rkbin-ddr_git.bb
index 3227a53..7f654ff 100644
--- a/recipes-bsp/rkbin/rockchip-rkbin-ddr_git.bb
+++ b/recipes-bsp/rkbin/rockchip-rkbin-ddr_git.bb
@@ -10,6 +10,15 @@  do_deploy:rk3308() {
 	install -m 644 ${S}/bin/rk33/${DDRBIN_FILE} ${DEPLOYDIR}/ddr-rk3308.bin
 }
 
+DDRBIN_VERS:rk3506 ?= "v1.02"
+DDRBIN_FILE:rk3506 ?= "rk3506_ddr_750MHz_${DDRBIN_VERS}.bin"
+
+do_deploy:rk3506() {
+	# Prebuilt U-Boot TPL (DDR init)
+	install -m 644 ${S}/bin/rk35/${DDRBIN_FILE} ${DEPLOYDIR}/ddr-rk3506.bin
+	install -m 644 ${S}/bin/rk35/rk3506_tee_v1.23.bin ${DEPLOYDIR}/tee-rk3506.bin
+}
+
 DDRBIN_VERS:rk3566 ?= "v1.23"
 DDRBIN_FILE:rk3566 ?= "rk3566_ddr_1056MHz_${DDRBIN_VERS}.bin"
 
diff --git a/recipes-bsp/rkbin/rockchip-rkbin-optee-os_git.bb b/recipes-bsp/rkbin/rockchip-rkbin-optee-os_git.bb
index 6d25368..cbd376c 100644
--- a/recipes-bsp/rkbin/rockchip-rkbin-optee-os_git.bb
+++ b/recipes-bsp/rkbin/rockchip-rkbin-optee-os_git.bb
@@ -9,6 +9,11 @@  do_deploy:rk3308() {
 	install -m 644 ${S}/bin/rk33/rk3308_bl32_v*.bin ${DEPLOYDIR}/tee-rk3308.bin
 }
 
+do_deploy:rk3506() {
+	# Prebuilt OPTEE-OS
+	install -m 644 ${S}/bin/rk35/rk3506_tee_v*.bin ${DEPLOYDIR}/tee-rk3506.bin
+}
+
 # NOTE: the following are not typos
 #       the rk3566 uses the same bl32 as the rk3568
 do_deploy:rk3566() {
diff --git a/recipes-bsp/rkbin/rockchip-rkbin.inc b/recipes-bsp/rkbin/rockchip-rkbin.inc
index 9264db9..8dfdc09 100644
--- a/recipes-bsp/rkbin/rockchip-rkbin.inc
+++ b/recipes-bsp/rkbin/rockchip-rkbin.inc
@@ -11,6 +11,7 @@  S = "${WORKDIR}/git"
 
 COMPATIBLE_MACHINE = "^$"
 COMPATIBLE_MACHINE:rk3308 = "rk3308"
+COMPATIBLE_MACHINE:rk3506 = "rk3506"
 COMPATIBLE_MACHINE:rk3566 = "rk3566"
 COMPATIBLE_MACHINE:rk3568 = "rk3568"
 COMPATIBLE_MACHINE:rk3588s = "rk3588s"
diff --git a/recipes-bsp/u-boot/u-boot-rockchip.inc b/recipes-bsp/u-boot/u-boot-rockchip.inc
index 2b5bbd7..67c4418 100644
--- a/recipes-bsp/u-boot/u-boot-rockchip.inc
+++ b/recipes-bsp/u-boot/u-boot-rockchip.inc
@@ -11,7 +11,9 @@  do_compile[depends] .= "${TFA_DEPENDS}"
 ROCKCHIP_TPL:closed-tpl = "${DEPLOY_DIR_IMAGE}/ddr-${SOC_FAMILY}.bin"
 # SOC_FAMILY for RK3588S is rk3588s but it should use the binaries from rk3588
 ROCKCHIP_TPL:closed-tpl:rk3588s = "${DEPLOY_DIR_IMAGE}/ddr-rk3588.bin"
+ROCKCHIP_TEE:closed-tpl:rk3506 = "${DEPLOY_DIR_IMAGE}/tee-rk3506.bin"
 EXTRA_OEMAKE:append:closed-tpl = " ROCKCHIP_TPL=${ROCKCHIP_TPL}"
+EXTRA_OEMAKE:append:closed-tpl:rk3506 = " TEE=${ROCKCHIP_TEE}"
 
 INIT_FIRMWARE_DEPENDS ??= ""
 INIT_FIRMWARE_DEPENDS:closed-tpl = " rockchip-rkbin-ddr:do_deploy"
diff --git a/recipes-bsp/u-boot/u-boot_%.bbappend b/recipes-bsp/u-boot/u-boot_%.bbappend
index 08e1730..fc6a36e 100644
--- a/recipes-bsp/u-boot/u-boot_%.bbappend
+++ b/recipes-bsp/u-boot/u-boot_%.bbappend
@@ -8,6 +8,10 @@  DEPENDS:append:rk3308 = " u-boot-tools-native"
 DEPENDS:append:rock-pi-4 = " gnutls-native"
 DEPENDS:append:rk-u-boot-env = " u-boot-mkenvimage-native"
 
+BRANCH:luckfox-lyra-plus = "rk3506"
+SRC_URI:luckfox-lyra-plus = "git://source.denx.de/u-boot/contributors/kwiboo/u-boot.git;protocol=https;branch=${BRANCH}"
+SRCREV:luckfox-lyra-plus = "c6782a37feee4a8aee08d321c01b4ca0b0562f0b"
+
 do_compile:append:rock2-square () {
 	# copy to default search path
 	if [ "${SPL_BINARY}" = "u-boot-spl-dtb.bin" ]; then
diff --git a/recipes-kernel/linux/linux-armbian_git.bb b/recipes-kernel/linux/linux-armbian_git.bb
new file mode 100644
index 0000000..42dad4f
--- /dev/null
+++ b/recipes-kernel/linux/linux-armbian_git.bb
@@ -0,0 +1,29 @@ 
+FILESEXTRAPATHS:prepend := "${THISDIR}/files:"
+
+DESCRIPTION = "Linux Kernel"
+SECTION = "kernel"
+LICENSE = "GPL-2.0-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46"
+
+LINUX_VERSION = "6.1.115"
+KBRANCH = "rk-6.1-rkr5.1"
+SRCREV_kernel = "b908c7339f51eddcfe8402cd15d1e1f8f4e67c29"
+SRCREV_yocto-meta = "7545dc5bc77560f4b1b6efc47b56e953dc86572d"
+PV = "${LINUX_VERSION}"
+
+SRC_URI = " \
+	git://github.com/armbian/linux-rockchip.git;name=kernel;protocol=https;branch=${KBRANCH} \
+	git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=yocto-meta;branch=yocto-6.1;destsuffix=kernel-meta;protocol=https \
+"
+
+DEPENDS += "lzop-native"
+FIT_KERNEL_COMP_ALG ?= "lzo"
+FIT_KERNEL_COMP_ALG_EXTENSION ?= ".lzo"
+
+COMPATIBLE_MACHINE:luckfox-lyra-plus = "luckfox-lyra-plus"
+
+inherit kernel
+inherit kernel-yocto
+require recipes-kernel/linux/linux-yocto.inc
+
+INSANE_SKIP:${PN}-src += "buildpaths"