Project

General

Profile

Howto build Tvheadend 4.2.x /4.3 with yocto / openembedded / bitbake / OpenPLi 6.2 for mips32el Mut@nt hd530c VuSOLO

Added by Walter av almost 6 years ago

UPDATE 2018-12-14: Issue 5432 has been created!
https://tvheadend.org/issues/5432

Introduction:

With some quick and dirty patching/hacking and skipping warnings/errors both Tvheadend git release/4.2 and master(4.3x) "build" and do "run" on OpenPLi 6.2 on mips32el Mut@nt hd530c and VuSOLO including hdhomerun and satip client support. However expect errors/limitations that these setop boxes might give due to tight closed dvb drivers using older/out of tree kernel/modules and very limited cpu/ram specs!!! This build procedure will take ~6GB and 2,5 hours on a dated 3GHz i7(Quadcore+ssd) for the combined building part, without taking the Internet Provider download speed and reader skills into account!

If I'm not mistaking a couple of years ago I think I tried a classic Tvheadend version on a dated OpenPLi/OpenATV with VuSolo, but lost interest since its was not detecting any tuners was buggy and unusefull.

Due to having success/joy in using and building Tvheadend for PC x86 and Raspberry Pi Arm hardware (deb based), I noticed that there was some standardization in these (OpenPLi) setop boxes too that earned having another look.
They use yocto(Linux Foundation)/openembedded(OE alliance)/bitbake system with each setop box distribution (OpenPLi/OPENATV) having their own meta/recipes/layers on top of this. Which is a very complete and complex system for generating hardware specific firmware/rootfs images.
By only fiddling with some text file patches and understanding in which meta/recipe folder they need to occur I got Tvheadend to build with minimal OpenPLi build instructions. First it was Tvheadend v.3.3 that compiled than v4.0.9 to see if the bitbake files were at all any exchangable (pyro>morty) which they indeed were. Following with current git release/4.2 v4.2.7.x and master v4.3x which mostly need different line numbers for diff/.patch files to apply I decided to write this howto. Afterwards I wasn't able to directly compile v3.3 and v4.0.9... but newer versions did.

We see that native yocto building of Tvheadend v3.3 has been done in the past yocto(morty) release when looking at "tvheadend_git.bb" bitbake file:
https://layers.openembedded.org/layerindex/recipe/55018/

