[iMX6] [Yocto] [Qt] [Gstreamer] [local.conf] Having trouble rebuilding the BSP trying to solve : defaultServiceProvider::requestService(): no service found for - "org.qt-project.qt.mediaplayer

cancel
Showing results for 
Search instead for 
Did you mean: 

[iMX6] [Yocto] [Qt] [Gstreamer] [local.conf] Having trouble rebuilding the BSP trying to solve : defaultServiceProvider::requestService(): no service found for - "org.qt-project.qt.mediaplayer

777 Views
Contributor I

Hello Fellow Developers,

Recently I ran into some problems with Yocto and Qt and I am in need of your advice. Sorry, this post might turn out to be too big.

First, let me introduce my work. I am fairly new to iMX6 product line, Yocto and Qt. Only couple of months ago I started working on a project with PICO-PI-IMX6QDEV. I was able to build a BSP using GitHub - TechNexion/edm-yocto-bsp: Yocto Project manifests  (Yocto 2.4 Rocko). I was able to build the Qt toolchain. And I have been successfully using the PICO-PI-IMX6QDEV for prototyping. Recently I had to implement a Video Demonstration using the PICO-PI and thats when the trouble started. I got the following error when I tried to play a video (.mp4, .webm):

Console qtcreator : defaultServiceProvider::requestService(): no service found for - "org.qt-project.qt.mediaplayer

I check in the BSP and the device console, I had GStreamer in the BSP. So I further checked online for the solution and soon enough found the solution here: 

[IMX6] QtMultimedia : defaultServiceProvider::requestService(): no service found for - "org.qt-proje...  :- 

Add this line to your /build/conf/local.conf

PACKAGECONFIG_append_pn-qtmultimedia = " gstreamer" 

1. Now that, I have to make some changes to my BSP what would be the best way to do so, since I already have a working BSP?

What I have done so far is, I went to the build folder and updated the local.conf file as mentioned earlier. I then ran the following commands in the terminal, and everything completed without any error:

cd edm_yocto

DISPLAY=lcd WIFI_FIRMWARE=y WIFI_MODULE=qca DISTRO=fsl-imx-x11 MACHINE=pico-imx6 BASEBOARD=pi source edm-setup-release.sh -b build-x11-pico-imx6

bitbake -f -c complie fsl-image-qt5-validation-imx

bitbake fsl-image-qt5-validation-imx

After this was done, I loaded the image into my device (PICO-PI-IMX6QDEV). And it worked, well sort of. When I tried to run my code, I got the following error on the console:

module "QtQuick.Controls" is not installed

I checked the BSP again, using

bitbake -s | grep qt

All the qt modules are there. 2. So my question is why is this happening?

I went back to check my local.conf and found that all the changes I had made to local.conf are gone.

MACHINE ??= 'pico-imx6'
DISTRO ?= 'fsl-imx-x11'
PACKAGE_CLASSES ?= "package_rpm"
EXTRA_IMAGE_FEATURES ?= "debug-tweaks package-management tools-testapps"
USER_CLASSES ?= "buildstats image-mklibs image-prelink"
PATCHRESOLVE = "noop"
BB_DISKMON_DIRS ??= "\
STOPTASKS,${TMPDIR},1G,100K \
STOPTASKS,${DL_DIR},1G,100K \
STOPTASKS,${SSTATE_DIR},1G,100K \
STOPTASKS,/tmp,100M,100K \
ABORT,${TMPDIR},100M,1K \
ABORT,${DL_DIR},100M,1K \
ABORT,${SSTATE_DIR},100M,1K \
ABORT,/tmp,10M,1K"
PACKAGECONFIG_append_pn-qemu-native = " sdl"
PACKAGECONFIG_append_pn-nativesdk-qemu = " sdl"
PACKAGECONFIG_append_pn_qtbase = " sql-sqlite"
PACKAGECONFIG_append_pn_qtbase = " accessibility"
PACKAGECONFIG_append_pn_qtmultimedia = " gstreamer alsa"
CONF_VERSION = "1"

DL_DIR ?= "${BSPDIR}/downloads/"
ACCEPT_FSL_EULA = "1"
LICENSE_FLAGS_WHITELIST = "commercial_qca"
IMAGE_INSTALL_append = " linux-firmware-qca-tn"

CORE_IMAGE_EXTRA_INSTALL_append = " \
dropbear \
"

