From Boot2Qt to Torizon Image

I’ve worked on Apalis IMX6 V1.1D and Y, developed a QT app on Qt Creator IDE and Boot2Qt as target image the version of Qt is 5.14.2.
The app has a GUI (QML), uses serial ports, GPIO, I2c, eth, write to filesystem, etcetera.
So far so good.

Now our customer ask for a splash-screen and some modifications on app.
Beeing impossible to acheive the splash-screen on already compiled Boot2Qt image, I’m searching an easy way to continue to develop with QtCreator/Boot2Qt and for production replace the OS (with a splash-screen) and maually deploy the Qt app.
The Torizon way seems a good idea: I’ve succesfully tested the torizon-core-docker-evaluation-apalis-imx6-Tezi_5.7.2+build.20.container.tar and now I’ve flashed the torizon-core-docker-apalis-imx6-Tezi_5.7.2+build.20.tar, customized the splash screen and it works.
I’m new to Torizon, docker and containers (and ignorant on Yocto) but it seems to be a powerful instrument for my work… I’will learn.

But my actual goal is to (time constraints!) add Qt5 to the Torizon Core and autorun the Qt app.
I had a look onto Web resources and think I’ve to load the Qt Wayland container with docker then customize the docker-compose.yml to autorun at boot.
Can you help me on this?
Thanks,
Pietro

Hello @Pipe ,

Which tutorials have you followed?
At what point are you stuck?

Best regards,
Josep

and others on Developer Toradex web site.

Stuck on:

  • Me too, as other user, cannot enter /var/sota/storage/docker-compose/ directory… it says “forbidden”.
  • I think I’ve to learn docker commands, but if you can point me in the right direction… :wink:

Another question: starting from a Torizon Core base, with docker commands can I setup Qt5 container so it will reside into local filesystem, then, probably, download some additional required Qt libraries, then manually add my Qt application… and at the end save my new image so that later I can deploy it to other devices? I understood that this is possible with docker… but this is a problem to solve later, for now I would like to now if it is possible.

Thanks for now Josep

Hello @Pipe ,

Have you tried as root user?

For this topic you can follow this documentation:

You can also have a look at our developer webpage (type “docker” on our search field, and you will get plenty of Docker-related articles)

Best regards,
Josep

ssh succesfully into torizon with “torizon” as user and the password that the system ask me to change at first login attempt with pssword “torizon”, as the tutorial says.

But with “root” no chance. I’ve tried some passwords.
Normally I connect with Bitwise SSH, tried with Putty aswell, tried to change to root once connected as user torizon. No success

Hello @Pipe ,
Have you tried executing the commands via sudo?

Best regards,
Josep

Hi Josep,

Yes no way to insert a valid password but no problem, I’ve changed my strategy:

I’ve realized that (excuse me for asking support before to learn about…) TorizonCore is based on Docker and containers, some stuff new to me. The device on wich I’m working is pretty embedded and not connected to the Internet, what I need is a system that just autorun an application.

So I switched to the official Toradex BSP that flawlessly can run my Qt app that is compiled with the exact version (5.14.2) of the BSP one.
Now my challenge is to re-build the PSB to embed the splash screen into the kernel, again something new to me, but I think is the right way. Do you know if there is a easier method?

Thanks for all,
Pietro

PS: TorizonCore/Docker/containers are anyway an interesting instrument that I will use for other projects.

Hello @Pipe ,

You can have a look at these articles in our developer webpage:

Best regards,
Josep

Hi Josep,
some steps forward but not yet success.
Remark: I’m working with Toradex BSP 5.7 and my video output is hdmi 1920x1080.

Your suggestion link “How to Add a Custom Splash Screen (Linux)” is relative to BSP 6, but Splash Screen on the Linux Kernel | Toradex Developer Center page points to page you suggested. So I followed the article you suggested.
The requirement is to have a Yocto environment to build the BSP image.

I’ve installed on a host pc an Ubuntu 18.04 LTS and followed instructions to setup Yocto 3.1 LTS dunfell environment. Then I built with success a 5.7.3 BSP image. Flashed on my Apalis and everything seems similar to the previously flashed 5.7.2 BSP binary image downloaded from Toradex web site.
The system boots with some text read out until a Qt app is launched.

