Unable to perform the OTA update on BeagleBone Green eMMC

We’re using BeagleBone Green and installing our software on eMMC.
We’re using the image from rcn-ee and passing it through a mender-convert with an overlay that contains my custom flashing scripts that supports the Mender layout during eMMC preparation process (the default flashing scripts are not fit into this and I’m surprised why nobody has complained about it).

I’ve successfully installed debian on eMMC and I see my device at the dashboard.

The problem

The device is failing to update. Before the update, I see the following continuously appearing in a logs:

Mar 10 17:54:52 beaglebone mender[8983]: time="2021-03-10T17:54:52Z" level=error msg="Failed to read the current active partition: No match between boot and root partitions.: Failed mender_saveenv_canary check. There is an error in the U-Boot setup. Likely causes are: 1) Mismatch between the U-Boot boot loader environment location and the location specified in /etc/fw_env.config. 2) 'mender_setup' is not run by the U-Boot boot script: exit status 1"

In a mender error logs I see the same.

I already have read this post, but it doesn’t help.

Is it possible to fix it without of bootloader modification and using the configuration files/overlays only ?

I don’t think these settings can be added without rebuilding U-Boot. The issue is that your default environment does not have some of the required Mender variables. It’s possible you could make them manually but even then if the environment gets wiped out for some reason you would have to remake them.

Drew

Thank you for reply, Drew.

To be clear - according to a post I have pointed to, I have tried to fw_saveenv the dummy vars, but still the problem is presented.

Is there any proper and well known way to rebuild the bootloader ? If so, I would appreciate the link.

Also, I haven’t found any highlighted way to use BB eMMC with Mender, though BB is one of officially supported boards. Is there any reason for this or I haven’t searched properly ?

Hmm. What version of mender-convert are you using? I took another look and the latest version uses the GRUB-EFI integration by default so you should not need u-boot. What does sudo fw_printenv show when run on your board?

As for emmc, we don’t use it by default because it is pretty small. Our testing focuses on the SDCard version but there is an emmc configuration for mender-convert. You may need to modify it a bit to get dual A/B partitions to fit.

@drewmoseley

What version of mender-convert are you using?

I’m using 2.3.0.

What does sudo fw_printenv show when run on your board?

I don’t get to this point, I’m not able to properly boot the image.

I think that this mender-convert log will explain a lot

2021-03-15 14:41:43 [WARN] [mender-convert-extract] Detected a U-Boot version in the range v2018.09 - v2019.07. These U-Boot versions are known to have broken UEFI support, and therefore the MENDER_GRUB_EFI_INTEGRATION feature is unlikely to work. This only affects newly flashed devices using the partition image (extension ending in "img"). The Mender artifact should still work to upgrade an existing, working device. There are two possible workarounds for this issue: 1) Use either an older or a newer image that works, and use a Mender artifact afterwards to up/down-grade it to the version you want. 2) If the device has a non-UEFI U-Boot port in mender-convert, use that (look for a board specific file in `configs`) . If you want to ignore this error and force creation of the image, set the MENDER_IGNORE_UBOOT_BROKEN_UEFI=1 config option.

All the latest images contains this faulty u-boot, the other ones is too old and I didn’t even tried them.

I decided to build the bootloader from sources using yocto-project and add the build flags I need.
You’re saying that the latest version uses the GRUB-EFI integration. I took a look and seems like both u-boot and GRUB-EFI are supported. However, I would stand on a side of standardization and pick grub-efi, but I don’t see any grub-efi in the board integrations (search query), so I think it would be most reasonable to keep u-boot.

Yeah, I recall that initially we did use the u-boot that was generated by Yocto but we eventually wanted to move away from that and just use the version that was standard with any particular distro. And as long as it could be used with GRUB-EFI integration that should work.

We do have a repo with Mender modifications for a few branches and platform here that may help as well. I don’t think it’s been actively maintained but it may help. There are some mender-bbb-* branches that I think would be a good starting point.

Drew

@drewmoseley Thank you Drew.

Do you have any information if branch mender-bbb-2018.07 contains the GRUB-EFI integration ?

Also, as I understand, I still can build it with Yocto just by specifying the branch in SRC_URI ?

I’ll keep this topic open for a while.
Once I’ll have any success, I’ll describe my steps here.

@mkonnov I’m not sure but I suspect that is does contain the GRUB-EFI integration. @kacf do you know?

Trying to build that repo with Yocto will likely fail as the patches from Yocto are already in that branch and when Yocto tries to apply them again, they will obviously fail.

Drew

@drewmoseley ok, what is the preferred build system for this repo then ?

I think just a manual u-boot build is best. See Building for BeagleBone - eLinux.org for details

Drew

@drewmoseley :+1: :+1: :+1: will update, hopefully soon

There should also be a message like this:

Attempting to work around broken UEFI support in U-Boot by forcing a newer U-Boot version.

at least if you use one of the supplied configs, such as beaglebone_black_debian_emmc_config. This fixes it for Beaglebone Black. But this probably doesn’t work for the Green.

I suggest you look at the function beaglebone_fix_broken_uefi_uboot in that config file, which is where it downloads the fixed U-Boot version. You just need to provide the binaries for a Beaglebone Green build of U-Boot instead. There is nothing special about the build, it’s 100% upstream U-Boot build, no patches, so should be easy to build yourself.

@kacf Thanks.

