Feeling retro? In the latest issue of The MagPi magazine, PJ Evans shows you how to turn any Raspberry Pi into a teletext broadcast service, make your own pages, and even generate content from the web.
The web? A bit overrated if you ask us. What was wrong with the beautiful teletext pages that came into our homes in the 1980s? The latest news, pop gossip, holiday bargains, and of course Digitiser. Did you think teletext was gone forever? Well, not only have a small group of dedicated archivists been saving and transcribing old teletext signals, but they have produced Raspberry Pi software that can generate the signals required to deliver those pages to your TV. Teletext is back! Here, we’ll show you how to get a teletext service running and even create your own pages.
01 Get your kit together
We’re basing this project on our Raspberry Pi Zero 2 W build from issue 113 of The MagPi to which we added composite video output last month. The computing requirement of the project is quite low, so a Zero-class device is perfect and cheap too. That said, this tutorial will work with any Raspberry Pi with a composite video signal out. You’ll also need a TV with a built-in teletext decoder. These are hard to find new but are plentiful second hand. You can normally see from the remote control whether it has the capability. Older CRT televisions will also give a truly retro feel to the project.
02 Choose your operating system
Teletext works by adding encoded data to the top few lines of the PAL video signal, which is why we cannot use HDMI for this project. The software we are going to use creates this encoded information, which the TV will detect as a teletext signal. This is done at the frame buffer level, which means a graphical user interface, such as Raspberry Pi Desktop, is not required. So, it’s up to you. You can install either full Raspberry Pi OS or the Lite version, which is preferable if you’re going to be displaying teletext all the time.
Once your OS is installed, open a command line, or SSH into your Raspberry Pi and before continuing, make sure everything is up-to-date with sudo apt -y update && sudo apt -y upgrade. If you are using Bullseye, the latest major release of Raspberry Pi OS, then Raspberry Pi requires a little configuration change. Open the main configuration file as follows:
sudo nano /boot/config.txt
Near the bottom of the file, look for a line that reads:
Comment it out so it looks like this:
Now save and exit (CTRL+X followed by Y). Reboot before continuing.
04 Check video output
Make sure your composite output is working from boot. Disconnect any HDMI cable you have been using, and make sure you have a working display. If not, run sudo raspi-config and enable composite output in Display Options > Composite. Also, for the teletext software to work, the TV has to be able to ‘see’ the encoded data at the top of the screen. If you have configured overscan compensation in raspi-config then it will not be able to do so. Double-check Display Options > Underscan is set to ‘No’. You may need to reboot.
05 Install VBIT2
Time for the magic part. The software that generates the teletext signal for us is called VBIT2 by Peter Kwan, with the help of raspi-teletext by Alistair Buxton. Thankfully, the community has made the installation of this collection of software a piece of digital cake. To install VBIT2, raspi‑teletext, and all its dependencies, run this from the command line:
peterkvt80/vbit2/master/getvbit2 | bash
This will also install a configuration utility, similar to raspi-config, that will help you get set up quickly and easily. After downloading everything it needs, it will go straight into the configuration menu.
You should now see a rather lonely ‘Install service’ menu item. That’s because VBIT2 cannot run until it’s got some content to work with. Tap ENTER to select and then review the choices. Out-of-the-box, VBIT2 offers a selection of teletext services. Some are community projects; others are archives of commercial services such as Ceefax, the BBC teletext service. We chose ‘Teefax’. If you get an error at this point, try another option and then select ‘Update services’. When you return to the main menu, a few new items will have appeared. Select ‘Options’ and then both items to make sure you keep up to date and start the service on boot.
07 Start and test
VBIT2 is now ready to start. From the configuration menu, select ‘Start VBIT2’ and then exit the utility. At this point, you should be dropped back to the command prompt. Try pressing the teletext button on your remote control. Hopefully, you’ll get a colourful home page (page 100). If it didn’t work, check whether you can see the encoded lines at the top of the screen. If so, you’ll need to change the underscan options in raspi-config (see Step 4) and try again. If all is well, enjoy moving from page to page by entering prompted page numbers.
08 Try a different service
As mentioned earlier, you can switch between services to vary your output. At any time, run vbit-config from the command line and change the way VBIT2 behaves. You can also ‘Update services’ which will check for newer collections of pages and updates to existing ones. Some are art collections, while others are collections of popular pages from the past (such as the writings of Mr Biffo and the Bamboozle quiz games). Others are snapshots of an entire service in a moment of time. Some even dynamically update from news feeds. Just ‘Select service’ to change what is being broadcast in real time.
09 Add some music
Giles Booth was looking to recreate the late-night feel of Ceefax pages cycling on TV with groovy background music. If you’ve got sound capability on your Raspberry Pi computer, let’s add some tunes. From the command line, run the following:
sudo apt install mpc mpd
mpc add http://icecast.radiofrance.fr/fip-
mpc play 1
Now add audio cabling from your Raspberry Pi to your TV’s A/V input for relaxing sounds to accompany your teletext. You can choose any music you like of course. Be warned, the music will restart on boot.
10 Add Twitter!
Tweets as teletext pages. What’s not to like? Mark Pentler has developed an additional service for VBIT2 that will generate pages from your Twitter feed. This Python script will run in the background and generate teletext pages using the TTI format supported by VBIT2. It requires a bit of setup, including creating API keys for your Twitter account. Luckily, it’s all very well detailed on the project’s GitHub page. Mark himself describes the project as ‘useless’, but we think it’s a great bit of fun.
11 Create your own service
So, you’ve trawled Ceefax as it was on the 14 August 1987, played a few games, and found out that the amazing holiday offer has now expired. Never mind, why not start creating your own teletext service? VBIT2 uses the TTI format for storing pages. This is a simple text format, but there’s a lot of commands. To make your own service, you’ll need to create a git repo that VBIT2 can clone and install. Have a look at the ~/.teletext-services/ directory and here for more information.
12 What’s next?
This is one of those projects which is done because it can be. That said, Teletext’s blocky format can be very eye-catching with its bright primary colours, and it could well serve as an attractive retro display for a shop window or makerspace. The art community is thriving and the ability of VBIT2 to live-update pages via a network interface means it can be hooked up to anything on the internet and turned into a cool display. Plus, there’s always the benefit of upcycling an old, unloved CRT box. So, what will you do with it?
Get The MagPi #114 NOW!
You can grab the brand-new issue right now from Tesco, Sainsbury’s, Asda, WHSmith, and other newsagents, including the Raspberry Pi Store in Cambridge. You can also get it via our app on Android or iOS. And there’s a free PDF you can download too.
You can also subscribe to the print version of The MagPi. Not only do we deliver it globally, but people who sign up to the twelve-month print subscription get a FREE Raspberry Pi Zero 2 W!