Reviving Teletext for Ham Radio
https://spectrum.ieee.org/media-library/a-personal-computer-displays-a-blocky-computer-graphic-depicting-a-city-skyline-with-the-words-cq-cq-cq-de-kb1wnr-in-front-of.png?id=65575350&width=1200&height=800&coordinates=0%2C275%2C0%2C275" />
Once upon a time in Europe, television remote controls had a magic https://en.wikipedia.org/wiki/Teletext" rel="noopener noreferrer" target="_blank">teletext button.
Years before the internet stole into homes, pressing that button brought up teletext digital information services with hundreds of constantly updated pages.
Living in Ireland in the 1980s and ’90s, my family accessed the national teletext service—https://en.wikipedia.org/wiki/RT%C3%89_Aertel" rel="noopener noreferrer" target="_blank">Aertel—multiple times a day for weather and news bulletins, as well as things like TV program guides and updates on airport flight arrivals.
It was an elegant system: fast, low bandwidth, unaffected by user load, and delivering readable text even on analog television screens.
So when I recently saw it was the https://bsky.app/profile/40yearsago.bsky.social/post/3mcfgzqm2ns2w" rel="noopener noreferrer" target="_blank">40th anniversary of Aertel’s test transmissions, it reactivated a thought that had been rolling around in my head for years.
Could I make a ham-radio version of teletext?
What is Teletext?
First developed in the United Kingdom and rolled out to the public by the https://www.bbc.com/articles/cvg360rr91zo" rel="noopener noreferrer" target="_blank">BBC under the name http://news.bbc.co.uk/2/hi/entertainment/3681174.stm" rel="noopener noreferrer" target="_blank">Ceefax, teletext exploited a quirk of analog television signals.
These signals transmitted video frames as https://spectrum.ieee.org/build-this-8bit-home-computer-with-just-5-chips" target="_self">lines of luminosity and color, plus some additional blank lines that weren’t displayed.
Teletext piggybacked a digital signal onto these spares, transmitting a carousel of pages over time.
Using their remotes, viewers typed in the three-digit code of the page they wanted.
Generally within a few seconds, the carousel would cycle around and display the desired page.
https://spectrum.ieee.org/media-library/a-diagram-depicting-the-enlargement-and-interpolation-process-of-teletext-characters.png?id=65575388&width=980" /> Teletext created unusually legible text in the 8-bit era by enlarging alphanumeric characters and interpolating new pixels by looking for existing pixels touching diagonally, and adding whitespace between characters.
Graphic characters were not interpolated, and featured blocky chunks known as sixels for their 2-by-3 arrangement.
My modern recreation uses the open-source font Bedstead, which replicates the look of teletext, including the graphics characters. James Provost
Teletext is composed of characters that can be one of eight colors.
Control codes in the character stream select colors and can also produce effects like flashing text and double-height characters.
The text’s legibility was better than most computers could manage at the time, thanks to the https://www.cpcwiki.eu/imgs/9/9e/Mullard_SAA5050_datasheet.pdf" target="_blank">SAA5050 character-generator chip at the heart of teletext.
Although characters are internally stored on this chip in 6-by-10-pixel cells—fewer pixels than the https://home-2002.code-cop.org/c64/" rel="noopener noreferrer" target="_blank">typical 8-by-8-pixel cell used in 1980s home computers—the SAA5050 interpolates additional pixels for alphanumeric characters on the fly, making the effective resolution https://en.wikipedia.org/wiki/Mullard_SAA5050" rel="noopener noreferrer" target="_blank">10 by 18 pixels.
The trade-off is very low-resolution graphics, comprising characters that use a 2-by-3 set of blocky pixels.
Teletext screens use a 40-by-24-character grid.
This means that a kilobyte of memory can store a full page of multicolor text, half https://www.c64-wiki.com/wiki/Screen_RAM" rel="noopener noreferrer" target="_blank">the memory required for a similar amount of text on, for example, the Commodore 64.
The https://www.computinghistory.org.uk/det/182/acorn-bbc-micro-model-b/" rel="noopener noreferrer" target="_blank">BBC Microcomputer took advantage of this by putting https://www.bbcbasic.co.uk/bbcwin/manual/bbcwinh.html" rel="noopener noreferrer" target="_blank">an SAA5050 on its motherboard, which could be accessed in one of the computer’s graphics modes.
Despite the crude graphics, some educational games used this mode, most notably https://www.4mation.co.uk/retro/retrogranny.html" rel="noopener noreferrer" target="_blank">Granny’s Garden, which filled the same cultural niche among British schoolchildren that https://en.wikipedia.org/wiki/The_Oregon_Trail_(1985_video_game)" rel="noopener noreferrer" target="_blank">The Oregon Trail did for their U.S. counterparts.
By the 2010s, most teletext services had ceased broadcasting.
But teletext is still https://www.bbc.com/audio/play/m00268v4" rel="noopener noreferrer" target="_blank">remembered fondly by many, and enthusiasts are keeping it alive, https://teletextarchaeologist.org/" rel="noopener noreferrer" target="_blank">recovering and archiving old content, running https://nmsceefax.co.uk/" rel="noopener noreferrer" target="_blank">internet-based services with current newsfeeds, and developing systems that make it possible to https://www.raspberrypi.com/news/create-your-own-teletext-service/" rel="noopener noreferrer" target="_blank">create and display teletext with modern TVs.
Putting Teletext Back on the Air
I wanted to do something a little different.
Inspired by how the BBC Micro co-opted teletext for its own purposes, I thought it might make a great radio protocol.
In particular I thought it could be a digital counterpart to https://en.wikipedia.org/wiki/Slow-scan_television" rel="noopener noreferrer" target="_blank">slow-scan television (SSTV).
SSTV is an analog method of transmitting pictures, typically including banners with ham-radio call signs and other messages.
SSTV is fun, but, true to its name, it’s slow—the most popular protocols take https://sevierraces.org/all-about-slow-scan-tv" rel="noopener noreferrer" target="_blank">a little under 2 minutes to send an image—and it can be tricky to get a complete picture with legible text.
For that reason, SSTV images are often broadcast multiple times.
Teletext is still remembered fondly by many.
I decided to send the teletext using the https://en.wikipedia.org/wiki/AX.25" target="_blank">AX.25 protocol, which encodes ones and zeros as audible tones.
For https://www.arrl.org/frequency-bands" target="_blank">VHF and UHF transmissions at a rate of 1,200 baud, it would take 11 seconds to send one teletext screen.
Over https://en.wikipedia.org/wiki/High_frequency" rel="noopener noreferrer" target="_blank">HF bands, AX.25 data is normally sent at 300 baud, which would result in a still-acceptable 44 seconds per screen.
When a teletext page is sent repeatedly, any missed or corrupted rows are filled in with new ones.
So in a little over 2 minutes, I could send a screen three times over HF, and the receiver would automatically combine the data.
I also wanted to build the system in Python for portability, with an editor for creating pages, an AX.25 encoder and decoder, and a monitor for displaying received images.
The reason why I hadn’t done this before was because it requires digesting the details of the https://www.ax25.net/AX25.2.2-Jul%2098-2.pdf" rel="noopener noreferrer" target="_blank">AX.25 standard and https://www.etsi.org/deliver/etsi_i_ets/300700_300799/300706/01_60/ets_300706e01p.pdf" rel="noopener noreferrer" target="_blank">teletext’s official spec, and then translating them into a suite of software, which I never seemed to have the time to do.
So I tried an experiment within an experiment, and turned to vibe coding.
Despite the popularity of vibe coding with developers, I have reservations.
Even if concerns about https://spectrum.ieee.org/responsible-ai" target="_self">AI slop, https://spectrum.ieee.org/ai-water-usage" target="_self">the environment, and https://spectrum.ieee.org/high-bandwidth-memory-shortage" target="_self">memory hoarding were not on the table, I would still worry about the https://spectrum.ieee.org/top-programming-languages-2025" target="_self">reliance on centralized systems that vibe coding brings.
The whole point of a DIY project is to, well, do it yourself.
A DIY project lets you craft things for your own purposes, not just operate within someone else’s profit margins and policies.
Still, criticizing a technology from afar isn’t ideal, so I directed https://chat.chatbotapp.ai/" rel="noopener noreferrer" target="_blank">Anthropic’s Claude toward the AX.25 and teletext specs and told it what I wanted.
After about 250,000 to 300,000 tokens and several nights of back and forth about bugs and features, I had the complete system running without writing a single line of code.
Being honest with myself, I doubt this system—which I’m calling Spectel—would ever have come about without vibe coding.
But I didn’t learn anything new about how teletext works, and only a little bit more about AX.25.
Updates are contingent on my paying Anthropic’s fees.
So I remain deeply ambivalent about vibe coding.
And one final test remains in any case: trying Spectel out on HF bands.
Of course, that means I’ll need willing partners out in the ether.
So if you’re a ham who’d like to help out, let me know in the comments below!