Boot2Qt Embedded Qt6 Kirkstone Release
Published on November 23, 2022
We are pleased to announce a new Kirkstone Boot2Qt Qt6 Release for our Nitrogen8 family of SBCs and SOMs based on i.MX 8 processors! This release uses the latest Qt-6.4.1 and includes our latest 5.15 kernel. Below you will find the download links for the images and toolchains as well as detailed instructions for the build. You can view a demo of the image running on our Nitrogen8M Plus SOM here.
https://www.youtube.com/watch?v=wTYenxZMCSI
Prebuilt Images
You can download the Boot2Qt Yocto images from here:
- For Nitrogen8M platform:
- For Nitrogen8M Mini platform:
- For Nitrogen8M Plus platform:
You can download the Boot2Qt Linux toolchains from here:
- For Nitrogen8M platform:
- For Nitrogen8M Mini platform:
- For Nitrogen8M Plus platform:
You can download the Boot2Qt Windows toolchains from here:
- For Nitrogen8M platform:
- For Nitrogen8M Mini platform:
- For Nitrogen8M Plus platform:
Update 20230616 changelog:
- Support for 8MP SMARC added.
Update 20230817 changelog:
- Support for Rev10 Nitrogen8M Plus SMARC added.
- Bump to QT version 6.4.2
Instructions on how to use the QBSP toolchain in your Qt application development can be found here. As usual, you'll need to register on our site and agree to the EULA because it contains NXP content.
How to Flash
You can program the SW to eMMC using the instructions below: programming-emmc-on-i-mx-platforms You can also program the SW to SD Card or USB Stick via zcat and dd under Linux:
~$ zcat *boundary-image*.wic.gz | sudo dd of=/dev/sdX bs=1M
In addition, you can use the balenaEtcher utility to flash the eMMC, SD Card or USB stick via Windows or Linux: balenaEtcher
Build procedure
This image uses the 6.4.1 branch of the meta-boot2qt repo, which uses Qt version 6.3.0. This image uses the kirkstone branch of our boundary-bsp-platform repository. To build the image, we recommend using a Docker Container so that you can build with a reproducible and stable build environment. Otherwise, you’ll need these packages installed as well as this repo tool that can be installed like this:
~$ sudo apt-get install repo
Then create your build directory and initialize the environment.
~$ mkdir ~/b2qt6_kirkstone && cd b2qt6_kirkstone
~/b2qt6_kirkstone$ repo init -u https://github.com/boundarydevices/boundary-bsp-platform -b kirkstone -m b2qt.xml
~/b2qt6_kirkstone$ repo sync
Then, setup the environment for building. For this image we will be building the boundary-b2qt distro for the target machine
~/kirkstone$ MACHINE= DISTRO=boundary-b2qt . setup-environment-b2qt build
Finally, build the Boundary Boot2Qt Embedded Qt6 Image and Linux Toolchain (boundary-b2qt-embedded-qt6-image and meta-toolchain-b2qt-embedded-qt6-sdk). This can be done building the boundary-meta-b2qt-embedded-qbsp.
~/b2qt$ bitbake boundary-meta-b2qt-embedded-qbsp
Note: You can just build the Qt6 image by running "bitbake boundary-b2qt-embedded-qt6-image". To build a toolchain for Windows platforms add the following line to local.conf:
SDKMACHINE = "x86_64-mingw32"
If you are interested in each project revision at the time of the build for the prebuilt images, you can find a frozen manifest for those images here.
The image file will deploy to tmp/deploy/images/{MACHINE}/boundary-b2qt-embedded-qt6-image-{MACHINE}.wic.gz
.
The Linux toolchain will deploy to tmp/deploy/qbsp/boundary-meta-b2qt-embedded-qbsp-x86_64-{MACHINE}-6.4.1.qbsp
.
The Windows toolchain will deploy to tmp/deploy/qbsp/boundary-meta-b2qt-embedded-qbsp-x86_64-mingw32-{MACHINE}-6.4.1.qbsp
.
Demo examples
We can run demos using the toolchain with qt creator. Below are a few examples of Qt6.4.1. demo applications running on our Nitrogen8M Plus. Note that we are downloading the prebuilt demos from our linode server so that you can test without the toolchain. Coffee Machine Demo
root@localhost:~# wget http://linode.boundarydevices.com/Qt6_Demo_Apps/Qt6.4.2/arm64/coffee
root@localhost:~# appcontroller coffee
[ 116.615345] sec_mipi_dsim_get_pms: bit_clk=415800000 415800000 ref_clk=51975000, p=5, m=40, s=0, lanes=4
[ 116.651963] pix_to_delay_byte_clocks:pix_cnt = 5, byte_clock = 51975000, pixelclock = 69300000, n=4
[ 116.661070] pix_to_delay_byte_clocks:pix_cnt = 1408, byte_clock = 51975000, pixelclock = 69300000, n=1056
[ 116.670678] pix_to_delay_byte_clocks:pix_cnt = 1410, byte_clock = 51975000, pixelclock = 69300000, n=1058
[ 116.681572] sec_mipi_dsim_config_dphy:bit_clk=420, prepare=3 zero=18 post=9 trail=4 hs_prepare=4 hs_zero=5 hs_trail=6 lpx=3 hs_exit=5
[ 116.694606] sec_mipi_dsim_config_clkctrl: bit_clk=415800, clkctrl=91f80003
qt.core.qobject.connect: QObject::connect: signal not found in QProcess
"FB_MULTI_BUFFER" "2"
"QTWEBENGINE_DISABLE_SANDBOX" "1"
"QT_IM_MODULE" "qtvirtualkeyboard"
"QT_QPA_EGLFS_FORCE888" "1"
"QT_QPA_EGLFS_FORCEVSYNC" "1"
"QT_QPA_EGLFS_KMS_ATOMIC" "1"
"QT_QPA_EGLFS_KMS_CONFIG" "/etc/kms.conf"
"QT_QPA_PLATFORM" "eglfs"
"WAYLAND_DISPLAY" "/run/wayland-0"
"/usr/share/examples/demos/coffee/coffee" QList()
QML debugging is enabled. Only use this in a safe environment.
Qt Quick 3D - Particles 3D Testbed Example
root@localhost:~# wget http://linode.boundarydevices.com/Qt6_Demo_Apps/Qt6.4.2/arm64/particles3d
root@localhost:~# appcontroller particles3d
qt.core.qobject.connect: QObject::connect: signal not found in QProcess
"FB_MULTI_BUFFER" "2"
"QTWEBENGINE_DISABLE_SANDBOX" "1"
"QT_IM_MODULE" "qtvirtualkeyboard"
"QT_QPA_EGLFS_FORCE888" "1"
"QT_QPA_EGLFS_FORCEVSYNC" "1"
"QT_QPA_EGLFS_KMS_ATOMIC" "1"
"QT_QPA_EGLFS_KMS_CONFIG" "/etc/kms.conf"
"QT_QPA_PLATFORM" "eglfs"
"WAYLAND_DISPLAY" "/run/wayland-0"
"/usr/share/examples/quick3d/particles3d/particles3d" QList()
QML debugging is enabled. Only use this in a safe environment.
root@localhost:~# wget http://linode.boundarydevices.com/Qt6_Demo_Apps/Qt6.4.2/arm64/quicknanobrowser
root@localhost:~# appcontroller quicknanobrowser
qt.core.qobject.connect: QObject::connect: signal not found in QProcess
"FB_MULTI_BUFFER" "2"
"QTWEBENGINE_DISABLE_SANDBOX" "1"
"QT_IM_MODULE" "qtvirtualkeyboard"
"QT_QPA_EGLFS_FORCE888" "1"
"QT_QPA_EGLFS_FORCEVSYNC" "1"
"QT_QPA_EGLFS_KMS_ATOMIC" "1"
"QT_QPA_EGLFS_KMS_CONFIG" "/etc/kms.conf"
"QT_QPA_PLATFORM" "eglfs"
"WAYLAND_DISPLAY" "/run/wayland-0"
"/usr/share/examples/webenginequick/quicknanobrowser/quicknanobrowser" QList()
QML debugging is enabled. Only use this in a safe environment.
Sandboxing disabled by user.
qt.webenginecontext:
GL Type: egl
Surface Type: OpenGLES
Surface Profile: NoProfile
Surface Version: 3.1
QSG RHI Backend: OpenGL
Using Supported QSG Backend: yes
Using Software Dynamic GL: no
Using Multithreaded OpenGL: yes
Init Parameters:
* application-name quicknanobrowser
* browser-subprocess-path /usr/libexec/QtWebEngineProcess
* disable-features ConsolidatedMovementXY,InstalledApp,BackgroundFetch,WebOTP,WebPayments,WebUSB,PictureInPicture
* disable-speech-api
* enable-features NetworkServiceInProcess,TracingServiceInProcess
* enable-threaded-compositing
* in-process-gpu
* no-sandbox
* use-gl egl
Display support
Please make sure your platform includes the latest U-Boot:
This version of U-Boot supports the display configuration, allowing to use any of the following displays:
- HDMI display (up to 4k, 1080p recommended)
- 7" 1280x800 BD070LIC2
- 10" 1280x800 BD101LCC2
If you have any issues, please contact us.