Currently v4.0.9 of tvheadend is blacklisted in the yocto(pyro) release with a dvb-apps dependency problem(luckily didn't notice dvb-apps error building OpenPLi 6.2 when unblacklisting tvheadend build):
https://layers.openembedded.org/layerindex/recipe/63277/

Since it was blacklisted because of dvb-apps depenency (eventhough its not needed anymore for v4.3.x tvheadend):
https://tvheadend.org/projects/tvheadend/repository/revisions/fab0a6c59ceb322c44722f7576e743de176f81a9
Its not only outdated with v4.0.9 but apparently removed/missing in current and future upstream yocto(rocko/sumo) openembedded bitbake recipes as we see:
https://layers.openembedded.org/layerindex/branch/rocko/layer/meta-multimedia/
https://layers.openembedded.org/layerindex/branch/sumo/layer/meta-multimedia/
Good news its back in yocto(master) thanks Peter Bašista for noticing.
https://layers.openembedded.org/layerindex/recipe/89269/

Status

The Mut@nt hd530c currently runs tvheadend 79ea2a42c477e315ffa2143252273fe2db0c2165 with 3 frontends detected on a single adapter but using its dvb-c adapters directly within tvheadend causes tvheadend to crash as soon as a 2nd channel on a different transponder is tuned on a 2nd/3rd tuner. This happens with enigma enabled in background and with runlevel init 4. There has been some tvheadend optimizations lately(see issues) to improve multiple frontend behaviour on dual tuners but for this FBC dvb-c tuner it did not improve yet.

Related issues/bugs:
https://tvheadend.org/issues/5379
https://tvheadend.org/issues/5330

Prepare Building:

To get tvheadend support in your build of OpenPLi, I use Ubuntu 16.04 amd64 (you must use 16.04 otherwise some build dependencies/resolving will fail) and first build a default OpenPLi 6.2 image to see if that will actual succeed and all the ingredients are done, afterwards tvheadend support will be patched in and only parts of the build process are redone quickly thanks to the advanced yocto oe buildsysten. Open a terminal and:

#make sure "en_US_utf8" is installed and default
sudo dpkg-reconfigure locales 

sudo apt-get -y install default-jre gettext zip sed wget cvs subversion git-core coreutils unzip texi2html texinfo docbook-utils gawk python-pysqlite2 diffstat help2man make gcc build-essential g++ \
desktop-file-utils chrpath libdvbcsa-dev libhdhomerun-dev libxml2-utils autoconf automake bison bzip2 flex gzip ncurses-bin ncurses-dev libc6-dev libtool make texinfo patch perl pkg-config subversion \
tar texi2html wget zlib1g-dev

#get openpli sources
git clone -b release-6.2 https://github.com/OpenPLi/openpli-oe-core.git #sumo #release-6.2 #rc #develop=master
cd openpli-oe-core
sed -i 's/"develop"/"release-6.2"/g' meta-openpli/recipes-openpli/enigma2/enigma2.bb
sed -i 's/"${BRANCH}"/"release-6.2"/g' meta-openpli/recipes-openpli/enigma2/enigma2.bb

#prepare actual build environment getting more sources
MACHINE=hd530c make
#add/append buildflags to speedup compile change thread number 7 to your cpu count
tee -a build/conf/local.conf <<EOF
BB_NUMBER_THREADS = "7" 
PARALLEL_MAKE="-j7" 
BUILD_OPTIMIZATION = "-march=native -O2 -pipe" 
BB_SCHEDULER = "speed" 
EOF
#fix libdca source
cat <<'EOF' > meta-openpli/recipes-multimedia/vlc/libdca_0.0.5.bb
SUMMARY = "decoding library for DTS Coherent Acoustics streams" 
SECTION = "libs/multimedia" 
LICENSE = "GPLv2+" 
LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe" 

PR = "r1" 
DEPENDS += "quilt-native" 

inherit autotools-brokensep lib_package pkgconfig

SRC_URI = "http://download.videolan.org/pub/videolan/libdca/${PV}/libdca-${PV}.tar.bz2" 

S = "${WORKDIR}/libdca-${PV}" 

SRC_URI[md5sum] = "dab6b2795c66a82a6fcd4f8343343021" 
SRC_URI[sha256sum] = "dba022e022109a5bacbe122d50917769ff27b64a7bba104bd38ced8de8510642" 
EOF
rm meta-openpli/recipes-multimedia/vlc/libdca_0.0.5-10.bb 

Building Image:

#build image and take a long break ~2,5 hours
MACHINE=hd530c make image

Prepare Feed Build:

#fix epgimport rytec url
sed -i 's|http://www.vuplus-community.net/rytec/sources|http://rytecepg.dyndns.tv/~rytecepg/epg_data/sources|g' meta-openpli/recipes-openpli/enigma2-plugins/enigma2-plugin-extensions-epgimport-rytec.bb

cd build
source env.source

#build feed may take ~25 minutes
MACHINE=hd530c bitbake openpli-enigma2-feed

Rebuild Feed with Tvheadend

Mind the ugly copy/pasted/reused EOF surrounded EOF codeblocks/patches maybe its necessary to manually just copy paste into nano directly since "cat" seems to break layout of .patch files...

#rebuild with tvheadend v4.2.7
sed -i 's/transmission \\/transmission \\\n\ttvheadend \\/g' ../meta-openpli/recipes-openpli/images/openpli-enigma2-feed.bb

cat <<'EOF' > ../meta-openembedded/meta-multimedia/recipes-dvb/tvheadend/tvheadend_git.bb
SUMMARY = "Tvheadend TV streaming server" 
HOMEPAGE = "https://www.lonelycoder.com/redmine/projects/tvheadend" 

DEPENDS = "avahi zlib openssl python-native gettext dvb-apps" 

LICENSE = "GPLv3+" 
LIC_FILES_CHKSUM = "file://LICENSE.md;md5=9cae5acac2e9ee2fc3aec01ac88ce5db" 

SRC_URI = "git://github.com/tvheadend/tvheadend.git;branch=release/4.2 \
           file://002-Fix-checks-for-sse2-mmx.patch \
           file://0001-disable-varargs-warning-on-clang.patch \
           file://002-hdhomerun-Override-forced-overrdiing-og-CC-STRIP-and-version.patch \
           file://002-hdhomerun-remove-sha1sum.patch \
           file://002-Makefile-Ignore-warning-about-wrong-includes.patch \
           file://002-iconv.patch \
           file://002-check.patch \
" 
SRCREV = "45cc65a03d1bb808b2d26601e3f7668448f3f930" 
PV = "4.2.79+git${SRCREV}" 

S = "${WORKDIR}/git" 

PACKAGECONFIG ?= "" 
PACKAGECONFIG[uriparser] = "--enable-uriparser,--disable-uriparser,uriparser" 

do_configure() {
    ./configure ${PACKAGECONFIG_CONFARGS} \
                --prefix=${prefix} \
                --libdir=${libdir} \
                --bindir=${bindir} \
                --datadir=${datadir} \
                --arch=${TARGET_ARCH} \
                --enable-dvbscan \
                --disable-ffmpeg_static \
                --enable-bundle \
                --enable-hdhomerun_client
}

do_install() {
    oe_runmake install DESTDIR=${D}
}

FILES_${PN} += "${datadir}/${BPN}" 

RDEPENDS_${PN} += "libdvben50221 libucsi libdvbapi gettext" 
EOF

cat <<'EOF' > ../meta-openembedded/meta-multimedia/recipes-dvb/tvheadend/tvheadend/002-Fix-checks-for-sse2-mmx.patch
From f0dab6d6fe4b0aae4394eee93be86e9747c6ed5c Mon Sep 17 00:00:00 2001
From: Khem Raj <[email protected]>
Date: Tue, 22 Nov 2016 05:07:38 +0000
Subject: [PATCH] Fix checks for sse2/mmx

Just checking for cmdline options is not enough
its better to check for builtin defines to be
sure, clang does not error out on sse2 options on
arm e.g. and it ends up doing SSE2 stuff for arm
which is not desired

Signed-off-by: Khem Raj <[email protected]>
---
 configure | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/configure b/configure
index 47d2cf2..4be000c 100755
--- a/configure
+++ b/configure
@@ -150,8 +150,14 @@ fi
 else
     check_cc_header execinfo
 fi
-check_cc_option mmx
-check_cc_option sse2
+check_cc_snippet mmx '#ifndef __MMX__
+error "MMX not supported" 
+#endif
+'
+check_cc_snippet sse2 '#ifndef __SSE2__
+error "SSE2 not supported" 
+#endif
+'
 check_cc_optionW unused-result

 if check_cc '
-- 
1.9.1
EOF
cat <<'EOF' > ../meta-openembedded/meta-multimedia/recipes-dvb/tvheadend/tvheadend/002-hdhomerun-Override-forced-overrdiing-og-CC-STRIP-and-version.patch
From c3767e189e90965407937b6178adbbd8cdafe31d Mon Sep 17 00:00:00 2001
From: Khem Raj <[email protected]>
Date: Tue, 22 Nov 2016 05:59:10 +0000
Subject: [PATCH] hdhomerun: Override forced overrdiing og CC/STRIP and CFLAGS

This is required for cross compiling otherwise it ends up
using build host gcc

Signed-off-by: Khem Raj <[email protected]>
---
 Makefile.hdhomerun | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/Makefile.hdhomerun b/Makefile.hdhomerun
index 943ffec..8bd14ff 100644
--- a/Makefile.hdhomerun
+++ b/Makefile.hdhomerun
@@ -19,8 +19,8 @@
 DIR :=  $(dir $(lastword $(MAKEFILE_LIST)))
 include $(DIR)/.config.mk

-unexport CFLAGS
-unexport LDFLAGS
+#unexport CFLAGS
+#unexport LDFLAGS

 ifeq ($(CONFIG_PIE),yes)
 CFLAGS += -fPIE
@@ -32,10 +32,10 @@ # ###########################################################################
 # Upstream Packages
 # ###########################################################################

-LIBHDHR         = libhdhomerun_20171221
+LIBHDHR         = libhdhomerun_20180817
 LIBHDHR_TB      = $(LIBHDHR).tgz
 LIBHDHR_URL     = http://download.silicondust.com/hdhomerun/$(LIBHDHR_TB)
-LIBHDHR_SHA1    = 6b019728eadea3af7a5686ed5ba44e970bca7365
+LIBHDHR_SHA1    = 052868bde3a5713c55b4d060b77e0bc3a0d891d6

 # ###########################################################################
 # Library Config
@@ -79,6 +79,8 @@ $(LIB_ROOT)/$(LIBHDHR)/.tvh_download:
     $(call DOWNLOAD,$(LIBHDHR_URL),$(LIB_ROOT)/$(LIBHDHR_TB),$(LIBHDHR_SHA1))
     $(call UNTAR,$(LIBHDHR_TB),z)
     ln -sf libhdhomerun $(LIB_ROOT)/$(LIBHDHR)
+    @sed -i -e "s/CC.*:=/CC ?=/" $(LIB_ROOT)/$(LIBHDHR)/Makefile
+    @sed -i -e "s/STRIP.*:=/STRIP ?=/" $(LIB_ROOT)/$(LIBHDHR)/Makefile
     @touch $@

 $(LIB_ROOT)/$(LIBHDHR)/.tvh_build: \
-- 
1.9.1
EOF
cat <<'EOF' > ../meta-openembedded/meta-multimedia/recipes-dvb/tvheadend/tvheadend/002-hdhomerun-remove-sha1sum.patch
From 906d95695af95970bf551ea55b6c3e70332c6b97 Mon Sep 17 00:00:00 2001
From: Khem Raj <[email protected]>
Date: Tue, 22 Nov 2016 05:22:32 +0000
Subject: [PATCH] disable varargs warning on clang

The issue is that 'len' is an unsigned char and we violate the promotion rules
for passing the value to va_start.

passing an object that undergoes defau
lt argument promotion to 'va_start' has undefined behavior [-Wvarargs]
|   va_start(ap, len);

Signed-off-by: Khem Raj <[email protected]>
---
 Makefile | 1 +
 1 file changed, 5 deletion(+)

diff --git a/Makefile.static b/Makefile.static
index 8c5e380..f41ef1a 100644
--- a/Makefile.static
+++ b/Makefile.static
@@ -96,11 +96,6 @@ else \
         file=$$(basename $(2)); \
         cp "$$TVHEADEND_FILE_CACHE/$${file}" $(2); \
     fi
-    @{ \
-        sum=$$(sha1sum $(2) | cut -d ' ' -f 1); \
-        printf "SHA1SUM test '$${sum}' == '$(3)': "; \
-        test "y$${sum}" = "y$(3)"; \
-    }
     @echo "OK" 
 endef

--
1.9.1
EOF
cat <<'EOF' > ../meta-openembedded/meta-multimedia/recipes-dvb/tvheadend/tvheadend/002-Makefile-Ignore-warning-about-wrong-includes.patch
From 7d672305c7ad2f716dfe1c487b525a1a92954d4a Mon Sep 17 00:00:00 2001
From: Khem Raj <[email protected]>
Date: Tue, 22 Nov 2016 06:22:36 +0000
Subject: [PATCH] Makefile: Ignore warning about wrong includes

It happens on musl especially
usr/include/sys/poll.h:1:2: error: redirecting incorrect #include <sys/poll.h> to <poll.h> [-Werror,-W#warnings]
| #warning redirecting incorrect #include <sys/poll.h> to <poll.h>
|  ^
| In file included from src/avahi.c:48:

Signed-off-by: Khem Raj <[email protected]>
---
 Makefile | 1 +
 1 file changed, 1 insertion(+)

diff --git a/Makefile b/Makefile
index f41ef1a..cc7b249 100644
--- a/Makefile
+++ b/Makefile
@@ -75,6 +75,7 @@ CFLAGS  += -Wno-microsoft -Qunused-arguments -Wno-unused-function
 CFLAGS  += -Wno-unused-value -Wno-tautological-constant-out-of-range-compare
 CFLAGS  += -Wno-parentheses-equality -Wno-incompatible-pointer-types
 CFLAGS  += -Wno-error=varargs
+CFLAGS  += -Wno-error=\#warnings
 endif

-- 
1.8.3.1
EOF
cat <<'EOF' > ../meta-openembedded/meta-multimedia/recipes-dvb/tvheadend/tvheadend/002-iconv.patch
commit 4535a2cf6ccf5209d220971890869390e1567889
Author: Jaroslav Kysela <[email protected]>
Date:   Mon Feb 19 13:58:38 2018 +0100

    intlconv: add safe check for transil feature (to detect wrong musl builds), fixes #4940, fixes #4827

diff --git a/src/intlconv.c b/src/intlconv.c
index 3fe3eb6..fb0d176 100644
--- a/src/intlconv.c
+++ b/src/intlconv.c
@@ -23,11 +23,26 @@ tvh_iconv(iconv_t cd, char **inbuf, size_t *inbytesleft,
   return iconv(cd, inbuf, inbytesleft, outbuf, outbytesleft);
 }

+static void
+intlconv_test( void )
+{
+  /* The string is "Yellow Horse" in Czech for the curiosity */
+  const char *charset = intlconv_charset_id("ASCII", 1, 1);
+  char *s = intlconv_utf8safestr(charset, "ŽluťoučkýKůň", 128);
+  if (strcmp(s, "ZlutouckyKun")) {
+    tvherror(LS_MAIN, "iconv() routine is not working properly, aborting!");
+    tvh_safe_usleep(2000000);
+    abort();
+  }
+  free(s);
+}
+
 void
 intlconv_init( void )
 {
   pthread_mutex_init(&intlconv_lock, NULL);
   pthread_mutex_init(&intlconv_lock_src, NULL);
+  intlconv_test();
 }

 void
EOF
cat <<'EOF' > ../meta-openembedded/meta-multimedia/recipes-dvb/tvheadend/tvheadend/002-check.patch
commit 4535a2cf6ccf5209d220971890869390e1567889
Author: Jaroslav Kysela <[email protected]>
Date:   Mon Feb 19 13:58:38 2018 +0100

    intlconv: add safe check for transil feature (to detect wrong musl builds), fixes #4940, fixes #4827

diff --git a/src/intlconv.c b/src/intlconv.c
index 3fe3eb6..fb0d176 100644
--- a/configure
+++ b/configure
@@ -344,8 +344,6 @@ 
 # Binaries
 #
 check_bin ${PKG_CONFIG} bin_pkg_config || die 'no pkg-config binaries found'
-check_bin ${XGETTEXT} || die 'no gettext binaries found'
-check_bin ${MSGMERGE} || die 'no gettext binaries found'
 check_bin ${GZIPCMD} || die 'no gzip binary found'
 check_bin ${BZIP2} || echo 'WARN: no bzip2 binary found'
EOF

#build feed again may take ~5 minutes
MACHINE=hd530c bitbake openpli-enigma2-feed

#see tvheadend ipkg file
ls -la tmp/deploy/ipk/mips32el/tvheadend_*

#copy package to openpli machine(enabled ssh)
scp tmp/deploy/ipk/mips32el/tvheadend_*.ipk root@ipaddress:/

#install tvheadend on openpli(login with ssh)
opkg install /tvheadend_*.ipk
#if packages are missing manually opkg install them or copy from build machine

#run tvheadend 1st time
mkdir /etc/tuxbox/config/tvheadend
/usr/bin/tvheadend -C -c /etc/tuxbox/config/tvheadend -u root -g root -f #will run in background and create config files because of -C

#run tvheadend 2nd/xth time
/usr/bin/tvheadend -c /etc/tuxbox/config/tvheadend -u root -g root -f #notice the -C is missing...

Prepare rebuild Tvheadend v4.3x

cat <<'EOF' > ../meta-openembedded/meta-multimedia/recipes-dvb/tvheadend/tvheadend_git.bb
SUMMARY = "Tvheadend TV streaming server" 
HOMEPAGE = "https://www.lonelycoder.com/redmine/projects/tvheadend" 

DEPENDS = "avahi zlib openssl python-native gettext libdvbcsa dvb-apps" 

LICENSE = "GPLv3+" 
LIC_FILES_CHKSUM = "file://LICENSE.md;md5=9cae5acac2e9ee2fc3aec01ac88ce5db" 

SRC_URI = "git://github.com/tvheadend/tvheadend.git;branch=master \
           file://002-Fix-checks-for-sse2-mmx.patch \
           file://003-disable-varargs-warning-on-clang.patch \
           file://003-hdhomerun-Override-forced-overrdiing-og-CC-STRIP-and.patch \
           file://002-Makefile-Ignore-warning-about-wrong-includes.patch \
           file://002-check.patch \
" 
SRCREV = "1648c7b7b5cfe4ce457e4fc04b96feb3c9b7d8a2" 
PV = "4.3+git${SRCREV}" 

S = "${WORKDIR}/git" 

PACKAGECONFIG ?= "" 
PACKAGECONFIG[uriparser] = "--enable-uriparser,--disable-uriparser,uriparser" 

do_configure() {
    ./configure ${PACKAGECONFIG_CONFARGS} \
                --prefix=${prefix} \
                --libdir=${libdir} \
                --bindir=${bindir} \
                --datadir=${datadir} \
                --arch=${TARGET_ARCH} \
                --disable-libx264 \
                --disable-libx265 \
                --enable-dvbscan \
                --disable-ffmpeg_static \
                --enable-bundle \
                --enable-hdhomerun_client
}

do_install() {
    oe_runmake install DESTDIR=${D}
}

FILES_${PN} += "${datadir}/${BPN}" 

RDEPENDS_${PN} += "libdvben50221 libucsi libdvbapi gettext libdvbcsa" 
EOF
cat <<'EOF' > ../meta-openembedded/meta-multimedia/recipes-dvb/tvheadend/tvheadend/003-disable-varargs-warning-on-clang.patch
From 906d95695af95970bf551ea55b6c3e70332c6b97 Mon Sep 17 00:00:00 2001
From: Khem Raj <[email protected]>
Date: Tue, 22 Nov 2016 05:22:32 +0000
Subject: [PATCH] disable varargs warning on clang

The issue is that 'len' is an unsigned char and we violate the promotion rules
for passing the value to va_start.

passing an object that undergoes defau
lt argument promotion to 'va_start' has undefined behavior [-Wvarargs]
|   va_start(ap, len);

Signed-off-by: Khem Raj <[email protected]>
---
 Makefile | 1 +
 1 file changed, 1 insertion(+)

diff --git a/Makefile b/Makefile
index 8c5e380..f41ef1a 100644
--- a/Makefile
+++ b/Makefile
@@ -82,6 +82,7 @@ ifeq ($(COMPILER), clang)
 CFLAGS  += -Wno-microsoft -Qunused-arguments -Wno-unused-function
 CFLAGS  += -Wno-unused-value -Wno-tautological-constant-out-of-range-compare
 CFLAGS  += -Wno-parentheses-equality
+CFLAGS  += -Wno-error=varargs
 endif

-- 
1.9.1
EOF
cat <<'EOF' > ../meta-openembedded/meta-multimedia/recipes-dvb/tvheadend/tvheadend/003-hdhomerun-Override-forced-overrdiing-og-CC-STRIP-and.patch
From c3767e189e90965407937b6178adbbd8cdafe31d Mon Sep 17 00:00:00 2001
From: Khem Raj <[email protected]>
Date: Tue, 22 Nov 2016 05:59:10 +0000
Subject: [PATCH] hdhomerun: Override forced overrdiing og CC/STRIP and CFLAGS

This is required for cross compiling otherwise it ends up
using build host gcc

Signed-off-by: Khem Raj <[email protected]>
---
 Makefile.hdhomerun | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/Makefile.hdhomerun b/Makefile.hdhomerun
index 943ffec..8bd14ff 100644
--- a/Makefile.hdhomerun
+++ b/Makefile.hdhomerun
@@ -19,8 +19,8 @@
 DIR :=  $(dir $(lastword $(MAKEFILE_LIST)))
 include $(DIR)/.config.mk

-unexport CFLAGS
-unexport LDFLAGS
+#unexport CFLAGS
+#unexport LDFLAGS

 ifeq ($(CONFIG_PIE),yes)
 CFLAGS += -fPIE
@@ -79,6 +79,8 @@ $(LIB_ROOT)/$(LIBHDHR)/.tvh_download:
        $(call DOWNLOAD,$(LIBHDHR_URL),$(LIB_ROOT)/$(LIBHDHR_TB),$(LIBHDHR_SHA1))
        $(call UNTAR,$(LIBHDHR_TB),z)
        ln -sf libhdhomerun $(LIB_ROOT)/$(LIBHDHR)
+       @sed -i -e "s/CC.*:=/CC ?=/" $(LIB_ROOT)/$(LIBHDHR)/Makefile
+       @sed -i -e "s/STRIP.*:=/STRIP ?=/" $(LIB_ROOT)/$(LIBHDHR)/Makefile
        @touch $@

 $(LIB_ROOT)/$(LIBHDHR)/.tvh_build: \
-- 
1.9.1
EOF

sed -i 's/libbluray \\/libbluray \\\n\tlibdvbcsa \\/g' ../meta-openpli/recipes-openpli/images/openpli-enigma2-feed.bb

mkdir -p ../meta-openpli/recipes-multimedia/libdvbcsa/files

cat <<'EOF' > ../meta-openpli/recipes-multimedia/libdvbcsa/libdvbcsa.bb
SUMMARY = "Open implementation of the DVB Common Scrambling Algorithm, encrypt and decrypt " 
SECTION = "libs/multimedia" 
LICENSE = "LGPLv2.1+" 
LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f" 

SRCREV = "bc6c0b164a87ce05e9925785cc6fb3f54c02b026" 

PV = "1.1.0" 

SRC_URI = "git://code.videolan.org/videolan/libdvbcsa.git;protocol=https \
           file://libdvbcsa.pc \
" 

S = "${WORKDIR}/git" 

inherit autotools lib_package pkgconfig

do_install_append() {
    install -d ${D}${includedir}/dvbcsa/
    install -d ${D}${libdir}/pkgconfig
    install -m 0644 ${S}/src/dvbcsa/dvbcsa.h ${D}${includedir}/dvbcsa/
    install -m 0644 ${WORKDIR}/libdvbcsa.pc ${D}${libdir}/pkgconfig/
}
EOF
cat <<'EOF' > ../meta-openpli/recipes-multimedia/libdvbcsa/files/libdvbcsa.pc
prefix=/usr
libdir=${prefix}/lib
includedir=${prefix}/include

Name: libdvbcsa
Description:  is a free implementation of the DVB Common Scrambling Algorithm - DVB/CSA - with encryption and decryption capabilities.
Version: 1.1.0
Requires:
Libs: -L${libdir} -ldvbcsa
EOF

#rebuild feed tvheadend v4.3 again may take ~5 minutes
MACHINE=hd530c bitbake openpli-enigma2-feed

Prepare feed updated catalinii minisatip

This will need previous libdvbcsa step see tvheadend 4.3!

cat <<'EOF' > ../meta-openpli/recipes-openpli/satip/minisatip.bb
SUMMARY = "SAT>IP server" 
MAINTAINER = "catalinii" 
require conf/license/license-gplv2.inc

HOMEPAGE = "https://minisatip.org/" 
DEPENDS = "libdvbcsa openssl" 
RDEPENDS_${PN} = "libdvbcsa openssl" 

SRC_URI = " \
    git://github.com/catalinii/minisatip.git;protocol=http \
    file://minisatip.init \
    " 

SRCREV = "${AUTOREV}" 
UPSTREAMVERSION = "3.1d" 
PV = "${UPSTREAMVERSION}+git${SRCPV}" 

S = "${WORKDIR}/git" 
BUILD = "${WORKDIR}/git" 

inherit autotools-brokensep

INITSCRIPT_NAME = "minisatip" 
EXTRA_OECONF = "--enable-enigma --disable-netcv" 

do_configure_prepend () {
}

do_install () {
    install -d -m 0755 ${D}/${bindir}
    install -d -m 0755 ${D}/${datadir}/${PN}
    install -d -m 0755 ${D}/etc/init.d
    install -m 0755 ${S}/minisatip ${D}/${bindir}/
    install -m 0755 ${WORKDIR}/minisatip.init ${D}/etc/init.d/minisatip
    cp -r --preserve=timestamps ${S}/html ${D}/${datadir}/${PN}
}
EOF

mkdir ../meta-openpli/recipes-openpli/satip/files
cat <<'EOF' > ../meta-openpli/recipes-openpli/satip/files/minisatip.init
#!/bin/sh
#
# start/stop minisatip server.

if [ -e /etc/default/minisatip ]; then
    . /etc/default/minisatip
fi

if ! [ -x /usr/bin/minisatip ]; then
    exit 0
fi

case "$1" in
    start)
    echo -n "Starting minisatip:" 
    start-stop-daemon -S -x /usr/bin/minisatip -p /var/run/minisatip.pid -- -R /usr/share/minisatip/html $MINISATIP_OPTS > /dev/null
    echo "." 
    ;;
    stop)
    echo -n "Stopping minisatip:" 
    start-stop-daemon -K -x /usr/bin/minisatip -p /var/run/minisatip.pid > /dev/null
    echo "." 
    ;;
    restart)
    echo -n "Restarting minisatip:" 
    echo
    $0 stop
    $0 start
    # killall -HUP inetd
    #echo "." 
    ;;
    *)
    echo "Usage: /etc/init.d/minisatip {start|stop|restart}" 
    exit 1
    ;;