I already took a look into this function.
The BBB u-boot version address after the variables processing is the following:
https://downloads.mender.io/mender-convert/uboot/beaglebone/beaglebone_black_debian_emmc-2018.07.tar.gz

But it’s still unclear how to get the version for BBG.
If you’ll send me the file address like in the form above, I’ll be happy with it and come up how to adapt it to my config.

We don’t ship a version for BBG, so you have to build it yourself. I suspect the config used for BBG is am335x_evm_defconfig, not completely sure. If so, building it should be a matter of doing this:

git clone git://git.denx.de/u-boot.git
cd u-boot
git checkout v2020.07
make CROSS_COMPILE=arm-linux-gnueabihf- am335x_evm_defconfig
make CROSS_COMPILE=arm-linux-gnueabihf-

And then assemble all the relevant files (the same as in the tar.gz you posted).

@kacf I’ve managed to build my u-boot from v2020.07 branch, but still it seems that the image is not able to boot.

Got built using the following commands

make CROSS_COMPILE=arm-linux-gnueabihf- am335x_boneblack_vboot_defconfig
make CROSS_COMPILE=arm-linux-gnueabihf-
make CROSS_COMPILE=arm-linux-gnueabihf- envtools

Then packed everything to beaglebone_black_uefi-2020.07.tar.gz, put into a directory visible from docker-mender-convert and modified the function beaglebone_fix_broken_uefi to use the local archive, not downloaded.
In anyway, I tried both local and downloaded, the result is the same.

U-Boot SPL 2020.07 (Sep 21 2020 - 11:06:32 +0200)
WDT:   Not found!
Trying to boot from MMC1
Loading Environment from FAT... *** Warning - bad CRC, using default environment

Loading Environment from MMC... *** Warning - bad CRC, using default environment



U-Boot 2020.07 (Sep 21 2020 - 11:06:32 +0200)

CPU  : AM335X-GP rev 2.1
Model: TI AM335x BeagleBone Black
DRAM:  512 MiB
MMC:   OMAP SD/MMC: 0, OMAP SD/MMC: 1
Loading Environment from FAT... *** Warning - bad CRC, using default environment

Loading Environment from MMC... *** Warning - bad CRC, using default environment

<ethaddr> not set. Validating first E-fuse MAC
Net:   eth0: ethernet@4a100000
Warning: usb_ether MAC addresses don't match:
Address in ROM is               de:ad:be:ef:00:01
Address in environment is       84:eb:18:e6:b4:86
, eth1: usb_ether
Press SPACE to abort autoboot in 2 seconds
switch to partitions #0, OK
mmc0 is current device
SD/MMC found on device 0
switch to partitions #0, OK
mmc0 is current device
Scanning mmc 0:1...
57674 bytes read in 8 ms (6.9 MiB/s)
Found EFI removable media binary efi/boot/bootarm.efi
Scanning disk mmc@48060000.blk...
Scanning disk mmc@481d8000.blk...
** Unrecognized filesystem type **
Found 6 disks
BootOrder not defined
EFI boot manager: Cannot load any image
385024 bytes read in 28 ms (13.1 MiB/s)
Welcome to GRUB!

lock: OK
lock: OK


