AnsweredAssumed Answered

[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

Question asked by Sifat Shahriar Khan on Aug 30, 2019
Latest reply on Sep 13, 2019 by gusarambula

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-project.qt.mediaplayer  :- 

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.

Outcomes