Jump to content

Helios4 doesn't boot after upgrading to linux-6.6.71 (linux-image-current-mvebu_25.2.0-trunk.343)


Go to solution Solved by Josua-SR,

Recommended Posts

Posted

Hi @wolf7250,

That does not look like the new bootscript. Did you update already? 

 

To get it working again, you can try the quick workaround as you pointed to earlier, which should allow more room for U-Boot loading kernel, initrd and the rest.

Gr,

Posted

Hi @wolf7250,

The correct U-Boot and bootscript is for sure in the newest release. I built recently and all is there and working without issue on my helios4.

Let's unravel what is happening for you and get that sorted out.

Gr,

Posted

Ok. This might have been caused by a partial update. Running OMV there is a script to run to update to the latest in that version - in my case v6. Once that completes successfully then I need to run a release update script which will increment the major version to 7. But I never got that far. 
 

So maybe if I do the quick workaround to get me onto the latest and then the correct U-Boot and bootscript will then be included as you said in the latest?

 

Hope that all made sense 😁

Posted

Hi @wolf7250,

I'm not familiar with OMV, so not sure what that update/upgrade process looks like. If it will update/upgrade the armbian packages to the latest release 25.11, then the correct version of armbian-bsp-cli will be installed. The installation of that package should update /boot/boot.scr and make a new U-Boot image available that you would have to install with nand-sata-install.

Gr,

Posted

Thanks for responding @FredK!

 

4 hours ago, FredK said:

But after that further OMV updates were not possible, solution found at https://forum.armbian.com/topic/23465-apt-get-update-fails-with-public-key-errors/?do=findComment&comment=178626

Is it possible this has been resolved now and I won't need to do anything?
Or will I likely need to run the commands that @Igor listed in the post that you linked?

Posted

@wolf7250

> Is it possible this has been resolved now and I won't need to do anything?

I think so, because I was just able to perform a package update without any problems.

 

> Or will I likely need to run the commands that Igor listed in the post that you linked?

The background of my post was to encourage you to upgrade your OMV6 to OMV7 (after a full backup)  and if the same (minor) problems arise, the solution is well-known. 

 

Posted (edited)

@djurny and @FredK, thank you so much.
I am now updated and on Armbian 25.11.2!
@djurny I used the quick workaround from here and then performed a full upgrade. I have now run nand-sata-install. Is there a way to ensure that that has run successfully? Also do I now remove the quick workaround from the /boot/armbianEnv.txt?

 

@FredK I did need to run the commands that you provided the link to as I was getting the same public key error.

 

Thank you so much to both of you!

Edited by wolf7250
Posted

Hi @wolf7250,

If you have doubts or concerns, you can leave the workaround in `armbianEnv.txt` and check the serial console output to verify that U-Boot was updated and the new bootscript is doing it's job. After verfication, you can remove the workaround (fixed load addresses) from `armbianEnv.txt`. The new bootscript will try to calculate the load addresses and if it cannot do that (due to missing U-Boot command) it will default back to the fixed load addresses - which you will have overruled with the ones in `armbianEnv.txt`.

Gr,

Posted

Thanks @djurny, does this output indicate that the U-Boot was updated and the new bootscript is doing it's job?
 

Booting from MMC

U-Boot SPL 2025.10_armbian-2025.10-Se50b-P915a-H9530-V9a59-Bbf55-R448a (Nov 24 2025 - 08:37:53 +0000)
High speed PHY - Version: 2.0
Detected Device ID 6828
board SerDes lanes topology details:
 | Lane # | Speed |  Type       |
 --------------------------------
 |   0    |   6   | SATA0       |
 |   1    |   5   | USB3 HOST0  |
 |   2    |   6   | SATA1       |
 |   3    |   6   | SATA3       |
 |   4    |   6   | SATA2       |
 |   5    |   5   | USB3 HOST1  |
 --------------------------------
High speed PHY - Ended Successfully
mv_ddr: 14.0.0
DDR3 Training Sequence - Switching XBAR Window to FastPath Window
DDR Training Sequence - Start scrubbing
DDR3 Training Sequence - End scrubbing
mv_ddr: completed successfully
Trying to boot from MMC1


U-Boot 2025.10_armbian-2025.10-Se50b-P915a-H9530-V9a59-Bbf55-R448a (Nov 24 2025 - 08:37:53 +0000)

SoC:   MV88F6828-B0 at 1600 MHz
DRAM:  2 GiB (800 MHz, 32-bit, ECC enabled)
Core:  33 devices, 22 uclasses, devicetree: separate
MMC:   mv_sdh: 0
Loading Environment from MMC... Reading from MMC(0)... *** Warning - bad CRC, using default environment

