Skip to content

anthonycaccese/240-MP

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

240-MP

240-MP is a retro VCR style frontend to play local media or content from a local plex library on Raspberry Pi (preferably hooked up to a CRT TV). It's built to work in conjuction with MPV which will be installed (or updated) as a dependency during the steps outlined below.

Preview

Module Selection Item Detail
Resume Option Playback Settings
04-playback

Features

Local Files Module

  • Supported file types: "mp4", "mkv", "avi", "mov", "m4v", "webm", "wmv", "flv", "f4v", "mpg", "mpeg", "vob"
  • Playlist support using m3u and m3u8 files
  • Folder browsing
  • Loop plabyack support
  • Playback history options
  • Switch audio/subtitle tracks during playback

Plex Module

  • Supported library types: Movies, TV Shows, Other Videos
  • Local server switching
  • User profile switching and auto sign in to a set default user
  • Choose displayed libraries
  • Continue Watching and Resume options
  • 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

Install

For the Raspberry Pi

The following steps will set up an image for your Raspberry Pi with the latest version of 240-MP (and optionally set it up to autostart after boot)

Requirements

  • A RaspberryPi 4, 3B+ or 3B - These are the only models I've tested with, it may work on others but sorry I can't say for sure
  • SD Card (minimum of 4GB)
  • Internet Access (either WiFi or network cable will work)

Optional

  • A CRT TV and a composite cable - Composite out is my recommended way to use 240-MP but it will also work over HDMI as well so just select the config that works for your setup in step 2 below. This is the composite cable i use if you do happen to have a CRT: https://www.adafruit.com/product/2881
  • USB remote control - Keyboard input works well but if you want that experience of sitting back and playing video on a VCR then a remote def helps with that. I use this one: https://www.amazon.com/dp/B01FVUGPE8

