This fork is being used to plan and develop an experimental IPTV Tuner module for 240-MP.
The goal is to bring live IPTV playback into the same retro VCR-style frontend, with support for M3U playlists, XMLTV guide data, channel browsing, MPV playback, and a CRT-friendly program guide that feels like something from a 1990s cable TV interface.
This is a personal roadmap and prototype unless it is later accepted into the main 240-MP project.
Current Changes are untested as of 06/11/26, I will test when I get home and update accordingly.
Default Guide and Weather channel background music is from Pixabay. Per the Pixabay Content License Summary, tracks may be used and modified in this application. Attribution is appreciated but not required. Do not redistribute the bundled MP3 files as standalone downloads. Custom music folders are the user's responsibility. See modules/iptv_tuner/assets/music/ATTRIBUTION.md.
Development is currently focused on compatibility with ErsatzTV Legacy, specifically its M3U playlist and XMLTV EPG output. Compatibility with other IPTV sources is not guaranteed at this time.
Planned features:
- M3U playlist and XMLTV EPG integration
- Live IPTV channel playback
- A Prevue Channel / TV Guide Channel-inspired EPG view
- Passive scrolling or interactive selection modes for the guide
- Theme support for the guide interface
- A possible retro Weather Channel-inspired screen using RetroCast or a custom weather template
- Remote control-friendly navigation
- Analog-style channel transitions
240-MP is a retro VCR style frontend to play content on Raspberry Pi (preferably hooked up to a CRT TV).
Playback experiences are handled via modules to enable new integrations without requiring major changes to the overall frontend. There are 3 currently included playback modules; one for Local Files, one for Plex and a module similar to art/wallpaper modes on modern tvs called (Ambient:Mode)
It's built to work in conjuction with MPV which will be installed (or updated) as a dependency during the install steps outlined below.
Watch on YouTube: https://youtu.be/r-gylGDoELY
| Module Selection | Item Detail |
|---|---|
![]() |
![]() |
| Resume Option | Playback | Settings |
|---|---|---|
![]() |
![]() |
![]() |
Local Files Module (Wiki)
- Supported file types:
"mp4", "mkv", "avi", "mov", "m4v", "webm", "wmv", "flv", "f4v", "mpg", "mpeg", "vob" - Playlist support using
m3uandm3u8files - Folder browsing
- Loop playback support
- Playback history options
- Switch audio/subtitle tracks during playback
Plex Module (Wiki)
- Designed for CRT navigation (simple, fast, list browsing)
- Supported library types:
Movies, TV Shows, Other Videos - Server switching
- User profile switching and auto sign in
- Select specific libraries to display
- Continue Watching and Resume
- Hub, Playlist, Collection and Category support
- Movie editions
- Select preferred audio/subtitle track before playback and switch tracks during playback
- Full library browsing by letter
- Show/Season browsing
- Video quality selection: Direct Playback (Default) or Transcode options
Ambient:Mode Module (Wiki)
- Supported video file types:
"mp4", "mkv", "avi", "mov", "m4v", "webm", "wmv", "flv", "f4v", "mpg", "mpeg", "vob" - Playlist support for audio tracks using
m3uandm3u8files - Mix video with a different audio track
- Loops forever until you stop it
- Why didn't you use Kodi/LibreELEC/OSMC?
- I've used all of those distros and they are all excellent but I also like making things and wanted something simpler without as many options. Something that felt like a VCR from my youth.
- Should I use 240-MP instead of Kodi/LibreELEC/OSMC?
- Nope 😄
- All of those distros are amazing, feature rich, work across a ton of devices and have awesome supportive teams behind them.
- I on the other hand am just one person making nostalgic things for my own niche use cases. If those use cases match with what you're looking for, then 240-MP is a bunch of fun and I'd be happy for you to try it. Otherwise, the well known distros are spectacular and you should likely open those doors instead.
- Will this work on other Raspberry Pi models? (like the 5, 2 zero, etc...)
- Sorry, I can't say for sure as I've only tested on the 4b, 3b+ and 3b and don't have plans to test on other devices at this time.
- Where does the name "240-MP" come from?
- 240 has a double meaning referring to the longest VHS tape length and my primary display target for it of CRT TVs.
- MP also has a double meaning of "Media Player" and a play on the "SP/LP/EP/SLP" terminology that was used to refer to the recording quality for VHS recordings.
- Does the 240 in the name mean that it outputs at 240p resolution?
- No and I apologize for any confusion I've caused on this, it's 240 in name only.
- The output resolution for the menu and video playback when using it on a CRT is 480i.
- Does 240-MP work over HDMI on a modern television too?
- Yes! The UI was built to scale on modern televisions over HDMI as well.
- Please make sure you use the config.txt I provide for HDMI and it will output at the proper resolution for a modern tv.
- The
VCR OSD Monofont was created by Riciery Santos Leal (a.k.a. mrmanet) https://www.dafont.com/vcr-osd-mono.font - Because this is a hobby project (and a fairly niche use case), I am using Claude Code to build a large part of the backend C++ code and structure the modules. If you have concerns with that, I am glad to talk through it. Also, please feel free to fork this repo, update any aspects and tailor things to your own use case; that's why the source is fully open and available.
- Thank you to Plex for providing an open and free API with all the endpoints needed for me to make my own custom client
- Thank you to the MPV team for a simple, extensible and cross platform media player
- And thank you to the Raspberry Pi Foundation for helping me fill a drawer with SBCs to tinker with and inspire fun ideas like this project ❤️
This project is licensed under the GNU General Public License v3.0. See LICENSE for the full text.
You are free to use, study, and modify this code. If you distribute a modified version, you must also distribute it under GPL-3.0 and make the source available.




