Integration on Sierra Wireless FX-30

Hi everyone,

We tried to integrate the meta-mender-core layer into our WP76XX board (more precisely, a Sierra Wireless FX-30 modem)

We tried two options :

  1. Integrate meta-mender-core layer into a fresh Yocto build
  2. Integrate meta-mender-core layer into our custom Yocto build

In both cases, we faced the same issue when building the app :

ERROR: Unable to parse /home/faunbe/yocto-fx30/swi-linux-src/poky/bitbake/lib/bb/data_smart.py
Traceback (most recent call last):
  File "/home/xxx/yocto-fx30/swi-linux-src/poky/bitbake/lib/bb/data_smart.py", line 400, in DataSmart.expandWithRefs(s=":${@mender_features(d, separator=':')}", varname='OVERRIDES_append'):
                 except Exception as exc:
    >                raise ExpansionError(varname, s, exc) from exc

bb.data_smart.ExpansionError: Failure expanding variable OVERRIDES_append, expression was :${@mender_features(d, separator=':')} which triggered exception TypeError: getVar() missing 1 required positional argument: 'expand'

Makefile:261: recipe for target 'image_bin' failed
make: *** [image_bin] Error 1

We set the following variables into the local.conf file :
• INHERIT += “mender-full-abi”
• MENDER_FEATURES_ENABLE_append = " mender-image"
• MENDER_SERVER_URL = “https://hosted.mender.io
• MENDER_TENANT_TOKEN = “our_token”

The bblayers.conf file is correctly filled with meta-mender-core.

We looked at the Mender Hub, but no one seems to have dealt with our board.

We also tried to use the “mender-full” feature, deactivating grub and activating ubi (like in here : Integrating mender on kontron board), but got the same :
• INHERIT += “mender-full”
• MENDER_FEATURES_ENABLE_append = “ mender-uboot mender-image-sd mender-image”
• MENDER_FEATURES_DISABLE_append = “ mender-grub mender-image-uefi”

In fact, any change in locals.conf since to have no effect.

We are using Yocto version 2.2.3.

Can anyone help ?

Best regards

Hi , i’m facing a lot of issues too integrating mender on a board not present in the mender hub , have you tried the GRUB integration ?

Hi Leonardo,

In fact we already have our firmware running on this board, and the bootloader we are using is u-boot.
We “just” want to add the mender layer to this stack.

yeah, you use u-boot on your board, but the GRUB integration (as someone told me yesterday on the mender IRC channel) is the simplest and most times works out of the box , and does not require to patch u-boot .
In that case the boot process goes like this u-boot->GRUB->Linux , so GRUB is just called as a second stage.
If you are stuck , try that , maybe wil work ( BTW i was unlucky on that too XD but i think it’s worth give it a try).

Hi @jkern

We are using Yocto version 2.2.3.

Are you really basing a product on the “Morty” release which is EOL since almost 4 years now? This is strongly discouraged, as you will probably ship a boatload if vulnerabilities straight away, completely negating the idea to make devices more secure.

If I had to guess, then my bet would be on the Yocto builds failing because of release version mixing. Those quite often include changes in the API of bitbake and its libraries, so this would be the first thing to check.

Greetz.
Josef

Are you really basing a product on the “Morty” release which is EOL since almost 4 years now?

The FX-30 we buy comes with this version… We did not need to update it, but yes that may be the problem…

I tried to serach information regarding the minimal Yocto version needed for meta-mender but could not find it. Have you seen it anywhere ?

Thanks.
Julien

@jkern we support the active LTS releases of Yocto, which at the current moment is only “dunfell”. After the release of the upcoming “kirkstone” it will see the same support.

If you need more help, just let me know. Is the BSP you are using public?

Greetz,
Josef

@TheYoctoJester OK so indeed I should not expect the mender Yocto layer to work within Yocto Morty !

The BSP we are using is public : https://github.com/legatoproject/meta-swi/tree/yocto-3.0-ref/meta-swi-mdm9x28

You should have in mind the following software architecture for the board we are using : https://source.sierrawireless.com/resources/airprime/software/wp76xx/wp76xx-firmware-latest-release-components/.

Thank you very much for your answers !

@jkern on a very quick look into the very BSP layer that you linked, i see this which also suggests that it is meant for dunfell (amongst others). So all in all, I would strongly recommend to revisit your build setup, bring it up to a coherent dunfell state and then work out problems from there.

Greetz,
Josef

@TheYoctoJester Sorry for the late reply.
In the version we use of this BSP we do not have the information represented by the variable LAYERSERIES_COMPAT_swi-mdm9x28.

# We have a conf and classes directory, add to BBPATH
BBPATH .= ":${LAYERDIR}"

# We have a recipes directory, add to BBFILES
BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \
${LAYERDIR}/recipes-*/*/*.bbappend"

BBFILE_COLLECTIONS += "swi-mdm9x28"
BBFILE_PATTERN_swi-mdm9x28 := "^${LAYERDIR}/"
BBFILE_PRIORITY_swi-mdm9x28 = "11"

Anyway, we receive the board as is, and it is our work to update.

Best regards.

@jkern

I know it sounds a bit like making fun of you, but IIRC the LAYERSERIES_COMPAT variable was added in a later release than Morty. So its another peculiarity brought to you by an outdated BSP :neutral_face:

But, good news: a layer should (AFAIK) work, respectively parse, without having a declared compatibility. So this won’t be a showstopper.

Greetz,
Josef