If you want to keep using OpenViX you need to donate towards keeping the servers online.
Keeping OpenViX and this Forum online is getting more and more expensive. It is already September and so far donations in 2026 are just 34% of the £2,500.00 it costs to keep OpenViX and this Forum online. OpenViX has always been provided to completely free of charge by a number of hard working OpenViX Team members in their spare time. It also costs a lot of money to keep OpenViX online. We have 3 dedicated servers for building images, OpenViX feeds/site and the Forum. There's also a 4th server that we provide to host EPG data for EPG Importer. Without the team and our servers there would be no OpenViX. Please do not take it for granted, unless donations improve servers costs cannot be paid by others indefinitely.
The easiest way to flash latest OpenViX image is to do the following:
First:
Download the image to your receiver's storage device
Blue button > ViX > Image manager > Yellow (Downloads) > Select OpenViX > Select image version > Press OK
You will see the download status
Second:
Once downloaded, you should still be in Image manager and the latest image should be highlighted.
Ensure you have the correct image selected then press the Blue button (Flash)
The new image will flash and box will reboot when completed.
In install wizard you can then restore settings and plugins from earlier OpenViX series images. This will restore most things to how you had them before.
RESTORE PROCESS WILL NOT RESTORE PLUGINS THAT ARE NOT ON THE CURRENT PLUGIN SERVER. THESE MUST BE INSTALLED MANUALLY.
So what is different in OpenViX 6.9?
OpenViX 6.9 builds on the success of the 6.x series and aims to bring you the important things such as improved stability and bug fixes, rather than gimmicks.
The main change from previous versions to version 6.9 has been to upgrade to 6.0 oe-alliance-core branch. The OE (Open Embedded) core on which the image is built has also undergone major changes, updates and fixes, and uses the latest bitbake version. Version 6.9 uses Python version 3.14 which is on average 25% faster than Python 3.10 when measured with the performance benchmark suite. For more info on Python 3 major speed improvement see the official documentation. https://docs.python.org/3/whatsnew/3.11.htmlhttps://docs.python.org/3/whatsnew/3.12.html
Please note the following applications which are available in OpenViX 6.8: nodejs, kodi, stalker, openhbbtv, qthbbtv, are not yet available in OpenViX 6.9.
***Password required for FTP, TELNET & SSH!*** SEE GUIDE HERE!
OE-A 6.0
GStreamer 1.28.6
Python 3.14.7
M3UIPTV latest streaming plugin with catchup and VoD
Emby plugin
PlutoTV plugin
Multiboot for Vu+ 4k models
Chkroot/ubi multiboot for previously non-multiboot models
HELP screens revamped
OpenWebIf version 2.0
New modern skin E2DarkOs in feeds
ButtonMappings
Short Red** & *** - Show current channel EPG info (ViX Single EPG). Long Red** & *** - Sort single EPG info when in channel list. Short Green** & *** - Timers. Long Green*** - AutoTimer Timers. Short Yellow*** - EPG Search. Long Yellow*** - Instant IMDB Database search on the current programme. Short Blue - Extensions. Long Blue*** - Plugins Menu. EPG - Opens ViX EPG.
Left/Right** - Opens ViX QuickEPG.
Up/Down** - Open Full Screen Channel List.
Long Up/Down - Open PIP list on boxes that support PIP.
TV Button** - Open Full Screen Channel List.
Long TV Button - Open Bouquets List. ** Can be changed in ViX Menu *** Can be turned off in ViX Menu
SpecialThanks
DimitarCC for work on GUI, skin engine and addons
DimitarCC for work on M3UIPTV and Emby plugins
prl001 for work on HELP and IceTV compatibility
Twol for the conversion to Python 3. This involved manually converting literally hundreds of Python files and associated c++ code.
Orlandox, ccs, ronand, and BeffudledBrian for their feedback and extensive testing over the last few years.
DimitarCC for making E2DarkOs skin compatible with OpenViX
Twol and Huevos for testing, debugging, and responding to feedback and problems.
Huevos for preparing the new build environment, scripts, and building the 6.8 image.
Huevos for setting up seperate feeds for nodejs, kodi, stalker, openhbbtv, qthbbtv, VPNManager and Wireguard among others.
Huevos for setting up new feeds for picons.
Rytec, doglover and all the teams that host EPG feeds for EPG Importer, for their continued support.
All developers for their plugins used in the feeds of this image.
All of the ViX Beta team for their hours of testing and dedication on improving the image.
All those who have submitted patches/fixes/bug reports.
To all who have submitted translation work for OpenViX (Rob, Orlandox and others).
Peter de Jonge, abu baniaz & Huevos for their work with Andyblac to improve ABM.
Rob van der Does, rossi2000 and Huevos for OpenViX skins.
And finally, the forum sponsor, World of Satellite, for providing the hardware for building, testing and hosting OpenViX.
Notes
Please upgrade as soon as possible. We do not maintain previous versions. Basic feeds for the previous version will be maintained for a short period only to allow users to upgrade to the new image. Items such as Kodi, Stalker, Nodejs, QT, etc. and feeds for all other previous versions have already been removed. Sorry for any inconvenience but resources are limited and we cannot maintain parallel versions. We have worked hard to make the upgrade process as easy as possible for our users. These days upgrading from the previous version is painless. Just follow the instructions at the top of this page and you will be up and running with the new version in a few short minutes.
Due to limited resources some end of life models will not be built in version 6.9. If you want to use OpenViX with these receivers please build version 6.9 yourself. There are instructions in our enigma2 repo and we are happy to support you with this on the forum. The following is a list of the receivers supported in previous versions of OpenViX, but not supported in version 6.9:
Edision OS mega
Edision OS mini
Edision OS mini+
Edision OS mio 4k
Edision OS mio 4k plus
Edision OS nino
Edision OS nino pro
Edision OS nino+
Formula 1
Formula 1 TC
Formula 4 Turbo
Gigablue 800SE
Gigablue 800UE
Gigablue HD Quad
Gigablue Quad Plus
Gigablue SE Plus
Gigablue Solo
Gigablue UE Plus
Gigablue Ultra UE
Gigablue x1
Gigablue x2
Gigablue x3
Gigablue x3h
Golden Interstar LX1 & LX2
Golden Interstar LX3
Mara M9
Maxytec Multi
Media Link Ixuss Zero
Miraclebox MB-Micro
Miraclebox MB-Micro v2
Miraclebox MB-Premium Ultra
Miraclebox Mini
Miraclebox Mini Hybrid
Miraclebox Mini Plus
Miraclebox Premium Twin
Miraclebox Premium Twin Plus
Mutant 2400
Mutant 500C.
Mutant HD11
Mutant HD1200
Mutant HD1500
Octagon SF128
Octagon SF138
Octagon SF228
Octagon SF4008
Octagon SF8.
Octagon SX988
Octagon XP1000+.
Opticum DVBC-1
Spycat
TM-Nano-2T.
Technomate TM-2T.
Technomate TM-Nano 2 Super
Technomate TM-Nano 3T
Technomate TM-Nano-OE.
Technomate TM-Single.
Technomate TM-Twin
Technomate nanose
Technomate nanosecombo
Technomate nanosem2
Technomate nanosem2plus
Technomate nanoseplus
Tiviar A+
VU+ Duo
VU+ Solo
VU+ Ultimo
VU+ Uno
Venton HDx
Venton Unibox
Viper Combo HDD
Viper Twin
Xtrend ET-10000
Xtrend ET-7x00
Xtrend ET-8000
Xtrend ET-8500
Xtrend ET-9x00
Xtrend ET4x00
Xtrend ET5000
Xtrend ET6x00
Zgemma i55+
Translations: If anyone is interested in doing any translation work for the plugins and the image itself, please see here
6.9.002 released Please note, there have been more than 1000 changes in oe-alliance-core, many in low level modules. Therefore it is advised to flash and restore rather than using SoftwareUpdate screen.
[PluginDownloadComponent] scale icons to fit properly.
[LanguageSelection] add class LanguageDownloadBrowser
[PluginDownloadBrowser] allow calling code to supply its own "prefix_whitelist"
[PluginBrowser] update package filtering
[ConfigList] send description to choicebox
[ChoiceBox] free up "text" widget if not used for "title" handling
[elistbox] refine wrap-around logic to consider orientation for selection movement
[elistbox] fix wrap-around logic for selection movement at boundaries
[elistbox] ensure content is always painted to clear stale pixels
[elistbox] enhance selection movement with wrap-around functionality
[PluginBrowser] load default plugin icon only once
[README] add ccache
[PluginBrowser] switch to Components.Sources.List The skin xml is inspected on init and if the old name="list" is detected, Components.PluginList is loaded instead
Fix transparency and compositing order in immediate mode rendering
[FileList] inParentDirs(): fix parent directory checks incorrectly matching paths like /media/hdd2 as /media/hdd. getMountpoint() uses the same startswith() test, but its values include trailing slashes, so that test is safe.
[FileList] use path.join, not string concatenation
[TemplatedMultiContent] fix arithmetic bug Horizontal values were getting multiplied by the vertical multiplier and vice versa.
[FileList] fix long-standing bug directory always has a trailing slash, whereas return value from "path.realpath" has no trailing slash, so this condition always returned False
[FileList] getMountpoint/getMountpointLink: readability, argument is a directory, not a file
[FileList] expects "directory" to be an absolute path terminated with a trailing slash. Enforce that.
[PluginBrowser] - add Kodi Addon
[python_pmt_i] PyInt_FromLong to PyLong_FromLong
[Translations] update de.po
[nl.po] update
[eDVBServicePlay] - compatibility flags with OpenATV for plugins & webp
[RestoreWizard/BackupManager] add a watchdog for stalled plugin restores Instead of waiting indefinitely, like before, if there is no callback, after 5 minutes kill the running process and attempt to restore the next plugin
[Console] ePopen: avoid mutable default args (same pattern as eBatch)
[ServicePosition] various 1. Add complete skin arg list 2. Remove dead code 3. Tweak error message
[UsageConfig] use loop for repeating code
[tstools.cpp] attempt to fix spurious display of remaining time while watching movies that have suspicious .ap files When fixupPTS() is called with a PTS value up to 10 seconds before m_pts_begin (which can happen at the start of a recording when the .ap access-point table cannot resolve the exact position), the code is intended to clamp now to the recording start (0).
[CutListEditor] useability improvements to stp the interface jamming Author: @xcentaurix
[FixedMenu] add a default colour
[ColorizeText] add default option
[FixedMenu/CutListEditor] skip-over/grey-out non callable list items
[About] use ColorizeText class
[Hex2strColor] add ColorizeText class
[ServicePosition] refactor The original is ~350 lines of near-total duplication in getText() - every OSD branch had a byte-for-byte twin in the VFD branch.
[RemainingToText] Move module level format functions to a helper file
[RemainingToText] make formatters are module-level functions, not bound methods
[UsageConfig] build choice lists just once for repeating configs
[setup.xml] add reboot on "Show media playback remaining/elapsed"
[Translations] update de.po - add some older missing translations
[Converter.Remaining] build on https://github.com/OpenViX/enigma2/commit/f778906925b65b3de74c7b033cd532d93f21ac69 - Read "VFD" from "type" and then discard it from the string. - Work out what formatting is required in __init__ and apply it there. This allows getText() (the function that is continually polled) to do a lot less work. - Drop "self.type" and magic constants completely because all the work is done in __init__ . - Type "VFD" becomes "VFDInMinutes" (made backwards compatible). - Format functions moved out of the class to global level (allowing external use).
[MultiBootSelector] add missing commas, this is a tuple membership test, not a substring test
[Downloader] on a non-2xx status, release the underlying connection cleanly, do not leave dangling
Font - fix color reset followed by new color sequence
[Dowloader] add fixes by @jbleyel
Accept the alternative color notation ; < = > ?) supported by gRGB.
[Renderer.Progress] ensure value stays in range
[Tools.Multiboot] rewrite some sections to improve readability by flattening Logic should be identical, and in testing debug prints the same as before.
[Multiboot] simplify Mainly use helpers to simplify precedural code. Use subprocess.run to completely replace Console().ePopen()
Scan - update progress after last scanned transponder
[Tools.Multiboot] add missing presets in init
[Multiboot] move multiboot initalisation out of SystemInfo and into Tools.Multiboot. Call directly from StartEnigma.
[Tools.Multiboot] add some helper functions to avoid code duplication
[Tools.Multiboot] add comment
[Console] add comment
[MultiBootSelector] - resolve mounted partition
[Multiboot] - ensure mounted volume is unmounted.
[Screens.ServiceInfo] avoid possible UnboundLocalError
[Multiboot] fix hidden bug "slotnumber not in bootslots" will always be true because slotnumber is str, and bootsloots has int keys
[Multiboot] fix error in previous commit. SystemInfo["MultiBootSlot"] is an int
[About] addColor: add compatability with d22a2c4ae7e263371c071fe810cc3007bfa36381
[Font] use \C to restore the original color - use \C to restore the default foreground color - \c changes the color only when followed by 8 valid hexadecimal digits - invalid \c sequences are rendered as normal text
[Tools.Multiboot] add missing assignment of "slot" to SystemInfo["MultiBootSlot"] Needs testing by someone that has this hardware.
[Tools.Multiboot] getBootCodeDescription: as this is a compatibility function, mimic OpenATV implementation
[Multiboot] remove slotname mutations from the active code while it is work in progress
[Console] fix crash when a callback-less command fails to launch
[ViX-plugin] print error message if exception while pruning
[BackupManager] remove dead code
[ViX-plugin] remove orphan
[BackupManager] remove unnecessary condition ("if self.didPluginsRestore or self.didSettingsRestore:" has already ruled out didSettingsRestore being True)
[BackupManager] various 1) Stage4Complete: remove popup. The user does not need a popup to tell them what they chose in the previous screen. 2) Previous behaviour if settings restore was declined and no plugins to restore, or on error was to just dump the user in the enigma menu without any warning. This commit shows an informative message and then returns to the backup list.
[BackupManager] delete a nonsense task
[BackManager] fix leak Move ActionMaps to __init__(). Previously the ActionMap was in populate_List, which is called from backupRunning() — which reschedules itself via self.activityTimer.startLongTimer(5) for as long as the screen stays open. Reassigning self["myactions"] to a brand-new ActionMap doesn't automatically release the old one in Enigma2; each new instance just gets pushed onto the action stack alongside the previous ones. Leave this screen open a while causes a slow leak.
[ImageManager] populate_List: always hide buttons and actions and only reinstate if the mount is available
[About] add handling to return to the default colour (set by the renderer) after text colour highlighting See: 25230f7066c0d95341ad8f2c453621b1512542dc
[About] colours: a single entry in skin parameters would not be comma separated and therefore an int, not a list
[font] - use \c escape sequence to restore previous color if not followed by 8 hex chars
[BackupManager] populate_List, fix hacky formatted string sort. Use tuple.
[BackupManager] populate_List exception: use OSError
[ImageManager] spelling error
[BackupManager] "populate_List", change inappropriate gui message on exception The previous message "Please reformat the device..." could be destructive
[BackupManager] "populate_List", add debug on exception
[BackupManager] "Stage2Complete" fix logic: "if" should be "elif"
[BackupManager] remove a str.replace This is a filepath not a url. Later "path.exists(thirdpartyPluginsLocation)" will fail if the path had contained spaces.
[BackupManager] correctly handle saving config
[BackupManager] fix operator precedence
[ImageManager] fix typo
[ImageManager] fix some obvious coding/syntax errors
[Navigation] Restore service references after stopService to maintain valid state
[Service] Optimize responsiveness and prevent UI freezes
Scan - include current transponder in progress calculation
[ClockRealtimeMonitor] improve error handling
[eTimer] remove the ASSERTs that were added in a previous commit
[SkinConfig] attempt to simplify
[skin] small change to 673d59361f7529b881fc7b0eb0f010a29022cec0 Call skin plugins before running callbacks
Please note, there have been more than 1000 changes in oe-alliance-core, many in low level modules. Therefore it is advised to flash and restore rather than using SoftwareUpdate screen.
EGL / GLES support has been added to OpenViX. EGL lets software talk directly to the receiver's dedicated graphics processor, while GLES (OpenGL ES) is used to draw images, video, animations, and other on-screen content. Taking the graphics load off the CPU frees it for other work such as handling menus and user input, managing tuners and channels, running plugins, and dealing with system tasks, reducing delays. What this means in practice will depend on the particular receiver. Some show markedly sharper graphics and faster screen drawing, especially on weaker hardware.
Refactor window surface handling to prevent EGL_BAD_NATIVE_WINDOW errors during resolution changes
[ClientStreaming] look up hostname once per connected client, across all instances. The previous code was doing a DNS look-up of each client on every poll.Fix EGL surface handling to prevent crashes on invalid native window states
Implement plain shader program for optimized texture rendering and add mutex for active texture manager
Enhance EGL support with unpremultiply power and blit premultiplication settings
Refactor color handling in executeRectangle for premultiplied alpha support
Implement GPU-based spinner functionality with transparent window surface clearing and background capture
Enhance EGL functionality with window surface recreation and shadow framebuffer management; add texture drawing for sub-rectangles
Enhance EGL support for GBQuad platform and add diagnostic features
configure.ac: update conditions for NXPL EGL support to include additional MACHINEBUILD types
[egl.appends] remove "mesa"
[About] add missing return
[About] update EGL / GLES entry
[ChannelSelection] add an (optional) separator between channel name and event title for single line
[EGL] Improve spinner handling and add conservative readback support for libMali
[EGL/GLES] Add support for additional HiSilicon and Broadcom STBs
Add support for ax61 in various configuration files and update EGL handling
[MovieInfo] work out the type once, fix the stuck directory scan
[ServiceInfo] pick up the new icon/DVB changes, tidy the internals
[GBQuad] Implement premultiplied color handling for raw-overwrite draws
[EGL/GUI] Fix various alpha blending and transparency issues
[LogManager] use binary open of log files to avoid rogue encoding
[ClientsStreaming] pick the text handler once and stop doing extra work
[ScrollLabel] add "alphaBlend" to applyskin
[ServiceName2] pick the handler once, fix TransponderInfo
[egl] reset the one-shot corner radius after every blit
[EGL] Broaden Nexus EGL support, enhance texture management and rendering
[EGL] Optimize rectangle rendering and improve resolution change handling
[eListbox] don't repaint the scrollbar gap of transparent listboxes
[elistbox] "clear/repaint empty/unused space between scrollbar and listboxentrys"
[eListbox] don't construct a scrollbar in showNever mode
[EGL] Defer OSD resolution changes and optimize UI rendering
[gb-v3ddriver-gb7252pro.bbappend[ add file
[EGL] Update eglSwapInterval to improve vsync handling and reduce latency
[EGL] Optimize spinner background capture and adjust eglSwapInterval for performance
[EGL] Fix OSD scaling issue by enabling stretch for native window
[EGL] Enhance framebuffer locking mechanism and add clear functionality for OSD
[ImageManager] Improve fbClass instance handling for locking and unlocking
[EGL] Add GigaBlue Quad 4K Pro support and improve rendering/performance
[PliExtraInfo] sync with 4f77ccc3addc50adb2908216cac4ca79437cb2f7
Fix Transcoded DTS .mp4 and .mkv files startup position.
[PliExtraInfo] share ECM cache across all instances via module-level throttle Added a module-level getCachedEcmData() (globals, not self. attributes) that both refreshCryptoInfo and getBool now call. Since GetEcmInfo's own state is already module-level globals under the hood, every GetEcmInfo() object is just a stateless wrapper around the same data anyway - this just adds one shared once-per-second gate in front of it, used by every instance.
[PliExtraInfo] fix Tandberg letter mismatch from original code caid_data had Tandberg's letter as "TB" while CA_TABLE and CRYPTO_LETTER_RANGES both used "T", so getBool's Tandberg Available/Selected checks could never match anything. Changed caid_data to "T" to agree with the other two tables.
[PliExtraInfo] dispatch table for transponder/tuner text types Collapsed the ~90-line if-chain for TransponderFrequency, TunerSystem, OrbitalPosition, etc into a dict lookup, plus two smaller dispatch tables for ResolutionString/VideoCodec and PIDInfo/ServiceRef. Same checks, same order, just O(1) instead of scanning a long if-chain every call.
[PliExtraInfo] tweak a268771
[PliExtraInfo] make SAT_NAMES a class variable to avoid reallocating this large dict repeatedly
[PliExtraInfo] update a comment
[PliExtraInfo] CA_TABLE Make CA_TABLE a class level dict, keyed by converter arg, rather than recreating a tuple of tuples on creation of every instance. This allows dict's fast O(1) lookup, rather than iterating the old tuple with a for loop.
[PliExtraInfo] remove more int conversions missed in 322d75d
[PliExtraInfo] fix readability/maintenance smell There was a module-level function getCryptoInfo(info) and an unrelated instance method self.getCryptoInfo(info) with different signatures and different behavior (one returns a tuple, the other sets self.current_* and returns None). Rename the instance method.
[PliExtraInfo] use ColorizeText instead of manual Hex2strColor
[ColorizeText] remove unused "session" variable
[PliExtraInfo] store caid_data ranges as ints, not hex strings caid_data entries and current_caid were hex strings re-parsed with int(x, 16) on every single lookup, some of them on every poll tick. Parse the table once at module load and keep current_caid as an int, updating every comparison that relied on the old string ranges (including ShowECMInformation in ServiceInfo, which imports caid_data directly).
[PliExtraInfo] Fix permanent exception which is swallowed by the surrounding bare except: pass, so the method silently falls through and always returns ""
[PliExtraInfo] replace 200+ lines of repeating code with a simple lookup table
[ServiceMP3] Add evFirstFrame event to signal when playback starts with a decoded frame
ePositionGauge - update pointer position after resize
[PluginBrowser] add "kodi-addon-" to whitelist
[OnlineUpdateCheck] reinstate original MIN_INITIAL_DELAY value
Let "config.softwareupdate.updatefound" state to persist across reboots... But clear it before executing a software update or making a backup
[Addons.ServiceInfoBar] add software update icon
[onlineUpdateCheck] reduce initial feeds poll to 2 minutes after enigma (re)start
[[Sources.OnlineUpdate] remove near duplication
[Addons.ServiceInfoBar] add support for audio channels (5.1, 7.1, etc)
[Addons.ServiceInfoBar] add video/audio codec icon support
[Addons.ServiceInfoBar] Avoid exception. The current code assumes filteredElements is not empty, but nothing guarantees that. Using permanent icons hides this bug.
[AudioIcon] use os.path.join for assembling paths
[translation] update de.po
[audiochanneldetector] change buffer implementation to speed up detection
[gpixmap] fixed full transparent fill
Update AVSwitch.py
[PluginBrowser] - re add Kodi-Addons as separate folder in downloads
[hotplug] sync 2nd Q. sync updates - by jbleyel/WXbet
[TemplatedMultiContent] allow "horizontal", "vertical" and "grid" to be used for orientations
[TemplatedMultiContent] don't force "itemWidth" and "orientation" to be mutually inclusive This allows compatibility with openatv templates where orientation is passed as an attribute of the Listbox widget.
[skin] "orientation" attribute exclusively for eSlider; "listOrientation" attribute exclusively for eListbox
[TemplatedMultiContent] add comment
[TemplatedMultiContent] remove assert statements as these are silently skipped in production builds. Instead raise ValueErrors with relevant debug messages.
[Hotplug] * do not hand out the same mount point twice
[Hotplug] * re-register storage devices after a udev re-add
This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
By continuing to use this site, you are consenting to our use of cookies.