You are here

Set-top box user interface customization


A developer and manufacturer of set-top boxes (STB), devices that receive a satellite, cable, ground, or internet digital video signal and redirect them to a TV screen. A fierce competition on the STB market demanded our customer deliver a product with minimal time-to-market and incredibly cheap hardware.


A ready-made STB of our customer had an advanced user interface that allows setting up a satellite antenna, scanning transmitted streams, editing channel lists, viewing EPG, schedule tasks, etc.


Our task was to create a software framework that would allow the customer to change the user interface with minimal efforts so that to create new models based on the existing universal platform very quickly. Such approach significantly reduces the STB development costs.


The STB receives satellite TV channels (DVB-S); it is based on the MIPS-based ALI M3329 chipset. The system runs under TDS2.


1. Set-top box GUI

The project software documentation was absent, so we had to analyze the source code and UI logic to elaborate an efficient solution and its implementation (using the reverse engineering principle).

2. Concept

Usually, if an engineer has to change the UI appearance very often, it is not hardcoded. Instead, a module (engine) is created that generates a UI at run-time according to the configuration file. However, such approach was not possible for our project due to limited CPU performance.

Therefore, we decided to make all changes at the source code level. For this purpose, all parameters affecting the appearance (control elements coordinates on the screen and their styles) were moved into separate header files as macro definitions.

3. Software

We used Cygwin and GCC 3.0.4 (mips-t2-elf) compiler as our development environment.

The resulting software package completely satisfied primary project objectives. The functionality of the solution is the following:

  1. Software for MS Windows allows easy editing of the parameters affecting GUI appearance and global settings
  2. All the parameters are saved into an XML file
  3. Parameter values are checked by the XSL validator
  4. XSL transformer generates several header files (*.h) from the XML file (activation of the transformer is integrated into the project makefile)
  5. Header files are used to compile and build STB binary modules with modified user interface
  6. The entire check, generation, and build process are automated




The project was implemented within shortest terms and with minimal efforts, as required by the customer. Knowledge of the specialized area that was obtained during the project allowed maintaining mutually beneficial cooperation with the customer.