esac

exit 0
EOF
sed -i 's|81f519fa5346968906c3348d069d0fcddd4b62c2|1ef3c7151b5dd5d275b6b4c66c98564b83a7721c|g' ../meta-openpli/conf/distro/reporefs.conf

#rebuild again with updated minisatip support
MACHINE=hd530c bitbake openpli-enigma2-feed

Replies (8)

RE: Howto build Tvheadend 4.2.x /4.3 with yocto / openembedded / bitbake / OpenPLi 6.2 for mips32el Mut@nt hd530c VuSOLO - Added by Walter av almost 6 years ago

Debugging

https://tvheadend.org/projects/tvheadend/wiki/Debugging

Trying to install the tvheadend-dbg package shows that also dependent packages should be installed using their respective dbg variant...

opkg install tvheadend-dbg_4.31\+git79ea2a42c477e315ffa2143252273fe2db0c2165-r0_mi
ps32el.ipk
tvheadend-dbg: unsatisfied recommendation for dbus-lib-dbg
tvheadend-dbg: unsatisfied recommendation for libavahi-client-dbg
tvheadend-dbg: unsatisfied recommendation for libavahi-common-dbg
tvheadend-dbg: unsatisfied recommendation for libavcodec-dbg
tvheadend-dbg: unsatisfied recommendation for libavfilter-dbg
tvheadend-dbg: unsatisfied recommendation for libavformat-dbg
tvheadend-dbg: unsatisfied recommendation for libavutil-dbg
tvheadend-dbg: unsatisfied recommendation for libc6-dbg
tvheadend-dbg: unsatisfied recommendation for libcrypto-dbg
tvheadend-dbg: unsatisfied recommendation for libdvbcsa-dbg
tvheadend-dbg: unsatisfied recommendation for libpcre-dbg
tvheadend-dbg: unsatisfied recommendation for libssl-dbg
tvheadend-dbg: unsatisfied recommendation for libz-dbg
Installing tvheadend-dbg (4.31+git79ea2a42c477e315ffa2143252273fe2db0c2165) on root.
Configuring tvheadend-dbg

