Retro Router
This is a collection of scripts designed to control analog and digital video switches via their RS-232 interfaces. Additional devices are controled through IR via lirc.
Hardware
- Raspberry Pi or other linux based system
- Gearmo 4port RS232 USB to Serial Adapter
- USB Infrared Toy
- Panasonic TC-P65VT30
- Extron Crosspoint 450 Plus 128
- Monoprice 4x4 Matrix
- Monoprice 8x1 Switch
- OSSC
Wiringing Digiram
Cables going into the Extron Crosspoint are either system specific HD Retrovision (blue) or Nintendo Wii/WiiU (green) cables with a 6ft HD Retrovision Male-to-Female extension, terminated into 75ohm RCA to BNC. Audio cables are terminated into Phoenix to RCA Adapter
Software
Device Control
The hardware API is built upon flask to create a simple interface with pyserial to send commands to the TV, HDMI Switch, HDMI Matrix, and Extron Crosspoint
To control the OSSC LIRC is used with the USB IR Toy to send IR remote commands.
Note: The Monoprice 4x4 matrix seems to be a clone of or cloned by the Lindy 38152. The command codes for the Lindy seem to work correctly with the Monoprice unit as there are no codes on the Monoprice website.
UI
The UI was written using Vue with the Vueitfy material framework. Logic was written in TypeScript.
Images of the various systems come from the great work done by Evan Amos whose work can be found at https://commons.wikimedia.org/wiki/User:Evan-Amos
Below are some views of the app running in Firefox on an Android phone.
To switch to a source simply tap the system you want from the list.
Sources that case be upscaled will have a toggle when either can be selected.
Displays like a CRT will only allow the selection of analog sources
While a capture card will allow only digital sources which include upscaled analog sources
Different sources (TV, CRT, Capture) can all be selected from the side menu
Deployment Notes
Python Dependencies
cp retroRouter.py /var/www/html/
cp requirements.txt /var/www/html/
cd /var/www/html
python3 -m virtualenv env
source env/bin/activate
pip3 install -r requirements.txt
Nginx Config
cp .deploy/nginx.conf /etc/nginx/sites-available/default
sudo service ngnix restart
Gunicon Config
cp .deploy/retro-router.service /etc/supervisor/conf.d/retro-router.conf
sudo service supervisor restart
LIRC Config
cp .deploy/ossc.conf /etc/lirc/lircd.conf.d/ossc.conf
/etc/lirc/lirc_options.conf
driver = irtoy
device = /dev/ttyACM0
sudo service lircd restart
Limitations
- No authentication. Not designed for public IPs.
- Hard coded control logic. To work around this an abstraction for a display, switch, matrix, and upscaler would be needed.
- No querying of control hardware state for dynamic UI updates. The 8x1 switch does not have the ability to query which channel is active or which are even powered on.
Planned Features
- OSSC profile selection per system
- Include more system icon variations from Evan's work
- TV specific functions (Turn on/off, mute, vol up/down, etc)