Model: Helios4
Board: Helios4
Net:
Warning: ethernet@70000 (eth1) using random MAC address - 4a:c2:c1:92:17:69
eth1: ethernet@70000
Hit any key to stop autoboot: 0
switch to partitions #0, OK
mmc0 is current device
Scanning mmc 0:1...
Found U-Boot script /boot/boot.scr
2967 bytes read in 15 ms (192.4 KiB/s)
## Executing script at 03000000
Boot script loaded from mmc
275 bytes read in 12 ms (21.5 KiB/s)
28834 bytes read in 34 ms (828.1 KiB/s)
14341219 bytes read in 1365 ms (10 MiB/s)
8678912 bytes read in 819 ms (10.1 MiB/s)
Working FDT set to 2040000
Kernel image @ 0x2080000 [ 0x000000 - 0x846e00 ]
## Loading init Ramdisk from Legacy Image at 03000000 ...
   Image Name:   uInitrd
   Created:      2025-12-08   1:59:54 UTC
   Image Type:   ARM Linux RAMDisk Image (gzip compressed)
   Data Size:    14341155 Bytes = 13.7 MiB
   Load Address: 00000000
   Entry Point:  00000000
   Verifying Checksum ... OK
## Flattened Device Tree blob at 02040000
   Booting using the fdt blob at 0x2040000
Working FDT set to 2040000
   Loading Ramdisk to 0f252000, end 0ffff423 ... OK
   Loading Device Tree to 0f1e2000, end 0f251fff ... OK
Working FDT set to f1e2000

Starting kernel ...

Loading, please wait...
Starting systemd-udevd version 252.39-1~deb12u1
Begin: Loading essential drivers ... done.
Begin: Running /scripts/init-premount ... done.
Begin: Mounting root file system ... Begin: Running /scripts/local-top ... done.
Begin: Running /scripts/local-premount ... Scanning for Btrfs filesystems
done.
Begin: Will now check root file system ... fsck from util-linux 2.38.1
[/sbin/fsck.ext4 (1) -- /dev/mmcblk0p1] fsck.ext4 -a -C0 /dev/mmcblk0p1
/dev/mmcblk0p1: clean, 66751/1782272 files, 757075/7712800 blocks
done.
done.
Begin: Running /scripts/local-bottom ... /scripts/local-bottom/mdadm: 2: /scripts/local-bottom/mdadm: rm: not found
done.
Begin: Running /scripts/init-bottom ... done.

Welcome to Armbian 25.11.2 bookworm!

 

Posted

Sure!
 

# DO NOT EDIT THIS FILE
#
# Please edit /boot/armbianEnv.txt to set supported parameters
#

setenv load_addr "0x300000"
# default values
setenv rootdev "/dev/mmcblk0p1"
setenv rootfstype "ext4"
setenv verbosity "1"
setenv emmc_fix "off"
setenv spi_workaround "off"
setenv ethaddr "00:50:43:84:fb:2f"
setenv eth1addr "00:50:43:25:fb:84"
setenv eth2addr "00:50:43:84:25:2f"
setenv eth3addr "00:50:43:0d:19:18"

echo "Boot script loaded from ${devtype}"

if load ${devtype} ${devnum} ${load_addr} ${prefix}armbianEnv.txt; then
        env import -t ${load_addr} ${filesize}
fi

setenv bootargs "console=ttyS0,115200 root=${rootdev} rootwait rootfstype=${rootfstype} ubootdev=${devtype} scandelay loglevel=${verbosity} usb-storage.quirks=${usbstoragequirks} ${extraargs}"

load ${devtype} ${devnum} ${fdt_addr_r} ${prefix}dtb/${fdtfile}
load ${devtype} ${devnum} ${ramdisk_addr_r} ${prefix}uInitrd
load ${devtype} ${devnum} ${kernel_addr_r} ${prefix}zImage

fdt addr ${fdt_addr_r}
fdt resize 65536
for overlay_file in ${overlays}; do
        if load ${devtype} ${devnum} ${load_addr} ${prefix}dtb/overlay/${overlay_prefix}-${overlay_file}.dtbo; then
                echo "Applying kernel provided DT overlay ${overlay_prefix}-${overlay_file}.dtbo"
                fdt apply ${load_addr} || setenv overlay_error "true"
        fi
done
for overlay_file in ${user_overlays}; do
        if load ${devtype} ${devnum} ${load_addr} ${prefix}overlay-user/${overlay_file}.dtbo; then
                echo "Applying user provided DT overlay ${overlay_file}.dtbo"
                fdt apply ${load_addr} || setenv overlay_error "true"
        fi
done
if test "${overlay_error}" = "true"; then
        echo "Error applying DT overlays, restoring original DT"
        load ${devtype} ${devnum} ${fdt_addr_r} ${prefix}dtb/${fdtfile}