Although no further install errors show up, it seems that /usr/bin/tvheadend(-dbg) is missing tvheadend was installed in "/usr/bin/.debug/tvheadend" but it stalls on the following error so no debugging yet sorry.

/usr/bin/tvheadend: line 1: ELFP�: not found
/usr/bin/tvheadend: line 2: syntax error: unexpected "(" 

RE: Howto build Tvheadend 4.2.x /4.3 with yocto / openembedded / bitbake / OpenPLi 6.2 for mips32el Mut@nt hd530c VuSOLO - Added by Digi Hoe almost 6 years ago

Sorry for abit oftopic, any chance you could share your tvheadend.ipk and newer minisatip.ipk files?

Also would you think that CI-module could work in tvheadend?

Best regadrs!

RE: Howto build Tvheadend 4.2.x /4.3 with yocto / openembedded / bitbake / OpenPLi 6.2 for mips32el Mut@nt hd530c VuSOLO - Added by Walter av almost 6 years ago

Digi Hoe wrote:

Sorry for abit oftopic, any chance you could share your tvheadend.ipk and newer minisatip.ipk files?

Also would you think that CI-module could work in tvheadend?

Best regadrs!

Not really useful sharing the *.ipk files since they don't work reliable, they also come with dependencies... and the reason I did write a step by step tutorial is the ability to make them yourself. Any chance of showing which steps are not clear?

