diff --git a/.github/workflows/buildbot.yml b/.github/workflows/buildbot.yml
index 0db1c7f0853..e46e714b074 100644
--- a/.github/workflows/buildbot.yml
+++ b/.github/workflows/buildbot.yml
@@ -2,7 +2,7 @@ name: buildbot
on:
push:
- branches: [ Developer ]
+ branches: [ Developer, dm9x0 ]
workflow_dispatch:
diff --git a/.github/workflows/enigma2.yml b/.github/workflows/enigma2.yml
index c681dd91b34..c955896a3ff 100644
--- a/.github/workflows/enigma2.yml
+++ b/.github/workflows/enigma2.yml
@@ -2,12 +2,12 @@ name: Enigma2 Python 3
on:
push:
- branches: [ Release, Developer, FCC ]
+ branches: [ Release, Developer, FCC, dm9x0 ]
paths-ignore:
- '**/README'
- '**/DOCS'
pull_request:
- branches: [Release, Developer, FCC ]
+ branches: [Release, Developer, FCC, dm9x0 ]
paths-ignore:
- '**/README'
- '**/DOCS'
diff --git a/CI/build.sh b/CI/build.sh
index e340647b4e3..f58eeae85cd 100755
--- a/CI/build.sh
+++ b/CI/build.sh
@@ -13,7 +13,7 @@ commit_files() {
rm -rf *.pyc
rm -rf *.pyo
rm -rf *.mo
- git checkout Developer
+ git checkout dm9x0
./CI/chmod.sh
./CI/dos2unix.sh
./CI/PEP8.sh
@@ -21,7 +21,7 @@ commit_files() {
upload_files() {
git remote add upstream https://${GITHUB_TOKEN}@github.com/OpenViX/enigma2.git > /dev/null 2>&1
- git push --quiet upstream Developer || echo "failed to push with error $?"
+ git push --quiet upstream dm9x0 || echo "failed to push with error $?"
}
setup_git
diff --git a/ChangeLog b/ChangeLog
index b9f5180f4e9..5d1a7656f35 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1270,3 +1270,15 @@ openvix: developer 6.6.000.004
openvix: developer 6.6.001.001
openvix: developer 6.6.001.002
openvix: developer 6.6.001.003
+openvix: developer 6.6.001.004
+openvix: developer 6.6.002.001
+openvix: developer 6.6.002.002
+openvix: developer 6.6.002.003
+openvix: developer 6.6.002.004
+openvix: developer 6.6.003.001
+openvix: developer 6.6.003.002
+openvix: developer 6.6.004.001
+openvix: developer 6.6.004.002
+openvix: developer 6.6.004.003
+openvix: developer 6.6.004.004
+openvix: developer 6.6.004.005
diff --git a/configure.ac b/configure.ac
index 094c1ff5691..05988050c51 100644
--- a/configure.ac
+++ b/configure.ac
@@ -91,6 +91,8 @@ AM_CONDITIONAL(DM800, test "$BOXTYPE" == "dm800")
AM_CONDITIONAL(DM8000, test "$BOXTYPE" == "dm8000")
AM_CONDITIONAL(DM800SE, test "$BOXTYPE" == "dm800se")
AM_CONDITIONAL(DM800SEV2, test "$BOXTYPE" == "dm800sev2")
+AM_CONDITIONAL(DM900, test "$BOXTYPE" == "dm900")
+AM_CONDITIONAL(DM920, test "$BOXTYPE" == "dm920")
AM_CONDITIONAL(E3HD, test "$BOXTYPE" == "e3hd")
AM_CONDITIONAL(EBOX5000, test "$BOXTYPE" == "ebox5000")
AM_CONDITIONAL(EBOX5100, test "$BOXTYPE" == "ebox5100")
@@ -306,6 +308,17 @@ if test x"$withcolorlcd220" != xno ; then
fi
AM_CONDITIONAL(HAVE_COLORLCD220, test x"$withcolorlcd220" != xno)
+AC_ARG_WITH(colorlcd390,
+ AS_HELP_STRING([--with-colorlcd390], [use 390x240 16bpp color display, yes or no]),
+ [[withcolorlcd390=$withval]],
+ [[withcolorlcd390=no]]
+)
+if test x"$withcolorlcd390" != xno ; then
+ AC_DEFINE(HAVE_COLORLCD390, 1,[Define when using a 390x240 color display device])
+fi
+
+AM_CONDITIONAL(HAVE_COLORLCD390, test x"$withcolorlcd390" != xno)
+
AC_ARG_WITH(colorlcd400,
AS_HELP_STRING([--with-colorlcd400], [use 400x176 16bpp color display, yes or no]),
[[withcolorlcd400=$withval]],
@@ -402,6 +415,14 @@ if test `echo "$BOXTYPE" | cut -b 1-2` == "vu"; then
AC_DEFINE(FORCE_ADVANCED_REMOTE, 1,[define to fixup the input device identification when the remote control is actually an 'advanced' remote (with play/forward/rewind keys)])
fi
+if test "$BOXTYPE" == "dm900" -o "$BOXTYPE" == "dm920"; then
+ AC_DEFINE(CONFIG_ION, 1,[define BOX use ION Allocator])
+ AC_DEFINE(HAVE_HDMIIN_DM, 1,[has hdmi in dm])
+ AC_DEFINE(LCD_DM900_Y_OFFSET, 4,[define LCD Y offset for dm900 and dm920])
+ AC_DEFINE(DREAMBOX_DUAL_TUNER, 1,[define it is dreambox dual tuner present])
+ AC_DEFINE(FORCE_NO_BLENDING_ACCELERATION, 1,[define when the framebuffer acceleration does not have alphablending support, though the autodetection might indicate that it does])
+fi
+
if test `echo "$BOXTYPE" | cut -b 1-2` == "gb"; then
AC_DEFINE(KEY_PLAY_ACTUALLY_IS_KEY_PLAYPAUSE, 1,[define when rc sends a KEY_PLAY event for its KEY_PLAYPAUSE key])
AC_DEFINE(FORCE_NO_BLENDING_ACCELERATION, 1,[define when the framebuffer acceleration does not have alphablending support, though the autodetection might indicate that it does])
@@ -586,6 +607,7 @@ data/7segment/Makefile
data/display96/Makefile
data/display128/Makefile
data/display220/Makefile
+data/display390/Makefile
data/display400/Makefile
data/display480/Makefile
data/display720/Makefile
diff --git a/data/7segment/skin_display.xml b/data/7segment/skin_display.xml
index 3fbc3764166..f73f35a5fd6 100644
--- a/data/7segment/skin_display.xml
+++ b/data/7segment/skin_display.xml
@@ -16,7 +16,7 @@
-
+
@@ -52,16 +52,16 @@
-
+
-
-
+
+
-
-
+
+
@@ -70,23 +70,23 @@
-
+
-
+
-
+
-
+
-
+
InPercent
@@ -111,7 +111,7 @@
-
+
diff --git a/data/Makefile.am b/data/Makefile.am
index 72c31ec8d3a..123c4f64f6e 100644
--- a/data/Makefile.am
+++ b/data/Makefile.am
@@ -41,6 +41,10 @@ if HAVE_COLORLCD220
SUBDIRS += display220
endif
+if HAVE_COLORLCD390
+SUBDIRS += display390
+endif
+
if HAVE_COLORLCD400
SUBDIRS += display400
endif
diff --git a/data/display128/skin_display.xml b/data/display128/skin_display.xml
index 339942f2905..520a672c40f 100644
--- a/data/display128/skin_display.xml
+++ b/data/display128/skin_display.xml
@@ -55,7 +55,7 @@
-
+
Name
@@ -143,7 +143,7 @@
-
+
@@ -179,7 +179,7 @@
-
+
@@ -188,16 +188,16 @@
-
+
-
+
-
+
-
+
diff --git a/data/display220/skin_display.xml b/data/display220/skin_display.xml
index 171f9edce26..31760c528d5 100644
--- a/data/display220/skin_display.xml
+++ b/data/display220/skin_display.xml
@@ -168,7 +168,7 @@
-
+
Name
@@ -217,7 +217,7 @@
-
+
@@ -254,7 +254,7 @@
-
+
@@ -265,51 +265,51 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -363,7 +363,7 @@
-
+
@@ -377,21 +377,21 @@
-
+
-
+
-
+
@@ -419,42 +419,42 @@
-
+
-
+
-
+
-
+
-
+
-
+
diff --git a/data/display220/skin_display_picon.xml b/data/display220/skin_display_picon.xml
index dc263317823..1090ff4e58a 100644
--- a/data/display220/skin_display_picon.xml
+++ b/data/display220/skin_display_picon.xml
@@ -146,7 +146,7 @@
-
+
Reference
@@ -175,7 +175,7 @@
-
+
@@ -212,7 +212,7 @@
-
+
@@ -223,43 +223,43 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -313,7 +313,7 @@
-
+
@@ -327,21 +327,21 @@
-
+
-
+
-
+
@@ -369,42 +369,42 @@
-
+
-
+
-
+
-
+
-
+
-
+
diff --git a/data/display390/Makefile.am b/data/display390/Makefile.am
new file mode 100644
index 00000000000..897f46f027e
--- /dev/null
+++ b/data/display390/Makefile.am
@@ -0,0 +1,2 @@
+installdir = $(pkgdatadir)/display/skin_default
+dist_install_DATA = *.xml *.png
diff --git a/data/display390/backward.png b/data/display390/backward.png
new file mode 100644
index 00000000000..0c307d0bff0
Binary files /dev/null and b/data/display390/backward.png differ
diff --git a/data/display390/crypt.png b/data/display390/crypt.png
new file mode 100644
index 00000000000..e722ee29e9c
Binary files /dev/null and b/data/display390/crypt.png differ
diff --git a/data/display390/dolby.png b/data/display390/dolby.png
new file mode 100644
index 00000000000..f577392b1d0
Binary files /dev/null and b/data/display390/dolby.png differ
diff --git a/data/display390/format.png b/data/display390/format.png
new file mode 100644
index 00000000000..ddf702985d8
Binary files /dev/null and b/data/display390/format.png differ
diff --git a/data/display390/forward.png b/data/display390/forward.png
new file mode 100644
index 00000000000..ab493d99fff
Binary files /dev/null and b/data/display390/forward.png differ
diff --git a/data/display390/hd.png b/data/display390/hd.png
new file mode 100644
index 00000000000..e8098dc13b8
Binary files /dev/null and b/data/display390/hd.png differ
diff --git a/data/display390/pause.png b/data/display390/pause.png
new file mode 100644
index 00000000000..5ba601e6199
Binary files /dev/null and b/data/display390/pause.png differ
diff --git a/data/display390/play.png b/data/display390/play.png
new file mode 100644
index 00000000000..a2ca7620874
Binary files /dev/null and b/data/display390/play.png differ
diff --git a/data/display390/rec.png b/data/display390/rec.png
new file mode 100644
index 00000000000..559b098beca
Binary files /dev/null and b/data/display390/rec.png differ
diff --git a/data/display390/skin_display.xml b/data/display390/skin_display.xml
new file mode 100644
index 00000000000..fecf143fee7
--- /dev/null
+++ b/data/display390/skin_display.xml
@@ -0,0 +1,471 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ IsHD
+
+
+
+ IsMultichannel
+
+
+
+
+
+ TunerUseMask
+ 1
+
+
+
+ TunerUseMask
+ 2
+
+
+
+ TunerUseMask
+ 4
+
+
+
+ TunerUseMask
+ 8
+
+
+
+ NUMBER
+ 0,0
+
+
+
+ NUMBER
+ 1,1
+
+
+
+ NUMBER
+ 2,2
+
+
+
+ NUMBER
+ 3,3
+
+
+
+
+
+
+ Name
+
+
+ Name
+
+
+ Progress
+
+
+ VFDRemaining
+ VFDNoSeconds
+
+
+
+
+
+
+ NameOnly
+
+
+ Name
+
+
+ Progress
+
+
+ VFDRemaining
+ VFDNoSeconds
+
+
+
+
+
+
+
+
+
+
+
+ Name
+
+
+ VFDPosition
+
+
+ VFDPosition
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ RecordServiceName
+
+
+
+ Duration
+ AsLength
+
+
+ FileSize
+
+
+
+
+
+
+
+
+
+ Name
+
+
+ Name
+
+
+ Progress
+
+
+ VFDRemaining
+ VFDNoSeconds
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ShortDate
+
+
+ Format:%H:%M
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name
+
+
+ VFDPosition
+
+
+
+ VFDPosition
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/data/display390/skin_display_picon.xml b/data/display390/skin_display_picon.xml
new file mode 100644
index 00000000000..d6c9430fd13
--- /dev/null
+++ b/data/display390/skin_display_picon.xml
@@ -0,0 +1,459 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ IsHD
+
+
+
+ IsMultichannel
+
+
+
+
+
+ TunerUseMask
+ 1
+
+
+
+ TunerUseMask
+ 2
+
+
+
+ TunerUseMask
+ 4
+
+
+
+ TunerUseMask
+ 8
+
+
+
+ NUMBER
+ 0,0
+
+
+
+ NUMBER
+ 1,1
+
+
+
+ NUMBER
+ 2,2
+
+
+
+ NUMBER
+ 3,3
+
+
+
+
+
+
+ Name
+
+
+ Name
+
+
+ Progress
+
+
+ VFDRemaining
+ VFDNoSeconds
+
+
+
+
+
+
+ Reference
+
+
+ Progress
+
+
+ Name
+
+
+ VFDRemaining
+ VFDNoSeconds
+
+
+
+
+
+
+
+
+
+
+
+ Name
+
+
+ VFDPosition
+
+
+ VFDPosition
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ RecordServiceName
+
+
+
+ Duration
+ AsLength
+
+
+ FileSize
+
+
+
+
+
+
+
+
+
+ Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ FullDate
+
+
+ Format:%H:%M
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name
+
+
+ VFDPosition
+
+
+
+ VFDPosition
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/data/display390/slow.png b/data/display390/slow.png
new file mode 100644
index 00000000000..e6a81a9adf0
Binary files /dev/null and b/data/display390/slow.png differ
diff --git a/data/display390/stop.png b/data/display390/stop.png
new file mode 100644
index 00000000000..b7567fe3b68
Binary files /dev/null and b/data/display390/stop.png differ
diff --git a/data/display390/tuner-a-act.png b/data/display390/tuner-a-act.png
new file mode 100644
index 00000000000..79cf5515a2d
Binary files /dev/null and b/data/display390/tuner-a-act.png differ
diff --git a/data/display390/tuner-a.png b/data/display390/tuner-a.png
new file mode 100644
index 00000000000..6639458a819
Binary files /dev/null and b/data/display390/tuner-a.png differ
diff --git a/data/display390/tuner-b-act.png b/data/display390/tuner-b-act.png
new file mode 100644
index 00000000000..a8effd66640
Binary files /dev/null and b/data/display390/tuner-b-act.png differ
diff --git a/data/display390/tuner-b.png b/data/display390/tuner-b.png
new file mode 100644
index 00000000000..a7dcdd531d4
Binary files /dev/null and b/data/display390/tuner-b.png differ
diff --git a/data/display390/tuner-c-act.png b/data/display390/tuner-c-act.png
new file mode 100644
index 00000000000..fd2e4735dc6
Binary files /dev/null and b/data/display390/tuner-c-act.png differ
diff --git a/data/display390/tuner-c.png b/data/display390/tuner-c.png
new file mode 100644
index 00000000000..cec48eae5af
Binary files /dev/null and b/data/display390/tuner-c.png differ
diff --git a/data/display390/tuner-d-act.png b/data/display390/tuner-d-act.png
new file mode 100644
index 00000000000..a022923c30c
Binary files /dev/null and b/data/display390/tuner-d-act.png differ
diff --git a/data/display390/tuner-d.png b/data/display390/tuner-d.png
new file mode 100644
index 00000000000..441cea314ed
Binary files /dev/null and b/data/display390/tuner-d.png differ
diff --git a/data/display390/txt.png b/data/display390/txt.png
new file mode 100644
index 00000000000..9df696c079e
Binary files /dev/null and b/data/display390/txt.png differ
diff --git a/data/display390/update_stable.png b/data/display390/update_stable.png
new file mode 100644
index 00000000000..f0b1024d198
Binary files /dev/null and b/data/display390/update_stable.png differ
diff --git a/data/display390/update_unstable.png b/data/display390/update_unstable.png
new file mode 100644
index 00000000000..4b10a669972
Binary files /dev/null and b/data/display390/update_unstable.png differ
diff --git a/data/display400/skin_display.xml b/data/display400/skin_display.xml
index 55d0d8a26e7..d5207a3372f 100644
--- a/data/display400/skin_display.xml
+++ b/data/display400/skin_display.xml
@@ -181,7 +181,7 @@
-
+
Name
@@ -229,7 +229,7 @@
-
+
@@ -238,24 +238,13 @@
-
- FullDate
+
+ ShortDate
-
+
Format:%H:%M
-
-
-
-
-
-
-
-
-
-
-
@@ -266,7 +255,7 @@
-
+
@@ -277,51 +266,51 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -375,7 +364,7 @@
-
+
@@ -389,21 +378,21 @@
-
+
-
+
-
+
@@ -431,42 +420,42 @@
-
+
-
+
-
+
-
+
-
+
-
+
diff --git a/data/display400/skin_display_picon.xml b/data/display400/skin_display_picon.xml
index ff8590d4daa..d6c9430fd13 100644
--- a/data/display400/skin_display_picon.xml
+++ b/data/display400/skin_display_picon.xml
@@ -181,7 +181,7 @@
-
+
Reference
@@ -211,7 +211,7 @@
-
+
@@ -248,7 +248,7 @@
-
+
@@ -259,46 +259,46 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -352,7 +352,7 @@
-
+
@@ -366,21 +366,21 @@
-
+
-
+
-
+
@@ -408,42 +408,42 @@
-
+
-
+
-
+
-
+
-
+
-
+
diff --git a/data/display480/skin_display.xml b/data/display480/skin_display.xml
index 20112bad905..493f94cbd22 100644
--- a/data/display480/skin_display.xml
+++ b/data/display480/skin_display.xml
@@ -148,7 +148,7 @@
-
+
Name
@@ -225,7 +225,7 @@
-
+
Name
@@ -304,29 +304,29 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
-
+
+
@@ -384,7 +384,7 @@
-
+
@@ -409,7 +409,7 @@
-
+
@@ -418,17 +418,17 @@
-
+
-
+
-
+
@@ -493,21 +493,21 @@
-
+
-
+
-
+
@@ -546,7 +546,7 @@
-
+
@@ -565,7 +565,7 @@
-
+
diff --git a/data/display480/skin_display_picon.xml b/data/display480/skin_display_picon.xml
index d54cfa64c54..dd8b50fc13d 100644
--- a/data/display480/skin_display_picon.xml
+++ b/data/display480/skin_display_picon.xml
@@ -163,7 +163,7 @@
-
+
Reference
@@ -186,7 +186,7 @@
-
+
Name
@@ -196,12 +196,12 @@
-
+
-
+
@@ -214,18 +214,18 @@
-
+
-
+
-
+
@@ -252,7 +252,7 @@
-
+
@@ -296,7 +296,7 @@
-
+
InPercent
@@ -305,27 +305,27 @@
-
+
-
+
-
+
-
+
-
+
-
+
Name
@@ -349,14 +349,14 @@
-
+
-
+
-
+
@@ -364,12 +364,12 @@
-
+
-
+
@@ -399,7 +399,7 @@
-
+
@@ -411,12 +411,12 @@
-
+
-
+
@@ -437,32 +437,32 @@
-
+
-
+
-
+
-
+
-
+
-
+
@@ -489,7 +489,7 @@
-
+
diff --git a/data/display720/Default_with_Analogue_Clock_Standby/skin_display.xml b/data/display720/Default_with_Analogue_Clock_Standby/skin_display.xml
index 967b4cb546c..ddc6e44a0f4 100644
--- a/data/display720/Default_with_Analogue_Clock_Standby/skin_display.xml
+++ b/data/display720/Default_with_Analogue_Clock_Standby/skin_display.xml
@@ -34,7 +34,7 @@
-
+
@@ -44,14 +44,14 @@
-
+
RtpText
-
+
@@ -61,13 +61,13 @@
-
+
-
+
-
+
diff --git a/data/display720/Default_with_Picon_Fullscreen/skin_display.xml b/data/display720/Default_with_Picon_Fullscreen/skin_display.xml
index cf8ae4db452..da987c46f91 100644
--- a/data/display720/Default_with_Picon_Fullscreen/skin_display.xml
+++ b/data/display720/Default_with_Picon_Fullscreen/skin_display.xml
@@ -34,26 +34,26 @@
-
+
-
+
RtpText
-
+
-
+
-
+
-
+
diff --git a/data/display720/Default_with_Picon_Fullscreen_and_Analogue_Clock_Standby/skin_display.xml b/data/display720/Default_with_Picon_Fullscreen_and_Analogue_Clock_Standby/skin_display.xml
index 58f66b498b2..02ce36bb737 100644
--- a/data/display720/Default_with_Picon_Fullscreen_and_Analogue_Clock_Standby/skin_display.xml
+++ b/data/display720/Default_with_Picon_Fullscreen_and_Analogue_Clock_Standby/skin_display.xml
@@ -34,26 +34,26 @@
-
+
-
+
RtpText
-
+
-
+
-
+
-
+
diff --git a/data/display720/Default_with_Picon_and_Analogue_Clock_Standby/skin_display.xml b/data/display720/Default_with_Picon_and_Analogue_Clock_Standby/skin_display.xml
index 951b1cef27a..b42be1229ef 100644
--- a/data/display720/Default_with_Picon_and_Analogue_Clock_Standby/skin_display.xml
+++ b/data/display720/Default_with_Picon_and_Analogue_Clock_Standby/skin_display.xml
@@ -34,7 +34,7 @@
-
+
@@ -46,14 +46,14 @@
-
+
RtpText
-
+
@@ -65,13 +65,13 @@
-
+
-
+
-
+
diff --git a/data/display720/skin_display.xml b/data/display720/skin_display.xml
index 135b688d01a..93d1a7a955e 100644
--- a/data/display720/skin_display.xml
+++ b/data/display720/skin_display.xml
@@ -35,7 +35,7 @@
-
+
@@ -45,14 +45,14 @@
-
+
RtpText
-
+
@@ -62,13 +62,13 @@
-
+
-
+
-
+
diff --git a/data/display720/skin_display_picon.xml b/data/display720/skin_display_picon.xml
index 63c4b906a28..26158d231bf 100644
--- a/data/display720/skin_display_picon.xml
+++ b/data/display720/skin_display_picon.xml
@@ -35,7 +35,7 @@
-
+
@@ -47,14 +47,14 @@
-
+
RtpText
-
+
@@ -66,13 +66,13 @@
-
+
-
+
-
+
diff --git a/data/display720/skin_display_templates.xml b/data/display720/skin_display_templates.xml
index f94f5418c22..c9b4cf32bc0 100644
--- a/data/display720/skin_display_templates.xml
+++ b/data/display720/skin_display_templates.xml
@@ -354,7 +354,7 @@
-
+
@@ -367,7 +367,7 @@
-
+
@@ -392,13 +392,13 @@
-
+
-
-
+
+
@@ -441,7 +441,7 @@
-
+
@@ -463,7 +463,7 @@
-
+
@@ -472,7 +472,7 @@
-
+
@@ -489,13 +489,13 @@
-
+
-
+
diff --git a/data/display800/Default_with_Picon_Fullscreen/skin_display.xml b/data/display800/Default_with_Picon_Fullscreen/skin_display.xml
index 737fc5ac2c4..1c6c832242e 100644
--- a/data/display800/Default_with_Picon_Fullscreen/skin_display.xml
+++ b/data/display800/Default_with_Picon_Fullscreen/skin_display.xml
@@ -34,26 +34,26 @@
-
+
-
+
RtpText
-
+
-
+
-
+
-
+
diff --git a/data/display800/skin_display.xml b/data/display800/skin_display.xml
index e0a1a0c18c3..14f4e6e9515 100644
--- a/data/display800/skin_display.xml
+++ b/data/display800/skin_display.xml
@@ -44,7 +44,7 @@
-
+
@@ -52,14 +52,14 @@
-
+
RtpText
-
+
@@ -67,13 +67,13 @@
-
+
-
+
-
+
diff --git a/data/display800/skin_display_picon.xml b/data/display800/skin_display_picon.xml
index 2d0c279af35..47cb0074f92 100644
--- a/data/display800/skin_display_picon.xml
+++ b/data/display800/skin_display_picon.xml
@@ -35,7 +35,7 @@
-
+
@@ -44,14 +44,14 @@
-
+
RtpText
-
+
@@ -60,13 +60,13 @@
-
+
-
+
-
+
diff --git a/data/display800/skin_display_templates.xml b/data/display800/skin_display_templates.xml
index 0b47936d2f8..e4ea4a67ecf 100644
--- a/data/display800/skin_display_templates.xml
+++ b/data/display800/skin_display_templates.xml
@@ -268,7 +268,7 @@
-
+
@@ -279,7 +279,7 @@
-
+
@@ -296,18 +296,18 @@
-
+
-
+
-
-
+
+
@@ -349,7 +349,7 @@
-
+
@@ -388,13 +388,13 @@
-
+
-
+
@@ -408,12 +408,12 @@
-
+
-
+
@@ -444,5 +444,24 @@
+
+
+
+
+
+ {"template": [
+ MultiContentEntryText(pos = (0,0), size = (720,160), flags = RT_HALIGN_CENTER|RT_VALIGN_CENTER, text = 1), # index 1 is the nim name,
+ ],
+ "fonts": [gFont("FdLcDLight",60),],
+ "itemHeight": 160
+ }
+
+
+
+
+
+
+
+
diff --git a/data/display96/skin_display.xml b/data/display96/skin_display.xml
index bdfe508aa60..0ec105f6ee2 100644
--- a/data/display96/skin_display.xml
+++ b/data/display96/skin_display.xml
@@ -71,7 +71,7 @@
-
+
Name
@@ -163,7 +163,7 @@
-
+
@@ -206,7 +206,7 @@
-
+
@@ -215,17 +215,17 @@
-
+
-
+
-
+
diff --git a/data/displaytext/skin_display.xml b/data/displaytext/skin_display.xml
index 19abe8353c5..56c137f957f 100644
--- a/data/displaytext/skin_display.xml
+++ b/data/displaytext/skin_display.xml
@@ -37,12 +37,12 @@
-
+
Name
-
+
@@ -87,24 +87,24 @@
-
+
-
+
-
+
-
+
-
+
@@ -146,7 +146,7 @@
-
+
diff --git a/data/setup.xml b/data/setup.xml
index bec78c0b25c..21f4c56664b 100644
--- a/data/setup.xml
+++ b/data/setup.xml
@@ -338,7 +338,7 @@
- config.oscaminfo.autoupdate
- config.oscaminfo.intervall
-
+
- config.misc.softcams
- config.misc.softcamrestarts
diff --git a/data/vfd128/skin_display.xml b/data/vfd128/skin_display.xml
index 2d44ae3ed72..38168775f35 100644
--- a/data/vfd128/skin_display.xml
+++ b/data/vfd128/skin_display.xml
@@ -159,7 +159,7 @@
-
+
Name
@@ -192,7 +192,7 @@
-
+
@@ -256,7 +256,7 @@
-
+
@@ -265,45 +265,45 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -351,7 +351,7 @@
-
+
@@ -362,16 +362,16 @@
-
+
-
+
-
+
@@ -391,33 +391,33 @@
-
+
-
+
-
+
-
+
-
+
-
+
diff --git a/data/vfd140/skin_display.xml b/data/vfd140/skin_display.xml
index 53e2ae9a8f8..a11c1c0e5ed 100644
--- a/data/vfd140/skin_display.xml
+++ b/data/vfd140/skin_display.xml
@@ -159,7 +159,7 @@
-
+
Name
@@ -192,7 +192,7 @@
-
+
@@ -256,7 +256,7 @@
-
+
@@ -265,45 +265,45 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -351,7 +351,7 @@
-
+
@@ -362,16 +362,16 @@
-
+
-
+
-
+
@@ -391,33 +391,33 @@
-
+
-
+
-
+
-
+
-
+
-
+
diff --git a/data/vfd255/skin_display.xml b/data/vfd255/skin_display.xml
index 3faf0b20366..e2b99e562a1 100644
--- a/data/vfd255/skin_display.xml
+++ b/data/vfd255/skin_display.xml
@@ -178,7 +178,7 @@
-
+
Name
@@ -219,7 +219,7 @@
-
+
@@ -269,7 +269,7 @@
-
+
@@ -280,51 +280,51 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -376,7 +376,7 @@
-
+
@@ -390,21 +390,21 @@
-
+
-
+
-
+
@@ -432,42 +432,42 @@
-
+
-
+
-
+
-
+
-
+
-
+
diff --git a/data/vfd255/skin_display_picon.xml b/data/vfd255/skin_display_picon.xml
index dac632751eb..7a1f387f6a3 100644
--- a/data/vfd255/skin_display_picon.xml
+++ b/data/vfd255/skin_display_picon.xml
@@ -184,7 +184,7 @@
-
+
Name
@@ -228,7 +228,7 @@
-
+
@@ -281,7 +281,7 @@
-
+
@@ -292,51 +292,51 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -388,7 +388,7 @@
-
+
@@ -402,21 +402,21 @@
-
+
-
+
-
+
@@ -444,42 +444,42 @@
-
+
-
+
-
+
-
+
-
+
-
+
diff --git a/dm9x0.patch b/dm9x0.patch
new file mode 100644
index 00000000000..ab2107b90a9
--- /dev/null
+++ b/dm9x0.patch
@@ -0,0 +1,1817 @@
+diff --git a/.github/workflows/buildbot.yml b/.github/workflows/buildbot.yml
+index 0db1c7f0853..e46e714b074 100644
+--- a/.github/workflows/buildbot.yml
++++ b/.github/workflows/buildbot.yml
+@@ -2,7 +2,7 @@ name: buildbot
+
+ on:
+ push:
+- branches: [ Developer ]
++ branches: [ Developer, dm9x0 ]
+
+ workflow_dispatch:
+
+diff --git a/.github/workflows/enigma2.yml b/.github/workflows/enigma2.yml
+index c681dd91b34..c955896a3ff 100644
+--- a/.github/workflows/enigma2.yml
++++ b/.github/workflows/enigma2.yml
+@@ -2,12 +2,12 @@ name: Enigma2 Python 3
+
+ on:
+ push:
+- branches: [ Release, Developer, FCC ]
++ branches: [ Release, Developer, FCC, dm9x0 ]
+ paths-ignore:
+ - '**/README'
+ - '**/DOCS'
+ pull_request:
+- branches: [Release, Developer, FCC ]
++ branches: [Release, Developer, FCC, dm9x0 ]
+ paths-ignore:
+ - '**/README'
+ - '**/DOCS'
+diff --git a/CI/build.sh b/CI/build.sh
+index e340647b4e3..f58eeae85cd 100755
+--- a/CI/build.sh
++++ b/CI/build.sh
+@@ -13,7 +13,7 @@ commit_files() {
+ rm -rf *.pyc
+ rm -rf *.pyo
+ rm -rf *.mo
+- git checkout Developer
++ git checkout dm9x0
+ ./CI/chmod.sh
+ ./CI/dos2unix.sh
+ ./CI/PEP8.sh
+@@ -21,7 +21,7 @@ commit_files() {
+
+ upload_files() {
+ git remote add upstream https://${GITHUB_TOKEN}@github.com/OpenViX/enigma2.git > /dev/null 2>&1
+- git push --quiet upstream Developer || echo "failed to push with error $?"
++ git push --quiet upstream dm9x0 || echo "failed to push with error $?"
+ }
+
+ setup_git
+diff --git a/configure.ac b/configure.ac
+index 094c1ff5691..05988050c51 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -91,6 +91,8 @@ AM_CONDITIONAL(DM800, test "$BOXTYPE" == "dm800")
+ AM_CONDITIONAL(DM8000, test "$BOXTYPE" == "dm8000")
+ AM_CONDITIONAL(DM800SE, test "$BOXTYPE" == "dm800se")
+ AM_CONDITIONAL(DM800SEV2, test "$BOXTYPE" == "dm800sev2")
++AM_CONDITIONAL(DM900, test "$BOXTYPE" == "dm900")
++AM_CONDITIONAL(DM920, test "$BOXTYPE" == "dm920")
+ AM_CONDITIONAL(E3HD, test "$BOXTYPE" == "e3hd")
+ AM_CONDITIONAL(EBOX5000, test "$BOXTYPE" == "ebox5000")
+ AM_CONDITIONAL(EBOX5100, test "$BOXTYPE" == "ebox5100")
+@@ -306,6 +308,17 @@ if test x"$withcolorlcd220" != xno ; then
+ fi
+ AM_CONDITIONAL(HAVE_COLORLCD220, test x"$withcolorlcd220" != xno)
+
++AC_ARG_WITH(colorlcd390,
++ AS_HELP_STRING([--with-colorlcd390], [use 390x240 16bpp color display, yes or no]),
++ [[withcolorlcd390=$withval]],
++ [[withcolorlcd390=no]]
++)
++if test x"$withcolorlcd390" != xno ; then
++ AC_DEFINE(HAVE_COLORLCD390, 1,[Define when using a 390x240 color display device])
++fi
++
++AM_CONDITIONAL(HAVE_COLORLCD390, test x"$withcolorlcd390" != xno)
++
+ AC_ARG_WITH(colorlcd400,
+ AS_HELP_STRING([--with-colorlcd400], [use 400x176 16bpp color display, yes or no]),
+ [[withcolorlcd400=$withval]],
+@@ -402,6 +415,14 @@ if test `echo "$BOXTYPE" | cut -b 1-2` == "vu"; then
+ AC_DEFINE(FORCE_ADVANCED_REMOTE, 1,[define to fixup the input device identification when the remote control is actually an 'advanced' remote (with play/forward/rewind keys)])
+ fi
+
++if test "$BOXTYPE" == "dm900" -o "$BOXTYPE" == "dm920"; then
++ AC_DEFINE(CONFIG_ION, 1,[define BOX use ION Allocator])
++ AC_DEFINE(HAVE_HDMIIN_DM, 1,[has hdmi in dm])
++ AC_DEFINE(LCD_DM900_Y_OFFSET, 4,[define LCD Y offset for dm900 and dm920])
++ AC_DEFINE(DREAMBOX_DUAL_TUNER, 1,[define it is dreambox dual tuner present])
++ AC_DEFINE(FORCE_NO_BLENDING_ACCELERATION, 1,[define when the framebuffer acceleration does not have alphablending support, though the autodetection might indicate that it does])
++fi
++
+ if test `echo "$BOXTYPE" | cut -b 1-2` == "gb"; then
+ AC_DEFINE(KEY_PLAY_ACTUALLY_IS_KEY_PLAYPAUSE, 1,[define when rc sends a KEY_PLAY event for its KEY_PLAYPAUSE key])
+ AC_DEFINE(FORCE_NO_BLENDING_ACCELERATION, 1,[define when the framebuffer acceleration does not have alphablending support, though the autodetection might indicate that it does])
+@@ -586,6 +607,7 @@ data/7segment/Makefile
+ data/display96/Makefile
+ data/display128/Makefile
+ data/display220/Makefile
++data/display390/Makefile
+ data/display400/Makefile
+ data/display480/Makefile
+ data/display720/Makefile
+diff --git a/data/Makefile.am b/data/Makefile.am
+index 72c31ec8d3a..123c4f64f6e 100644
+--- a/data/Makefile.am
++++ b/data/Makefile.am
+@@ -41,6 +41,10 @@ if HAVE_COLORLCD220
+ SUBDIRS += display220
+ endif
+
++if HAVE_COLORLCD390
++SUBDIRS += display390
++endif
++
+ if HAVE_COLORLCD400
+ SUBDIRS += display400
+ endif
+diff --git a/data/display400/skin_display.xml b/data/display400/skin_display.xml
+index 55d0d8a26e7..6d45e70db6f 100644
+--- a/data/display400/skin_display.xml
++++ b/data/display400/skin_display.xml
+@@ -238,24 +238,13 @@
+
+
+
+-
+- FullDate
++
++ ShortDate
+
+-
++
+ Format:%H:%M
+
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+
+-
+
+
+
+diff --git a/interfaces/ion.h b/interfaces/ion.h
+new file mode 100644
+index 00000000000..6370495f8d0
+--- /dev/null
++++ b/interfaces/ion.h
+@@ -0,0 +1,204 @@
++/*
++ * drivers/staging/android/uapi/ion.h
++ *
++ * Copyright (C) 2011 Google, Inc.
++ *
++ * This software is licensed under the terms of the GNU General Public
++ * License version 2, as published by the Free Software Foundation, and
++ * may be copied, distributed, and modified under those terms.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ */
++
++#ifndef _UAPI_LINUX_ION_H
++#define _UAPI_LINUX_ION_H
++
++#include
++#include
++
++typedef int ion_user_handle_t;
++
++/**
++ * enum ion_heap_types - list of all possible types of heaps
++ * @ION_HEAP_TYPE_SYSTEM: memory allocated via vmalloc
++ * @ION_HEAP_TYPE_SYSTEM_CONTIG: memory allocated via kmalloc
++ * @ION_HEAP_TYPE_CARVEOUT: memory allocated from a prereserved
++ * carveout heap, allocations are physically
++ * contiguous
++ * @ION_HEAP_TYPE_DMA: memory allocated via DMA API
++ * @ION_NUM_HEAPS: helper for iterating over heaps, a bit mask
++ * is used to identify the heaps, so only 32
++ * total heap types are supported
++ */
++enum ion_heap_type {
++ ION_HEAP_TYPE_SYSTEM,
++ ION_HEAP_TYPE_SYSTEM_CONTIG,
++ ION_HEAP_TYPE_CARVEOUT,
++ ION_HEAP_TYPE_CHUNK,
++ ION_HEAP_TYPE_DMA,
++ ION_HEAP_TYPE_CUSTOM, /* must be last so device specific heaps always
++ are at the end of this enum */
++ ION_NUM_HEAPS = 16,
++};
++
++#define ION_HEAP_SYSTEM_MASK (1 << ION_HEAP_TYPE_SYSTEM)
++#define ION_HEAP_SYSTEM_CONTIG_MASK (1 << ION_HEAP_TYPE_SYSTEM_CONTIG)
++#define ION_HEAP_CARVEOUT_MASK (1 << ION_HEAP_TYPE_CARVEOUT)
++#define ION_HEAP_TYPE_DMA_MASK (1 << ION_HEAP_TYPE_DMA)
++
++#define ION_NUM_HEAP_IDS sizeof(unsigned int) * 8
++
++/**
++ * allocation flags - the lower 16 bits are used by core ion, the upper 16
++ * bits are reserved for use by the heaps themselves.
++ */
++#define ION_FLAG_CACHED 1 /* mappings of this buffer should be
++ cached, ion will do cache
++ maintenance when the buffer is
++ mapped for dma */
++#define ION_FLAG_CACHED_NEEDS_SYNC 2 /* mappings of this buffer will created
++ at mmap time, if this is set
++ caches must be managed manually */
++
++/**
++ * DOC: Ion Userspace API
++ *
++ * create a client by opening /dev/ion
++ * most operations handled via following ioctls
++ *
++ */
++
++/**
++ * struct ion_allocation_data - metadata passed from userspace for allocations
++ * @len: size of the allocation
++ * @align: required alignment of the allocation
++ * @heap_id_mask: mask of heap ids to allocate from
++ * @flags: flags passed to heap
++ * @handle: pointer that will be populated with a cookie to use to
++ * refer to this allocation
++ *
++ * Provided by userspace as an argument to the ioctl
++ */
++struct ion_allocation_data {
++ size_t len;
++ size_t align;
++ unsigned int heap_id_mask;
++ unsigned int flags;
++ ion_user_handle_t handle;
++};
++
++/**
++ * struct ion_fd_data - metadata passed to/from userspace for a handle/fd pair
++ * @handle: a handle
++ * @fd: a file descriptor representing that handle
++ *
++ * For ION_IOC_SHARE or ION_IOC_MAP userspace populates the handle field with
++ * the handle returned from ion alloc, and the kernel returns the file
++ * descriptor to share or map in the fd field. For ION_IOC_IMPORT, userspace
++ * provides the file descriptor and the kernel returns the handle.
++ */
++struct ion_fd_data {
++ ion_user_handle_t handle;
++ int fd;
++};
++
++/**
++ * struct ion_handle_data - a handle passed to/from the kernel
++ * @handle: a handle
++ */
++struct ion_handle_data {
++ ion_user_handle_t handle;
++};
++
++/**
++ * struct ion_custom_data - metadata passed to/from userspace for a custom ioctl
++ * @cmd: the custom ioctl function to call
++ * @arg: additional data to pass to the custom ioctl, typically a user
++ * pointer to a predefined structure
++ *
++ * This works just like the regular cmd and arg fields of an ioctl.
++ */
++struct ion_custom_data {
++ unsigned int cmd;
++ unsigned long arg;
++};
++
++struct ion_phys_data {
++ ion_user_handle_t handle;
++ unsigned long addr;
++ size_t len;
++};
++
++#define ION_IOC_MAGIC 'I'
++
++/**
++ * DOC: ION_IOC_ALLOC - allocate memory
++ *
++ * Takes an ion_allocation_data struct and returns it with the handle field
++ * populated with the opaque handle for the allocation.
++ */
++#define ION_IOC_ALLOC _IOWR(ION_IOC_MAGIC, 0, \
++ struct ion_allocation_data)
++
++/**
++ * DOC: ION_IOC_FREE - free memory
++ *
++ * Takes an ion_handle_data struct and frees the handle.
++ */
++#define ION_IOC_FREE _IOWR(ION_IOC_MAGIC, 1, struct ion_handle_data)
++
++/**
++ * DOC: ION_IOC_MAP - get a file descriptor to mmap
++ *
++ * Takes an ion_fd_data struct with the handle field populated with a valid
++ * opaque handle. Returns the struct with the fd field set to a file
++ * descriptor open in the current address space. This file descriptor
++ * can then be used as an argument to mmap.
++ */
++#define ION_IOC_MAP _IOWR(ION_IOC_MAGIC, 2, struct ion_fd_data)
++
++/**
++ * DOC: ION_IOC_SHARE - creates a file descriptor to use to share an allocation
++ *
++ * Takes an ion_fd_data struct with the handle field populated with a valid
++ * opaque handle. Returns the struct with the fd field set to a file
++ * descriptor open in the current address space. This file descriptor
++ * can then be passed to another process. The corresponding opaque handle can
++ * be retrieved via ION_IOC_IMPORT.
++ */
++#define ION_IOC_SHARE _IOWR(ION_IOC_MAGIC, 4, struct ion_fd_data)
++
++/**
++ * DOC: ION_IOC_IMPORT - imports a shared file descriptor
++ *
++ * Takes an ion_fd_data struct with the fd field populated with a valid file
++ * descriptor obtained from ION_IOC_SHARE and returns the struct with the handle
++ * filed set to the corresponding opaque handle.
++ */
++#define ION_IOC_IMPORT _IOWR(ION_IOC_MAGIC, 5, struct ion_fd_data)
++
++/**
++ * DOC: ION_IOC_SYNC - syncs a shared file descriptors to memory
++ *
++ * Deprecated in favor of using the dma_buf api's correctly (syncing
++ * will happend automatically when the buffer is mapped to a device).
++ * If necessary should be used after touching a cached buffer from the cpu,
++ * this will make the buffer in memory coherent.
++ */
++#define ION_IOC_SYNC _IOWR(ION_IOC_MAGIC, 7, struct ion_fd_data)
++
++/**
++ * DOC: ION_IOC_CUSTOM - call architecture specific ion ioctl
++ *
++ * Takes the argument of the architecture specific ioctl to call and
++ * passes appropriate userdata for that ioctl
++ */
++#define ION_IOC_CUSTOM _IOWR(ION_IOC_MAGIC, 6, struct ion_custom_data)
++
++#define ION_IOC_PHYS _IOWR(ION_IOC_MAGIC, 8, struct ion_phys_data)
++
++#endif /* _UAPI_LINUX_ION_H */
+diff --git a/lib/driver/avswitch.cpp b/lib/driver/avswitch.cpp
+index 955c6c59fd7..7d601b56f40 100644
+--- a/lib/driver/avswitch.cpp
++++ b/lib/driver/avswitch.cpp
+@@ -255,7 +255,12 @@ int eAVSwitch::getResolutionY(int defaultVal, int flags) const
+ int eAVSwitch::getFrameRate(int defaultVal, int flags) const
+ {
+
++#ifdef DREAMBOX
++ const char *fileName = "/proc/stb/vmpeg/0/fallback_framerate";
++#else
+ const char *fileName = "/proc/stb/vmpeg/0/framerate";
++#endif
++
+ int value = 0;
+ int ret = CFile::parseInt(&value, fileName, __MODULE__, flags);
+ if (ret != 0)
+diff --git a/lib/dvb/decoder.cpp b/lib/dvb/decoder.cpp
+index 95f5609dd9c..4fb21ec1667 100644
+--- a/lib/dvb/decoder.cpp
++++ b/lib/dvb/decoder.cpp
+@@ -147,7 +147,11 @@ int eDVBAudio::startPid(int pid, int type)
+ bypass = 0x40;
+ break;
+ case aDDP:
++#ifdef DREAMBOX
++ bypass = 7;
++#else
+ bypass = 0x22;
++#endif
+ break;
+ }
+
+@@ -341,7 +345,11 @@ eDVBVideo::eDVBVideo(eDVBDemux *demux, int dev, bool fcc_enable)
+ #define VIDEO_STREAMTYPE_MPEG4_Part2 4
+ #define VIDEO_STREAMTYPE_VC1_SM 5
+ #define VIDEO_STREAMTYPE_MPEG1 6
++#ifdef DREAMBOX
++#define VIDEO_STREAMTYPE_H265_HEVC 22
++#else
+ #define VIDEO_STREAMTYPE_H265_HEVC 7
++#endif
+ #define VIDEO_STREAMTYPE_AVS 16
+ #define VIDEO_STREAMTYPE_AVS2 40
+
+diff --git a/lib/dvb/fbc.cpp b/lib/dvb/fbc.cpp
+index 6d8b06d3cc2..56a4c4f98d3 100644
+--- a/lib/dvb/fbc.cpp
++++ b/lib/dvb/fbc.cpp
+@@ -13,6 +13,24 @@
+
+ int eFBCTunerManager::ReadProcInt(int fe_index, const std::string & entry)
+ {
++#ifdef DREAMBOX
++ std::string value;
++ std::stringstream path;
++ std::ifstream file;
++
++ path << "/proc/stb/frontend/" << fe_index << "/" << entry;
++ file.open(path.str().c_str());
++
++ if(!file.is_open())
++ return(-1);
++
++ file >> value;
++
++ if(file.bad() || file.fail())
++ return(-1);
++ eDebug("[eFBCTunerManager::ReadProcInt] val: %s", value.c_str());
++ return(value == "A" ? 0 : 1);
++#else
+ int value;
+ std::stringstream path;
+ std::ifstream file;
+@@ -29,6 +47,7 @@ int eFBCTunerManager::ReadProcInt(int fe_index, const std::string & entry)
+ return(-1);
+
+ return(value);
++#endif
+ }
+
+ void eFBCTunerManager::WriteProcInt(int fe_index, const std::string & entry, int value)
+@@ -45,6 +64,41 @@ void eFBCTunerManager::WriteProcInt(int fe_index, const std::string & entry, int
+ file << value;
+ }
+
++void eFBCTunerManager::WriteProcStr(int fe_index, const std::string & entry, int value)
++{
++ std::stringstream path;
++ std::ofstream file;
++
++ path << "/proc/stb/frontend/" << fe_index << "/" << entry;
++ file.open(path.str().c_str());
++
++ if(!file.is_open())
++ return;
++ eDebug("[eFBCTunerManager::WriteProcStr] val: %d", value);
++ file << (value == 0 ? "A" : "B");
++}
++
++#ifdef DREAMBOX
++void eFBCTunerManager::LoadConnectChoices(int fe_index, std::string &choices)
++{
++ std::stringstream path;
++ std::ifstream file;
++ std::string line;
++ std::string::const_iterator it;
++ int fbc_id;
++
++ path << "/proc/stb/frontend/" << fe_index << "/input_choices";
++ file.open(path.str().c_str());
++
++ if(!file.is_open())
++ return;
++
++ file >> choices;
++
++ if(file.bad() || file.fail())
++ return;
++}
++#else
+ void eFBCTunerManager::LoadConnectChoices(int fe_index, connect_choices_t &choices)
+ {
+ std::stringstream path;
+@@ -77,6 +131,7 @@ void eFBCTunerManager::LoadConnectChoices(int fe_index, connect_choices_t &choic
+ }
+ }
+ }
++#endif
+
+ DEFINE_REF(eFBCTunerManager);
+
+@@ -93,7 +148,7 @@ eFBCTunerManager::eFBCTunerManager(ePtr res_mgr)
+ eSmartPtrList &frontends = m_res_mgr->m_frontend;
+ eSmartPtrList &frontends_simulate = m_res_mgr->m_simulate_frontend;
+ tuner_t tuner;
+- int fe_id, fbc_prev_set_id;
++ int fe_id, fbc_prev_set_id;
+
+ if(!m_instance)
+ m_instance = this;
+@@ -109,22 +164,34 @@ eFBCTunerManager::eFBCTunerManager(ePtr res_mgr)
+ continue; // ignore DVB-C/T FBC tuners because they need no special treatment
+
+ fe_id = FESlotID(it);
+- tuner.set_id = ReadProcInt(fe_id, "fbc_set_id");
+
++#ifdef DREAMBOX
++ tuner.set_id = ReadProcInt(fe_id, "input");
++#else
++ tuner.set_id = ReadProcInt(fe_id, "fbc_set_id");
++#endif
+ if(tuner.set_id >= 0)
+ {
+ if(fbc_prev_set_id != tuner.set_id)
+ {
+ fbc_prev_set_id = tuner.set_id;
++#ifdef DREAMBOX
++ LoadConnectChoices(fe_id, tuner.input_choices);
++#else
+ LoadConnectChoices(fe_id, tuner.connect_choices);
++#endif
+ tuner.id = 0;
+ }
+-
++#ifdef DREAMBOX
++ tuner.is_root = tuner.id < 2;
++#else
+ if(tuner.id < (int)tuner.connect_choices.size())
+ tuner.is_root = tuner.connect_choices.test(tuner.id);
+ else
+ tuner.is_root = false;
+
++#endif
++
+ tuner.default_id = tuner.is_root ? tuner.id : 0;
+ m_tuners[fe_id] = tuner;
+ SetProcFBCID(fe_id, tuner.default_id, false);
+@@ -141,8 +208,14 @@ eFBCTunerManager::eFBCTunerManager(ePtr res_mgr)
+ if (!(it->m_frontend->supportsDeliverySystem(SYS_DVBS, false) || it->m_frontend->supportsDeliverySystem(SYS_DVBS2, false)))
+ continue;
+
++#ifdef DREAMBOX
++ if(ReadProcInt(FESlotID(it), "input") >= 0)
++ it->m_frontend->set_FBCTuner(true);
++#else
+ if(ReadProcInt(FESlotID(it), "fbc_set_id") >= 0)
+ it->m_frontend->set_FBCTuner(true);
++#endif
++
+ }
+ }
+
+@@ -154,8 +227,12 @@ eFBCTunerManager::~eFBCTunerManager()
+
+ void eFBCTunerManager::SetProcFBCID(int fe_id, int fbc_connect, bool fbc_is_linked)
+ {
++#ifdef DREAMBOX
++ WriteProcStr(fe_id, "input", fbc_connect);
++#else
+ WriteProcInt(fe_id, "fbc_connect", fbc_connect);
+ WriteProcInt(fe_id, "fbc_link", fbc_is_linked ? 1 : 0);
++#endif
+ }
+
+ int eFBCTunerManager::FESlotID(eDVBRegisteredFrontend *fe)
+@@ -412,7 +489,7 @@ int eFBCTunerManager::IsCompatibleWith(ePtr &feparm, eDV
+
+ if(IsSCR(*it))
+ continue;
+-
++
+ // temporarily add this leaf to the current "linked" chain, at the tail
+
+ fe_insert_point = GetTail(*it);
+diff --git a/lib/dvb/fbc.h b/lib/dvb/fbc.h
+index a479961086a..b70f9b7dfc9 100644
+--- a/lib/dvb/fbc.h
++++ b/lib/dvb/fbc.h
+@@ -25,6 +25,7 @@ private:
+ int id;
+ int default_id;
+ connect_choices_t connect_choices;
++ std::string input_choices;
+ } tuner_t;
+
+ typedef std::map tuners_t;
+@@ -42,7 +43,12 @@ private:
+
+ static int ReadProcInt(int, const std::string &);
+ static void WriteProcInt(int, const std::string &, int);
++ static void WriteProcStr(int, const std::string &, int);
++#ifdef DREAMBOX
++ static void LoadConnectChoices(int, std::string &);
++#else
+ static void LoadConnectChoices(int, connect_choices_t &);
++#endif
+ static void SetProcFBCID(int, int, bool);
+ static int FESlotID(eDVBRegisteredFrontend *);
+ static bool IsLinked(eDVBRegisteredFrontend *);
+diff --git a/lib/dvb_ci/dvbci.cpp b/lib/dvb_ci/dvbci.cpp
+index a4681b1ff39..a744ae6a70b 100644
+--- a/lib/dvb_ci/dvbci.cpp
++++ b/lib/dvb_ci/dvbci.cpp
+@@ -6,6 +6,7 @@
+ #include
+ #include
+ #include