Then continued to follow instructions for the splash-screen and re-built the 5.7.3 BSP with no errors, flashed the apalis with this new image but the boot text read-out is still there and the system hangs with a looping message:
“A start job is running for Hold unt…ocess finishes up (22s / no limit)…” obviously time indication continues to grow.

The article web page nothing says about the “spinner.plymouth” file. I’ve downloaded one from a deb file on Internet and used that one, for the png file I used the ubuntu-logo.png on my host system.
Plymouth seems to be correctly installed: ssh browsing the target system I see the /usr/share/plymouth diirectory filled with something and on system boot text read-out I see something related to Plymouth: “Tell plymouth to write out runtime data”.

So now:
from my side I will re-build an image where I only append Plymouth recipe without appending the png and the .plymouth file and see what happens.
From your side have you some suggestion more?
Thanks
Pietro

Hi Josep, I’m here again.

I’ve made some test and I can run my Qt app on last Apalis IMX6 BSP the 6.x one.
With Ubuntu 22.04 and Yocto kirkstone I produced a Apalis-iMX6_Reference-Multimedia-Image-upstream-Tezi_6.4.0-devel-20230807065433+build.0.tar image. Flashed and boot fine.
Suppose this is the final choice.

Then, following the tutorial on splash-screen, I managed to only add the Plymouth package by adding in local.conf the "CORE_IMAGE_EXTRA_INSTALL += “plymouth” but when “bitbake” an error message: “Runtime target ‘dracut’ is unbuildable, removing…” .

How to go further?
Thanks, Pietro

Hello @Pipe ,
Could you share the bitbake log to see if there are other messages related to this error?

Best regards,
Josep

Hi Josep, i’ve made some vacation, now I’m at work, glad to hear you,

Resuming,:
I’ve an older Yocto system (Ubuntu 18.04 Yocto 3.1 dunfell) that succesfully build Toradex Reference and Torizon images recipes.
On my target system the Torizon image boots fine with a splashscreen and the Reference Image boots fine with text-out on monitor at boot.
Adding the Plymouth recipe to the Reference Image in local.conf file does not produce errors when bitbaking but the target image boots with blank screen and ,from u-boot serial log, the system hangs with the “A start job is running for Hold unt…finishes up (34min 46s / no limit)…” looping message (34 min… updates in time).
If I could have this system correctly booting with splashscreen it should be my preferred one, but I can even work with the newer one:

I’ve a new Yocto sytem (Ubuntu 22.04, Yocto 4 Kirkstone) where I succesfully build and run a 6.4 Toradex Reference image.
When adding, for example, CORE_IMAGE_EXTRA_INSTALL += “usbutils” the bitbake process exit with success:

pipe@pipe-ESPRIMO-P520:~/oe-core/build$ bitbake tdx-reference-multimedia-image
Loading cache: 100% |############################################| Time: 0:00:01
Loaded 4743 entries from dependency cache.
WARNING: No recipes in default available for:

  • /home/pipe/oe-core/build/…/layers/meta-toradex-nxp/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.20.0.imx.bbappend*
    NOTE: Resolving any missing task queue dependencies

