A CRT Television showing a 'Space Disco' program. Next to it is a stack of tiny circuit boards, each with a glowing LED. Underneath the circuit boards are two metal boxes with cables coming out of them, labled 'RF 3-4' and 'RF 1-2'.

(The color distortion in the image is part of the videoexternal link, not a problem with the TV or the transmission.)

Virtual Cable TV Network

Created: 2021-04-11, Last Update: 2022-02-20

(Inspired by this project on redditexternal link.)

TVs in the lab are now connected to the KDTV cable network: four channels of exclusive programming, some running nearly 24/7!


Each channel is running on a Raspberry Pi 3A+ with a 256GB or 512GB SD card. The A/V output from each Pi is run into one of two Channel Plus® video distribution boxes. One distribution box is daisy-chained to the other, and each is assigned to a different pair of channels. The resulting signals can be tuned into by any TV with an analog tuner plugged into the second video distribution box. The current channel assignments are 14, 16, 45, and 47. Those channels were chosen because they had the least interference from the antenna. The antenna was connected to the input of the first box so that the real over-the-air channels could also be tuned in on TVs that have both analog and digital tuners. However, there was still some noise on all of the analog channels, and I wasn't watching the broadcast channels much. So the antenna has been disconnected for a clearer picture.


A Python script interprets a schedule in a custom language to generate a playlist that is sent to VLC. VLC also superimposes the channel name in the bottom right or left. The schedule is synchronized to the current day and time, with shows running at (almost) consistent times and some programming varying by day of week. Holiday specials are skipped until the appropriate month. The Pi's are running Raspbian in read-only-mode. This allows them to recover from outages, provided the internet is still up for NTP time synchronization. To add new videos or update the schedule, the power is disconnected, and the SD card is moved to my main computer to transfer files. Once powered on again, the Python script determines every video that would have been played since the start date of the schedule up to the current moment and resumes playback there.

The Python script is viewable hereexternal link, but it's not quite prepared for other people to use yet.

(Original graphic, created in Blender)

14 - ToonTV

Cartoons all day:

Anime and adult cartoons Saturday nights:

Complete with some of the original Adult Swim pool bumpers.

There are also animated movies--adult ones at the end of the Adult Swim Block, general audiences ones on Sunday nights. Cartoon Network Groovies and other animated music videos fill time between shows, along with nostalgic toy, video game, and snack ads.

(Graphic taken from one of the official sites, © 2021 Satellite of Love, LLC)

16 - MSTV 3000

Every available Mystery Science Theater 3000 episode shuffled through the day, with Rifftrax and Best of The Worst in the evening. MST3K and Rifftrax shorts, and vintage ads referenced on the show, fill time between episodes.

(Text is original, created in Blender. Background is from Johhny Mnemonic, © 1995 TriStar Pictures/Sony Pictures Group)

45 - CyberTV

Vintage CGI demos in the morning, Computer Chronicles in the afternoon. A movie each night, and SciFi TV shows on Sunday nights. Vintage computer ads and ads featuring ground-breaking early CGI appear between shows.

Current shows:

(Original graphic, created in Inkscape)

47 - M2TV

Classic music videos 23.75/7! (There's a 15 minute break at midnight for technical reasons.) There are concerts, DJ sets, and Trance VHS's at 6pm Wednesday and Friday. (The video in the imageexternal link is one of the DJ sets.)

© 2022 Kyle Delaney, except where otherwise noted | Site Map