Steps

  1. Write RaspberryPi OS Lite (64-bit) to an SD Card

    I reccomend using Raspberry Pi Imager, it handles everything from OS selection to preconfiguring networking and user set up in nice simple flow

    Here is what you should select for OS if using Raspberry Pi Imager:

    OS > Raspberry Pi OS (other) Raspberry Pi OS Lite (64-bit)
  2. After the write is complete, reconnect the card to your PC and update your boot/config.txt to one of the following:

    For composite out on a CRT TV
     # --- Global ---
    
     arm_64bit=1
     disable_fw_kms_setup=1
     disable_splash=1
     disable_overscan=1
     dtparam=audio=on
     
     # Composite
     enable_tvout=1
     sdtv_mode=0
     sdtv_aspect=1
     
     # --- Pi 4B ---
     [pi4]
     
     # Drivers & Video
     dtoverlay=vc4-fkms-v3d,cma-256
     dtoverlay=rpivid-v4l2
     
     # Overclocking
     over_voltage=2
     arm_freq=1750
     gpu_freq=600
     
     # --- Pi 3B ---
     [pi3]
     
     # Drivers & Video
     dtoverlay=vc4-fkms-v3d,cma-256
     
     # Overclocking
     over_voltage=4
     arm_freq=1300
     core_freq=450
     sdram_freq=500
     
     # --- Pi 3B+ ---
     [pi3+]
     
     # Drivers & Video
     dtoverlay=vc4-fkms-v3d,cma-256
     
     # Overclocking
     over_voltage=2
     arm_freq=1500
     core_freq=500
     sdram_freq=500
     
     # --- Global ---
     [all]
    
    For HDMI out
     # --- Global ---
    
     arm_64bit=1
     disable_fw_kms_setup=1
     disable_splash=1
     disable_overscan=1
     dtparam=audio=on
    
     # HDMI
     display_auto_detect=1
     hdmi_force_hotplug=1
    
     # --- Pi 4B ---
     [pi4]
     
     # Drivers & Video
     dtoverlay=vc4-fkms-v3d,cma-256
     dtoverlay=rpivid-v4l2
     
     # Overclocking
     over_voltage=2
     arm_freq=1750
     gpu_freq=600
     
     # --- Pi 3B ---
     [pi3]
     
     # Drivers & Video
     dtoverlay=vc4-fkms-v3d,cma-256
     
     # Overclocking
     over_voltage=4
     arm_freq=1300
     core_freq=450
     sdram_freq=500
     
     # --- Pi 3B+ ---
     [pi3+]
     
     # Drivers & Video
     dtoverlay=vc4-fkms-v3d,cma-256
     
     # Overclocking
     over_voltage=2
     arm_freq=1500
     core_freq=500
     sdram_freq=500
     
     # --- Global ---
     [all]
    
  3. Place the SD card in your Raspberry Pi and let it run through its first boot sequence

  4. Once complete SSH in and run sudo raspi-config

    • Turn on Auto Login: System Options > Auto Login > Yes
    • Expand filesystem: Advanced Options > Expand Filesystem > Yes
    • Select Finish and allow the Raspberry Pi to reboot
  5. After that completes SSH in again and run the following to install the latest version of 240-MP

    bash <(curl -fsSL https://github.com/anthonycaccese/240-mp/releases/latest/download/install.sh)

    This will install all of the needed dependencies (note: over WiFi it will take about 20 mins to complete)

    You will get an option at the end of the install script that asks: Install systemd autostart service? [y/N]

    If you type Y and press enter it will set up 240-MP to autostart when your Raspberry Pi boots which creates a nice appliance experience (bascially a dedicated 240-MP device).

    If you choose that option please make sure to enter your primary user for the pi at the next prompt. If you don't provide one it will set it up for the Pi user.

At this point you can type 240mp to start up the app. When you quit the app it will automatically shutdown your Pi and if you chose to install the autostart service then the next time you boot your Pi it will boot into 240-MP.

Uninstall

If you'd like to remove 240-MP and continue to use your SD card for other things you can run the following commands via terminal or over SSH:

sudo rm -rf /opt/240mp
sudo rm /usr/local/bin/240mp

And if you installed the systemd autostart service then be sure to remove it by running the following commands as well:

sudo systemctl unmask getty@tty1.service autovt@.service
sudo systemctl disable 240mp.service
sudo rm /etc/systemd/system/240mp.service
sudo systemctl daemon-reload

For macOS (ARM)

If you don't have a Raspberry Pi and would like to try 240-MP, I also provide a build for macOS on Apple Silicon. You can download a DMG archive from the latest release and run it on your mac following these steps...

Requirements

  • An Apple Silicon Mac running the latest version of macOS (it will not work on Intel based devices)
  • Internet Access (either WiFi or network cable will work)

Steps

  1. Download the DMG archive from the latest release
  2. Mount it and move the 240mp.app into your Applicaitons folder
  3. Make sure you have mpv installed (240-MP requires MPV for playback): brew install mpv
  4. Double click 240-MP and it should open full screen

Uninstall

  • Remove it just like you would any application on macOS
  • Remove the configuration files in ~/Library/Application Support/240-MP/

Customizations

Color Schemes

240-MP has a set of color schemes that you can change directly in settings...

Video 1 Late Night
Synthwave Terminal T-120

It also supports the display of a user supplied color scheme...

Steps

  1. Create a file called custom_color_scheme.json and place it in your configuration directory:
    • On Raspberry Pi OS: ~/.local/share/240-MP/
    • On macOS: ~/Library/Application Support/240-MP/
  2. Populate that file with the following content:
    {
        "primary": "#FFFFFF",
        "secondary": "#A1A1A1",
        "tertiary": "#444444",
        "surface": "#000000",
        "accent": "#ff2c76"
    }
    
  3. Change the HEX values for each property to create your custom color scheme. HEX values must be in the standard 6 character format #RRGGBB
  4. Close/Reopen 240-MP, go to settings and change Color Scheme to Custom
    • If you don't see the custom option check that your file is in the correct location, is named correctly and is formated correctly.

FAQs

  • Why didn't you use Kodi/LibreELEC/OSMC?
    • I've used all of those distros and they are all great but I also like making things and wanted something simpler without 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 that door 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.

Credits & Acknowledgments

  • The VCR OSD Mono font 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 ❤️

License

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.

About

240-MP is a retro VCR style frontend to playback local media or content from a plex library on Raspberry Pi 4 or 3B+

Resources

License

Stars

Watchers

Forks

Contributors