Solidrun Clearfog Pro

Board description

The ClearFog Pro provides access to various I/Os such as GigE port, 5 –port GigE switch, SFP cage, dual mPCIe, M.2, SIM card holder, mikroBUS socket and much more.

Combined, the ClearFog is the perfect board for developers and engineers for networking, routing, storage and IoT gateway applications.


Test results

The Yocto Project releases in the table below have been tested by the Mender community. Please update it if you have tested this integration on other Yocto Project releases:

Yocto Project Build Runtime
thud (2.6) :test_works: :test_works:
warrior (2.7) :test_fails: :test_fails:

Build means that the Yocto Project build using this Mender integration completes without errors and outputs images.
Runtime means that Mender has been verified to work on the board. For U-Boot-based boards, the integration checklist has been verified.

Getting Started


  • A supported Linux distribution and dependencies installed on your workstation/laptop as described in the Yocto Mega Manual
    • NOTE. Instructions depend on which Yocto version you intend to use.
  • Google repo tool installed and in your PATH.

Configuring the build

Setup Yocto environment

Set the Yocto Project branch you are building for:

# set to your branch, make sure it is supported (see table above)
export BRANCH="thud"

Create a directory for your mender-clearfog setup to live in and clone the
meta information.

mkdir mender-clearfog && cd mender-clearfog

Initialize repo manifest:

repo init -u \
           -m meta-mender-clearfog/scripts/manifest-clearfog.xml \
           -b ${BRANCH}

Fetch layers in manifest:

repo sync

Setup build environment

Initialize the build environment:

source setup-environment clearfog

Configure Mender server URL (optional)

This section is not required for a successful build but images that are generated by default are only suitable for usage with the Mender client in Standalone deployments, due to lack of server configuration.

You can edit the conf/local.conf file to provide your Mender server configuration, ensuring the generated images and Mender Artifacts are connecting to the Mender server that you are using. There should already be a commented section in the generated conf/local.conf file and you can simply uncomment the relevant configuration options and assign appropriate values to them.

Build for Hosted Mender:

# To get your tenant token:
#    - log in to
#    - click your email at the top right and then "My organization"
#    - press the "COPY TO CLIPBOARD"
#    - assign content of clipboard to MENDER_TENANT_TOKEN
MENDER_TENANT_TOKEN = "<copy token here>"

Build for Mender demo server:

# Update IP address to match the machine running the Mender demo server

Building the image

You can now proceed with building an image:

MACHINE=clearfog-pro bitbake core-image-base

Replace core-image-base with your desired image target.

Using the build output

Note! The default configuration is booting from a SD card

After a successful build, the images and build artifacts are placed in tmp/deploy/images/clearfog-pro/.

  • tmp/deploy/images/clearfog-pro/core-image-base-clearfog-pro.sdimg
  • tmp/deploy/images/clearfog-pro/core-image-base-clearfog-pro.mender
  • tmp/deploy/images/clearfog-pro/u-boot-spl-sdhc.kwb

The disk image with .sdimg is used to provision the device storage for devices without Mender running already. Please proceed to the official documentation on provisioning a new device for steps to do this.

The u-boot-spl-sdhc.kwb file is used to provision the device with a Mender compatible U-Boot.

On the other hand, if you already have Mender running on your device and want to deploy a rootfs update using this build, you should use the Mender Artifact files, which have .mender suffix. You can either deploy this Artifact in managed mode with the Mender server (upload it under Releases in the server UI) or by using the Mender client only in Standalone deployments.

Boot medium configuration and flashing instructions

Depending on which medium you intend to boot from you need to adjust the UBOOT_BINARY variable, please take a look in below link for further information:

Flashing instructions depend-on which boot medium was choosen and you can find more information in the Solidrun documentation,


  • The official Mender documentation explains how Mender works. This is simply a board-specific complement to the official documentation.

Known issues

(thud) SolidRun does not provide an official Yocto BSP for the ClearFog range of boards and this integration is based on a layer that I have created which can be found here:

I am on the lookout to find a better location for above code.

(warrior) SolidRun have created a Yocto BSP for the Clearfog range of boards and this integration is based on it which can be found here:


  • Currently support for eMMC isn’t implemented, I need to come back and clean up the layer. In the interim you can run the following code during u-boot to reconfigure the board to boot (bypasses the SD-Card check which is required for eMMC)

setenv bootargs 'root=${mender_kernel_root} rw rootwait'
setenv bootcmd 'run mender_setup; load \${mender_uboot_root} \${kernel_addr_r} /boot/zImage; load \${mender_uboot_root} \${fdt_addr_r} /boot/armada-388-clearfog.dtb; fdt addr \${fdt_addr_r}; fdt resize; fdt rm /soc/internal-regs/sdhci@d8000/ cd-gpios; fdt set /soc/internal-regs/sdhci@d8000/ non-removable; bootz \${kernel_addr_r} - \${fdt_addr_r}; run mender_try_to_recover'

Hopefully I’ll find some time soon to fix the layer.

If this post was useful to you, please press like, or leave a thank you note to the contributor who put valuable time into this and made it available to you. It will be much appreciated!

1 Like

Having some trouble with the Warrior integration (using the official SolidRun repo). I’m trying to use the automatic u-boot patches and I’m currently stuck with the MENDER_DTB_NAME=$(mender_get_clean_kernel_devicetree) line.

I can’t find the definition of mender_get_clean_kernel_devicetree to work back and isolate the problem, any hints?

I’ve tried moving the KERNEL_DEVICETREE definition back to the machine conf file and created individual configuration files so the DEVICETREE doesn’t have 3-4 nested dtb files to also help with the boot.cmd script with little luck.

As I write this I notice that I have _clearfog suffix but that shouldn’t be the issue (still I’ll try removing it).

Anyway thoughts on what the issue might be would be appreciated.

Found the code block:

I see I can use MENDER_DTB_NAME_FORCE to define the correct dtb so I’ll use that for now.

Well almost compiled. I have hopefully one last error to solve before it’ll build. At the bottom I’ve copied in the error log when it tries to build the sdimag. Taking a look the following snippet stands out:

