qtyoctoraspberry-pi4waylandweston

Weston not booting on RasPi 4B with touchscreen


I have a RasPi4 connected to the Raspi 7' touchscreen. I have built a linux image with yocto, where I included the meta-qt6 layer, the meta-raspberrypi layer, and a custom layer with my Qt application (a simple "Hello, World!" widget app).

I used the "core-image-weston" image build, to build the image, and everything went fine w/o errors. But when I flash a SD card and boot my RasPi, the load screen of the image appears for a short time, but then the screen remains black.

In local.conf file, I included:

DISTRO_FEATURES:append = "wayland"
IMAGE_INSTALL:append = " qtbase qtwayland"
CORE_IMAGE_EXTRA_INSTALL += "wayland weston"

Additionally, to run the Pi remote, I included EXTRA_IMAGE_FEATURES ?= "ssh-server-openssh".

In my custom layer, there is /recipe-image/image/core-image-weston.bbappend, which installs my Qt App: IMAGE_INSTALL += " qtexample ".

I have built an qemux86-64 image, to run it inside a qemu environment. Here, the weston desktop boots fine, and I can run my Qt app.

However, putting all of it into a raspberry pi image, and the desktop does not show up.

I checked the web, and some posts tell me to include a recipe, which adds weston into systemd, but I don't know, if this is the right approach:

SUMMARY = "My Service"
DESCRIPTION = "My Service Description"
SECTION = "mysection"   
LICENSE = "CLOSED"
    
SRC_URI = "file://myservice.service"

inherit systemd

do_install_append() {
    echo "[Install]" >> ${D}${systemd_unitdir}/weston.service
    echo "WantedBy=multi-user.target" >> ${D}${systemd_unitdir}/weston.service
}
    
SYSTEMD_SERVICE_${PN} = "myservice.service"
SYSTEMD_AUTO_ENABLE = "enable

Additionally, I do not manage to let the ssh server start after boot, which may be the same problem, why Weston is not starting? I was assuming, I could connect via ssh and start my Qt app from the terminal. I checked, the SSH service is located in root/usr/bin, just like my Qt app.

Any hints would be great! Thanks.


Solution

  • I managed to solve the weston problem. I simply changed the kms to fkms driver in the config.txt file (as discussed here: forums.raspberrypi.com/viewtopic.php?t=243564).