Before feeds, your town had a channel.
You might know the one if you watched MTV when it first came on cable. A flat blue screen, chunky white text, the time and the temperature in the corner. The Lions Club pancake breakfast. A birthday wish for someone named STEVE. Little League signups at the rec center. Headlines crawling along the bottom while a Muzak version of a song you almost recognized played underneath. I remember watching it for long stretches, waiting for the flea market notice to come back around. Our Sears CRT had the blue bars burnt in.
At some point, the Cable Bulletin Board Channel disappeared from all of our lives. NOBODY IS TALKING ABOUT IT.
Recently, I have been spending evenings learning about retro gaming and reading posts on Reddit saying that you have to game on a CRT for the proper gaming experience. This led me to Facebook Marketplace. After a few weeks of looking at photos of TVs this got me remembering the big honker in our living room… then, I uncovered a repressed memory. I had to have it back in my life.
Meet CABLE 82
CABLE 82 is a tiny web app that turns any screen into your own 1982 community bulletin board channel. Ideally that screen is an old 4:3 CRT fed by a Raspberry Pi, sitting in the corner of a room, being ambient.
It scrolls the date and time, your community messages, fun facts, dad jokes, live weather, and headlines from whatever RSS feeds you point it at. There is a crawl along the bottom, a red LATEST flag, and a little station bug in the corner, because of course there is.
You make it yours in a control room in the browser, or by editing one plain config file. It is free and open source and it runs on a Raspberry Pi.
The rest of this post is how to get it going on a Raspberry Pi and a CRT.
Step 1: Get it on the air
SSH into the Pi, or just open a terminal on it, and run:
git clone https://github.com/nothans/cable-82
cd cable-82
node server.js
Open http://localhost:1982 in a browser on the Pi. You’re on the air.
Out of the box it already looks right: the blue screens, the clock, a couple of example bake-sale messages, and real headlines pulled from a few default feeds.
Step 2: Make it your channel
Everything about the channel lives in one place. Open the control room at http://localhost:1982/config and you get the whole thing on one screen: the name, your community messages, which RSS feeds to pull, your town’s weather, the colors, the page lineup. Change something, hit Save, and the channel updates itself within about twenty seconds. Nobody has to touch the TV.
If you would rather edit a file, it all lives in config.json, and you can hand-edit that just as happily. Put your own town in the weather. Drop in the feeds you actually read. Write the messages your household needs to see, which in my house is mostly reminders that trash day is tomorrow.
Step 3: Run it on boot
You do not want to SSH in and start a server every time the power blips. Make it a service so the Pi just comes up broadcasting.
Create /etc/systemd/system/cable82.service:
[Unit]
Description=CABLE 82
After=network-online.target
[Service]
ExecStart=/usr/bin/node /home/pi/cable-82/server.js
Restart=always
User=pi
[Install]
WantedBy=multi-user.target
Then turn it on:
sudo systemctl enable --now cable82
Now the channel is always running in the background, whether anything is looking at it or not.
Step 4: Point a browser at it, full screen
Have the Pi launch Chromium in kiosk mode, pointed at the channel:
chromium-browser --kiosk --noerrdialogs --disable-infobars \
--disable-lcd-text \
--autoplay-policy=no-user-gesture-required \
http://localhost:1982
Two of those flags earn their keep. --disable-lcd-text turns off subpixel font smoothing, which otherwise tints the chunky white text a faint pink on some screens. --autoplay-policy=no-user-gesture-required lets the background music start on its own at boot, so nobody has to click anything to get the beautiful-music bed going.
While you are in there, turn off screen blanking so the picture never sleeps: sudo raspi-config > Display Options > Screen Blanking > No.
Step 5: Get it onto a real CRT
The easiest and most reliable hookup works on any Pi and any TV with a coax (antenna) input. Run HDMI from the Pi into an HDMI-to-coax RF modulator, then run coax from the modulator into the TV, and tune the TV to channel 3 or 4. Your Pi is now a broadcast channel and the TV is receiving it over the air the way God and 1982 intended.
If the TV crops the edges of the picture, bump up the overscan margin in the control room until nothing important gets cut off. There are no fake scanline filters in CABLE 82, on purpose. The CRT is the filter.

Step 6: Give it a soundtrack
Drop a few audio files into the music/ folder and CABLE 82 plays them as a continuous background bed behind the pages, looping the set, shuffling if you like. Two tracks ship with it to get you started. Aim for the sound the old channels actually used: beautiful music, easy listening, and eventually the famous smooth jazz.
A channel of your own
A Pi, an old TV, a coax cable, and a folder of files, and now there is a corner of your house that runs its own quiet little channel: your messages, your weather, your headlines, your dad jokes, scrolling by all day.
It’s not useful, exactly. It’s better than useful.
CABLE 82 is open source and lives at github.com/nothans/cable-82.
Project Demo Video
Watch 6 minutes of glorious community news like it is 1982. Enjoy.
Update July 27, 2026: CheerLights Support
I can’t believe that it took me a few days to do this… CheerLights. A perfect feed (for me) is to see the latest CheerLights color scroll by every once in a while. Okay, so now you can add CheerLights feed support with a custom message if needed.
Update August 22, 2026: Updated GitHub README and better CRT support
Based on some user feedback, I built a version of the project on an older Raspberry Pi and used a much older CRT TV. This helped me find some areas for improvement.
I updated the kiosk command to use chromium (not chromium-browser), and it goes in ~/.config/labwc/autostart.
Old TVs do not have as much contrast as newer ones, so I added a CRT mode to help. This is in the “control room” or in the config.
And, a user reported “throttling” of the CPU. This happens when the Raspberry Pi is underpowered. This usually happens when you use a phone USB charger instead of a Raspberry Pi power supply.
From what I learned during the first month of the project, I added a troubleshooting section to the GitHub README for the CABLE 82 project.
I will publish an end-to-end tutorial for a Raspberry Pi 3 B+ soon to help smooth out the installation steps.
Thanks for sharing your feedback and trying the project. It helps all of us.




Welp, it’s ye old “Localhost refused to connect” error for me. Seems like this project isn’t for me. 🙁
Well, let me see if I can help. What version of the Raspberry Pi did you try the set up on?
Are you using port 1982?
It’s “running” on a R-PI 3 B+, & used http://localhost:1982 straight from here.
Could be a few things…
Localhost only works directly on the Pi.
Make sure the server is running on a terminal. Does it sastarted?
Try the IP address like… http://192.168.1.42:1982
Or
http://raspberrypi.local:1982
Also, it is likely, “node” version.
On the Pi, in a terminal, run node -v.
I started from a “fresh” Raspberry Pi and imaged it from Imager. You have to use 64-bit version of the OS and install Node.
I also added a troubleshooting section to the GitHub repo: https://github.com/nothans/cable-82#troubleshooting
Pull an updated copy of the repo.