FakeTV: Now with Pseudo Channels!

FakeTV has undergone a major shift to a new script called Pseudo Channel with exciting new features. If you’re already familiar with FakeTV, you can skip this next part, and if you want to get right to the setup instructions, scroll on down to the section titled “How to setup up your own FakeTV.”

What is FakeTV?

FakeTV grew out of a desire to recreate the broadcast television experience using a Plex Server and a few Raspberry Pis. As somebody who likes to have TV on in the background, navigating menus to change programs after every episode is cumbersome, and binge watching isn’t always desired. This is something that was sort of possible in XBMC/Kodi with a plugin called Pseudo TV. Last year, I came across a (now discontinued) python script that was capable of doing what I needed, among a number of other tasks (more on this can be found in the previous blogs here and here). After the script was discontinued, I published the previous installation and setup blog, pointing to a fork of the old code in case anybody else was looking for the same type of viewing experience.

What’s new with FakeTV

The setup blog ended up being the inspiration for this post by Reddit user justin_is_at_work. I connected with the him and we started collaborating to make his script, Pseudo Channel, the best simulated TV experience it could be (by collaborating, I mean that I suggested features, tested the script, and submitted bug reports, and he did all the hard work writing code to make it work).

What has developed is a script with the express purpose of simulating the broadcast TV experience. Like the old script, Pseudo Channel builds a database from Plex library data, and keeps track of the episode position for each show. The schedule is built in an xml file which the script scans into the database. At a predetermined time each day, the schedule for the next 24 hours is generated in the database. Once the scheduled media is added, commercials are injected into the gaps. When the script is running, it will play near-continuously, moving from show to commercials to show or movie.

New Start and Stop Feature

This brings us to a new feature that is a big step forward for FakeTV. Upon execution, the Pseudo Channel script, scans the database for the current schedule. When it launches the scheduled media, it checks the time and advances the file to match how far past start time it is. For example, if you have the Golden Girls scheduled to start at 6pm, but you start the script at 6:10pm, the script will start the episode at 10 minutes in. This allows the freedom to turn the script — and the media being played — on and off at will. This has eliminated the need to run the Plex hardware all the time, extending its overall life.

Multiple Channels

An unexpected development that arose from the start/stop feature is the new ability to run multiple channels. Some creative adaptation allows a number of shell scripts and duplicate copies of the Pseudo Channel directory to operate as multiple channels, each with its own schedule and keeping its own show position (so episodes of Seinfeld played on channel 3 don’t effect the episodes of Seinfeld on channel 5). Tied to a remote control, Alexa or some other form of home automation, and Pseudo Channel has gone from a simulated broadcast TV channel to a simulated cable box.

Remote Control

Not a part of the script itself, but something I’ve added to my own setup. This remote acts as both a USB keyboard on the Raspberry Pi and a universal remote for the TV. Using Openbox, I have configured keypresses on the remote to trigger shell scripts for commands to change “channels” and turn the script on and off. I also set up a button that sends a command to RasPlex over ssh to take screenshots into a network folder I have mapped on my desktop.


How to setup up your own FakeTV

I’m sure at this point you’re all thinking, “sure this is great, but how do I get one of my own?” Even if that wasn’t what you were thinking, it is now, right? Well, since FakeTV is comprised of multiple components working together, I thought it would make more sense to divide each set of instructions into its own post. Below are the links to each, so you can follow the ones that are relevant to your interests and ignore the ones that are not. Happy watching!

Setting up your Plex server

If you don’t already have a Plex server set up, or you’re looking to switch to something quiet and low-powered, the Raspberry Pi 3 can be a good option. However, it should be noted that the Pi isn’t capable of handling the heavy load transcoding HD video requires and it’s best to have all media encoded so that it can be played via Direct Play (h264 is a reliable codec for that). If you need transcoding, it would be best to find a higher-powered option. Since there are many existing walk-throughs for setting up a Plex server and I’d like to focus on the other aspects of FakeTV, here are some resources for getting started:

My Plex Server home page

Setup and configuration of RasPlex for ‘touchless’ viewing

The Pseudo Channel script works seamlessly with RasPlex. As an always-on, silent and low-powered client, RasPlex is ideal for this type of usage. Once set up, it can be left on and plugged in, awaiting commands from the Pseudo Channel script.

My Raspberry Pi 3 running RasPlex

Setup and configuration of Pseudo Channel

This is the heart of the configuration. Follow these instructions to get it configured and running on a Raspberry Pi separate from the RasPlex device. Then sit back and enjoy your scheduled content, or flip “channels” and see what’s on.

Pseudo Channel script terminal output

Setup Plex status display on a PiTFT Screen

This is an optional feature for anybody with a PiTFT screen. Following this tutorial, you can display now playing information on the TFT screen attached to your Pi. I use the same Pi for both this and the Pseudo Channel script.

Configuring a USB remote control for FakeTV functions

Another optional, but useful feature is configuring a remote control to issue commands. Using openbox, the remote can be configured to fire off a shell script when a button is pressed. These scripts can be configured to just about any command, allowing for control over various functions like start/stop, changing channels and taking screenshots.

My remote that controls TV and FakeTV functions

Update: Casemodding a VCR with Status LEDs and power switches

If you’re as determined as I am to get the VCR aesthetic on your shelf, you’ll want to add LEDs for status and power buttons to the exterior of the case. Using a combination of scripts, hot glue, solder and config.txt changes, you too can have a VCR to house it all.

Discord Chat

We’ve set up a Discord server for anyone who has questions or needs help during setup or execution. The GitHub repo has an Issues section for reporting bugs, but feel free to mention them in discord as well.