Next-Gen Retro Cable Box Experience

Turn Your Media Library Into
Live Broadcast Cable TV

Continuous multi-day schedules, commercial breaks, on-TV channel guide, Retroflix on-demand, neural-narrated weather & news, and live sports with interactive gameplay field radars. Runs on Raspberry Pi 4 & Linux.

⭐ Star on GitHub πŸ“± Download Android App β˜• Sponsor Author on Buy Me A Coffee πŸ–ΌοΈ View All Screenshots
Retro TV Interface Preview
Everything You Love About Cable

Engineered for the Ultimate Nostalgia

πŸ“Ί

Always-Live Playback

Every show and movie has a deterministic start and end time. Change channels or reload the page and you drop right into the current sceneβ€”no per-user pause or rewind, just real television.

🎬

Retroflix Video On Demand

A full Netflix-style interactive On Demand interface (`/vod`). Search your library, explore featured spotlights, filter by genre or recent additions, and launch straight to your HDMI TV.

🏈

Live Sports & Gameplay Field Radar

Dedicated sports channel & interactive game center (`/sports`). Live scores, neural TTS announcer play-by-play, and dynamic SVG gameplay radars: football 100-yd gridiron with down/distance, baseball diamond with active base runners, basketball court, hockey rink, and soccer pitch.

β›…

Local Weather & Live Doppler Radar

Generates an authentic 90s-style Weather Channel loop with real National Weather Service forecasts, hourly trajectories, 7-day outlooks, live radar sweeps, and natural neural voice narration every 30 minutes.

πŸ“°

Local News Wire Channel

Automatically fetches your local RSS news feed and pictures, composing broadcast headline slides with neural voice narration and commercial breaks on-the-fly.

πŸ“±

Phone Remote & USB Remote Control

Control everything from your phone browser (`/remote`) or a 2.4GHz wireless USB remote. Dedicated SPORTS and ON DEMAND buttons, amber LCD channel display, D-pad navigation, and instant volume control.

🎞️

Fair Commercial Rotation

Commercial compilations are intelligently sliced and tracked so you never see the same commercials back-to-back, rotating evenly across program breaks.

🏷️

Automatic Genre Movie Channels

Auto-creates dedicated movie channels (Action, Comedy, Sci-Fi, Horror) when your library has 5+ qualifying movies, keeping three full days of scheduled lineups generated in advance.

🌐

Watch In Any Browser

Stream your live cable channels anywhere on your local network at `/watch`, complete with on-the-fly audio transcoding and HLS remuxing for mobile and desktop browsers.

πŸ€–

Native Android Companion App

100% native Kotlin companion app with UDP broadcast auto-discovery, 6-digit Web UI pairing, ExoPlayer Media3 live TV streaming, interactive EPG guide, Retroflix VOD, and tactile remote.

Pure Kotlin Β· Zero WebViews

Native Android Companion App

Experience Retro TV on your phone with zero-config auto-discovery, persistent 6-digit PIN pairing, low-latency ExoPlayer streaming, and a classic tactile handset remote.

πŸ“‘

Zero-Config Auto Discovery

Finds your Retro TV server instantly via UDP broadcast responder on port 5002, with automatic fallback to manual IP entry and server handshake verification.

πŸ”

Secure 6-Digit PIN Pairing

Generate a one-time 6-digit sync code on the Web UI (/remote), punch it into your phone, and establish a permanent cryptographically signed session token.

⚑

ExoPlayer Media3 Live Streaming

Hardware-accelerated native video playback with low-latency HLS remuxing, seamless channel switching, picture-in-picture, and fullscreen player modes.

πŸ“…

Interactive EPG Program Guide

Explore synchronous multi-channel program timelines, view episode descriptions, tune the TV receiver with one tap, or watch directly on your mobile device.

🍿

Retroflix VOD Mobile Hub

Browse your library's movies and TV shows with cached poster artwork, season/episode drawers, and quick "Watch on Phone" or "Play on TV" controls.

πŸŽ›οΈ

Tactile Universal Remote

Authentic handheld handset with real-time amber LCD receiver telemetry, directional D-pad, channel and volume rockers, and 0–9 keypad.

Physical Hardware Verification Β· UMIDIGI A7 Pro

Native Android Companion Experience

Tested, paired, and verified on physical hardware over USB ADB. Zero WebViews β€” pure AndroidX, Media3 ExoPlayer, and Kotlin Coroutines.

UDP Discovery & Pairing
Discovery & Pairing
Zero-config UDP search, server validation, and 6-digit sync PIN
Live TV Streaming
Live TV Streaming
ExoPlayer Media3 player synchronized to broadcast schedule
Mobile TV Guide
Interactive TV Guide
Multi-channel program grid with one-tap receiver tuning
Retroflix VOD
Retroflix VOD
High-definition posters, category chips, and episode browser
Universal Remote
Universal Remote
Tactile handset with live amber LCD receiver readout & D-pad
Receiver Settings
Receiver Settings
Raspberry Pi CPU temp, load avg, and disk headroom stats
Get Up & Running in Minutes

Simple Setup on Any Linux Box

bash β€” retro-tv@raspberrypi:~
# 1. Clone the repository
git clone https://github.com/chartmann1590/retro-tv.git
cd retro-tv

# 2. Set up Python virtual environment
python3 -m venv venv
venv/bin/pip install -r requirements.txt

# 3. Configure your sports backend (optional: connects to ArenaPulse)
cp .env.example .env
# Edit .env with ARENAPULSE_URL=http://<your-sports-server>:3000

# 4. Start Retro-TV!
venv/bin/python app.py
# Opens on http://localhost:5000 with scanning & schedules auto-initialized
β˜• Buy Me A Coffee