Ezurio provides a Yocto layer that includes support for the Sona IF573 and Sterling LWBx series. Platforms that use the Yocto build system can use this layer to do much of the integration automatically. This section gives a brief overview of the steps needed to include and use this layer. Please see the README file in the meta-summit-radio layer for more specific details.

The Ezurio Yocto layer is available on gitHub. Clone or copy this into your project sources directory.

Note: The default Github branch contains only a README file listing the branches that should be used for each radio release version. Be sure to use the branch corresponding to the radio release.

cd /my_project/sources/
git clone https://github.com/LairdCP/meta-summit-radio
git checkout <lrd-a.b.0.x>

The meta-summit-radio layer must be referenced in the conf/bblayers.conf file to be recognized by the build system. Due to a breaking syntax change in bitbake introduced in Yocto 3.4, the meta-summit-radio layer has two implementations. Add the appropriate line to your conf/bblayers.conf file depending on your version of Yocto:

BBLAYERS += "${BSPDIR}/sources/meta-summit-radio/meta-summit-radio"
OR
BBLAYERS += "${BSPDIR}/sources/meta-summit-radio/meta-summit-radio-pre-3.4"

Set the preferred provider for the wpa_supplicant to the Summit supplicant by appending the following lines to the build’s conf/local.conf file:

PREFERRED_PROVIDER_wpa-supplicant = "summit-supplicant-lwb-if"
PREFERRED_PROVIDER_wpa-supplicant-cli = "summit-supplicant-lwb-if-cli"
PREFERRED_PROVIDER_wpa-supplicant-passphrase = "summit-supplicant-lwb-if-passphrase"

The Ezurio Yocto layer includes support for the 60 Series radios as well. The 60 Series packages are providers for the wireless-regdb-static package. However, that is only valid when using a 60 Series radio. The PREFERRED_PROVIDER for wireless-regdb-static should be set to the upstream component when using Sona IF573 or Sterling LWBx radios.

PREFERRED_PROVIDER_wireless-regdb-static = "wireless-regdb"

Add the backports, firmware, supplicant and any other desired packages to your bitbake image recipe. Be sure to select the firmware version that corresponds to your design. You may only select one firmware package per image.

IMAGE_INSTALL:append = " kernel-module-lwb-if-backports"
IMAGE_INSTALL:append = " summit-supplicant-lwb-if"

# Select firmware package as needed
IMAGE_INSTALL:append = " if573-pcie-firmware"
#IMAGE_INSTALL:append = " if573-sdio-firmware"

#IMAGE_INSTALL:append = " lwb5plus-sdio-div-firmware"
#IMAGE_INSTALL:append = " lwb5plus-sdio-sa-firmware"
#IMAGE_INSTALL:append = " lwb5plus-sdio-sa-m2-firmware"
#IMAGE_INSTALL:append = " lwb5plus-usb-div-firmware"
#IMAGE_INSTALL:append = " lwb5plus-usb-sa-firmware"
#IMAGE_INSTALL:append = " lwb5plus-usb-sa-m2-firmware"

#IMAGE_INSTALL:append = " lwbplus-firmware"

Warning: Do not use the IMAGE_INSTALL += “xxx” syntax in your conf/local.conf file to add components to your image. If you use the conf/local.conf file instead of modifying an image recipe, use the append syntax above (or the older syntax for Yocto versions prior to 3.4). Use of ‘IMAGE_INSTALL +=’ syntax in conf/local.conf can cause subtle issues in the final image that can be very difficult to debug.

Note: The Yocto layer includes a mechanism to configure the regulatory domain using the module parameter mechanism discussed previously. It can be implemented by setting the LWB_REGDOMAIN variable to the required country code listed as a Country Code in the per-radio regulatory release notes for the radio in the build’s conf/local.conf file as shown below. This will create a brcmfmac.conf file in /etc/modprobe.d containing the specified country code in the regdomain module parameter.

LWB_REGDOMAIN = "US"

Note: You do not need to use this mechanism to specify the regulatory domain. You could choose to implement it using a device tree setting or configure the module parameter some other way. However, the regulatory domain must be configured in some manner or the driver will fail to load.

Configure your kernel to ensure compatibility with the backports package, specifically ensuring that the wireless and Bluetooth subsystems are not built-in to the kernel. See the Backports section for details:

bitbake -c menuconfig virtual/kernel

Now you can bake your final image:

bitbake <image name>