Build Configuration:
BB_VERSION = “2.0.0”
BUILD_SYS = “x86_64-linux”
NATIVELSBSTRING = “universal”
TARGET_SYS = “arm-tdx-linux-gnueabi”
MACHINE = “apalis-imx6”
DISTRO = “tdx-xwayland-upstream”
DISTRO_VERSION = “6.4.0-devel-20230828074524+build.0”
TUNE_FEATURES = “arm armv7a vfp thumb neon callconvention-hard”
TARGET_FPU = “hard”
meta-toradex-nxp = “HEAD:65b308a7e9f02b05dbe9280149ca80bfdafa69d5”
meta-freescale = “HEAD:3854ecab698d92597de96e01f14dd8c076c5e969”
meta-freescale-3rdparty = “HEAD:e5835a359b7c3d33575ba96ee3f4d920930fb3cd”
meta-toradex-ti = “HEAD:3ddfcd1cbc855fdb685ef4ad79d0121b972929b8”
*meta-arm-toolchain *
meta-arm = “HEAD:c39bb4ce3b60b73d35c5fb06af012432e70d6b38”
*meta-ti-bsp *
meta-ti-extras = “HEAD:38d91dd4f1341f908191fa8a854fd7a81bafb613”
meta-toradex-bsp-common = “HEAD:ed79a5858e8b2eaf46e6f352dd3a41cebfb9b40a”
*meta-oe *
*meta-filesystems *
*meta-gnome *
*meta-xfce *
*meta-networking *
*meta-multimedia *
meta-python = “HEAD:346753705e49a2486867dc150181a1c7f4d69377”
meta-freescale-distro = “HEAD:d5bbb487b2816dfc74984a78b67f7361ce404253”
meta-toradex-demos = “HEAD:ac087af8ca07b847e48e9f321a1e606b61b156c1”
meta-qt5 = “HEAD:bff5bd937f0776166e81a63f3dd39ede348ef758”
meta-toradex-distro = “HEAD:34b8e4bbf4b4f0968fbdd9f5da9b5e0f0015e650”
meta-poky = “HEAD:c0435b61978e431974628a052ce2812fbd8e7196”
meta = “HEAD:d877d5f07772ec4a05332068ddc03cf387313036”

Initialising tasks: 100% |#######################################| Time: 0:00:05
Sstate summary: Wanted 394 Local 394 Mirrors 0 Missed 0 Current 2984 (100% match, 100% complete)
NOTE: Executing Tasks
NOTE: Tasks Summary: Attempted 8248 tasks of which 8248 didn’t need to be rerun and all succeeded.
NOTE: Writing buildhistory
NOTE: Writing buildhistory took: 3 seconds

Summary: There was 1 WARNING message.

When I substitute the “usbutils” with the wanted CORE_IMAGE_EXTRA_INSTALL += “plymouth” and rebuild the bitbake log produces errors:

pipe@pipe-ESPRIMO-P520:~/oe-core/build$ bitbake tdx-reference-multimedia-image
Loading cache: 100% |############################################| Time: 0:00:01
Loaded 4743 entries from dependency cache.
WARNING: No recipes in default available for:

  • /home/pipe/oe-core/build/…/layers/meta-toradex-nxp/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.20.0.imx.bbappend*
    NOTE: Resolving any missing task queue dependencies
    ERROR: Nothing RPROVIDES ‘dracut’ (but /home/pipe/oe-core/build/…/layers/meta-openembedded/meta-oe/recipes-core/plymouth/plymouth_0.9.5.bb RDEPENDS on or otherwise requires it)
    NOTE: Runtime target ‘dracut’ is unbuildable, removing…
    Missing or unbuildable dependency chain was: [‘dracut’]
    NOTE: Runtime target ‘plymouth’ is unbuildable, removing…
    Missing or unbuildable dependency chain was: [‘plymouth’, ‘dracut’]
    ERROR: Required build target ‘tdx-reference-multimedia-image’ has no buildable providers.
    Missing or unbuildable dependency chain was: [‘tdx-reference-multimedia-image’, ‘plymouth’, ‘dracut’]

Summary: There was 1 WARNING message.
Summary: There were 2 ERROR messages, returning a non-zero exit code.

Finally: I need a splash-screen booting system with a Qt 5 app that auto-launches. The Toradex mutimedia Reference Image with Plymouth enabled is the goal. I will prefer 5.7 but 6.4 version is accepted.

Thanks for attention,
Pietro

Hi @Pipe ,

I see you did another topic for the plymouth Yocto build issue:

Regarding the app auto-launch requirement, we do have a Yocto recipe in meta-toradex-demos that does just that in a Wayland environment:

We use that for our BSP Multimedia Reference Images.

You can use wayland-qtdemo-launch-cinematicexperience_1.0.bb as a starting point for your app auto-launch recipe.

Best regards,
Lucas Akira

Thanks Lucas,

regarding the app auto-launch I’m moving in the direction you suggested and it works.

Thanks again
Pietro

Glad I could help!

Best regards,
Lucas Akira