EFI stub: Booting Linux Kernel...
EFI stub: Using DTB from configuration table
EFI stub: Exiting boot services and installing virtual address map...
[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Linux version 4.19.94-ti-r51 (voodoo@x2-am57xx-beagle-x15-2gb) (gcc version 8.3.0 (Debian 8.3.0-6)) #1buster SMP PREEMPT Wed Sep 9 17:13:58 UTC 2020
[    0.000000] CPU: ARMv7 Processor [413fc082] revision 2 (ARMv7), cr=10c5387d
[    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
[    0.000000] OF: fdt: Machine model: TI AM335x BeagleBone Green
[    0.000000] Memory policy: Data cache writeback
[    0.000000] efi: Getting EFI parameters from FDT:
[    0.000000] efi: EFI v2.80 by Das U-Boot
[    0.000000] efi:  SMBIOS=0x9cf2d000 
[    0.000000] cma: Reserved 48 MiB at 0x99800000
[    0.000000] CPU: All CPU(s) started in SVC mode.
[    0.000000] AM335X ES2.1 (sgx neon)
[    0.000000] random: get_random_bytes called from start_kernel+0xac/0x4c0 with crng_init=0
[    0.000000] percpu: Embedded 17 pages/cpu s38988 r8192 d22452 u69632
[    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 129408
[    0.000000] Kernel command line: BOOT_IMAGE=(hd0,msdos2)/boot/kernel root=/dev/mmcblk1p2 console=tty0,115200n8 console=ttyS0,115200n8 console=ttyO0,115200n8 console=ttyAMA0,115200n8 rootwait
[    0.000000] Dentry cache hash table entries: 65536 (order: 6, 262144 bytes)
[    0.000000] Inode-cache hash table entries: 32768 (order: 5, 131072 bytes)
[    0.000000] Memory: 439016K/522240K available (13312K kernel code, 1140K rwdata, 4336K rodata, 1024K init, 350K bss, 34072K reserved, 49152K cma-reserved, 0K highmem)
[    0.000000] Virtual kernel memory layout:
[    0.000000]     vector  : 0xffff0000 - 0xffff1000   (   4 kB)
[    0.000000]     fixmap  : 0xffc00000 - 0xfff00000   (3072 kB)
[    0.000000]     vmalloc : 0xe0800000 - 0xff800000   ( 496 MB)
[    0.000000]     lowmem  : 0xc0000000 - 0xe0000000   ( 512 MB)
[    0.000000]     pkmap   : 0xbfe00000 - 0xc0000000   (   2 MB)
[    0.000000]     modules : 0xbf000000 - 0xbfe00000   (  14 MB)
[    0.000000]       .text : 0x(ptrval) - 0x(ptrval)   (14304 kB)
[    0.000000]       .init : 0x(ptrval) - 0x(ptrval)   (1024 kB)
[    0.000000]       .data : 0x(ptrval) - 0x(ptrval)   (1141 kB)
[    0.000000]        .bss : 0x(ptrval) - 0x(ptrval)   ( 351 kB)
[    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
[    0.000000] ftrace: allocating 42210 entries in 124 pages
[    0.000000] rcu: Preemptible hierarchical RCU implementation.
[    0.000000] rcu:     RCU restricting CPUs from NR_CPUS=2 to nr_cpu_ids=1.
[    0.000000]  Tasks RCU enabled.
[    0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=1
[    0.000000] NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16
[    0.000000] IRQ: Found an INTC at 0x(ptrval) (revision 5.0) with 128 interrupts
[    0.000000] OMAP clockevent source: timer2 at 24000000 Hz
[    0.000018] sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 89478484971ns
[    0.000040] clocksource: timer1: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 79635851949 ns
[    0.000055] OMAP clocksource: timer1 at 24000000 Hz
[    0.000745] timer_probe: no matching timers found
[    0.000967] Console: colour dummy device 80x30
[    0.001692] console [tty0] enabled
[    0.001783] Calibrating delay loop... 995.32 BogoMIPS (lpj=1990656)
[    0.046927] pid_max: default: 32768 minimum: 301
[    0.047237] Security Framework initialized
[    0.047274] Yama: becoming mindful.
[    0.047432] AppArmor: AppArmor initialized
[    0.047555] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)
[    0.047589] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)
[    0.048725] CPU: Testing write buffer coherency: ok
[    0.048823] CPU0: Spectre v2: using BPIALL workaround
[    0.049334] CPU0: thread -1, cpu 0, socket -1, mpidr 0
[    0.071026] Setting up static identity map for 0x80100000 - 0x80100060
[    0.078932] rcu: Hierarchical SRCU implementation.
[    0.090183] Remapping and enabling EFI services.
[    0.094938] smp: Bringing up secondary CPUs ...
[    0.094980] smp: Brought up 1 node, 1 CPU
[    0.095003] SMP: Total of 1 processors activated (995.32 BogoMIPS).
[    0.095028] CPU: All CPU(s) started in SVC mode.
[    0.096777] devtmpfs: initialized
[    0.111231] VFP support v0.3: implementor 41 architecture 3 part 30 variant c rev 3
[    0.111952] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns
[    0.112010] futex hash table entries: 256 (order: 2, 16384 bytes)
[    0.116591] xor: automatically using best checksumming function   neon      
[    0.116667] pinctrl core: initialized pinctrl subsystem
[    0.118013] NET: Registered protocol family 16
[    0.121702] DMA: preallocated 256 KiB pool for atomic coherent allocations
[    0.157716] l4_wkup_cm:clk:0010:0: failed to disable
[    0.210068] audit: initializing netlink subsys (disabled)
[    0.215038] audit: type=2000 audit(0.200:1): state=initialized audit_enabled=0 res=1
[    0.219071] OMAP GPIO hardware version 0.1
[    0.232586] hw-breakpoint: debug architecture 0x4 unsupported.
[    0.259085] raid6: using algorithm neonx8 gen() 0 MB/s
[    0.259145] raid6: .... xor() 0 MB/s, rmw enabled
[    0.259167] raid6: using neon recovery algorithm
[    0.266658] edma 49000000.edma: TI EDMA DMA engine driver
[    0.270274] SCSI subsystem initialized
[    0.271407] usbcore: registered new interface driver usbfs
[    0.271508] usbcore: registered new interface driver hub
[    0.271654] usbcore: registered new device driver usb
[    0.273904] omap_i2c 4819c000.i2c: bus 2 rev0.11 at 100 kHz
[    0.274332] pps_core: LinuxPPS API ver. 1 registered
[    0.274370] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[    0.274420] PTP clock support registered
[    0.274579] Registered efivars operations
[    0.275540] omap-mailbox 480c8000.mailbox: omap mailbox rev 0x400
[    0.279279] Advanced Linux Sound Architecture Driver Initialized.
[    0.280150] NetLabel: Initializing
[    0.280186] NetLabel:  domain hash size = 128
[    0.280205] NetLabel:  protocols = UNLABELED CIPSOv4 CALIPSO
[    0.280311] NetLabel:  unlabeled traffic allowed by default
[    0.281313] clocksource: Switched to clocksource timer1
[    0.444042] VFS: Disk quotas dquot_6.6.0
[    0.444198] VFS: Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
[    0.445115] AppArmor: AppArmor Filesystem Enabled
[    0.457586] NET: Registered protocol family 2
[    0.458637] tcp_listen_portaddr_hash hash table entries: 512 (order: 0, 6144 bytes)
[    0.458713] TCP established hash table entries: 4096 (order: 2, 16384 bytes)
[    0.458777] TCP bind hash table entries: 4096 (order: 3, 32768 bytes)
[    0.458854] TCP: Hash tables configured (established 4096 bind 4096)
[    0.459002] UDP hash table entries: 256 (order: 1, 8192 bytes)
[    0.459047] UDP-Lite hash table entries: 256 (order: 1, 8192 bytes)
[    0.459464] NET: Registered protocol family 1
[    0.472671] RPC: Registered named UNIX socket transport module.
[    0.472721] RPC: Registered udp transport module.
[    0.472741] RPC: Registered tcp transport module.
[    0.472761] RPC: Registered tcp NFSv4.1 backchannel transport module.
[    0.473659] Unpacking initramfs...
[    0.844375] Freeing initrd memory: 6464K
[    0.845155] hw perfevents: enabled with armv7_cortex_a8 PMU driver, 5 counters available
[    0.847998] Initialise system trusted keyrings
[    0.848471] workingset: timestamp_bits=14 max_order=17 bucket_order=3
[    0.855957] zbud: loaded
[    0.863539] NFS: Registering the id_resolver key type
[    0.863625] Key type id_resolver registered
[    0.863646] Key type id_legacy registered
[    0.863680] nfs4filelayout_init: NFSv4 File Layout Driver Registering...
[    0.864057] fuse init (API version 7.27)
[    0.874660] Key type asymmetric registered
[    0.874719] Asymmetric key parser 'x509' registered
[    0.874834] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 246)
[    0.879254] io scheduler noop registered
[    0.879297] io scheduler deadline registered
[    0.879599] io scheduler cfq registered (default)
[    0.879630] io scheduler mq-deadline registered
[    0.882225] pinctrl-single 44e10800.pinmux: 142 pins, size 568
[    0.883568] gpio-of-helper ocp:cape-universal: ready
[    0.887295] Serial: 8250/16550 driver, 6 ports, IRQ sharing disabled
[    0.890969] console [ttyS0] disabled
[    0.891116] 44e09000.serial: ttyS0 at MMIO 0x44e09000 (irq = 30, base_baud = 3000000) is a 8250
[    1.160047] random: fast init done
[    1.655745] console [ttyS0] enabled
[    1.660582] 48024000.serial: ttyS2 at MMIO 0x48024000 (irq = 31, base_baud = 3000000) is a 8250
[    1.672144] omap_rng 48310000.rng: Random Number Generator ver. 20
[    1.678850] random: crng init done
[    1.683632] sdhci: Secure Digital Host Controller Interface driver
[    1.690135] sdhci: Copyright(c) Pierre Ossman
[    1.695081] omap_gpio 44e07000.gpio: Could not set line 6 debounce to 200000 microseconds (-22)
[    1.703923] omap_hsmmc 48060000.mmc: Got CD GPIO
[    1.709183] omap_hsmmc 48060000.mmc: Linked as a consumer to regulator.1
[    1.743358] omap_hsmmc 481d8000.mmc: Linked as a consumer to regulator.1
[    1.776400] sdhci-pltfm: SDHCI platform and OF driver helper
[    1.807920] mmc0: host does not support reading read-only switch, assuming write-enable
[    1.821377] mmc0: new high speed SDHC card at address e624
[    1.832355] mmcblk0: mmc0:e624 SC32G 29.7 GiB 
[    1.841417] mmc1: new high speed MMC card at address 0001
[    1.850488]  mmcblk0: p1 p2 p3 p4
[    1.854672] mmcblk1: mmc1:0001 P1XXXX 3.60 GiB 
[    1.862422] mmcblk1boot0: mmc1:0001 P1XXXX partition 1 2.00 MiB
[    1.869212] mmcblk1boot1: mmc1:0001 P1XXXX partition 2 2.00 MiB
[    1.875632] mmcblk1rpmb: mmc1:0001 P1XXXX partition 3 128 KiB, chardev (245:0)
[    2.797335] omap_i2c 4819c000.i2c: timeout waiting for bus ready
[    3.809321] omap_i2c 4819c000.i2c: timeout waiting for bus ready
[    4.825324] omap_i2c 4819c000.i2c: timeout waiting for bus ready
[    5.837338] omap_i2c 4819c000.i2c: timeout waiting for bus ready
[    6.849323] omap_i2c 4819c000.i2c: timeout waiting for bus ready
[    7.861319] omap_i2c 4819c000.i2c: timeout waiting for bus ready
[    8.873321] omap_i2c 4819c000.i2c: timeout waiting for bus ready
[    9.885319] omap_i2c 4819c000.i2c: timeout waiting for bus ready
[    9.896478] libphy: Fixed MDIO Bus: probed
[    9.901791] CAN device driver interface
[    9.957431] davinci_mdio 4a101000.mdio: davinci mdio revision 1.6, bus freq 1000000
[    9.965226] davinci_mdio 4a101000.mdio: detected phy mask fffffffe
[    9.971856] MDIO: davinci_mdio: dt: updated phy_id[0] from phy_mask[fffffffe]
[    9.996832] libphy: 4a101000.mdio: probed
[   10.001149] davinci_mdio 4a101000.mdio: phy[0]: device 4a101000.mdio:00, driver SMSC LAN8710/LAN8720
[   10.011648] cpsw 4a100000.ethernet: Detected MACID = 84:eb:18:e6:b4:84
[   10.018701] cpsw 4a100000.ethernet: initialized cpsw ale version 1.4
[   10.025221] cpsw 4a100000.ethernet: ALE Table size 1024
[   10.030601] cpsw 4a100000.ethernet: cpts: overflow check period 1250 (jiffies)
[   10.039844] usbcore: registered new interface driver smsc95xx
[   10.046687] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[   10.053386] ehci-platform: EHCI generic platform driver
[   10.058906] ehci-omap: OMAP-EHCI Host Controller driver
[   10.064818] usbcore: registered new interface driver usb-storage
[   10.073688] am335x-phy-driver 47401300.usb-phy: 47401300.usb-phy supply vcc not found, using dummy regulator
[   10.083979] am335x-phy-driver 47401300.usb-phy: Linked as a consumer to regulator.0
[   10.094576] am335x-phy-driver 47401b00.usb-phy: 47401b00.usb-phy supply vcc not found, using dummy regulator
[   10.104788] am335x-phy-driver 47401b00.usb-phy: Linked as a consumer to regulator.0
[   10.115920] musb-hdrc musb-hdrc.1: MUSB HDRC host driver
[   10.121451] musb-hdrc musb-hdrc.1: new USB bus registered, assigned bus number 1
[   10.129256] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 4.19
[   10.137631] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[   10.144932] usb usb1: Product: MUSB HDRC host driver
[   10.149956] usb usb1: Manufacturer: Linux 4.19.94-ti-r51 musb-hcd
[   10.156115] usb usb1: SerialNumber: musb-hdrc.1
[   10.161694] hub 1-0:1.0: USB hub found
[   10.165650] hub 1-0:1.0: 1 port detected
[   10.180992] omap_rtc 44e3e000.rtc: registered as rtc0
[   10.187576] i2c /dev entries driver
[   10.193999] omap_wdt: OMAP Watchdog Timer Rev 0x01: initial timeout 60 sec
[   10.201563] softdog: initialized. soft_noboot=0 soft_margin=60 sec soft_panic=0 (nowayout=0)
[   10.212817] ledtrig-cpu: registered to indicate activity on CPUs
[   10.219448] omap-aes 53500000.aes: OMAP AES hw accel rev: 3.2
[   10.225670] omap-aes 53500000.aes: will run requests pump with realtime priority
[   10.235486] omap-sham 53100000.sham: hw accel on OMAP rev 4.3
[   10.244643] hidraw: raw HID events driver (C) Jiri Kosina
[   10.254386] gnss: GNSS driver registered with major 242
[   10.265942] NET: Registered protocol family 10
[   10.340786] Segment Routing with IPv6
[   10.344989] mip6: Mobile IPv6
[   10.348275] NET: Registered protocol family 17
[   10.353023] can: controller area network core (rev 20170425 abi 9)
[   10.359443] NET: Registered protocol family 29
[   10.364066] 8021q: 802.1Q VLAN Support v1.8
[   10.368409] Key type dns_resolver registered
[   10.372788] mpls_gso: MPLS GSO support
[   10.376832] ThumbEE CPU extension supported.
[   10.381227] Registering SWP/SWPB emulation handler
[   10.386095] omap_voltage_late_init: Voltage driver support not added
[   10.394086] registered taskstats version 1
[   10.398299] Loading compiled-in X.509 certificates
[   10.403287] zswap: loaded using pool lzo/zbud
[   10.410962] Btrfs loaded, crc32c=crc32c-generic
[   10.415762] AppArmor: AppArmor sha1 policy hashing enabled
[   10.474986] tps6521x_pwrbutton tps65217-pwrbutton: DMA mask not set
[   10.482229] input: tps65217_pwr_but as /devices/platform/ocp/44e0b000.i2c/i2c-0/0-0024/tps65217-pwrbutton/input/input0
[   10.494089] tps65217 0-0024: TPS65217 ID 0xe version 1.2
[   10.500486] at24 0-0050: 32768 byte 24c256 EEPROM, writable, 1 bytes/write
[   10.507687] omap_i2c 44e0b000.i2c: bus 0 rev0.11 at 400 kHz
[   10.517705] cpu cpu0: Linked as a consumer to regulator.3
[   10.523328] cpu cpu0: Dropping the link to regulator.3
[   10.529113] cpu cpu0: Linked as a consumer to regulator.3
[   10.536611] omap_rtc 44e3e000.rtc: setting system clock to 2000-01-01 00:00:01 UTC (946684801)
[   10.546305] ALSA device list:
[   10.549405]   No soundcards found.
[   10.559077] Freeing unused kernel memory: 1024K
[   10.564465] Run /init as init process

And no any progress in boot any more.

What it might be caused by ?

Ok, that’s already very good progress. If you got that far, then I don’t think the issue is related to the bootloader.

What are you using to view the output? UART? HDMI? It could be that the output following the kernel is not reaching your display; it’s quite a typical place where it would happen, since the kernel switches to userspace after that line.

@kacf I’m using UART connected to a serial debug pins.

I have the following bootloader environment:

addr_fit=0x90000000
arch=arm
args_mmc=run finduuid;setenv bootargs console=${console} ${optargs} root=PARTUUID=${uuid} rw rootfstype=${mmcrootfstype}
baudrate=115200
board=am335x
board_name=BBG1
board_rev=BBG1
board_serial=BBG115092665
boot_a_script=load ${devtype} ${devnum}:${distro_bootpart} ${scriptaddr} ${prefix}${script}; source ${scriptaddr}
boot_efi_binary=if fdt addr ${fdt_addr_r}; then bootefi bootmgr ${fdt_addr_r};else bootefi bootmgr ${fdtcontroladdr};fi;load ${devtype} ${devnum}:${distro_bootpart} ${kernel_addr_r} efi/boot/bootarm.efi; if fdt addr ${fdt_addr_r}; then bootefi ${kernel_addr_r} ${fdt
_addr_r};else bootefi ${kernel_addr_r} ${fdtcontroladdr};fi
boot_extlinux=sysboot ${devtype} ${devnum}:${distro_bootpart} any ${scriptaddr} ${prefix}${boot_syslinux_conf}
boot_fdt=try
boot_fit=0
boot_net_usb_start=usb start
boot_prefixes=/ /boot/
boot_script_dhcp=boot.scr.uimg
boot_scripts=boot.scr.uimg boot.scr
boot_syslinux_conf=extlinux/extlinux.conf
boot_targets=mmc0 legacy_mmc0 mmc1 legacy_mmc1 nand0 pxe dhcp 
bootcmd=if test ${boot_fit} -eq 1; then run update_to_fit; fi; run findfdt; run init_console; run envboot; run distro_bootcmd
bootcmd_dhcp=run boot_net_usb_start; if dhcp ${scriptaddr} ${boot_script_dhcp}; then source ${scriptaddr}; fi;setenv efi_fdtfile ${fdtfile}; if test -z "${fdtfile}" -a -n "${soc}"; then setenv efi_fdtfile ${soc}-${board}${boardver}.dtb; fi; setenv efi_old_vci ${boot
p_vci};setenv efi_old_arch ${bootp_arch};setenv bootp_vci PXEClient:Arch:00010:UNDI:003000;setenv bootp_arch 0xa;if dhcp ${kernel_addr_r}; then tftpboot ${fdt_addr_r} dtb/${efi_fdtfile};if fdt addr ${fdt_addr_r}; then bootefi ${kernel_addr_r} ${fdt_addr_r}; else boo
tefi ${kernel_addr_r} ${fdtcontroladdr};fi;fi;setenv bootp_vci ${efi_old_vci};setenv bootp_arch ${efi_old_arch};setenv efi_fdtfile;setenv efi_old_arch;setenv efi_old_vci;
bootcmd_legacy_mmc0=setenv mmcdev 0; setenv bootpart 0:2 ; run mmcboot
bootcmd_legacy_mmc1=setenv mmcdev 1; setenv bootpart 1:2 ; run mmcboot
bootcmd_mmc0=devnum=0; run mmc_boot
bootcmd_mmc1=devnum=1; run mmc_boot
bootcmd_nand=run nandboot
bootcmd_pxe=run boot_net_usb_start; dhcp; if pxe get; then pxe boot; fi
bootcount=1
bootdelay=2
bootdir=/boot
bootenvfile=uEnv.txt
bootfile=zImage
bootm_size=0x10000000
bootpart=0:2
bootscript=echo Running bootscript from mmc${mmcdev} ...; source ${loadaddr}
console=ttyO0,115200n8
cpu=armv7
dfu_alt_info_emmc=rawemmc raw 0 3751936;boot part 1 1;rootfs part 1 2;MLO fat 1 1;MLO.raw raw 0x100 0x100;u-boot.img.raw raw 0x300 0x1000;u-env.raw raw 0x1300 0x200;spl-os-args.raw raw 0x1500 0x200;spl-os-image.raw raw 0x1700 0x6900;spl-os-args fat 1 1;spl-os-image 
fat 1 1;u-boot.img fat 1 1;uEnv.txt fat 1 1
dfu_alt_info_mmc=boot part 0 1;rootfs part 0 2;MLO fat 0 1;MLO.raw raw 0x100 0x100;u-boot.img.raw raw 0x300 0x1000;u-env.raw raw 0x1300 0x200;spl-os-args.raw raw 0x1500 0x200;spl-os-image.raw raw 0x1700 0x6900;spl-os-args fat 0 1;spl-os-image fat 0 1;u-boot.img fat 
0 1;uEnv.txt fat 0 1
dfu_alt_info_ram=kernel ram 0x80200000 0x4000000;fdt ram 0x80f80000 0x80000;ramdisk ram 0x81000000 0x4000000
distro_bootcmd=for target in ${boot_targets}; do run bootcmd_${target}; done
dtboaddr=0x89000000
efi_dtb_prefixes=/ /dtb/ /dtb/current/
envboot=mmc dev ${mmcdev}; if mmc rescan; then echo SD/MMC found on device ${mmcdev};if run loadbootscript; then run bootscript;else if run loadbootenv; then echo Loaded env from ${bootenvfile};run importbootenv;fi;if test -n $uenvcmd; then echo Running uenvcmd ...;
run uenvcmd;fi;fi;fi;
eth1addr=84:eb:18:e6:b4:86
ethaddr=84:eb:18:e6:b4:84
fdt_addr_r=0x88000000
fdtaddr=0x88000000
fdtcontroladdr=9df46c70
fdtfile=undefined
findfdt=if test $board_name = A335BONE; then setenv fdtfile am335x-bone.dtb; fi; if test $board_name = A335BNLT; then setenv fdtfile am335x-boneblack.dtb; fi; if test $board_name = A335PBGL; then setenv fdtfile am335x-pocketbeagle.dtb; fi; if test $board_name = BBBW
; then setenv fdtfile am335x-boneblack-wireless.dtb; fi; if test $board_name = BBG1; then setenv fdtfile am335x-bonegreen.dtb; fi; if test $board_name = BBGW; then setenv fdtfile am335x-bonegreen-wireless.dtb; fi; if test $board_name = BBBL; then setenv fdtfile am33
5x-boneblue.dtb; fi; if test $board_name = BBEN; then setenv fdtfile am335x-sancloud-bbe.dtb; fi; if test $board_name = A33515BB; then setenv fdtfile am335x-evm.dtb; fi; if test $board_name = A335X_SK; then setenv fdtfile am335x-evmsk.dtb; fi; if test $board_name = 
A335_ICE; then setenv fdtfile am335x-icev2.dtb; fi; if test $fdtfile = undefined; then echo WARNING: Could not determine device tree to use; fi; 
finduuid=part uuid mmc ${bootpart} uuid
get_overlaystring=for overlay in $name_overlays;do;setenv overlaystring ${overlaystring}'#'${overlay};done;
importbootenv=echo Importing environment from mmc${mmcdev} ...; env import -t ${loadaddr} ${filesize}
init_console=if test $board_name = A335_ICE; then setenv console ttyO3,115200n8;else setenv console ttyO0,115200n8;fi;
kernel_addr_r=0x82000000
load_efi_dtb=load ${devtype} ${devnum}:${distro_bootpart} ${fdt_addr_r} ${prefix}${efi_fdtfile}
loadaddr=0x82000000
loadbootenv=fatload mmc ${mmcdev} ${loadaddr} ${bootenvfile}
loadbootscript=load mmc ${mmcdev} ${loadaddr} boot.scr
loadfdt=load ${devtype} ${bootpart} ${fdtaddr} ${bootdir}/${fdtfile}
loadimage=load ${devtype} ${bootpart} ${loadaddr} ${bootdir}/${bootfile}
loadramdisk=load mmc ${mmcdev} ${rdaddr} ramdisk.gz
mmc_boot=if mmc dev ${devnum}; then devtype=mmc; run scan_dev_for_boot_part; fi
mmcboot=mmc dev ${mmcdev}; devnum=${mmcdev}; setenv devtype mmc; if mmc rescan; then echo SD/MMC found on device ${mmcdev};if run loadimage; then run args_mmc; if test ${boot_fit} -eq 1; then run run_fit; else run mmcloados;fi;fi;fi;
mmcdev=0
mmcloados=if test ${boot_fdt} = yes || test ${boot_fdt} = try; then if run loadfdt; then bootz ${loadaddr} - ${fdtaddr}; else if test ${boot_fdt} = try; then bootz; else echo WARN: Cannot load the DT; fi; fi; else bootz; fi;
mmcrootfstype=ext4 rootwait
name_fit=fitImage
netargs=setenv bootargs console=${console} ${optargs} root=/dev/nfs nfsroot=${serverip}:${rootpath},${nfsopts} rw ip=dhcp
netboot=echo Booting from network ...; setenv autoload no; dhcp; run netloadimage; run netloadfdt; run netargs; bootz ${loadaddr} - ${fdtaddr}
netloadfdt=tftp ${fdtaddr} ${fdtfile}
netloadimage=tftp ${loadaddr} ${bootfile}
nfsopts=nolock
partitions=uuid_disk=${uuid_gpt_disk};name=bootloader,start=384K,size=1792K,uuid=${uuid_gpt_bootloader};name=rootfs,start=2688K,size=-,uuid=${uuid_gpt_rootfs}
pxefile_addr_r=0x80100000
ramargs=setenv bootargs console=${console} ${optargs} root=${ramroot} rootfstype=${ramrootfstype}
ramboot=echo Booting from ramdisk ...; run ramargs; bootz ${loadaddr} ${rdaddr} ${fdtaddr}
ramdisk_addr_r=0x88080000
ramroot=/dev/ram0 rw
ramrootfstype=ext2
rdaddr=0x88080000
rootpath=/export/rootfs
run_fit=bootm ${addr_fit}#${fdtfile}${overlaystring}
scan_dev_for_boot=echo Scanning ${devtype} ${devnum}:${distro_bootpart}...; for prefix in ${boot_prefixes}; do run scan_dev_for_extlinux; run scan_dev_for_scripts; done;run scan_dev_for_efi;
scan_dev_for_boot_part=part list ${devtype} ${devnum} -bootable devplist; env exists devplist || setenv devplist 1; for distro_bootpart in ${devplist}; do if fstype ${devtype} ${devnum}:${distro_bootpart} bootfstype; then run scan_dev_for_boot; fi; done; setenv devp
list
scan_dev_for_efi=setenv efi_fdtfile ${fdtfile}; if test -z "${fdtfile}" -a -n "${soc}"; then setenv efi_fdtfile ${soc}-${board}${boardver}.dtb; fi; for prefix in ${efi_dtb_prefixes}; do if test -e ${devtype} ${devnum}:${distro_bootpart} ${prefix}${efi_fdtfile}; then
 run load_efi_dtb; fi;done;if test -e ${devtype} ${devnum}:${distro_bootpart} efi/boot/bootarm.efi; then echo Found EFI removable media binary efi/boot/bootarm.efi; run boot_efi_binary; echo EFI LOAD FAILED: continuing...; fi; setenv efi_fdtfile
scan_dev_for_extlinux=if test -e ${devtype} ${devnum}:${distro_bootpart} ${prefix}${boot_syslinux_conf}; then echo Found ${prefix}${boot_syslinux_conf}; run boot_extlinux; echo SCRIPT FAILED: continuing...; fi
scan_dev_for_scripts=for script in ${boot_scripts}; do if test -e ${devtype} ${devnum}:${distro_bootpart} ${prefix}${script}; then echo Found U-Boot script ${prefix}${script}; run boot_a_script; echo SCRIPT FAILED: continuing...; fi; done
scriptaddr=0x80000000
serial#=BBG115092665
soc=am33xx
spiargs=setenv bootargs console=${console} ${optargs} root=${spiroot} rootfstype=${spirootfstype}
spiboot=echo Booting from spi ...; run spiargs; sf probe ${spibusno}:0; sf read ${loadaddr} ${spisrcaddr} ${spiimgsize}; bootz ${loadaddr}
spibusno=0
spiimgsize=0x362000
spiroot=/dev/mtdblock4 rw
spirootfstype=jffs2
spisrcaddr=0xe0000
static_ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}::off
stderr=serial@44e09000
stdin=serial@44e09000
stdout=serial@44e09000
update_to_fit=setenv loadaddr ${addr_fit}; setenv bootfile ${name_fit}
usb_boot=usb start; if usb dev ${devnum}; then devtype=usb; run scan_dev_for_boot_part; fi
usbnet_devaddr=de:ad:be:ef:00:01
vendor=ti
ver=U-Boot 2020.07 (Mar 27 2021 - 18:31:46 +0400)

And uEnv.txt is the following:

#Docs: http://elinux.org/Beagleboard:U-boot_partitioning_layout_2.0

uname_r=4.19.94-ti-r51
#uuid=
#dtb=

###U-Boot Overlays###
###Documentation: http://elinux.org/Beagleboard:BeagleBoneBlack_Debian#U-Boot_Overlays
###Master Enable
enable_uboot_overlays=1
###
###Overide capes with eeprom
#uboot_overlay_addr0=<file0>.dtbo
#uboot_overlay_addr1=<file1>.dtbo
#uboot_overlay_addr2=<file2>.dtbo
#uboot_overlay_addr3=<file3>.dtbo
###
###Additional custom capes
#uboot_overlay_addr4=<file4>.dtbo
#uboot_overlay_addr5=<file5>.dtbo
#uboot_overlay_addr6=<file6>.dtbo
#uboot_overlay_addr7=<file7>.dtbo
###
###Custom Cape
#dtb_overlay=<file8>.dtbo
###
###Disable auto loading of virtual capes (emmc/video/wireless/adc)
#disable_uboot_overlay_emmc=1
#disable_uboot_overlay_video=1
#disable_uboot_overlay_audio=1
#disable_uboot_overlay_wireless=1
#disable_uboot_overlay_adc=1
###
###PRUSS OPTIONS
###pru_rproc (4.14.x-ti kernel)
#uboot_overlay_pru=AM335X-PRU-RPROC-4-14-TI-00A0.dtbo
###pru_rproc (4.19.x-ti kernel)
uboot_overlay_pru=AM335X-PRU-RPROC-4-19-TI-00A0.dtbo
###pru_uio (4.14.x-ti, 4.19.x-ti & mainline/bone kernel)
#uboot_overlay_pru=AM335X-PRU-UIO-00A0.dtbo
###
###Cape Universal Enable
enable_uboot_cape_universal=1
###
###Debug: disable uboot autoload of Cape
#disable_uboot_overlay_addr0=1
#disable_uboot_overlay_addr1=1
#disable_uboot_overlay_addr2=1
#disable_uboot_overlay_addr3=1
###
###U-Boot fdt tweaks... (60000 = 384KB)
#uboot_fdt_buffer=0x60000
###U-Boot Overlays###

cmdline=coherent_pool=1M net.ifnames=0 lpj=1990656 rng_core.default_quality=100 quiet

#In the event of edid real failures, uncomment this next line:
#cmdline=coherent_pool=1M net.ifnames=0 lpj=1990656 rng_core.default_quality=100 quiet video=HDMI-A-1:1024x768@60e

##enable Generic eMMC Flasher:
#cmdline=init=/opt/scripts/tools/eMMC/init-eMMC-flasher-Mender.sh

@kacf Also just checked the bare image bone-debian-10.5-console-armhf-2020-09-21-1gb.img without of mender-convert modifications and it works fine.

@kacf @drewmoseley
Could you guys give me the troubleshooting direction ?

Sorry for the delay, Easter meant a lot of people have been off. A few different things you can try:

  1. Can you connect to a screen and see if you see any output there?
  2. The U-Boot environment looks correct, and I don’t think you would have gotten as far as you did if it wasn’t. But U-Boot simply chain loads GRUB through the UEFI boot standard, so it’s more interesting to see if this is correct. If you can mount the memory card on your laptop, could post the contents of the EFI/BOOT/grub.cfg file, which is on the first partition?