Skip to content

OrangePi 3 LTS: Update U-Boot to v2026.01 and Linux DTS "and other fixups"#9323

Merged
pyavitz merged 7 commits intoarmbian:mainfrom
pyavitz:OPI-001
Jan 31, 2026
Merged

OrangePi 3 LTS: Update U-Boot to v2026.01 and Linux DTS "and other fixups"#9323
pyavitz merged 7 commits intoarmbian:mainfrom
pyavitz:OPI-001

Conversation

@pyavitz
Copy link
Collaborator

@pyavitz pyavitz commented Jan 31, 2026

This PR is meant to fix two issues:

  • Ethernet not coming up
  • Only one CPU coming up

This also introduces a different way of bringing up bluetooth and drops a dependency on the need for several patches.
Namely Add sunxi-addr driver - Used to fix uwe5622 bluetooth MAC addresses patch and related patches. As these patches are still required by other units, I left them in place.

https://paste.armbian.com/fimarilocu.yaml
Bug report: https://forum.armbian.com/topic/57147-bug-ethernet-rarely-connecting-successfully-in-orange-pi-3-lts/#comment-232222

Summary by CodeRabbit

  • New Features

    • Added OrangePi 3 LTS board support with Bluetooth and Wi‑Fi (UWE5622) and systemd service setup
    • Enabled KASLR for enhanced kernel address-space layout randomization
    • Added LED indicators for power and status
  • Chores

    • Updated boot configuration, kernel targets, module blacklisting, and device tree hardware descriptions
  • Revert

    • Removed an earlier initial device-tree patch entry from the kernel patch series

✏️ Tip: You can customize this high-level summary in your review settings.

Signed-off-by: Patrick Yavitz <pyavitz@gmail.com>
Signed-off-by: Patrick Yavitz <pyavitz@gmail.com>
Signed-off-by: Patrick Yavitz <pyavitz@gmail.com>
Signed-off-by: Patrick Yavitz <pyavitz@gmail.com>
Requires hciattach_opi_arm64_upstream blob

Drops dependency on Add sunxi-addr driver - Used to fix uwe5622
bluetooth MAC addresses patch

Signed-off-by: Patrick Yavitz <pyavitz@gmail.com>
Remove regulator-enable-ramp-delay = <100000>;

Signed-off-by: Patrick Yavitz <pyavitz@gmail.com>
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Jan 31, 2026

📝 Walkthrough

Walkthrough

Adds OrangePi 3 LTS support: new board config and U-Boot hooks, wireless setup scripts and systemd service enablement, new/updated device trees for 6.12 and 6.18 (with KASLR/LED changes), kernel/u-boot patches, and removal of an earlier 6.12 DT patch entry.

Changes

