Unreleased Set-Top Box Project

Client: You.i TV

Date: December 31, 2020

Categories: SimWave

At the beginning of August 2019, I transitioned from my previous contract placement to another with You.i TV. The focus of this project was updating the UI and UX of several established set-top box brands to match that of modern implementations, such as Netflix, Disney+, and Amazon Prime. These set-top boxes ran on different custom distributions of Linux with vastly different hardware specifications, and required writing flexible, portable code that would operate across a multitude of feature sets. During the contract, I implemented features such as:

  • email integration
  • main landing screen, and dynamic configuration processing
  • VOD playback (for certain boxes)
  • SD and HD subtitles using EIA-608, EIA-708 and DVB captioning standards
  • server-sent event (SSE) management and dispatch

and worked on a variety of bugs relating to managing recordings, enabling playback, and minor device optimization for lower-end boxes. I worked with the technical lead on several occasions to help diagnose engine-level issues that prevented the application from running on the lower-end hardware, and communicated on-occasion with the engine team to provide fixes. Also, I created several testing tools using ExpressJS to mock SSE for various pieces of functionality ahead of delivery from their client and co-developers.

During the latter part of 2019, SimWave wanted me to be back in the office one day/week so I began working through the logistics of how to make that a reality. The set-top box signal comes from a coax feed hardwired through the You.i office, so getting the feed out of the office in some capacity other than video capture was not really an option. In November, during the You.i Hack Day, I worked with another coworker on a remote solution to facilitate communication with the boxes via a virtual remote, and streaming their video feed using WebRTC. The virtual remote was hosted using ExpressJS and featured a photo taken of a real STB remote with virtual button codes sent from keypresses to a backend server. The server would would send those keycodes over a serial connection to an Arduino board, which were then converted into their NEC IR protocol output and blasted at the STB. We had captured the real IR output from a remote and hardcoded the resulting codes into the Arduino to facilitate mocking the remote’s functionality.

The project was about 70% complete by the time the November Hack Day finished, and would then be revisited and completed during the following Hack Day in March of 2020. The day afterward, the announcement of the first confirmed case of COVID-19 was reported in Kanata, which prompted the company to shift to work from home. Over the following weeks, I worked with the technical and team leads for our project to scale this solution up to the entire team, which included Elgato HDMI capture cards, HDMI multiviewers, and several laptops for redundancy. I trained several members of the team with how to maintain this solution, which was still in place as I transitioned back to working at SimWave proper.

Role: Developer
Time on Project: Aug 2019 – Dec 2020
Technology used: You.i Engine, NodeJS (ExpressJS, serialport), Arduino
Language used:
C/C++, Bash, JavaScript