mcopy -i /home/yocto/clearfog/build/tmp/work/clearfog-poky-linux-gnueabi/core-image-base/1.0-r0/deploy-core-image-base-image-complete/core-image-base-clearfog--20191015213400-sdimg/tmp.wic.81r3k2n7/rootfs_boot.3.vfat -s /home/yocto/clearfog/build/tmp/work/clearfog-poky-linux-gnueabi/core-image-base/1.0-r0/bootfs.image_sdimg/* ::/ returned '1' instead of 0
output: /home/yocto/clearfog/build/tmp/work/clearfog-poky-linux-gnueabi/core-image-base/1.0-r0/bootfs.image_sdimg/*: No such file or directory

Now I’m not sure if it’s been cleaned up before I check the folder but the tmp.wic.81r3k2n7 folder doesn’t exist but the file rootfs_boot.3.vfat exists in the core-image-base-clearfog--20191015213400-sdimg directory so I’m wondering how to overcome the issue.

Error Log
DEBUG: Executing python function prepare_excluded_directories
DEBUG: 'IMAGE_ROOTFS_EXCLUDE_PATH' is set but 'respect_exclude_path' variable flag is 0 for this image type, so ignoring it
DEBUG: Python function prepare_excluded_directories finished
DEBUG: Executing python function set_image_size
DEBUG: 61648.000000 = 61648 * 1.000000
DEBUG: 221184.000000 = max(61648.000000, 221184)[221184.000000] + 1
DEBUG: 221184.000000 = int(221184.000000)
DEBUG: 221184 = aligned(221184)
DEBUG: returning 221184
DEBUG: Python function set_image_size finished
DEBUG: Executing python function extend_recipe_sysroot
NOTE: Direct dependencies are ['/home/yocto/clearfog/build/../sources/poky/meta/recipes-core/glibc/', '/home/yocto/clearfog/build/../sources/poky/meta/recipes-devtools/cdrtools/', 'virtual:native:/home/yocto/clearfog/build/../sources/poky/meta/recipes-connectivity/openssl/', 'virtual:native:/home/yocto/clearfog/build/../sources/poky/meta/recipes-devtools/opkg/', 'virtual:native:/home/yocto/clearfog/build/../sources/poky/meta/recipes-devtools/squashfs-tools/', 'virtual:native:/home/yocto/clearfog/build/../sources/poky/meta/recipes-devtools/dosfstools/', 'virtual:native:/home/yocto/clearfog/build/../sources/poky/meta/recipes-kernel/dtc/', '/home/yocto/clearfog/build/../sources/meta-clearfog/recipes-kernel/linux/', 'virtual:native:/home/yocto/clearfog/build/../sources/poky/meta/recipes-extended/parted/', 'virtual:native:/home/yocto/clearfog/build/../sources/poky/meta/recipes-devtools/makedevs/', '/home/yocto/clearfog/build/../sources/poky/meta/recipes-devtools/binutils/', '/home/yocto/clearfog/build/../sources/poky/meta/recipes-devtools/qemu/', 'virtual:native:/home/yocto/clearfog/build/../sources/poky/meta/recipes-support/bmap-tools/', '/home/yocto/clearfog/build/../sources/poky/meta/recipes-kernel/kmod/', '/home/yocto/clearfog/build/../sources/poky/meta/recipes-core/glibc/', 'virtual:native:/home/yocto/clearfog/build/../sources/poky/meta/recipes-devtools/swig/', 'virtual:native:/home/yocto/clearfog/build/../sources/poky/meta/recipes-devtools/opkg-utils/', '/home/yocto/clearfog/build/../sources/poky/meta/recipes-core/glibc/', '/home/yocto/clearfog/build/../sources/poky/meta/recipes-kernel/kmod/', 'virtual:native:/home/yocto/clearfog/build/../sources/poky/meta/recipes-devtools/btrfs-tools/', '/home/yocto/clearfog/build/../sources/poky/meta/recipes-devtools/mklibs/', 'virtual:native:/home/yocto/clearfog/build/../sources/poky/meta/recipes-extended/pigz/', '/home/yocto/clearfog/build/../sources/poky/meta/recipes-devtools/quilt/', '/home/yocto/clearfog/build/../sources/poky/meta/recipes-bsp/u-boot/', 'virtual:native:/home/yocto/clearfog/build/../sources/poky/meta/recipes-extended/pbzip2/', 'virtual:native:/home/yocto/clearfog/build/../sources/poky/meta/recipes-devtools/bison/', 'virtual:native:/home/yocto/clearfog/build/../sources/poky/meta/recipes-devtools/flex/', 'virtual:native:/home/yocto/clearfog/build/../sources/poky/meta/recipes-devtools/fdisk/', 'virtual:native:/home/yocto/clearfog/build/../sources/poky/meta/recipes-core/update-rc.d/', 'virtual:native:/home/yocto/clearfog/build/../sources/poky/meta/recipes-devtools/e2fsprogs/', 'virtual:native:/home/yocto/clearfog/build/../sources/poky/meta/recipes-devtools/dnf/', 'virtual:native:/home/yocto/clearfog/build/../sources/poky/meta/recipes-devtools/rpm/', 'virtual:native:/home/yocto/clearfog/build/../sources/poky/meta/recipes-extended/xz/', 'virtual:native:/home/yocto/clearfog/build/../sources/poky/meta/recipes-core/coreutils/', 'virtual:native:/home/yocto/clearfog/build/../sources/poky/meta/recipes-extended/bc/', 'virtual:native:/home/yocto/clearfog/build/../sources/poky/meta/recipes-devtools/pseudo/', '/home/yocto/clearfog/build/../sources/poky/meta/recipes-devtools/python/', 'virtual:native:/home/yocto/clearfog/build/../sources/poky/meta/recipes-devtools/syslinux/', 'virtual:native:/home/yocto/clearfog/build/../sources/poky/meta/recipes-devtools/prelink/', '/home/yocto/clearfog/build/../sources/poky/meta/recipes-devtools/gcc/', '/home/yocto/clearfog/build/../sources/poky/meta/recipes-devtools/gcc/', '/home/yocto/clearfog/build/../sources/poky/meta/recipes-kernel/kern-tools/', 'virtual:native:/home/yocto/clearfog/build/../sources/poky/meta/recipes-devtools/createrepo-c/', 'virtual:native:/home/yocto/clearfog/build/../sources/poky/meta/recipes-devtools/mtools/', 'virtual:native:/home/yocto/clearfog/build/../sources/poky/meta/recipes-support/lzop/', '/home/yocto/clearfog/build/../sources/poky/meta/recipes-core/meta/']
NOTE: Installed into sysroot: []
NOTE: Skipping as already exists in sysroot: ['ldconfig-native', 'cdrtools-native', 'openssl-native', 'opkg-native', 'squashfs-tools-native', 'dosfstools-native', 'dtc-native', 'linux-yocto-clearfog', 'parted-native', 'makedevs-native', 'binutils-cross-arm', 'qemuwrapper-cross', 'bmap-tools-native', 'kmod-native', 'cross-localedef-native', 'swig-native', 'opkg-utils-native', 'glibc', 'depmodwrapper-cross', 'btrfs-tools-native', 'mklibs-native', 'pigz-native', 'quilt-native', 'u-boot', 'pbzip2-native', 'bison-native', 'flex-native', 'gptfdisk-native', 'update-rc.d-native', 'e2fsprogs-native', 'dnf-native', 'rpm-native', 'xz-native', 'coreutils-native', 'bc-native', 'pseudo-native', 'python-native', 'syslinux-native', 'prelink-native', 'gcc-cross-arm', 'gcc-runtime', 'kern-tools-native', 'createrepo-c-native', 'mtools-native', 'lzop-native', 'wic-tools', 'systemd-systemctl-native', 'shadow-native', 'autoconf-native', 'automake-native', 'libtool-native', 'pkgconfig-native', 'gnu-config-native', 'libsolv-native', 'libarchive-native', 'zlib-native', 'lz4-native', 'attr-native', 'lzo-native', 'debianutils-native', 'texinfo-dummy-native', 'util-linux-native', 'readline-native', 'ncurses-native', 'gettext-minimal-native', 'qemu-native', 'python3-native', 'python3-setuptools-native', 'python3-six-native', 'gtk-doc-native', 'libpcre-native', 'linux-libc-headers', 'acl-native', 'bzip2-native', 'm4-native', 'popt-native', 'cmake-native', 'ninja-native', 'librepo-native', 'python3-iniparse-native', 'libcomps-native', 'libdnf-native', 'dbus-native', 'perl-native', 'nss-native', 'file-native', 'elfutils-native', 'db-native', 'expat-native', 'gdbm-native', 'sqlite3-native', 'nasm-native', 'binutils-native', 'mpfr-native', 'gmp-native', 'libmpc-native', 'libgcc', 'curl-native', 'libxml2-native', 'glib-2.0-native', 'libffi-native', 'libtirpc-native', 'libnsl2-native', 'unzip-native', 're2c-native', 'gpgme-native', 'libcheck-native', 'gobject-introspection-native', 'libmodulemd-native', 'json-c-native', 'nspr-native', 'groff-native', 'meson-native', 'gettext-native', 'libassuan-native', 'libgpg-error-native', 'libyaml-native']
DEBUG: Python function extend_recipe_sysroot finished
DEBUG: Executing shell function do_image_sdimg
+ mkdir -p /home/yocto/clearfog/build/tmp/work/clearfog-poky-linux-gnueabi/core-image-base/1.0-r0
+ true
+ install -m 0644 /home/yocto/clearfog/build/tmp/deploy/images/clearfog/uboot.env /home/yocto/clearfog/build/tmp/work/clearfog-poky-linux-gnueabi/core-image-base/1.0-r0/
++ basename /dev/mmcblk0
+ ondisk_dev=mmcblk0
+ wks=/home/yocto/clearfog/build/tmp/work/clearfog-poky-linux-gnueabi/core-image-base/1.0-r0/mender-sdimg.wks
+ rm -f /home/yocto/clearfog/build/tmp/work/clearfog-poky-linux-gnueabi/core-image-base/1.0-r0/mender-sdimg.wks
+ '[' -n u-boot-clearfog.bin ']'
+ install -m 0644 /home/yocto/clearfog/build/tmp/deploy/images/clearfog/u-boot-clearfog.bin /home/yocto/clearfog/build/tmp/work/clearfog-poky-linux-gnueabi/core-image-base/1.0-r0/
++ expr 1 % 2
+ '[' 1 -ne 0 ']'
++ expr 1 + 1
+ bootloader_sector=2
+ bootloader_file=/home/yocto/clearfog/build/tmp/work/clearfog-poky-linux-gnueabi/core-image-base/1.0-r0/u-boot-clearfog.bin-partial
+ dd if=/home/yocto/clearfog/build/tmp/work/clearfog-poky-linux-gnueabi/core-image-base/1.0-r0/u-boot-clearfog.bin of=/home/yocto/clearfog/build/tmp/work/clearfog-poky-linux-gnueabi/core-image-base/1.0-r0/u-boot-clearfog.bin-partial skip=1
1035+1 records in
1035+1 records out
530324 bytes (530 kB, 518 KiB) copied, 0.00638665 s, 83.0 MB/s
+++ expr 2 '*' 512
++ expr 1024 / 1024
+ bootloader_align_kb=1
++ stat -c %s /home/yocto/clearfog/build/tmp/work/clearfog-poky-linux-gnueabi/core-image-base/1.0-r0/u-boot-clearfog.bin-partial
+ bootloader_size=530324
++ expr 1 '*' 1024 + 530324
+ bootloader_end=531348
+ '[' 531348 -gt 8388608 ']'
+ cat
+ true
+ '[' -n 8388608 ']'
++ expr 8388608 / 1024
+ boot_env_align_kb=8192
+ cat
++ expr 8388608 % 1024
++ true
+ '[' 0 -ne 0 ']'
++ expr 8388608 / 1024
+ alignment_kb=8192
+ '[' msdos = gpt ']'
+ part_type_params=
++ echo ' '
++ sed -r 's/(^\s*)|(\s*$)//g'
+ '[' 16 -ne 0 ']'
+ mender_merge_bootfs_and_image_boot_files
+ W=/home/yocto/clearfog/build/tmp/work/clearfog-poky-linux-gnueabi/core-image-base/1.0-r0/bootfs.image_sdimg
+ rm -rf /home/yocto/clearfog/build/tmp/work/clearfog-poky-linux-gnueabi/core-image-base/1.0-r0/bootfs.image_sdimg
+ cp -al /home/yocto/clearfog/build/tmp/work/clearfog-poky-linux-gnueabi/core-image-base/1.0-r0/rootfs//uboot /home/yocto/clearfog/build/tmp/work/clearfog-poky-linux-gnueabi/core-image-base/1.0-r0/bootfs.image_sdimg
+ image_boot_files=' '
+ cat
+ cat
+ '[' 0 -ne 0 ']'
+ cat
+ echo '### Contents of wks file ###'
### Contents of wks file ###
+ cat /home/yocto/clearfog/build/tmp/work/clearfog-poky-linux-gnueabi/core-image-base/1.0-r0/mender-sdimg.wks
# embed bootloader
part --source rawcopy --sourceparams="file=/home/yocto/clearfog/build/tmp/work/clearfog-poky-linux-gnueabi/core-image-base/1.0-r0/u-boot-clearfog.bin-partial" --ondisk "mmcblk0" --align 1 --no-table
part --source rawcopy --sourceparams="file=/home/yocto/clearfog/build/tmp/work/clearfog-poky-linux-gnueabi/core-image-base/1.0-r0/uboot.env" --ondisk "mmcblk0" --align 8192 --no-table
part --source rootfs --rootfs-dir /home/yocto/clearfog/build/tmp/work/clearfog-poky-linux-gnueabi/core-image-base/1.0-r0/bootfs.image_sdimg --ondisk "mmcblk0" --fstype=vfat --label boot --align 8192 --fixed-size 16 --active 
part --source rawcopy --sourceparams="file=/home/yocto/clearfog/build/tmp/work/clearfog-poky-linux-gnueabi/core-image-base/1.0-r0/deploy-core-image-base-image-complete/core-image-base-clearfog.ext4" --ondisk "mmcblk0" --align 8192 --fixed-size 221184k 
part --source rawcopy --sourceparams="file=/home/yocto/clearfog/build/tmp/work/clearfog-poky-linux-gnueabi/core-image-base/1.0-r0/deploy-core-image-base-image-complete/core-image-base-clearfog.ext4" --ondisk "mmcblk0" --align 8192 --fixed-size 221184k 
part --source rawcopy --sourceparams="file=/home/yocto/clearfog/build/tmp/work/clearfog-poky-linux-gnueabi/core-image-base/1.0-r0/deploy-core-image-base-image-complete/core-image-base-clearfog.dataimg" --ondisk "mmcblk0" --align 8192 --fixed-size 128 --mkfs-extraopts='' 
bootloader --ptable msdos
+ echo '### End of contents of wks file ###'
### End of contents of wks file ###
+ outimgname=/home/yocto/clearfog/build/tmp/work/clearfog-poky-linux-gnueabi/core-image-base/1.0-r0/deploy-core-image-base-image-complete/core-image-base-clearfog--20191015213400.sdimg
+ wicout=/home/yocto/clearfog/build/tmp/work/clearfog-poky-linux-gnueabi/core-image-base/1.0-r0/deploy-core-image-base-image-complete/core-image-base-clearfog--20191015213400-sdimg
+ BUILDDIR=/home/yocto/clearfog/build
+ wic create /home/yocto/clearfog/build/tmp/work/clearfog-poky-linux-gnueabi/core-image-base/1.0-r0/mender-sdimg.wks --vars /home/yocto/clearfog/build/tmp/sysroots/clearfog/imgdata/ -e core-image-base -o /home/yocto/clearfog/build/tmp/work/clearfog-poky-linux-gnueabi/core-image-base/1.0-r0/deploy-core-image-base-image-complete/core-image-base-clearfog--20191015213400-sdimg/
INFO: Creating image(s)...

WARNING: overhead-factor was specified, but size was not, so bitbake variables will be used for the size. In this case both IMAGE_OVERHEAD_FACTOR and --overhead-factor will be applied
ERROR: _exec_cmd: export PATH=/home/yocto/clearfog/build/tmp/work/clearfog-poky-linux-gnueabi/core-image-base/1.0-r0/recipe-sysroot-native/sbin:/home/yocto/clearfog/build/tmp/work/clearfog-poky-linux-gnueabi/core-image-base/1.0-r0/recipe-sysroot-native/usr/sbin:/home/yocto/clearfog/build/tmp/work/clearfog-poky-linux-gnueabi/core-image-base/1.0-r0/recipe-sysroot-native/usr/bin:$PATH;mcopy -i /home/yocto/clearfog/build/tmp/work/clearfog-poky-linux-gnueabi/core-image-base/1.0-r0/deploy-core-image-base-image-complete/core-image-base-clearfog--20191015213400-sdimg/tmp.wic.81r3k2n7/rootfs_boot.3.vfat -s /home/yocto/clearfog/build/tmp/work/clearfog-poky-linux-gnueabi/core-image-base/1.0-r0/bootfs.image_sdimg/* ::/ returned '1' instead of 0
output: /home/yocto/clearfog/build/tmp/work/clearfog-poky-linux-gnueabi/core-image-base/1.0-r0/bootfs.image_sdimg/*: No such file or directory

+ bb_exit_handler
+ ret=1
+ case $ret in
+ case $BASH_VERSION in
+ echo 'WARNING: /home/yocto/clearfog/build/tmp/work/clearfog-poky-linux-gnueabi/core-image-base/1.0-r0/temp/run.do_image_sdimg.62730:1 exit 1 from '\''BUILDDIR="/home/yocto/clearfog/build" wic create "$wks" --vars "/home/yocto/clearfog/build/tmp/sysroots/clearfog/imgdata/" -e "core-image-base" -o "$wicout/"'\'''
WARNING: /home/yocto/clearfog/build/tmp/work/clearfog-poky-linux-gnueabi/core-image-base/1.0-r0/temp/run.do_image_sdimg.62730:1 exit 1 from 'BUILDDIR="/home/yocto/clearfog/build" wic create "$wks" --vars "/home/yocto/clearfog/build/tmp/sysroots/clearfog/imgdata/" -e "core-image-base" -o "$wicout/"'
+ exit 1
ERROR: Function failed: do_image_sdimg (log file is located at /home/yocto/clearfog/build/tmp/work/clearfog-poky-linux-gnueabi/core-image-base/1.0-r0/temp/log.do_image_sdimg.62730)

Hm, I can not spot anything that stands out to me. Can you share your local.conf?

See below:

# This file is your local configuration file and is where all local user settings
# are placed. The comments in this file give some guide to the options a new user
# to the system might want to change but pretty much any configuration option can
# be set in this file. More adventurous users can look at local.conf.extended
# which contains other examples of configuration which can be placed in this file
# but new users likely won't need any of them initially.
# Lines starting with the '#' character are commented out and in some cases the
# default values are provided as comments to show people example syntax. Enabling
# the option is a question of removing the # character and making any change to the
# variable as required.

# Machine Selection
# You need to select a specific machine to target the build with. There are a selection
# of emulated machines available which can boot and run in the QEMU emulator:
#MACHINE ?= "qemuarm"
#MACHINE ?= "qemuarm64"
#MACHINE ?= "qemumips"
#MACHINE ?= "qemumips64"
#MACHINE ?= "qemuppc"
#MACHINE ?= "qemux86"
#MACHINE ?= "qemux86-64"
# There are also the following hardware board target machines included for 
# demonstration purposes:
#MACHINE ?= "beaglebone-yocto"
#MACHINE ?= "genericx86"
#MACHINE ?= "genericx86-64"
#MACHINE ?= "mpc8315e-rdb"
#MACHINE ?= "edgerouter"
# This sets the default machine to be qemux86 if no other machine is selected:
MACHINE ??= "qemux86"

# Where to place downloads
# During a first build the system will download many different source code tarballs
# from various upstream projects. This can take a while, particularly if your network
# connection is slow. These are all stored in DL_DIR. When wiping and rebuilding you
# can preserve this directory to speed up this part of subsequent builds. This directory
# is safe to share between multiple builds on the same machine too.
# The default is a downloads directory under TOPDIR which is the build directory.
#DL_DIR ?= "${TOPDIR}/downloads"

# Where to place shared-state files
# BitBake has the capability to accelerate builds based on previously built output.
# This is done using "shared state" files which can be thought of as cache objects
# and this option determines where those files are placed.
# You can wipe out TMPDIR leaving this directory intact and the build would regenerate
# from these files if no changes were made to the configuration. If changes were made
# to the configuration, only shared state files where the state was still valid would
# be used (done using checksums).
# The default is a sstate-cache directory under TOPDIR.
#SSTATE_DIR ?= "${TOPDIR}/sstate-cache"

# Where to place the build output
# This option specifies where the bulk of the building work should be done and
# where BitBake should place its temporary files and output. Keep in mind that
# this includes the extraction and compilation of many applications and the toolchain
# which can use Gigabytes of hard disk space.
# The default is a tmp directory under TOPDIR.
#TMPDIR = "${TOPDIR}/tmp"

# Default policy config
# The distribution setting controls which policy settings are used as defaults.
# The default value is fine for general Yocto project use, at least initially.
# Ultimately when creating custom policy, people will likely end up subclassing 
# these defaults.
DISTRO ?= "poky"
# As an example of a subclass there is a "bleeding" edge policy configuration
# where many versions are set to the absolute latest code from the upstream 
# source control systems. This is just mentioned here as an example, its not
# useful to most new users.
# DISTRO ?= "poky-bleeding"

# Package Management configuration
# This variable lists which packaging formats to enable. Multiple package backends
# can be enabled at once and the first item listed in the variable will be used
# to generate the root filesystems.
# Options are:
#  - 'package_deb' for debian style deb files
#  - 'package_ipk' for ipk files are used by opkg (a debian style embedded package manager)
#  - 'package_rpm' for rpm style packages
# E.g.: PACKAGE_CLASSES ?= "package_rpm package_deb package_ipk"
# We default to rpm:
PACKAGE_CLASSES ?= "package_rpm"

# SDK target architecture
# This variable specifies the architecture to build SDK items for and means
# you can build the SDK packages for architectures other than the machine you are
# running the build on (i.e. building i686 packages on an x86_64 host).
# Supported values are i686 and x86_64
#SDKMACHINE ?= "i686"

# Extra image configuration defaults
# The EXTRA_IMAGE_FEATURES variable allows extra packages to be added to the generated
# images. Some of these options are added to certain image types automatically. The
# variable can contain the following options:
#  "dbg-pkgs"       - add -dbg packages for all installed packages
#                     (adds symbol information for debugging/profiling)
#  "src-pkgs"       - add -src packages for all installed packages
#                     (adds source code for debugging)
#  "dev-pkgs"       - add -dev packages for all installed packages
#                     (useful if you want to develop against libs in the image)
#  "ptest-pkgs"     - add -ptest packages for all ptest-enabled packages
#                     (useful if you want to run the package test suites)
#  "tools-sdk"      - add development tools (gcc, make, pkgconfig etc.)
#  "tools-debug"    - add debugging tools (gdb, strace)
#  "eclipse-debug"  - add Eclipse remote debugging support
#  "tools-profile"  - add profiling tools (oprofile, lttng, valgrind)
#  "tools-testapps" - add useful testing tools (ts_print, aplay, arecord etc.)
#  "debug-tweaks"   - make an image suitable for development
#                     e.g. ssh root access has a blank password
# There are other application targets that can be used here too, see
# meta/classes/image.bbclass and meta/classes/core-image.bbclass for more details.
# We default to enabling the debugging tweaks.
EXTRA_IMAGE_FEATURES ?= "debug-tweaks"

# Additional image features
# The following is a list of additional classes to use when building images which
# enable extra features. Some available options which can be included in this variable
# are:
#   - 'buildstats' collect build statistics
#   - 'image-mklibs' to reduce shared library files size for an image
#   - 'image-prelink' in order to prelink the filesystem image
# NOTE: if listing mklibs & prelink both, then make sure mklibs is before prelink
# NOTE: mklibs also needs to be explicitly enabled for a given image, see local.conf.extended
USER_CLASSES ?= "buildstats image-mklibs image-prelink"

# Runtime testing of images
# The build system can test booting virtual machine images under qemu (an emulator)
# after any root filesystems are created and run tests against those images. It can also
# run tests against any SDK that are built. To enable this uncomment these lines.
# See classes/test{image,sdk}.bbclass for further details.
#IMAGE_CLASSES += "testimage testsdk"
#TESTIMAGE_AUTO_qemuall = "1"

# Interactive shell configuration
# Under certain circumstances the system may need input from you and to do this it
# can launch an interactive shell. It needs to do this since the build is
# multithreaded and needs to be able to handle the case where more than one parallel
# process may require the user's attention. The default is iterate over the available
# terminal types to find one that works.
# Examples of the occasions this may happen are when resolving patches which cannot
# be applied, to use the devshell or the kernel menuconfig
# Supported values are auto, gnome, xfce, rxvt, screen, konsole (KDE 3.x only), none
# Note: currently, Konsole support only works for KDE 3.x due to the way
# newer Konsole versions behave
#OE_TERMINAL = "auto"
# By default disable interactive patch resolution (tasks will just fail instead):

# Disk Space Monitoring during the build
# Monitor the disk space during the build. If there is less that 1GB of space or less
# than 100K inodes in any key build location (TMPDIR, DL_DIR, SSTATE_DIR), gracefully
# shutdown the build. If there is less that 100MB or 1K inodes, perform a hard abort
# of the build. The reason for this is that running completely out of space can corrupt
# files and damages the build in ways which may not be easily recoverable.
# It's necesary to monitor /tmp, if there is no space left the build will fail
# with very exotic errors.
    STOPTASKS,${DL_DIR},1G,100K \
    STOPTASKS,/tmp,100M,100K \
    ABORT,${TMPDIR},100M,1K \
    ABORT,${DL_DIR},100M,1K \
    ABORT,${SSTATE_DIR},100M,1K \

# Shared-state files from other locations
# As mentioned above, shared state files are prebuilt cache data objects which can
# used to accelerate build time. This variable can be used to configure the system
# to search other mirror locations for these objects before it builds the data itself.
# This can be a filesystem directory, or a remote url such as http or ftp. These
# would contain the sstate-cache results from previous builds (possibly from other
# machines). This variable works like fetcher MIRRORS/PREMIRRORS and points to the
# cache locations to check for the shared objects.
# NOTE: if the mirror uses the same structure as SSTATE_DIR, you need to add PATH
# at the end as shown in the examples below. This will be substituted with the
# correct path within the directory structure.
#file://.* http://someserver.tld/share/sstate/PATH;downloadfilename=PATH \n \
#file://.* file:///some/local/dir/sstate/PATH"

# Yocto Project SState Mirror
# The Yocto Project has prebuilt artefacts available for its releases, you can enable
# use of these by uncommenting the following line. This will mean the build uses
# the network to check for artefacts at the start of builds, which does slow it down
# equally, it will also speed up the builds by not having to build things if they are
# present in the cache. It assumes you can download something faster than you can build it
# which will depend on your network.
#SSTATE_MIRRORS ?= "file://.*;downloadfilename=PATH"

# Qemu configuration
# By default qemu will build with a builtin VNC server where graphical output can be
# seen. The two lines below enable the SDL backend too. By default libsdl2-native will
# be built, if you want to use your host's libSDL instead of the minimal libsdl built
# by libsdl2-native then uncomment the ASSUME_PROVIDED line below.
PACKAGECONFIG_append_pn-qemu-system-native = " sdl"
PACKAGECONFIG_append_pn-nativesdk-qemu = " sdl"
#ASSUME_PROVIDED += "libsdl2-native"

# CONF_VERSION is increased each time build/conf/ changes incompatibly and is used to
# track the version of this file when it was generated. This can safely be ignored if
# this doesn't mean anything to you.

# Appended fragment from meta-mender-community/templates

# This really saves a lot of disk space!
INHERIT += "rm_work"

# The name of the disk image and Artifact that will be built.
# This is what the device will report that it is running, and different updates
# must have different names because Mender will skip installation of an Artifact
# if it is already installed.

INHERIT += "mender-full"

DISTRO_FEATURES_append = " systemd"
VIRTUAL-RUNTIME_init_manager = "systemd"
VIRTUAL-RUNTIME_initscripts = ""

# Build for Hosted Mender
# To get your tenant token:
#    - log in to
#    - click your email at the top right and then "My organization"
#    - press the "COPY TO CLIPBOARD"
#    - assign content of clipboard to MENDER_TENANT_TOKEN

# Build for Mender demo server
# Uncomment below and update IP address to match the machine running the
# Mender demo server

# Build for Mender production setup (on-prem)
# Uncomment below and update the URL to match your configured domain
# name and provide the path to the generated server.crt file.
# NOTE! It is recommend that you provide below information in your custom
# Yocto layer and this is only for demo purposes. See linked documentation
# for additional information.
#FILESEXTRAPATHS_prepend_pn-mender := "<DIRECTORY-CONTAINING-server.crt>:"
#SRC_URI_append_pn-mender = " file://server.crt"

# Mender storage configuration
# More details on these variables is available at
# Also, please be sure to check other config files as other
# layers, config fragments, etc may attempt to set values
# for specific platforms.  Using "bitbake -e <image-name>"
# can help determine which files are setting these values
# in a given configuration.
# MENDER_STORAGE_DEVICE = "/dev/mmcblk0"
# Appended fragment from meta-mender-community/meta-mender-clearfog/templates

# Supported Machine Types:
# - clearfog
# - clearfog-gtr-s4
# - clearfog-gtr-l8
MACHINE ?= "clearfog"

# Have to manually specify the DTB file to use with Mender

# Supported models:

#    armada-388-clearfog.dtb        - Clearfog
#    armada-388-clearfog-base.dtb   - Clearfog Base
#    armada-388-clearfog-pro.dtb    - Clearfog Pro
#    armada-388-clearfog-gtr-s4.dtb - Clearfog GTR S4
#    armada-388-clearfog-gtr-l8.dtb - Clearfog GTR L8
MENDER_DTB_NAME_FORCE ?= "armada-388-clearfog-pro.dtb"

# Set the storage medium
# Refer:
UBOOT_BINARY ?= "u-boot-spl-mmc.kwb"

IMAGE_INSTALL_append = " kernel-image kernel-devicetree"


MENDER_FEATURES_ENABLE_append = " mender-uboot mender-image-sd"
MENDER_FEATURES_DISABLE_append = " mender-grub mender-image-uefi"

I’m currently building:

I have a separate meta-mender-clearfog layer (for the moment) as I try to make the changes needed to get the official solidrun meta-clearfog working:

repo init -u -m meta-mender-clearfog/scripts/manifest-clearfog.xml -b dev
repo sync
. ./setup-environment clearfog
bitbake core-image-base

Looking deeper it’s even stranger, the only place I can see a use of mcopy is (new file in the warrior branch):

But the command doesn’t match what I see in the log:

mcopy -i "${WORKDIR}/boot.vfat" -s "$i" ::/
mcopy -i /home/yocto/clearfog/build/tmp/work/clearfog-poky-linux-gnueabi/core-image-base/1.0-r0/deploy-core-image-base-image-complete/core-image-base-clearfog--20191016203146-sdimg/tmp.wic.pulzatmg/rootfs_boot.3.vfat -s /home/yocto/clearfog/build/tmp/work/clearfog-poky-linux-gnueabi/core-image-base/1.0-r0/bootfs.image_sdimg/* ::/

When I manually run the command it gives me an error but if I remove the * at the end of the destination path it works (but nothing is copied)
Also if I change the rootfs_boot.3.vfat path to remove the tmp.wic.pulzatmg folder which doesn’t exist I still don’t have any files copied (rootfs_boot.3.vfat exists in the core-image-base-clearfog--20191016203146-sdimg folder).

Well as I keep digging deeper it the command comes from the poky layer (not what I linked above) and the problem seems to start from the bootfs.image_sdimage folder not containing the files needed to create the rootfs_boot.3.vfat file.

That said to test I copied a file into the folder and ran the command only to get a different error:

Cannot initialize '::'
Bad target ::/

So I’ll try and figure out where the files are created for bootfs.image_sdimage then go from there hoping the build script will correct whatever issue is causing the latest problem.

Any thoughts or help with this one would be appreciated.

Oki, now I think I know what is going on. I think this relates to the fact that IMAGE_BOOT_FILES is empty because this board does not require any files in the boot vfat partition to boot. This is a bug in mender-bootimg.bblcass, which should check this variable.

But quick workaround is to add:

# This is just a dummy value to silence the error

or you can disable the vfat boot partition (since it is not required for this board):

1 Like

Well I could use some advise. Trying to update to warrior and I thought I’d try and slim down the layer as much as possible to minimize changes with future versions.

With that said I can compile easy enough but booting is another issue. It get stuck when booting:

U-Boot SPL 2019.01 (Oct 22 2019 - 00:53:03 +0000)
High speed PHY - Version: 2.0
Detected Device ID 6828
board SerDes lanes topology details:
 | Lane #  | Speed |  Type       |
 |   0    |  3   |  SATA0       |
 |   1    |  0   |  SGMII1      |
 |   2    |  5   |  PCIe1       |
 |   3    |  5   |  USB3 HOST1  |
 |   4    |  5   |  PCIe2       |
 |   5    |  0   |  SGMII2      |
PCIe, Idx 1: detected no link
PCIe, Idx 2: detected no link
High speed PHY - Ended Successfully
mv_ddr: mv_ddr-armada-18.09.2
DDR3 Training Sequence - Switching XBAR Window to FastPath Window
mv_ddr: completed successfully
Trying to boot from MMC1

As an interesting aside if I don’t have any devices connected in the PCIe bus I get a different bit of gibberish each time I load the u-boot binary, i.e. 0▒▒4▒▒s0▒▒s ▒▒ ▒+▒M┫▒.

Any thoughts or experience from getting the thud branch working as to why it isn’t working?

Currently I’m working out of:
and have it pointing to:
This is just a direct clone of the SolidRun repo at the moment, just using a fork so I can try changes.

Nothing specific. How does the configuration of U-Boot work now? It seems to use the default (SDHC)? Are you trying to boot from eMMC or SD card? Does it boot without meta-mender?

I would at this stage take a step back and focus on the U-Boot source code alone (leaving Yocto out of it for now) to try to bisect the problem.

You can get the patch that meta-mender generated with:

bitbake -c save_mender_auto_configured_patch u-boot

So after a few round trips the answer was right in front of me (naturally):

Default is set to 0x141 which points to the SD Card slot and the emmc.cfg file changes it to 0x140 for eMMC. So with that sorted I can compile and boot using:


To make it configurable I added an extra variable BOOT_MEDIA in my fork of meta-clearfog and did the required changes in a fork of meta-mender-community. Thinking it was all good (since I manged to at least compile before) I gave it a go and a new unexpected error occurred :rage:.

ERROR: mender-artifact-native-3.2.0-r0 do_compile: oe_runmake failed                                                                                                                                                                          ERROR: mender-artifact-native-3.2.0-r0 do_compile: Function failed: do_compile (log file is located at /home/yocto/clearfog/build/tmp/work/x86_64-linux/mender-artifact-native/3.2.0-r0/temp/log.do_compile.43085)                            ERROR: Logfile of failure stored in: /home/yocto/clearfog/build/tmp/work/x86_64-linux/mender-artifact-native/3.2.0-r0/temp/log.do_compile.43085                                                                                               Log data follows:                                                                                                                                                                                                                             | DEBUG: Executing shell function do_compile                                                                                                                                                                                                  | GOARCH="amd64"                                                                                                                                                                                                                              | GOBIN=""                                                                                                                                                                                                                                    | GOCACHE="/home/yocto/.cache/go-build"                                                                                                                                                                                                       | GOEXE=""                                                                                                                                                                                                                                    | GOFLAGS=""                                                                                                                                                                                                                                  | GOHOSTARCH="amd64"                                                                                                                                                                                                                          | GOHOSTOS="linux"                                                                                                                                                                                                                            | GOOS="linux"                                                                                                                                                                                                                                | GOPATH="/home/yocto/clearfog/build/tmp/work/x86_64-linux/mender-artifact-native/3.2.0-r0/build:/home/yocto/clearfog/build/tmp/work/x86_64-linux/mender-artifact-native/3.2.0-r0/recipe-sysroot-native/usr/lib/x86_64-linux/go"              | GOPROXY=""                                                                                                                                                                                                                                  | GORACE=""                                                                                                                                                                                                                                   | GOROOT="/home/yocto/clearfog/build/tmp/work/x86_64-linux/mender-artifact-native/3.2.0-r0/recipe-sysroot-native/usr/lib/go"
| GOTMPDIR="/home/yocto/clearfog/build/tmp/work/x86_64-linux/mender-artifact-native/3.2.0-r0/go-tmp"
| GOTOOLDIR="/home/yocto/clearfog/build/tmp/work/x86_64-linux/mender-artifact-native/3.2.0-r0/recipe-sysroot-native/usr/lib/go/pkg/tool/linux_amd64"
| GCCGO="gccgo"
| CC="gcc"
| CXX="g++"
| GOMOD=""
| CGO_CFLAGS="-isystem/home/yocto/clearfog/build/tmp/work/x86_64-linux/mender-artifact-native/3.2.0-r0/recipe-sysroot-native/usr/include -O2 -pipe"
| CGO_CPPFLAGS="-isystem/home/yocto/clearfog/build/tmp/work/x86_64-linux/mender-artifact-native/3.2.0-r0/recipe-sysroot-native/usr/include"
| CGO_CXXFLAGS="-isystem/home/yocto/clearfog/build/tmp/work/x86_64-linux/mender-artifact-native/3.2.0-r0/recipe-sysroot-native/usr/include -O2 -pipe"
| CGO_FFLAGS="-g -O2"
| CGO_LDFLAGS="-L/home/yocto/clearfog/build/tmp/work/x86_64-linux/mender-artifact-native/3.2.0-r0/recipe-sysroot-native/usr/lib -L/home/yocto/clearfog/build/tmp/work/x86_64-linux/mender-artifact-native/3.2.0-r0/recipe-sysroot-native/lib -Wl,--enable-new-dtags -Wl,-rpath-link,/home/yocto/clearfog/build/tmp/work/x86_64-linux/mender-artifact-native/3.2.0-r0/recipe-sysroot-native/usr/lib -Wl,-rpath-link,/home/yocto/clearfog/build/tmp/work/x86_64-linux/mender-artifact-native/3.2.0-r0/recipe-sysroot-native/lib -Wl,-rpath,/home/yocto/clearfog/build/tmp/work/x86_64-linux/mender-artifact-native/3.2.0-r0/recipe-sysroot-native/usr/lib -Wl,-rpath,/home/yocto/clearfog/build/tmp/work/x86_64-linux/mender-artifact-native/3.2.0-r0/recipe-sysroot-native/lib -Wl,-O1 -Wl,--allow-shlib-undefined -Wl,--dynamic-linker=/home/yocto/clearfog/build/tmp/sysroots-uninative/x86_64-linux/lib/"
| PKG_CONFIG="pkg-config"
| GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/home/yocto/clearfog/build/tmp/work/x86_64-linux/mender-artifact-native/3.2.0-r0/go-tmp/go-build937725416=/tmp/go-build -gno-record-gcc-switches"
| NOTE: make -j 24 GOPATH=/home/yocto/clearfog/build/tmp/work/x86_64-linux/mender-artifact-native/3.2.0-r0/build:/home/yocto/clearfog/build/tmp/work/x86_64-linux/mender-artifact-native/3.2.0-r0/recipe-sysroot-native/usr/lib/x86_64-linux/go -C /home/yocto/clearfog/build/tmp/work/x86_64-linux/mender-artifact-native/3.2.0-r0/build/src/ V=1 install
| make: Entering directory '/home/yocto/clearfog/build/tmp/work/x86_64-linux/mender-artifact-native/3.2.0-r0/git/src/'
| cd cli/mender-artifact && go install -ldflags "-X main.Version=3.2.0" -v
| #
| /home/yocto/clearfog/build/tmp/work/x86_64-linux/mender-artifact-native/3.2.0-r0/recipe-sysroot-native/usr/lib/go/pkg/tool/linux_amd64/link: running gcc failed: exit status 1
| /home/yocto/clearfog/build/tmp/hosttools/ld: cannot find -llzma
| /home/yocto/clearfog/build/tmp/hosttools/ld: cannot find -llzma
| collect2: error: ld returned 1 exit status
| Makefile:74: recipe for target 'install' failed
| make: *** [install] Error 2
| make: Leaving directory '/home/yocto/clearfog/build/tmp/work/x86_64-linux/mender-artifact-native/3.2.0-r0/git/src/'
| ERROR: oe_runmake failed
| WARNING: /home/yocto/clearfog/build/tmp/work/x86_64-linux/mender-artifact-native/3.2.0-r0/temp/run.do_compile.43085:1 exit 1 from 'exit 1'
| ERROR: Function failed: do_compile (log file is located at /home/yocto/clearfog/build/tmp/work/x86_64-linux/mender-artifact-native/3.2.0-r0/temp/log.do_compile.43085)
ERROR: Task (virtual:native:/home/yocto/clearfog/build/../sources/meta-mender/meta-mender-core/recipes-mender/mender-artifact/ failed with exit code '1'                                                  NOTE: Tasks Summary: Attempted 1809 tasks of which 1613 didn't need to be rerun and 1 failed.                                                                                                                                                                                                                                                                                                                                                                                               Summary: 1 task failed:                                                                                                                                                                                                                         virtual:native:/home/yocto/clearfog/build/../sources/meta-mender/meta-mender-core/recipes-mender/mender-artifact/                                                                                        Summary: There were 2 ERROR messages shown, returning a non-zero exit code.

I’m completely lost as to what went wrong here, especially since I can compile the raspberrypi just fine.

Well for some reason it can not find the lzma library, unclear why it would not as this line should take care of it,

Can you try clearing the sstate cache for mender-artifact-native?

I actually completely wiped everything and started clean (from repo init) and still had the issue.

Hm, could it be that it is picking trying to pick it from your host machine. Did something change there recently?

Can you send me the set of commands you run to setup things (repo init …) and I can try on my machine

repo init -u - m meta-mender-clearfog/scripts/manifest-clearfog.xml - b dev
repo sync
source setup-environment clearfog
bitbake core-image-base
(can alos build minimal)

Wrote that on my phone so if there’s a minor typo read between the lines.

Hm, I am not getting any errors regarding the mender-artifact-native recipe. My environment is a Debian 9 VM.

Though another error shows up to me:

ERROR: u-boot-1_2019.01-r0 do_configure: Function failed: do_configure (log file is located at /home/admin/tmp/build/tmp/work/clearfog-poky-linux-gnueabi/u-boot/1_2019.01-r0/temp/log.do_configure.21940)
ERROR: Logfile of failure stored in: /home/admin/tmp/build/tmp/work/clearfog-poky-linux-gnueabi/u-boot/1_2019.01-r0/temp/log.do_configure.21940
Log data follows:
| DEBUG: Executing shell function do_configure
| The base file '/home/admin/tmp/build/tmp/work/clearfog-poky-linux-gnueabi/u-boot/1_2019.01-r0/build/.config' does not exist.  Exit.
| WARNING: exit code 1 from a shell command.
| ERROR: Function failed: do_configure (log file is located at /home/admin/tmp/build/tmp/work/clearfog-poky-linux-gnueabi/u-boot/1_2019.01-r0/temp/log.do_configure.21940)
ERROR: Task (/home/admin/tmp/build/../sources/poky/meta/recipes-bsp/u-boot/ failed with exit code '1'
NOTE: Tasks Summary: Attempted 1755 tasks of which 1431 didn't need to be rerun and 1 failed.

Summary: 1 task failed:
Summary: There was 1 ERROR message shown, returning a non-zero exit code.

Hmm that’s a new one, not sure why that’s happening. That said my patch to fix MMC does try to modify .config.

Probably worth (for testing) removing the do_configure_prepend function in the meta-clearfog recipes-bsp/u-boot/u-boot_2019.01.bbappend. If what I did is causing an issue that will overcome it.

Hopefully that’ll let you see the issue I’m having.