Cohort / File(s) Summary
Board configuration & hooks
config/boards/orangepi3-lts.csc
Added BOOT_FDT_FILE, PACKAGE_LIST_BOARD, MODULES_BLACKLIST; updated BOOTCONFIG and KERNEL_TARGET; added post_family_config__use_orangepi3lts_uboot and wireless/systemd hook functions for UWE5622 support.
Wireless helper script
packages/bsp/sunxi/sprd-bluetooth
New Bash script that derives a device-based Bluetooth address, writes it to /etc/default/sprd_bt_addr, attaches Sprd HCI UART (hciattach_opi), and unblocks rfkill.
Kernel DT (new 6.12 file)
patch/kernel/archive/sunxi-6.12/dt/sun50i-h6-orangepi-3-lts.dts
Added full device tree describing OrangePi 3 LTS hardware (clocks, regulators, LEDs, MMC/SDIO, USB, EMAC, PMIC, Bluetooth, etc.).
Kernel patch removal (6.12 series)
patch/kernel/archive/sunxi-6.12/patches.armbian/add-initial-support-for-orangepi3-lts.patch, patch/kernel/archive/sunxi-6.12/series.conf
Removed the previously added 6.12 DT patch and its entry from series.conf (DT deleted and Makefile inclusion reverted).
Kernel DT (6.18 updates)
patch/kernel/archive/sunxi-6.18/dt_64/sun50i-h6-orangepi-3-lts.dts
Updated DT: added kaslr-seed, renamed clock node, reworked LED nodes/triggers, adjusted regulators and WiFi power sequencing, changed EMAC timings/phy-mode, reorganized MMC/SDIO nodes, and added Bluetooth under uart1.
U-Boot/kernel config patches
patch/u-boot/v2026.01/board_orangepi3-lts/*
Inserted KASLR-related config options (CONFIG_CMD_KASLRSEED, CONFIG_DM_RNG) and added LED-related kernel config entries; adjusted LED labels/default-state in DTS patch.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Poem

🐰 Hops and hops — a board takes shape anew,
DTs and U-Boot patches stitched on cue.
Bluetooth hums, LEDs blink in tune,
I nibble bytes beneath the kernel moon.
🥕

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title references U-Boot v2026.01 and Linux DTS updates, which are primary changes in the PR, though it uses a vague qualifier 'and other fixups' at the end.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions github-actions bot added Needs review Seeking for review Hardware Hardware related like kernel, U-Boot, ... Patches Patches related to kernel, U-Boot, ... BSP Board Support Packages size/large PR with 250 lines or more labels Jan 31, 2026
@github-actions github-actions bot added the 02 Milestone: First quarter release label Jan 31, 2026
@pyavitz pyavitz requested review from EvilOlaf and removed request for a team, ColorfulRhino, NicoD-SBC and schwar3kat January 31, 2026 14:35
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Fix all issues with AI agents
In `@config/boards/orangepi3-lts.csc`:
- Around line 65-70: The hook
post_family_tweaks__enable_uwe5622_wireless_services currently runs
unconditionally and will fail if the unit files aren't present; modify it to
test for each unit file in the chroot before calling chroot_sdcard systemctl
--no-reload enable, e.g. check for the service unit path(s) like
/lib/systemd/system/sprd-bluetooth.service or
/etc/systemd/system/aw859a-wifi.service inside the chroot, and only run
chroot_sdcard systemctl --no-reload enable <unit> when the file exists; if a
unit is missing, call display_alert "$BOARD" "Skipping <unit> enable: unit not
installed" "warning" so enabling is guarded and non-fatal.

In `@packages/bsp/sunxi/sprd-bluetooth`:
- Around line 6-14: The MAC device detection using the sed chain for MACDEV is
brittle (fails for /dev/mapper, overlays); replace it by querying the parent
block device for the root mount via lsblk (e.g., use lsblk -no pkname or -no
NAME for the device mounted at /) to reliably set MACDEV, then attempt to read
/sys/class/block/${MACDEV}/device/cid into HASHDEV and format BTADDR as before;
if the CID file is missing or empty, generate a random locally‑administered
Bluetooth address (set the first octet to 02) and assign it to BTADDR as a
fallback so Bluetooth bring‑up does not abort.

Signed-off-by: Patrick Yavitz <pyavitz@gmail.com>
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Fix all issues with AI agents
In `@patch/kernel/archive/sunxi-6.12/dt/sun50i-h6-orangepi-3-lts.dts`:
- Around line 91-98: The device tree uses CLK_OSC32K_FANOUT in the sdio_pwrseq
node but the header defining that symbol is not included; add the missing
include for dt-bindings/clock/sun6i-rtc.h near the top of the DTS so
CLK_OSC32K_FANOUT resolves when compiling the sdio_pwrseq node.

@github-actions
Copy link
Contributor

✅ This PR has been reviewed and approved — all set for merge!

@github-actions github-actions bot added the Ready to merge Reviewed, tested and ready for merge label Jan 31, 2026
@github-actions
Copy link
Contributor

✅ This PR has been reviewed and approved — all set for merge!

@github-actions github-actions bot removed the Needs review Seeking for review label Jan 31, 2026
@pyavitz pyavitz merged commit 2b72aeb into armbian:main Jan 31, 2026
1 check passed
@jfargen
Copy link

jfargen commented Feb 13, 2026

The multi-core issue persists even with U-Boot v2026.01:
$ cat /sys/devices/system/cpu/online 0
$ cat /sys/devices/system/cpu/offline 1-3
$ sudo dd if=/dev/mmcblk2 skip=2 count=256 bs=512 2>/dev/null | strings | grep "U-Boot SPL" U-Boot SPL 2026.01_armbian-2026.01-S127a-P2759-H5afb-V7816-B2eb2-R448a (Feb 11 2026 - 04:43:52 +0000)

@pyavitz
Copy link
Collaborator Author

pyavitz commented Feb 13, 2026

The multi-core issue persists even with U-Boot v2026.01: $ cat /sys/devices/system/cpu/online 0 $ cat /sys/devices/system/cpu/offline 1-3 $ sudo dd if=/dev/mmcblk2 skip=2 count=256 bs=512 2>/dev/null | strings | grep "U-Boot SPL" U-Boot SPL 2026.01_armbian-2026.01-S127a-P2759-H5afb-V7816-B2eb2-R448a (Feb 11 2026 - 04:43:52 +0000)

Thanx for the feedback.

Is this an IMG you built ur self?

I ask because I've run several tests. When using https://github.com/armbian/os to build an IMG I get the multi-core issue, when I force a clean build using armbian/build locally the core issue isn't present. I'm at a bit of a loss and extra eyes on the issue would be very helpful.

@pyavitz
Copy link
Collaborator Author

pyavitz commented Feb 14, 2026

@jfargen

Try this img:
https://github.com/pyavitz/binary/releases/download/images/Armbian-unofficial_26.02.0-trunk_Orangepi3-lts_trixie_current_6.12.71.img.xz

I removed crust firmware support. It booted as it should in my case.

@jfargen
Copy link

jfargen commented Feb 19, 2026

@pyavitz I've tested the image and the 4 processors are now showing online.
# cat /sys/devices/system/cpu/online 0-3

@pyavitz
Copy link
Collaborator Author

pyavitz commented Feb 19, 2026

@pyavitz I've tested the image and the 4 processors are now showing online. # cat /sys/devices/system/cpu/online 0-3

Thanx for getting back.

So this is the dilemma. I run tests, I make slight changes to the boot process; extlinux instead of boot.scr, crust vs no crust, defconfig adjustments, etc... and all of sudden it boots properly. Hence the reason for some of the changes I've made recently, but I feel like something is still missing. Almost seems like some kind of artifact is infecting the build? Because once I do the PR and then try again the CPU bug comes back.

What I'm saying is this; I can remove crust from the build in Armbian, but I'm skeptical of that actually fixing anything.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

02 Milestone: First quarter release BSP Board Support Packages Hardware Hardware related like kernel, U-Boot, ... Patches Patches related to kernel, U-Boot, ... Ready to merge Reviewed, tested and ready for merge size/large PR with 250 lines or more

Development

Successfully merging this pull request may close these issues.

3 participants