else
        if test -e ${devtype} ${devnum} ${prefix}dtb/overlay/${overlay_prefix}-fixup.scr; then
                load ${devtype} ${devnum} ${load_addr} ${prefix}dtb/overlay/${overlay_prefix}-fixup.scr
                echo "Applying kernel provided DT fixup script (${overlay_prefix}-fixup.scr)"
                source ${load_addr}
        fi
        if test -e ${devtype} ${devnum} ${prefix}fixup.scr; then
                load ${devtype} ${devnum} ${load_addr} ${prefix}fixup.scr
                echo "Applying user provided fixup script (fixup.scr)"
                source ${load_addr}
        fi
fi

# eMMC fix
if test "${emmc_fix}" = "on"; then
        echo "Applying eMMC compatibility fix to the DT"
        fdt rm /soc/internal-regs/sdhci@d8000/ cd-gpios
        fdt set /soc/internal-regs/sdhci@d8000/ non-removable
fi

# SPI - SATA workaround
if test "${spi_workaround}" = "on"; then
        echo "Applying SPI workaround to the DT"
        fdt addr ${fdt_addr}
        fdt resize
        fdt set /soc/internal-regs/sata@e0000 status "disabled"
        fdt set /soc/internal-regs/sata@a8000 status "disabled"
        fdt set /soc/spi@10680 status "okay"
        fdt set /soc/spi@10680/spi-flash@0 status "okay"
fi

bootz ${kernel_addr_r} ${ramdisk_addr_r} ${fdt_addr_r}

# Recompile with:
# mkimage -C none -A arm -T script -d /boot/boot.cmd /boot/boot.scr

 

Posted

Hi there,

How about the output of 

dpkg --list | grep 'armbian'
lsb_release -a
cat /etc/armbian-release

?

 

Just to be sure, you are using armbian right?

Gr,

Posted (edited)
38 minutes ago, djurny said:
dpkg --list | grep 'armbian'

 

ii  armbian-config                    26.2.0-trunk.48.1205.194441         all          Armbian config: The Next Generation
ii  armbian-firmware                  25.11.2                             all          Armbian - Linux firmware
ii  hostapd                           3:2.10-6~armbian22.02.3+1           armhf        IEEE 802.11 AP and IEEE 802.1X/WPA/WPA2/EAP Authenticator

 

 

38 minutes ago, djurny said:
lsb_release -a

 

No LSB modules are available.
Distributor ID: Debian
Description:    Armbian 25.11.2 bookworm
Release:        12
Codename:       bookworm

 

 

38 minutes ago, djurny said:
cat /etc/armbian-release

 

# PLEASE DO NOT EDIT THIS FILE
BOARD=helios4
BOARD_NAME="Helios4"
BOARDFAMILY=mvebu
BUILD_REPOSITORY_URL=https://github.com/armbian/build
BUILD_REPOSITORY_COMMIT=2efd215a
DISTRIBUTION_CODENAME=buster
DISTRIBUTION_STATUS=supported
VERSION=20.05.2
LINUXFAMILY=mvebu
BRANCH=current
ARCH=arm
IMAGE_TYPE=stable
BOARD_TYPE=conf
INITRD_ARCH=arm
KERNEL_IMAGE_TYPE=Image

Seems odd to me that this file thinks I'm still on buster with Armbian at version 20.05.2 😕

 

38 minutes ago, djurny said:

Just to be sure, you are using armbian right?

Yes. Definitely

Edited by wolf7250
Posted

Hi,

Seems you have upgraded for several years already? Perhaps something has changed over the years, meaning that the armbian-bsp-cli package did not get installed somehow.

I am not sure what will happen if you DO install that package now, so the safest best would be to just get the bootscript from the package and convert it on your machine.

Gr,

 

Posted

Hi @wolf7250,

You can download the package without installing as follows:

cd /tmp/
mkdir fliepeltje
cd /tmp/fliepeltje/
apt-get download armbian-bsp-cli-helios4-current
dpkg -x armbian-bsp-cli-helios4_*.deb ${PWD:?}

 

Then backup the current bootscript as follows:

cd /boot/
sudo cp boot.cmd boot.cmd~org
sudo cp boot.scr boot.scr~org

 

Then copy the new bootscript and convert it to U-Boot script format as follows:

cd /boot/
sudo cp /tmp/fliepeltje/usr/share/armbian/boot.cmd ${PWD:?}
sudo mkimage -C none -A arm -T script -d boot.cmd boot.scr

 

Then reboot to check if all went well.

Gr,

 

PS syntax is on purpose, of course you can replace ${PWD:?} with . but that might be easy to miss when reading the instruction.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...

Important Information

Terms of Use - Privacy Policy - Guidelines