Also are we talking about the same hardware (offtopic?) as far as I know the hd530c does not come with a CI?

Tvheadend supports some CI's / tuner combinations fine for more than 2 years now.

RE: Howto build Tvheadend 4.2.x /4.3 with yocto / openembedded / bitbake / OpenPLi 6.2 for mips32el Mut@nt hd530c VuSOLO - Added by Digi Hoe almost 6 years ago

Walter av wrote:

Digi Hoe wrote:

Sorry for abit oftopic, any chance you could share your tvheadend.ipk and newer minisatip.ipk files?

Also would you think that CI-module could work in tvheadend?

Best regadrs!

Not really useful sharing the *.ipk files since they don't work reliable, they also come with dependencies... and the reason I did write a step by step tutorial is the ability to make them yourself. Any chance of showing which steps are not clear?

Also are we talking about the same hardware (offtopic?) as far as I know the hd530c does not come with a CI?

Tvheadend supports some CI's / tuner combinations fine for more than 2 years now.

Your titorial is fine and detailed, easy to follow, however most people do not want to load an older specific Linux distro (is ubuntu 16.04.05 fine btw, since thats the one for dl on the ubuntu site) and then go through hours of hours, I might do, but the general public will not (and minisatip can be compiled static, would be good if tvheadend also had that option).

