This pages collects frequently ask questions regarding AIoT Yocto.

AIoT Yocto takes several hours to build for first time, why?

The build system have to fetch various software components from servers specified in recipes. Usually it takes 30 minutes to one hour to fetch sources, depending on your internet connection speed, and the capacity of the remote servers. It might take longer when fetching a large project such as OpenCV.

The downloaded software component sources are stored in a download folder (specified in DL_DIR variable). Since the content can be reused by each build, we recommend you to keep the folder, even if the build directory has changed. You can specify different path of download folder in DL_DIR variable in your local.conf or site.conf.

I have GitLab permission but BitBake fails to fetch NDA repositories, why?

If you have confirmed your account permission, but the bitbake command still shows a fetch error:

do_fetch: Bitbake Fetcher Error: FetchError('Unable to fetch URL from any source.', 'git://git@gitlab.com/mediatek/aiot/nda/xxxxxx.git;protocol=ssh;branch=main')

You might want to check the following settings:

  • In ~/.netrc, make sure there are no incorrect machine entries pointing to gitlab.com.

  • Try resetting your git credential cache. If you are using the store credential helper, you can try resetting the storage:

    git config --unset credential.helper
    git config --global --unset credential.helper
    git config --global credential.helper store

My rootfs is too small, how to make it larger?

The BSP does not specify any storage size, so the rootfs will be just large enough to contain the content built by the yocto image. If you need to increase the size the size of the rootfs you can add the following to your local.conf:


IMAGE_ROOTFS_EXTRA_SPACE can be set to increase the amount of free disk space in the rootfs partition.

For more information you can check the Yocto Reference Manual.

My home partition is too small, how to make it larger?

You can set the home partition size by setting the following variable in your local.conf:


How to add additional applications to my image?

If you want to add new applications to your image you can set the following variable in your local.conf:

IMAGE_INSTALL:append = " \
        gdb              \
        htop             \

The example above will add gdb and htop to the image that gets built by bitbake.

Connecting to the board by ssh over USB does not work on Windows

By default the BSP uses the USB gadget ecm to provide a network interface over USB. Windows does not support well ecm. So if you plan to connect to the board by ssh over USB on Windows, please refer to RNDIS Setup (Windows).

Why does the error message “ERROR:aiot:No image found” shows when I flash a single partition with “aiot-flash <partition>” command?

The reason “ERROR:aiot:No image found” appears may be because aiot-flash cannot find rity.json. rity.json will indicate the correspondence between partition and image filename. aiot-flash process refers to this file to find the corresponding image. This file would only be generated after a full build (rity-demo-image) is done. After the file is generated, you can flash the single partition (e.g, kernel or bootloaders) individually with using aiot-flash <partition> command.

"partitions": {
        "mmc0": null,
        "mmc0boot0": "bl2.img",
        "mmc0boot1": "u-boot-env.bin",
        "bootloaders": "fip.bin",
        "kernel": "fitImage",
        "rootfs": null

What is the default partition size in MT8365(i350) BSP?

The default partition size is listd in the table below.

Partition name



4MB (fixed size)


4MB (fixed size)






depend on the user space stuffs. (~1467 MB in rity-demo-image)


273 MB in rity-demo-image

How to tune each partition size in detail?

You could modify the system partition configuration file in meta-rity/meta/wic/rity.wks.in. The configuration file is written in yocto kickstart format.
Here is an online guideline for yocto kickstart(.wks): https://docs.yoctoproject.org/ref-manual/kickstart.html
Note that the partition size of mmc0boot0 and mmc0boot1 are not able to be modified.

Does MT8365(i350) BSP provide Contiguous Memory Allocator (CMA) support and reserve CMA area by default?

Yes, MT8365(i350) BSP has CMA area allocated for common use.
The CMA area size is 32 MB by default and configured by kernel config CONFIG_CMA_SIZE_MBYTES=32.
Users could create further CMA areas for their own use.
[    0.000000] cma: Reserved 32 MiB at 0x00000000fa000000
[    0.000000] Memory: 2939124K/3145728K available (15552K kernel code, 2894K rwdata, 8552K rodata, 6272K init, 510K bss, 173836K reserved, 32768K cma-reserved)

How does MT8365(i350) BootROM know which storage medium to boot from, for instance how does it know to boot from eMMC and not from NAND?

MT8365(i350) BootROM polling boot devices by order, eMMC first and then NAND. If there is no eMMC device, the system will boot from NAND. MT8365(i350) does not support using SD Card as a boot device.

Can MT8365(i350) BootROM use any other boot region for booting besides mmc0boot0, for instance mmc0boot1 if mmc0boot0 got corrupted?

Yes, users can use mmc0boot1 as boot region, and BootROM will find an available boot region to boot.
In other words, if mmc0boot0 got corrupted and mmc0boot1 is available, the system will boot from mmc0boot1.

MT8365(i350) uses ‘systemd’ as default init system. Is it possible change to use ‘sysvinit’?

There is a page about init system configuration on Yocto user guideline:
User could set the configuration INIT_MANAGER = “sysvinit” in local.conf to use ‘sysvinit’ as init system.