Posts by fs-support_PG

    Creating a SBOM in Yocto

    As software supply chain security becomes increasingly critical and the introduction of the Cyber Resilience Act generating a Software Bill of Materials (SBOM) is now a requirement for embedded Linux systems.


    A SBOM is a detailed inventory of all software components, libraries, and dependencies included in a system. It helps developers, security teams, and auditors understand what’s inside a software package, enabling better vulnerability management and compliance.


    Starting with Yocto 4.0 (Kirkstone) a SBOM, using the SPDX standard, can be generated during Build time.


    To enable SBOM generation add the following line to your conf/local.conf or any other configuration file:

    Code
    1. INHERIT += "create-spdx"

    Start your build again by running the bitbake <your-image-name> command.

    A compressed archive at tmp/deploy/images/<machine>/IMAGE-MACHINE.spdx.tar.zst will be created, which contains the index and files for each recipe in your image.


    You can configure the SPDX generation by adding the following lines to your configuration file:


    The additional files and archives can be found at [tt]tmp/deploy/spdx/[/tt] such as:

    • Compressed archives of the files in the generated target packages
    • Compressed archives of the source files

    Also, you can find the SPDX in JSON format for the U-boot in this directory. You will have to add it manually to your SBOM IMAGE-MACHINE.spdx.tar.zst, as it is not part of the Image by default, and will therefore not be added automatically.


    Your F&S Support Team

    Hello,


    1. Is the uboot that is build with the yocto build that one that is already installed on the board?

    By default, yes but if you have a special customer variant it may differ.


    2. What would be the easiest way to modify it?

    The easiest way would be the Uboot gpio command, because you would not have to recompile U-Boot:

    Code
    1. Usage:
    2. gpio <input|set|clear|toggle> <pin>
    3. - input/set/clear/toggle the specified pin
    4. gpio status [-a] [<bank> | <pin>] - show [all/claimed] GPIOs

    You could add them to the bootcmd environment variable before booting into linux. But you will have to test if this is quick enough.


    3. Is there an example, and are the GPIO names the same as in linux?

    You should be able to use GPIO reference card https://www.fs-net.de/assets/d…PIO-ReferenceCard_eng.pdf

    or the same formula as in Linux so the GPIO number for GPIO4_IO20 is (( 4-1)*32)+20)=116.

    However, if the default pad mux of the pin, which you are using is not GPIO it might not work.


    4. Do you suggest another solution?

    A faster way would be, to set the GPIOs during uboot start in the board file for example at

    https://github.com/FSEmbedded/…fsimx8mp/fsimx8mp.c#L1044


    You could take the following code as example

    https://github.com/FSEmbedded/…/fsimx8mp/fsimx8mp.c#L797

    https://github.com/FSEmbedded/…/fsimx8mp/fsimx8mp.c#L767


    However, of the GPOIs are normally set by the MCore, sharing them between cores should be avoided.

    When is your MCore application started? In Uboot or Linux?


    If it is Linux you might consider writing a small MCore program to set the GPIOs and run in in Uboot using the bootaux command.



    Your F&S Support Team

    Hello,


    an USB Hub does should not make a difference, software-wise.


    Did you check if your 5V USB voltage is present when running "usb start"?

    You do not seem too have connected USB_A_POWERON, so you would need a static 5V USB power supply on your baseboard.


    Your F&S Support Team

    F&S Development Machine with Fedora 36 for arm32 V1.6

    There is a new Virtual Machine with Fedora36 in your download section available (My F&S / Tools-Linux /VirtualMachines/Fedora36/32-bit (i.MX6)/ F_S_Development_Machine-Fedora_36-arm32_V1.6.ova). The structure of the virtual machine is listed below.


    Content:

    • fsimx6ul-B2023.12 (/home/developer/fsimx6ul-B2023.12)
    • fsimx6sx-B2024.01 (/home/developer/fsimx6sx-B2024.01)
    • fsimx6-B2024.04 (/home/developer/fsimx6-B2024.04)
    • fsimx6-Y2024.04.1 (/home/developer/fsimx6-Y2024.04.1)
    • fsimx6ul-Y2024.03.1 (/home/developer/fsimx6ul-Y2024.03.1)
    • fsimx6sx-Y2024.12.1 (/home/developer/fsimx6sx-Y2024.12.1)

    New Content:

    • fsimx6-Y2024.04.1 (/home/developer/fsimx6-Y2024.04.1)
    • fsimx6ul-Y2024.03.1 (/home/developer/fsimx6ul-Y2024.03.1)
    • fsimx6sx-Y2024.12.1 (/home/developer/fsimx6sx-Y2024.12.1)


    Removed:

    • fsimx6-Y2024.04 (/home/developer/fsimx6-Y2024.04)
    • fsimx6ul-Y2024.03 (/home/developer/fsimx6ul-Y2024.03)
    • fsimx6sx-Y2024.12 (/home/developer/fsimx6sx-Y2024.12)


    Your F&S Support Team

    F&S i.MX6SX Yocto Release 2024.12.1 (fsimx6sx-Y2024.12.1)


    Please see the file


    doc/FSiMX6SX_FirstSteps_eng.pdf


    for a description of how everything is installed and used. This doc sub-directory also contains other documentation, for example about the hardware of the boards and the starter kits.


    This is a maintenance release for all F&S boards and modules based on the i.MX6-SoloX CPUs from NXP.


    Currently these are the modules efusA9X, efusA9Xr2, PicoCOMA9X, PicoCoreMX6SX.


    More boards may be added to this family in the future.

    All these boards can work with software that is created from this release package.


    Please note that Yocto releases use a 'Y' for the version number. The version counting is independent form other releases.



    The release consists of the following files and directories:


    • README.txt Release notes (this text)
    • setup-yocto Script to download and install the Yocto release
    • fs-release-manifest.xml Release Manifest, containing the used versions
    • binaries/ Precompiled images (full names)
    • sdcard/ Precompiled images (names as expected by install script)
    • doc/ Hardware and software manuals, schematics


    Here are some highlights of this release.


    1. New Linux Kernel v5.15.185-2.2.0-fs1.0


    The F&S Kernel is now based on the linux-fslc kernel.

    The fslc kernel has LTS updates for the NXP release versions, so security fixes can be applied more easily.

    The Linux kernel is now based on mainline version 5.15.185 and NXP Version 2.2.0


    2. New bootloader U-Boot u-boot-2021.04-v2021.04-fs1.2


    Provide some minor bug fixes.


    2. meta-fus layer is now based on poky 4.0.29


    We have updated the poky layer to version 4.0.29 and many other layers to their latest versions. For a detailed description see fs-release-manifest.xml


    3. New Version naming for F&S Linux, U-Boot and meta-fus


    Linux and U-Boot and meta-fus now get their own version number to be more transparent and flexible.

    The Version numbers reflect the Version of the original package, if needed the NXP version and the F&S Version. For example the linux version name is composed like this


    [Version Orig. Kernel]-[Version IMX]-[Version FS]


    linux-v5.15.185-2.2.0-fs1.0


    This way it is easier to recognize the applied patch levels and the same package versions can be used in multiple releases.


    The actual packages versions are marked as annotated tags in the git history.

    The Name of the overall release (like fsimx93-Y2025.08) is still set as a light tag.


    4. Support Silex WLAN Chip on the efusA9X(r2)


    The new driver version is based on version 4.5.25.38 of the original Qualcomm driver which is available in branch CNSS.LEA.NRT_3.1 on repository (tag v4.5.25.38)

    There is also a Silex-specific version available on request that improves roaming, adds bang radar and other improvements. Ask F&S if interested.


    Known Issues


    1. The Slilex Bluetooth Chip on the efusmxA9X(r2) is not supported.


    There is currently no driver available for the Linux Kernel 5.15.

    For Silex Bluetooth chip support, please use the release fsimx6sx-B2019.11.1 for basic Bluetooth evaluation.


    =========================================================================


    The following list shows the most noticeable changes in this release in

    more detail since our last release for this platform. Please note that the

    source code is also used for other platforms. This is why you will

    also find references to other CPU types and F&S boards here in the

    change log.


    nbootimx6_52.bin (VN52)

    ------------------------------------

    Supported boards: efusA7UL PicoCOM1.2 PicoCoreMX6UL PicoCoreMX6UL100 PicoCOMA7


    - Change DRAM Timing for PicoCOMA7




    u-boot-2021.04-v2021.04-fs1.2

    -----------------------------------------------

    Supported boards: efusA7UL PicoCOM1.2 PicoCoreMX6UL PicoCoreMX6UL100 PicoCOMA7


    - video_link: Remove video_off variable

    - mxs_nand_fus.c: Handle 0-bits in empty pages

    - Improve fsimx6/sx realtek delay after HW reset




    linux-v5.15.185-2.2.0-fs1.0

    -----------------------------------------------

    Supported boards: efusA7UL PicoCOM1.2 PicoCoreMX6UL PicoCoreMX6UL100 PicoCOMA7


    - Fix number of chip-selects property in all F&S DTS

    - Fix imx uart dma watermark level

    - Fix ipu_pixel_clk parent recognition

    - gpmi-nand-fus.c: Handle 0-bits in empty pages

    - Add armstonea9r3q default touch controller

    - Update to v5.15.185




    meta-fus-yocto-4.0.29-fs1.1

    -----------------------------------------------

    Supported boards: efusA7UL PicoCOM1.2 PicoCoreMX6UL PicoCoreMX6UL100 PicoCOMA7


    - Update to 4.0.29

    - Add i.MX6UL touchscreen controller rules




    linux-examples-fus-fs1

    ----------------------------------------------


    (no changes)




    Documentation

    -------------


    - Update to version 2.3 of FSiMX6SX_FirstSteps_eng.pdf

    - Update to version 0.22 of LinuxOnFSBoards_eng.pdf


    Please download the hardware documentation directly from our website.

    Then you always have the newest version.

    F&S i.MX6UL Yocto Release 2024.03.1 (fsimx6ul-Y2024.03.1)


    Please see the file


    doc/FSiMX6UL_FirstSteps_eng.pdf


    for a description of how everything is installed and used. This docsub-directory also contains other documentation, for example about thehardware of the boards and the starter kits.


    This is a maintenance release for all F&S boards and modules based onthe i.MX6-UltraLite and i.MX6ULL CPUs from NXP.


    Currently these are the modules efusA7UL, PicoCOM1.2, PicoCoreMX6UL, PicoCoreMX6UL100 and PicoCOMA7.


    More boards may be added to this family in the future.All these boards can work with software that is created from this releasepackage.


    Please note that Yocto releases use a 'Y' for the version number. Theversion counting is independent form other releases.


    The release consists of the following files and directories:

    • Readme.txt Release notes (this text)
    • setup-yocto Script to download and install the Yocto release
    • fs-release-manifest.xml Release Manifest, containing the used versions
    • binaries/ Precompiled images (full names)
    • sdcard/ Precompiled images (names as expected by install script)
    • doc/ Hardware and software manuals, schematics


    Here are some highlights of this release.


    1. New Linux Kernel v5.15.185-2.2.0-fs1.0


    The F&S Kernel is now based on the linux-fslc kernel.

    The fslc kernel has LTS updates for the NXP release versions, so security fixes can be applied more easily.

    The Linux kernel is now based on mainline version 5.15.185 and NXP Version 2.2.0


    2. New bootloader U-Boot u-boot-2021.04-v2021.04-fs1.2


    Provide some minor bug fixes.


    2. meta-fus layer is now based on poky 4.0.29


    We have updated the poky layer to version 4.0.29 and many other layersto their latest versions. For a detailed description see fs-release-manifest.xml


    3. New Version naming for F&S Linux, U-Boot and meta-fus


    Linux and U-Boot and meta-fus now get their own version number to be more transparent and flexible.

    The Version numbers reflect the Version of the original package, if needed the NXP version and the F&S Version. For example the linux version name iscomposed like this


    [Version Orig. Kernel]-[Version IMX]-[Version FS]


    linux-v5.15.185-2.2.0-fs1.0


    This way it is easier to recognize the applied patch levels and the same

    package versions can be used in multiple releases.


    The actual packages versions are marked as annotated tags in the git history.

    The Name of the overall release (like fsimx93-Y2025.08) is still set as a light tag.



    Known Issues


    1. This Release does not support the Silex WLAN chip on the modules efusA7UL


    The Silex WLAN chip is not supported in this release-

    If you need Silex WLAN chip support, please contact F&S.


    =========================================================================


    The following list shows the most noticeable changes in this release in

    more detail since our last release for this platform. Please note that the

    source code is also used for other platforms. This is why you will

    also find references to other CPU types and F&S boards here in the

    change log.


    nbootimx6_52.bin (VN52)

    ------------------------------------

    Supported boards: efusA7UL PicoCOM1.2 PicoCoreMX6UL PicoCoreMX6UL100 PicoCOMA7


    - Change DRAM Timing for PicoCOMA7




    u-boot-2021.04-v2021.04-fs1.2

    -----------------------------------------------

    Supported boards: efusA7UL PicoCOM1.2 PicoCoreMX6UL PicoCoreMX6UL100 PicoCOMA7


    - video_link: Remove video_off variable

    - mxs_nand_fus.c: Handle 0-bits in empty pages

    - Improve fsimx6/sx realtek delay after HW reset




    linux-v5.15.185-2.2.0-fs1.0

    -----------------------------------------------

    Supported boards: efusA7UL PicoCOM1.2 PicoCoreMX6UL PicoCoreMX6UL100 PicoCOMA7


    - Fix number of chip-selects property in all F&S DTS

    - Fix imx uart dma watermark level

    - Fix ipu_pixel_clk parent recognition

    - gpmi-nand-fus.c: Handle 0-bits in empty pages

    - Add armstonea9r3q default touch controller

    - Update to v5.15.185




    meta-fus-yocto-4.0.29-fs1.1

    -----------------------------------------------

    Supported boards: efusA7UL PicoCOM1.2 PicoCoreMX6UL PicoCoreMX6UL100 PicoCOMA7


    - Update to 4.0.29

    - Add i.MX6UL touchscreen controller rules




    linux-examples-fus-fs1

    ----------------------------------------------


    (no changes)




    Documentation

    -------------


    - Update to version 2.5 of FSiMX6UL_FirstSteps_eng.pdf

    - Update to version 0.22 of LinuxOnFSBoards_eng.pdf


    Please download the hardware documentation directly from our website.

    Then you always have the newest version.

    F&S i.MX6 Yocto Release 2024.04.1 (fsimx6-Y2024.04.1)

    Please see the file


    doc/FSiMX6_FirstSteps_eng.pdf


    for a description of how everything is installed and used. This doc sub-directory also contains other documentation, for example about the hardware of the boards and the starter kits.


    This is a maintenance release for all F&S boards and modules based on the i.MX6 CPUs from NXP.


    Currently these are the modules armStoneA9, armStoneA9r2, armStoneA9r3, armStoneA9r4, efusA9, efusA9r2, PicoMODA9, NetDCUA9


    More boards may be added to this family in the future.

    All these boards can work with software that is created from this release package.


    Please note that Yocto releases use a 'Y' for the version number. The version counting is independent form other releases.



    The release consists of the following files and directories:


    • Readme.txt Release notes (this text)
    • setup-Yocto Script to download and install the Buildroot release
    • fs-release-manifest.xml Release Manifest, containing the used versions
    • binaries/ Precompiled images (full names)
    • sdcard/ Precompiled images (names as expected by install script)
    • doc/ Hardware and software manuals, schematics


    Here are some highlights of this release.


    1. New Linux Kernel v5.15.185-2.2.0-fs1.0


    The F&S Kernel is now based on the linux-fslc kernel.

    The fslc kernel has LTS updates for the NXP release versions, so security fixes can be applied more easily.

    The Linux kernel is now based on mainline version 5.15.185 and NXP Version 2.2.0


    2. New bootloader U-Boot u-boot-2021.04-v2021.04-fs1.1


    Provide some minor bug fixes.


    2. meta-fus layer is now based on poky 4.0.29


    We have updated the poky layer to version 4.0.29 and many other layers to their latest versions. For a detailed description see fs-release-manifest.xml


    3. New Version naming for F&S Linux, U-Boot and meta-fus


    Linux and U-Boot and meta-fus now get their own version number to be more transparent and flexible.

    The Version numbers reflect the Version of the original package, if neededthe NXP version and the F&S Version. For example the linux version name is composed like this


    [Version Orig. Kernel]-[Version IMX]-[Version FS]


    linux-v5.15.185-2.2.0-fs1.0


    This way it is easier to recognize the applied patch levels and the same package versions can be used in multiple releases.


    The actual packages versions are marked as annotated tags in the git history.

    The Name of the overall release (like fsimx6-Y2024.04.1) is still set as a light tag.



    Known Issues


    1. The ADP-mPCIe-Wlan adapter does not work with this release


    The PCIe card is recogniced correctly, but the mwifiex-pcie driver load.


    =========================================================================


    The following list shows the most noticeable changes in this release in more detail since our last release for this platform. Please note that the source code is also used for other platforms. This is why you will also find references to other CPU types and F&S boards here in the change log.


    nbootimx6_51.bin (VN51)

    ------------------------------------

    Supported boards: armStoneA9, armStoneA9r2, armStoneA9r3, armStoneA9r4,

    efusA9, efusA9r2, PicoMODA9, NetDCUA9


    (no changes)




    u-boot-2021.04-v2021.04-fs1.1

    -----------------------------------------------

    Supported boards: armStoneA9, armStoneA9r2, armStoneA9r3, armStoneA9r4,

    efusA9, efusA9r2, PicoMODA9, NetDCUA9


    - video_link: Remove video_off variable

    - mxs_nand_fus.c: Handle 0-bits in empty pages

    - Improve fsimx6/sx realtek delay after HW reset




    linux-v5.15.185-2.2.0-fs1.0

    -----------------------------------------------

    Supported boards: armStoneA9, armStoneA9r2, armStoneA9r3, armStoneA9r4,

    efusA9, efusA9r2, PicoMODA9, NetDCUA9


    - Fix number of chip-selects property in all F&S DTS

    - Fix imx uart dma watermark level

    - Fix ipu_pixel_clk parent recognition

    - gpmi-nand-fus.c: Handle 0-bits in empty pages

    - Add armstonea9r3q default touch controller

    - Update to v5.15.185




    meta-fus-yocto-4.0.29-fs1.0

    -----------------------------------------------

    Supported boards: armStoneA9, armStoneA9r2, armStoneA9r3, armStoneA9r4,

    efusA9, efusA9r2, PicoMODA9, NetDCUA9, QBlissA9, QBlissA9r2


    - Update to 4.0.29




    linux-examples-fus-fs1

    ----------------------------------------------


    (no changes)




    Documentation

    -------------


    - Update to version 4.4 of FSiMX6_FirstSteps_eng.pdf

    - Update to version 0.22 of LinuxOnFSBoards_eng.pdf


    Please download the hardware documentation directly from our website.

    Then you always have the newest version.

    Hello,


    the main difference is, that imx-gst1.0-plugin is supported by NXP while gstreamer1.0-plugins-imx is supported by the community. The imx-gst1.0-plugin allocates more buffers in CMA insde the kernel, while gstreamer1.0-plugins-imx does this in a more generic way in user land.

    imx-gst1.0-plugin will only work with NXP specific vendor kernels, while gstreamer1.0-plugins-imx may also work with mainline kernel based releases.


    However, gstreamer1.0-plugins-imx does not work with all newer SoCs yet, as you can see here:

    https://github.com/Freescale/m…include/imx-base.inc#L513

    Support for other boards may be added in the future, i.MX8MM is already supported though,


    We are currently working on basing our releases on the meta-freescale layer, as it tends to be more stable in long time support than the meta-imx layer.

    Also, we are working on supporting the mainline kernel with a few patches on our older boards, including i.MX8MM, so if this is interesting for you, you could test the gstreamer1.0-plugins-imx with your application. However, it is not guaranteed, that it will work out of the box, but we can support you with integrating it.


    Your F&S Support Team

    Hello,


    maybe the time between the frames is to long, so the CPU goes into idle mode and maybe it takes to long to recover from idle mode to render the next frame.

    USB and dd may keep the CPU to go into idle mode.


    Could you try to disable the CPU idle mode entirely, and see if it has influence on the performance?


    Go to U-Boot and set the following environment variable and boot:

    Code
    1. setenv extra cpuidle.off=1
    2. boot



    In Linux you could also try to disable the memory bus frequency scaler. Maybe this has also an effect on the performance.

    Code
    1. echo 0 > /sys/bus/platform/drivers/imx_busfreq/busfreq/enable


    Your F&S Support Team

    Some Customers reported an error while downloading the sources with setup-yocto.


    Quote

    Repo command failed due to the following `SyncError` errors:

    GitCommandError: 'update-ref --no-deref HEAD 577d041a39a02e152461919698745368144720d5' on poky failed

    stderr: fatal: update_ref failed for ref 'HEAD': cannot update ref 'HEAD': trying to write non-commit object 577d041a39a02e152461919698745368144720d5 to branch 'HEAD'


    If this error occurs for you please change the following line in the file fsimx6-Y2024.04/fs-release-manifest.xml


    Code
    1. <!-- Update poky to 4.0.16 -->
    2. <project name="poky" path="yocto-fus/sources/poky" remote="yocto" revision="577d041a39a02e152461919698745368144720d5" upstream="kirkstone"/>

    to

    Code
    1. <!-- Update poky to 4.0.16 -->
    2. <project name="poky" path="yocto-fus/sources/poky" remote="yocto" revision="54af8c5e80ebf63707ef4e51cc9d374f716da603" upstream="kirkstone"/>


    This will only change the way the git commit is referenced. The source code stays the same.


    Your F&S Support Team

    Some Customers reported an error while downloading the sources with ./setup-yocto.


    Repo command failed due to the following `SyncError` errors:

    GitCommandError: 'update-ref --no-deref HEAD 577d041a39a02e152461919698745368144720d5' on poky failed

    stderr: fatal: update_ref failed for ref 'HEAD': cannot update ref 'HEAD': trying to write non-commit object 577d041a39a02e152461919698745368144720d5 to branch 'HEAD'


    If this error occurs for you please change the following line in the file fsimx6ul-Y2024.03/fs-release-manifest.xml


    Code
    1. <!-- Update poky to 4.0.16 -->
    2. <project name="poky" path="yocto-fus/sources/poky" remote="yocto" revision="577d041a39a02e152461919698745368144720d5" upstream="kirkstone"/>

    to

    Code
    1. <!-- Update poky to 4.0.16 -->
    2. <project name="poky" path="yocto-fus/sources/poky" remote="yocto" revision="54af8c5e80ebf63707ef4e51cc9d374f716da603" upstream="kirkstone"/>


    This will only change the way the git commit is referenced. The source code stays the same.


    Your F&S Support Team

    Hello,


    The uvc driver seems to provide some module parameters.

    https://github.com/torvalds/li…sb/uvc/uvc_driver.c#L2624

    Did you try to set some of them? Maybe the UVC_QUIRK_FIX_BANDWIDTH?

    Code
    1. modprobe uvcvideo quirks=0x80


    I found some commands online to increase the debug output of uvcvideo. Did you try already try to apply them?

    Code
    1. echo 0xffff > /sys/module/uvcvideo/parameters/trace
    2. echo 0 > /sys/module/uvcvideo/parameters/trace



    Your F&S Support Team

    Hello,


    The U-Boot is placed in a fixed RAW partition, so Nboot does not care about the partition table.

    The fsim6ul U-Boot however needs the partition table to load Linux so you will have to make sure that GPT support is available here.


    We have not tested it so far though.


    Your F&S Support Team

    Hello,


    yes, for fsimx6ul the U-boot is expected the User Partition. This has historical reasons, because early eMMC chips had smaller boot partitions, which may not be sufficient for future Bootloader sizes. It is more complicated to update the partition layout with the old fsimx6 Nboot than with fsimx8mm, so we stayed at this layout for fsimx6ul and are currently not planning to change it.


    When building for fsimx6ul the Uboot should be automatically put into the u-boot partition of the sysimage:


    https://github.com/FSEmbedded/…machine/fsimx6ul.conf#L27

    https://github.com/FSEmbedded/…fus-uboot-bootpart.wks.in


    So it should be no problem to update the sysimage if it was build with the correct machine config in>octo.


    Which release do you use?


    Your F&S Support Team