Yes ofcourse I know about the CI's working in general, but since the title also says Vu Solo also I kind of thought that you had tried it on that set top box too (one of many boxes I do own).

Best regards and thank your for your time and effort!

RE: Howto build Tvheadend 4.2.x /4.3 with yocto / openembedded / bitbake / OpenPLi 6.2 for mips32el Mut@nt hd530c VuSOLO - Added by Walter av almost 6 years ago

You're absolutely right about the VUsolo having a CI, sorry for guessing you had a hd530c. I don't own a VUsolo but I'm not sure any more when testing if the interanl CI was listed as linuxdvb api v5 compatible CI to its DVB-S2 tuner in the TVheadend webinterface. Check the kernel version of the Vusolo and see if that may already answer the questions if dvb api5 dvbcsa is already supported since linux 3.x or compile own version?

The problem with the Vusolo is its very limited nand size, therefor during testing of this tvheadend package I only saw that it runs one of the early 4.x Tvheadend that got build and after detecting tuner did some FTA setup and than noticed that the root / was full will installing the lastest 4.3 version of package (which is a lot bigger) and than the device crashed out of disk space. Since then did not try again.

MAybe in future.

RE: Howto build Tvheadend 4.2.x /4.3 with yocto / openembedded / bitbake / OpenPLi 6.2 for mips32el Mut@nt hd530c VuSOLO - Added by Marco D almost 6 years ago