CORE_IMAGE_EXTRA_INSTALL_append = " \
qtquick1 \
qtquickcontrols \
qtquickcontrols-qmlplugins \
qtquickcontrols2 \
qtquickcontrols2-qmlplugins \
gstreamer1.0-plugins-good-qt \
imx-qtapplications \
packagegroup-qt5-demos \
qt3d \
qt5-demo-extrafiles \
qt5everywheredemo \
qt5ledscreen \
qt5nmapper \
qtbase \
qtbase-plugins \
qtdeclarative \
qtdeclarative-tools \
qtdeclarative-plugins \
qtdeclarative-qmlplugins \
qtgraphicaleffects \
qtlocation \
qtmultimedia \
qtmultimedia-plugins \
qtmultimedia-qmlplugins\
qtscript-qmlplugins \
qtsensors-qmlplugins \
qtsvg \
qtsvg-plugins \
qtwayland \
qtwebchannel \
qtwebkit \
qtwebkit-qmlplugins \
qtwebsockets \
qtwebsockets-qmlplugins \
qtx11extras \
qtxmlpatterns \
screen \
i2c-tools \
qtlocation-plugins \
qtlocation-qmlplugins \
qtlocation-examples \
cinematicexperience \
qtcharts-qmlplugins \
qtgraphicaleffects-qmlplugins \
qtconnectivity \
x11vnc \
qtimageformats \
qtimageformats-plugins \
qtenginio \
qtsystems \
qtsystems-tools \
qtsystems-qmlplugins \
qttools \
qttranslations \
qtcansvas3d \
openssh-sftp-server \
nano \
gdb \
imx-vpu \
imx-test \
qtbase-tools \
gstreamer1.0-plugins-imx \
gst1.0-fsl-plugin \
gstreamer1.0-plugins-base \
"

This is what I had before building. And after building all these changes made were gone as you can see in the following quote:

MACHINE ??= 'pico-imx6'
DISTRO ?= 'fsl-imx-x11'
PACKAGE_CLASSES ?= "package_rpm"
EXTRA_IMAGE_FEATURES ?= "debug-tweaks"
USER_CLASSES ?= "buildstats image-mklibs image-prelink"
PATCHRESOLVE = "noop"
BB_DISKMON_DIRS ??= "\
STOPTASKS,${TMPDIR},1G,100K \
STOPTASKS,${DL_DIR},1G,100K \
STOPTASKS,${SSTATE_DIR},1G,100K \
STOPTASKS,/tmp,100M,100K \
ABORT,${TMPDIR},100M,1K \
ABORT,${DL_DIR},100M,1K \
ABORT,${SSTATE_DIR},100M,1K \
ABORT,/tmp,10M,1K"
PACKAGECONFIG_append_pn-qemu-native = " sdl"
PACKAGECONFIG_append_pn-nativesdk-qemu = " sdl"
CONF_VERSION = "1"

DL_DIR ?= "${BSPDIR}/downloads/"
ACCEPT_FSL_EULA = "1"
LICENSE_FLAGS_WHITELIST = "commercial_qca"
IMAGE_INSTALL_append = " linux-firmware-qca-tn"

3. I am exactly not sure how it works! I am yet to try deleting my "tmp" folder in the build (build-x11-pico-imx6) directory and starting the whole process from scratch, but I really want to avoid that, as building the whole BSP takes a long time. Also to be precise with my question, when should I be changing the local.conf file, before running the build command? Should it be changing back to the initial state after I run the build command? What is the ideal process to make such changes to the BSP? 

**If asking these questions at the wrong place, please do let me know and if possible direct me towards the right direction.

Labels (4)
0 Kudos
1 Reply

175 Views
NXP TechSupport
NXP TechSupport

Hello Sifat Shahriar Khan,


The PICO board is supported by TechNexion so I would recommend reviewing their documentation and support alternatives also.


I was reviewing the steps you have been taking (thank you for being so thorough) and I would like to clarify that the bitbake -s command shows all recipes available on the layers that are declared for the build directory, so these may not be installed on your image. You may always add them with the IMAGE_INSTALL_append instruction.


Which leads me to the local.conf changes being lost. I’m not familiar with this BSP in particular but I would expect that you have a setup-environment.sh script and also an edm-setup-release.sh script. The edm-setup-release.sh should be used only when setting up the build directory for the first time, as it adds the required packages for your distro, display and machine.


When you want to setup bitbake over an existing build directory you should use:
$ source setup-environment <BUILD_DIR>


This command should setup the existing build directory without changing your local.conf file. You may change this file before of after baking. You may bake an image and then add something to your image using local.conf. However, remember that Yocto is not meant for developing so it does not get track of changes in the source code and you may need to run a clean instruction if you want to rebuild a package or image.


I hope this helps!
Regards,

0 Kudos