New Yocto Release fsimx8mm-Y2021.04

  • i.MX8M-Mini Linux Release Y2021.04 (Yocto)

    This is a maintenance release for fsimx8mm. fsimx8mm is the software for all boards from F&S that are based on the i.MX8M-Mini Solo, Dual or Quad CPU from NXP (or i.MX8M-Mini for short). Currently this consists of the boards PicoCoreMX8MM. 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.

    The release consists of two files:


    This is the main release itself containing all sources, the binary images, the documentation, examples and the toolchain.


    If you copy the contents of this archive to an SD card, you can install our precompiled standard system in a very straightforward and comfortable way on the board. The SD card archive is meant for people who just want to try a release first without having to download the quite large main archive. Its content is also contained in the main release archive, so if you want to download the main archive anyway, you don't need to bother with the SD card archive.

    These tar archives are compressed with bzip2. So to see the files, you first have to unpack the archives

    1. tar xvf fsimx8mm-Y2021.04.tar.bz2

    This will create a directory fsimx8mm-Y2021.04 that contains all the files of the release.

    Please read the file doc/FSiMX8MM_FirstSteps_eng.pdf. It describes the first steps when working with the board and gives references to further reading.

    Release Notes for fsimx8mm-Y2021.04

    Here are some highlights of this release.

    1. New version numbering

    We have changed the way how we name versions. In the past we had a version number made up of a major part m and a minor part n. Then we used Vm.n for Buildroot releases and Ym.n for Yocto releases. Release versions were counted individually for each CPU architecture. But then a "new" CPU type unfortunately had a smaller version number than an

    "old" CPU, even if the code was coming from the same sources or was even newer. This caused some irritations and misunderstandings of what release is actually the newest.

    So from now on we will use the year and month of the release instead, preceeded by a 'B' for Buildroot releases and a 'Y' for Yocto releases. For example the "B2019.08" of this release indicates a

    Buildroot based release from August 2019.

    2. New U-Boot 2018.03

    We have a considerably newer U-Boot now. One of the main new features is display support, so basically U-Boot can now be used to show a splash screen.

    U-Boot will also show more information about the CPU type now, for example temperature range, possible speed, etc. The command "clocks" will show much more information about internal clock rates. And USB storage devices are detected faster than before.

    U-Boot has experienced quite a lot of internal restructuring. For example it now also supports configuration via a Kconfig menu, similar to Linux kernel and Buildroot. After configuration with

    make fsimx8mm_defconfig

    simply call

    make menuconfig

    to show the menu. There you can select and de-select entries or move to sub-menus.

    Moving all configuration options from the previous header file to this menu is a long-term and still on-going process. So not all features are available in the menu, yet.

    U-Boot is now compiled and running in THUMB mode. This saves space that is needed for all the display code.

    3. New Linux kernel 5.4.70

    The Linux kernel is now based on 5.4.70. By default, we are using the Image format of the kernel now.

    • Improvements and optimizations in memory management, for example better heap and page management (tmpfs, shmem), better protection against attacks by implementing stack, heap and memory randomization.
    • Performance optimizations for the network stack, like faster TCP connections, quick killing of hanging network links, more features for the packet filter (firewall), smaller latencies on WLAN.
    • Optimizations in block layer, for example better Device Mapper for LVM, improved parallel access to directories, more efficient access to SSDs, parallel access for NFS, kernel support for file copy, server-side copy for CIFS, NFS, XFS, support for hard discs with host-managed SMR (Shingled Magnetic Recording).
    • Optimizations on file systems (NTRFS, EXT4, F2FS, NFS, XFS, Overlayfs, Ceph), new cluster filesystem Orangefs
    • Many improvements in graphics stack, like DRM (Direct Rendering Manager), new open source graphics driver etnaviv for Vivante graphics on i.MX CPUs (etnaviv = vivante backwards)
    • Better load balancing of processes to CPU cores, new cgroups v2, improved power and frequency handling, new cpufreq governor schedutil.
    • New GPIO infrastructure not using sysfs, supposed to be faster.
    • Support for USB SuperSpeedPlus (USB 3.1).
    • Many many new and improved drivers for WLAN chips, touch controllers, audio codecs, cameras, MMC/SD cards, etc.

    Of course there are also many changes for other CPU types (like x86) and other graphics cores (like AMD, Nvidia, Intel) but these are not of interest here.

    4. Yocto 3.0 (Zeus)

    With this release systemd will be the default init system for the example-fus-images.

    Systemd is a init system and service manager for Linux operating systems. It provides a system and service manager that runs as PID 1 and starts the rest of the system. Systemd provides aggressive parallelization capabilities, uses socket and D-Bus activation for starting services, offers on-demand starting of daemons, keeps track of processes using Linux control groups,

    maintains mount and automount points, and implements an elaborate transactional dependency-based service control logic. [Source:]

    It is configured via the systemclt application.

    Also the root file system will now be mounted as read-write by default. This can be changed to read-only when setting up the build enviroment via the script. See LinuxOnFSBoards_eng.pdf for a detailed description.

    5. Documentation

    In the past, the documentation that was included in the release package itself was often superseded by newer versions on our website. But people continued to use the outdated version of the release, causing unnecessary complications.

    To avoid this, from now on only the software related documentation is directly included in the release and we have added a chapter to FSiMX8MM_FirstSteps_eng.pdf that contains direct links to the appropriate resources on our website. There you can download the newest versions of hardware documentations, schematics, layout files, certificates, accessories, add-ons, adapters and similar things.

    The software documentation is completely reworked. The FSiMX8MM_FirstSteps_eng.pdf document now really only shows a basic introduction to the work with boards of the fsimx8mm architecture. And there is a new document LinuxOnFSBoards_eng.pdf that shows a more in-depth view of a Linux system in general and of the F&S versions of NBoot, U-Boot, Linux and Buildroot/Yocto in particular. This is still work in progress, some chapters are not fully done yet and will be revised in the future. Check our website from time to time to see if there is a newer version of this document.


    The following list shows the most noticable changes in this release in more detail since our last regular i.MX6 release. 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 changelog.

    u-boot-2018.03-fsimx8mm-Y2021.04 (21.04.2021)

    Supported boards: PicoCoreMX8MM

    • Improve OTG support for fsimx8mm
    • Add fsimx8mx support
    • Add support for static board config
    • Add support to read phy address from device-tree for fec_mxc
    • Improve imx8mm_pins.h I2C* pads
    • Improve serial mxc driver clear fifo before reset
    • Improve spl setting for all fsimx8* boards
    • Fix fsimx8mx RAM timings
    • Improve DRAM size configuration for fsimx8mx
    • Improve DRAM size detection for fsimx8mx
    • Use legacy ethernet driver for fsimx8mx
    • Fix fsimx8mx nand defconfig
    • Improve support for static board config
    • Improve MIPI-DSI PMS restriction values
    • Fix build warnigs for n535521 mipi driver
    • Disable display support for fsimx8mx
    • Improve linux,cma size settings for fsimx8mx
    • Improve fsimx8mx defconfigs
    • Add fsimx8mx_nano support
    • Disable display support for fsimx8mx_nano
    • Improve fsimx8mx support
    • Improve bd71837 pmic driver
    • Add possibility to set cma size via DTS for fsimx8mx
    • Improve fixed config for fsimx8mx
    • Improve FDT support and naming for fsimx8mx-nano
    • Improve fsimx8mm target
    • Improve fec_mxc fixed link support for DM
    • Remove target fsimx8mx
    • Remove arch/arm/mach-imx/mx8mx
    • Fix compilation warnings for fsimx8mm
    • Improve feature support for fsimx8mm
    • Improve fsimx8mm SPL settings
    • Improve fsimx8mm mac address setup
    • Add support for I2C_GPIO to configure switch on fsimx8mm
    • Append for commit "Add support for I2C_GPIO to configure switch on fsimx8mm"
    • Also use memalign_simple() in SPL, not only malloc_simple()
    • Add Kconfig options to create a disassembler listing
    • New version of addfsheader as a script, remove old C version
    • Add fsimage script
    • Fix Kconfig prompt for MXC GPIO driver
    • Add streaming option to SDP protocol
    • Add fs_image library to load and handle F&S images on fsimx8mm
    • Change SPL on fsimx8mm to use F&S NBoot images to boot
    • Add nboot build process for fsimx8mm
    • Add fs_board_get_boot_device_from_fuses() to fs_board_common.c
    • cli_hush: Add support for indirect parameter expansion
    • mxs_nand: Reduce malloc usage in SPL
    • mxs_nand_spl: Do not stop when ONFI version is unknown
    • fs_image.c: Have two copies of BOARD-CFG and FIRMWARE
    • Use new MTD partition layout on fsimx8mm, clean up boot srategies
    • Have environment in NAND or MMC on fsimx8mm
    • Move fs_image.[ch] from fsimx8mm to common
    • fsimx8mm: Add nboot-info for BOARD-CFGs, use .*.tmp files in Makefile
    • fsimx8mm: Identify boot system with NXP boot devices
    • fdt_support.c: Fix bug in fdt_getprop_u32_default_node()
    • Allow using function fdt_print() from outside of cmd/fdt.c
    • Add fsimage command to handle NBoot images
    • fsimx8mm: Get rid of fs_nboot_args and use cfg_info instead
    • fsimx8mm: Add fuse subcommand for fsimage
    • Handle kernel, fdt and rootfs according to boot device
    • fsimx8mm: On eMMC, load environment from boot partition
    • Allow NAND environment offsets in device tree
    • fsimx8mm: When loading U-Boot, provide offset values from nboot-info
    • fsimx8mm: Have separate nboot-info for NAND and MMC
    • fsimx8mm: Add MMC loading/saving, refactor fsimage code
    • Also use indendation in scripts/
    • Also write U-BOOT files in command fsimage save
    • Fix nand_spl_load_image() in case of bad blocks
    • fsimx8mm: Drop debug output, rename MTD partition Spl to NBoot
    • fsimx8mm: Handle device tree fixup more cleanly
    • Add CONFIG_SPL/TPL_AUTOBUILD, do not build SPL by default on fsimx8mm
    • fsimx8mm: Add all current BOARD-CFGs
    • fsimx8mm: Fix handling for PicoCoreMX8MX
    • Fix for yocto build
    • Set to PicoCoreMX8MX for boards with 8mx config
    • Fix have-eth-switch config entry to have-eth-phy
    • Fix DSI_PHY_REF clock settings
    • Fix CONFIG_ENV_SIZE to 16KB
    • Add support for resetting phy via device tree entry
    • Fix-up for devicetrees fsimx8mm
    • Improve fs_board_common environment variable setup
    • Improve fsimx8mm KSZ9893 Switch setup
    • Improve fsimx8mm linux fdt fixups
    • Remove setting ethaddr for WLAN on fsimx8mm
    • Change NBoot version to current one

    linux-5.4.70-fsimx8mm-Y2021.04 (21.04.2021)

    Supported boards: PicoCoreMX8MM

    • Merge kernel to 5.4.24
    • Fixup for kernel upgrade to 5.4.24
    • Add basic support display NewVision NV3051D
    • Fix audio clock settings in armstonea9qdl.dtsi
    • Fix newvision-nv3051 driver
    • Improve picocoremx8mx device tree
    • Fix MIPI-DSI clock PMS-boundary values
    • Add fus-tc358775 driver and G133HAN01 display support
    • Improve fsimx8mm_defconfig
    • Add support for picocoremx8mx-nano device-tree
    • Improve pmic node for picocoremx8mx
    • Add support for KSZ9893 ETH switch
    • Add SquashFS, OverlayFS and Ubiblock support on fsimx8mm
    • Improve picocoremx8mx device tree support
    • Add picocoremx8mx j070wvtc-display support
    • Merge kernel to 5.4.47
    • Add fsimx8mm BD718XX driver and cma no-override flag to picocore8mx dts
    • Improve fsimx8mx display support and fix atmel touch driver
    • Improve picocorem8mx device tree and fix PCIE support
    • Improve device tree for picocoremx8mx-nano
    • Improve panel-novatek-nt35521 driver
    • Improve picocoremx8mm device tree and tc358775 mipi2lvds support
    • Add support for display EE0350-ET-2CP and change syntax of device-trees
    • Remove duplicate device-tree for picocoremx8mx
    • Merge kernel to 5.4.70
    • Improve device tree for picocoremx8mx
    • Improve support for CAN-FD chip MCP251xfd
    • Improve display backlight support
    • Add VPU support for fsimx8mm
    • Rework of fsimx8mm device-trees
    • Improve ksz9893 support - DT property
    • Disable ACL for SquashFS and UBIFS
    • Improve ksz9477 switch driver to support phy-link via GPIOs
    • Fix-up for devicetrees fsimx8mm
    • Add driver for lontium-lt9211 MIPI2RGB converter
    • Improve picocoremx8mx/mm device trees for deactivating nodes from UBoot
    • Improve picocoremx8mm.dts and fsimx8mm_defconfig
    • Improve fsimx8mm_defconfig
    • Improve clk-composite-8m.c
    • Improve atmel_mxt_ts.c touch
    • Add PWM usage for driver gpio-pca953x.c
    • Improve fsimx8mm_defconfig to be closer to fsimx6* defconfigs
    • Improve drivers/rtc/systohc.c
    • Fixup for picocoremx8mm/mx device-trees

    yocto-3.0-fsimx8mm-Y2021.04 (21.04.2021 based on Yocto 3.0 Zeus)

    Supported boards: PicoCoreMX8MM

    • Update yocto to 3.0 (Zeus)
    • Add atmel mxt linux firmware recipe
    • Merge fsimx8 U-Boot and Kernel build to common recipe *
    • Fix fus-image-qt5
    • Add fsimx8mx machine file
    • Add static board conf via environment variable
    • Remove kernel-module-imx-gpu-viv from linux-fus recipe
    • Remove kernel image from rootfs
    • Improve support for WIFI module 1MW from murata
    • Update to Yoco 3.0.4 (Zeus) Kernel 5.4.47
    • Improve fsimx8mx.confand
    • Add machine for fsimx8mx-nano
    • Improve fsimx8mm machine file
    • Add fbi as image viewer to package
    • Add new firmware for atmel touch mxt336
    • Increase yocto manifest file to work with kernel version 5.4.70
    • Improve access to firmware marvel sd8997
    • Remove unnecessary files and syntax failures
    • Improve FS FUS_LOGIN_CONSOLE setup
    • Improve fsimx8m* machine files
    • Change: IMAGE_FSTYPES: Cause of building problems, revert changes of ??=
    • Remove IMAGE_FSTYPES from
    • Fix: "?=" to "="
    • Add: Sub init function
    • Improve linux-fus recipe from meta-fus layer
    • Add support to build new uboot-fus
    • Improve default network startup for F&S images
    • Improve build of u-boot-fw-utils
    • Remove ATF patch from recipe
    • Improve u-boot-fus recipe
    • Add linux-firmware-pcie8997 to target fus-image-std
    • Improve KERNEL_MODULE_PACKAGE_SUFFIX for layer meta-fus
    • Improve meta-fus wic layout fat partition offset

    atf-5.4.70-fsimx8mm-Y2021.04 (21.04.2021)

    Supported boards: PicoCoreMX8MM

    • Add imx-atf rel_imx_5.4.70_2.3.0
    • Add possibility to deactivate debug UART

    firmware-imx-8.10 ddr synopsys (21.04.2021)

    Supported boards: PicoCoreMX8MM

    • No changes


    • No changes


    • Update to version 1.5 of FSiMX8MM_FirstSteps_eng.pdf
    • Update to version 0.7 of LinuxOnFSBoards_eng.pdf

    Please download the hardware documentation directly from our website. Then you always have the newest version.

    Your F&S Support Team

    F&S Elektronik Systeme GmbH
    As this is an international forum, please try to post in English.
    Da dies ein internationales Forum ist, bitten wir darum, Beiträge möglichst in Englisch zu verfassen.

  • Hello,

    In the current Yocto release the BT driver is not activated. This is a misconfiguration by F&S. Please activate the following drivers in the kernel configuration to use BT:


    After recompiling the system your BT interface “hci0” should be available with “hciconfig --all”. Sorry for the inconveniences.

    Your F&S Support Team

    F&S Elektronik Systeme GmbH
    As this is an international forum, please try to post in English.
    Da dies ein internationales Forum ist, bitten wir darum, Beiträge möglichst in Englisch zu verfassen.

  • Touchscreen Fix for 3.5" MIPI-DSI Display mit PCAP Touch ( B.LCD.22)

    The Touchscreen of the 3.5" MIPI-DSI Display mit PCAP Touch ( B.LCD.22) is not working with the following combination:

    Boards: PcoreMX8MM-V1-LIN, PcoreMX8MM-V13-LIN [Rev1.3]

    Adapter: ADP-MIPI2MIPI1 [Rev 1.2]

    Display: 3.5" MIPI-DSI Display mit PCAP Touch ( B.LCD.22)

    Releases: Y2021.04, B2021.06

    To fix this, you can either apply the attached patch to the Linux Kernel and rebuild the device tree or make the following U-boot settings:

    Run the following command in the U-boot console:

    1. setenv fix_EE0350_touch 'fdt addr $fdtaddr; fdt set i2c1/mxt336u interrupt-parent <0x00000036>; fdt set i2c1/mxt336u interrupts <0x00000000 0x00000002>;'

    Edit the $fdt variable and add the command run fix_EE0350_touch befor the booti command. For example

    1. editenv fdt
    2. mmc rescan; load mmc 2 0x43000000 picocoremx8mm-lcdif-adp-mipi2mipi1-ee0350et-2cp.dtb;run fix_EE0350_touch;booti 40480000 - 0x43000000
    3. saveenv

    ( The $fdt variable may look different, depending on where the device tree is loaded from)

    Boot the board. The touchscreen should work now.

    Your F&S Support Team

  • Add error handling for the install script with eMMC

    Currently the UBoot update process does not react to errors in UBoot commands issued in the install and update scripts. So whenever the load command fails, the RAM area will get written to the destination as it is. For boards with a NAND flash this is not as problematic, because the UBoot will not be affected by the update. For eMMC however the UBoot is included in the sysimg file. An error in the load command results in a corrupt UBoot and the board will not be bootable without external flashing software.

    The updated install script checks for errors that might occur in the load command and aborts the update process before actually writing the corrupt data. Also the chunksize for the eMMC update process is reduced to support more USB sticks.

    The attached zip file contains the install script as a text file and precompiled binaries. The folder structure is exactly as in the release directory with binaries/, sdcard/ and sources/, so it is enough to unpack the zip file inside the release directory fsimx8mm-Y2021.04/.

    Your F&S Support Team

  • Fix yocto-download script not able to download meta-mono

    Currently, the yocto-download script, used to download the sources for the yocto build, is not working anymore.

    This is due to a change of the source URL of the meta-mono layer.

    To fix this please either change the line in the yocto-download script




    or place the attached patch to your yocto build directory yocto-3.0-fus and run

    patch -p1 < 0001-Fix-meta-mono-URL-zeus.patch

    Your F&S Support Team