Skip to content

deekthesqueak/retro-router

Repository files navigation

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

Wiringing Digiram

Wiring Diagram

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.

HDMI Switch Codes

HDMI Matrix Command Codes

Crosspoint 450 Codes

Panasonic Codes

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. Analog & Digital

Displays like a CRT will only allow the selection of analog sources Analog

While a capture card will allow only digital sources which include upscaled analog sources Digital

Different sources (TV, CRT, Capture) can all be selected from the side menu Source Selection

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)