An Arduino and Raspberry Pi "Rube Goldberg" Machine Brings Back Classic Analog Closed Captioning
Pseudonymous maker "theloosearrow" has brought back a classic accessibility feature of analog TV signals — EIA-608 closed captioning — using a Raspberry Pi, an Arduino, and the Nootropic Design Video Experimenter.
"Have you ever wanted closed captions on your Raspberry Pi just like the good old days of analog television and VHS," theloosearrow asks of their audience. "This setup uses the Raspberry Pi composite video output fed into an Arduino with the Video Experimenter shield. The shield has an LM1881 video sync separator which allows the Arduino to mux a closed caption signal onto the Pi's composite video signal."
The trick relies on the EIA-608 standard, used for years to offer optional closed-captioning on analog NTSC signals. For TV sets which support it, enabling decoding causes subtitles to appear overlaid on top of the video — and it's this signal the Arduino overlays onto the Raspberry Pi's composite video output.
"The Pi is running a Python script that plays a movie and parses the corresponding SRT subtitle file," theloosearrow explains. "It synchronizes the SRT timestamps with the movie timestamp and sends the subtitle data to the Arduino at the correct time. The Arduino generates the closed caption signal and the television decodes it and displays the caption in sync with the movie.
"It is essentially a Rube Goldberg machine that eventually tricks the TV into displaying the subtitles."
Source code for the project has not yet been shared, but more information is available on theloosearrow's Reddit thread.