Thanks for your tutorial.

I'm using a VU+ Uno 4K SE receiver (Enigma2) with DVB-C FBC Tuner. It's an ARM-based receiver with 1,7 GHz Dual-Core CPU, 2GB RAM and even an HD video hardware transcoder built-in.
Specs: http://www.vuplus.com/sub/sub0117.php

Is it possible to install Tvheadend on this receiver with your provided instructions? Can the build process be done on the machine itself (using the mounted hard drive for the large file requirements)?

RE: Howto build Tvheadend 4.2.x /4.3 with yocto / openembedded / bitbake / OpenPLi 6.2 for mips32el Mut@nt hd530c VuSOLO - Added by Peter Bašista over 4 years ago

I'm using a VU+ Uno 4K SE receiver (Enigma2) with DVB-C FBC Tuner.

I am also using the same device, but with a DVB-S FBC tuner.

Is it possible to install Tvheadend on this receiver with your provided instructions?

Most probably yes. I have done it slightly differently by at first building the entire current OpenATV image to ensure compatibility and then building Tvheadend by using bitbake and the existing tvheadend recipe. It took hours and I remember that there were issues (packages failing to build) that needed to be resolved manually.

I have done the same thing a while back on Octagon SF4008 and there the Tvheadend works very well. With regards to VU Plus Uno 4K SE, at least in my case Tvheadend does not seem to work with the device's tuner correctly (https://tvheadend.org/boards/5/topics/41039).

Can the build process be done on the machine itself (using the mounted hard drive for the large file requirements)?

Yes, but it would take an unnecessarily long time. Also, in order to install all build dependencies, it would be perhaps simpler to create and use a chroot environment with some standard Linux distribution where the necessary tools are more readily available. In such case, I think that it makes more sense to use a regular, possibly more powerful computer.

    (1-8/8)