#severance #propreplica #3dprinting #raspberrypi ![[lumonmdr-frontmain.jpeg|600]]![[lumonmdr.gif|600]]![[lumonmdr-shelf.jpeg|600]]![[lumonmdr-back.jpeg|600]] ## Overview I was inspired by this [great reddit post](https://www.reddit.com/r/SeveranceAppleTVPlus/comments/1io6n1l/built_a_miniature_mdr_computer/), from a maker who wrote a OpenGL MDR Terminal Simulator. I elected to make my own version, using a Raspberry Pi 4 and a Raspberry Pi 7" Touchscreen. *It might benefit from a Pi5 and/or 4GB of RAM. p5 canvas is hungry.* The shell is heavily modified (remixed) from [lumon terminal for raspberry pi by TheBackyardScientist - Thingiverse](https://www.thingiverse.com/thing:6948380): - Converted the STL to a solid in Fusion360 - Simplified as many faces as I could - Scaled the solid to be as large as I could print on my Prusa MK3.9S printer as well as to fit the Raspberry Pi touchscreen. - Modified the interior structure of the shell to hollow it out. - Added a flange and 6x2mm magnet recesses in the back for the rear access panel. - Added a 3/4-10 UNC 1B thread on each side for the mounting knobs. I designed the rest of the parts from scratch: - Access Panel - Uses 6x2mm round magnets - Incorporates the Lumon logo - Has a round through hole for the USB-C power supply plug (wide enough to accommodate the ferrite) - Base Plate - U-Bracket - Knobs (with a modeled 3/4-10 UNC 1A thread) - Front Panel The access panel attaches quickly to the back using common 6x2mm magnets. The front panel friction fits into the shell. The base plate and U-Bracket are keyed to mate together and can be permenantly secured with CA (superglue). The shell, base plate, u-bracket, and access panel are all printed in [Overture PLA - White](https://amzn.to/4jHOUvW). The knobs are printed in [Overture PLA - Black](https://amzn.to/4jbqZ88). The front panel is printed in [Overture PLA - Matte Navy Blue](https://amzn.to/4jbkjHb) My version is powered by an Eve Thread Outlet and I have a HomeKit automation that sets all of my nerd display case items to turn on at 5PM and off at midnight. My finished model: [Lumon Macrodata Refinement Terminal - Raspberry Pi - based on Severance by erikbuild \| Download free STL model \| Printables.com](https://www.printables.com/model/1269301-lumon-macrodata-refinement-terminal-raspberry-pi-b) **Why?** ![[theworkismysterious.gif|500]] ## Parts - 3D Printer Filament - [Overture PLA - White](https://amzn.to/4jHOUvW) - [Overture PLA - Black](https://amzn.to/4jbqZ88) - [Overture PLA - Matte Navy Blue](https://amzn.to/4jbkjHb) - [6x2mm Magnets](https://amzn.to/3GemMls) - [Raspberry Pi 4 - 4GB](https://amzn.to/4cOaTiA) - [Raspberry Pi 7" Touchscreen](https://amzn.to/3EsAVep) - [USB-C Power Supply](https://amzn.to/4cBqWzX) - [USB-C Right Angle Adapter](https://amzn.to/42B26fb) - [64GB A2 microSD Card](https://amzn.to/3EpJmao) - 32GB or even smaller is fine, I like a A2 rated card for durability with a Raspberry Pi. ## Build Guide - Print all parts (see Printables link for details). - Attach the U Bracket to the base plate (secure with superglue). - Insert magnets into shell and access panel (observe polarity so they don't repel each other!). - Attach the Raspberry Pi 4 to the Raspberry Pi 7" Touchscreen. - Image the Raspberry Pi microSD Card with Raspberry Pi OS 64-bit (or your preferred distro). - Edit the settings in Raspberry Pi Imager for... - Local hostname (maybe *lumonmdr.local*) - username / password - WiFi Configuration - Enable SSH - Insert the microSD card into the Raspberry Pi. - Insert the touchscreen assembly into the faceplate. Optionally secure with a little low-temp hot melt in the corners to keep it in place. - Route the USB-C power supply cable through the access panel hole, attach to the right angle adapter, and then attach to the Raspberry Pi. - Insert the faceplate assembly into the front of the shell. - Attach the rear access panel to the shell (snaps together with the magnets). - Attach the shell assembly to the stand, securing with the black knobs. - Plug in the power supply to boot. - Quick configuration - `ssh [email protected]` - `sudo apt update` - `sudo apt upgrade -y` - (Optional, but recommend for easy management): Enable VNC - `sudo raspi-config` - Select Interface Options - Select VNC - Enable VNC - Select Finish - Configure your simulation! - [[Lumon MDR Terminal#GitHub - Lumon-Industries/Macrodata Refinement]] - This is my favorite currently. - [[Lumon MDR Terminal#LumonMDR OpenGL Simulation]] - [[Lumon MDR Terminal#GitHub - epassi/lumon-macrodata-refiner]] - Set it to [[Lumon MDR Terminal#Run At Boot]] ## Simulation Options ### GitHub - Lumon-Industries/Macrodata Refinement [GitHub - Lumon-Industries/Macrodata-Refinement: Marcrodata Refinement](https://github.com/Lumon-Industries/Macrodata-Refinement?tab=readme-ov-file) - SSH to the Raspberry Pi: `ssh [email protected]` - Install Nginx (we need to serve this locally to work around CORS): - `sudo apt install nginx -y` - Edit the nginx config: - `sudo nano /etc/nginx/sites-available/default` ``` server { listen 80; server_name _; root /var/www/Macrodata-Refinement; index index.html; location / { try_files $uri $uri/ =404; } } ``` - `cd /var/www && sudo git clone https://github.com/Lumon-Industries/Macrodata-Refinement.git` - `sudo systemctl restart nginx` - `sudo systemctl enable nginx` - It should now be accessible at http://IPADDRESS/ and http://localhost/ - VISUAL TWEAK - fix the spacing of "X% COMPLETE" and the LUMON Logo on screen: - `sudo nano /var/www/Macrodata-Refinement/sketch.js` - Edit Line 423 to put the width to `w * 0.7` instead of the original `w * 0.8`: - ``g.text(`${floor(nf(percent * 100, 2, 0))}% Complete`, w * 0.8, 50);`` - Save and restart nginx: `sudo systemctm restart nginx` - VISUAL TWEAK #2 - change the File Names if you'd like (e.g. only display Cold Harbor): - `sudo nano /var/www/Macrodata-Refinement/macrodata.js` - Edit the `files` array to suit your Macrodata filename needs... ```js const files = [ 'Cold Harbor' ]; ``` ### GitHub - andrewchilicki/LumonMDR - OpenGL Simulation [GitHub - andrewchilicki/LumonMDR: Lumon's Macrodata Refinement application inspired by Apple TV's 'Severance'.](https://github.com/andrewchilicki/LumonMDR) Cool project, tricky to get to compile and run. - SSH to Raspberry Pi (`ssh [email protected]`) - `sudo apt update` - `sudo apt install vim cmake freeglut3-dev libglew-dev libglfw3 libglfw3-dev` - `cd ~ && git clone https://github.com/andrewchilicki/LumonMDR.git` - `cd ~/LumonMDR` - `cmake .` - `make` - `cp settingsRPI.json settings.json` - Edit settings.json: - Change headerText to "Cold Harbor" - Change gridSpacing to 200.00 - Change imageScale to 0.8 - Change noiseSpeed to 0.004 - From the device itself (e.g. touchscreen), click the Terminal... - `./home/erik/LumonMDR --full-screen` - This is your command to autostart on boot if you want ### GitHub - epassi/lumon-macrodata-refiner [GitHub - epassi/lumon-macrodata-refiner](https://github.com/epassi/lumon-macrodata-refiner?tab=readme-ov-file) I haven't tested this, but looks like a great simulation as well. ## Run At Boot This is accurate as of 2025-04-18 with the current version of Raspberry Pi OS. The window server occasionally changes so the auto run on boot process seems to change every few years. - Make the config file ```bash mkdir -p /home/erik/.config/labwc ``` - Create and start editing the autostart file: ```bash nano ~/.config/labwc/autostart ``` - Add the following to the user autostart file: ```bash # I find that Firefox renders it better; sometimes Chromium will render it incorrectly and needs a refresh (ctrl+F5) to fix. #/usr/bin/chromium-browser --kiosk "http://localhost" & firefox --display=:0 --kiosk-monitor 0 "http://localhost" --kiosk & ``` - Save - Reboot the Raspberry Pi: `sudo reboot` ## Reference Information ### Raspberry Pi Touchscreen 7" Specs ![[raspberrypi7touchscreen-specs.png]] ## More Photos ![[mdr-backoffaceplate.jpeg|800]]![[mdr-fromback.jpeg|800]] ![[lumonmdr-front1.jpeg|800]]