Create boot2qt image for Jetson Xavier NX
-
I'm trying to build a boot2qt image for the Jetson Xavier NX (the devkit with eMMC) following this how-to: https://doc.qt.io/Boot2Qt/b2qt-how-to-create-b2qt-image.html
Since the device is not available in the meta-boot2qt layer (yet), I checked the meta-tegra layer, where it's available as jetson-xavier-nx-devkit-emmc. So I set the MACHINE value, sourced the environment, and started the bitbake for b2qt-embedded-qt6-image. The build process went through fine, so I went on to flashing the device by extracting the tegraflash archive in the tmp/deploy/images/jetson-xavier-nx-devkit-emmc folder and running the doflash.sh script. However, the script tries to flash an image called b2qt-embedded-qt6-image.ext4, which does not exist in the archive or in the folder where the archive is located. When I run the prepare-image.sh script, an image named b2qt-embedded-qt6-image-jetson-xavier-nx-devkit-emmc.ext4 is created. So I switch the names inside the doflash script, rerun it, and the flashing process finishes successfully. But when the device reboots, the boot process stops at
welcome to lk calling constructors ... calling apps_init() starting app shell entering main console loop ]
To ensure, the meta-tegra layer in combination with the MACHINE value works, I created a small yocto with just the poky layers and the meta-tegra layer. I added image_types_tegra to the IMAGE_CLASSES in my local.conf, set the same machine value, and built the core-image-weston. I received a similar output in the deploy images folder, only this time the tegraflash archive contained the image. I ran the doflash script and the device booted fine. When I connected a monitor, I was able to run the weston examples. So I am sure the meta-tegra layer with the MACHINE value works.
I tried switching the weston image with the boot2qt image. This time the device was able to boot, but only a tty was shown on the monitor. As I understand, the boot2qt default application should start instead. I tried to deploy an example application using QtCreator. The device was correctly shown as boot2qt device and I could connect via the boot2qt bridge over usb or ethernet. The app was also deployed to the device, but when the app was started, the output was "EGL_EXT_device_base missing". I checked the running services and four have failed to start. Among others systemd-modules-load with the error "Failed to look up module alias 'nvgpu': Function not implemented". So, I guess something is missing since I only flashed the APP partition with the image from the b2qt build. I'm not sure if the egl problem and the flashing problem are related.
I also tried using different b2qt manifests (6.2.4 and 6.3.0) and got the same results.
Can somebody help? Am I missing some config parameters in the b2qt build?