In the 1980s and 1990s, online communities formed around tiny digital oases called bulletin-board systems. Often run out of people’s homes and accessible by only one or two people at a time via dial-up modems, these BBSs let people exchange public and private messages, play games, and share files using simple menus and a text-based interface. Today, there is an uptick in interest in BBSs as a way to create idiosyncratic digital spaces away from the glare of large social-media platforms like Facebook, X, and Bluesky. Today’s BBSs are typically accessed over the Internet, rather than dial-up connections. But their old standalone mojo is possible thanks to one of the hottest new radio technologies: Meshtastic.
Indeed, this article is really the latest installment in what has become an accidental series that I’ll call “Climbing the LoRa Stack.” LoRa first appeared on Hands On’s radar in 2020, when enthusiasts realized that the long-range, low-bandwidth protocol had a lot of potential beyond just machine-to-machine Internet of Things connections, such as building person-to-person text messagers. Then last year we talked about the advent of Meshtastic, which adds mesh-networking capabilities to LoRa, allowing devices to autonomously create wireless networks and exchange data over a much larger area. In that article, I wondered what kind of interesting applications might be built on top of Meshtastic—and that brings us to today.
Created by the Comms Channel, the open source TC2-BBS software was first released last summer. It’s a set of Python scripts that relies on just two additional libraries: one for talking to Meshtastic radios over a USB connection and one that helps manage internal data traffic. TC2-BBS doesn’t require a lot of computing power because the low-bandwidth limits of LoRa mean it’s never handling much data at any given time. All of this means the BBS code is very portable and you can run it on something as low-powered as a Raspberry Pi Zero.
The BBS system uses a WisBlock Meshtastic radio with a status display [middle left and center], which can communicate wirelessly using LoRa and bluetooth antennas [top]. A servo moves a physical flag under the control of an Arduino Nano [middle right and bottom], while a Raspberry Pi runs the BBS Python software.James Provost
The current TC2-BBS feature set is minimal, albeit under active development. There’s no option for sharing files, the interface is basic even by BBS standards, and there are no “door games,” which let visitors play what were typically turn-based text adventures or strategy games. On the other hand TC2-BBS does have some features from the more advanced bulletin-board systems of yore, such as the ability to store-and-forward email among other BBSs, similar to the FidoNet network, which flourished in the early 1990s until it was supplanted by the Internet. And in a nod to the whimsy of door games, the TC2-BBS system does have an option that lets users ask for a fortune-cookie-style aphorism, à la the Unix fortune command. And of course, anyone can access it at any time without having to worry about a busy phone line.
I installed the software on a spare Raspberry Pi 3, following the simple instructions on GitHub. There is a Docker image, but because I was dedicating this Pi to the BBS, I just installed it directly. For the radio hardware, I hooked the Pi up to a RAKwireless WisBlock, which runs Meshtastic out of the box. In addition to a LoRa antenna, the WisBlock also has a Bluetooth antenna that allows for easy configuration of the radio via a smartphone app.
Anyone can access it at any time without having to worry about a busy phone line
The biggest hiccup was power: Normally the WisBlock radio is powered via its USB connection, but my attached Pi couldn’t meet the radio’s needs without triggering low-voltage warnings. So I powered the WisBlock separately through a connector normally reserved for accepting juice from a solar panel.
Soon I had IEEE Spectrum’s TC2-BBS up and running and happily talking via Meshtastic with a HelTXT communicator I’d bought for my earlier Hands On experiments. Now anyone within three hops of Spectrum’s midtown Manhattan office on New York City’s emerging Meshtastic network can leave a message by sending “hello” to our node, advertised on the Meshtastic network as IEEE Spectrum BBS.
But of course, just like the BBS’s of old, it was going to take a while for people to realize it was there and start leaving messages. I could monitor the BBS for visitors via a display connected to the Pi, but after a little poking around in the Python scripts, I realized I could do something more fun. By using the RPi.GPIO library and adding a few lines of code at the point where the BBS stores board messages in memory, I set the Pi to pulse one of its general-purpose input/output (GPIO) pins on and off for a moment every time a new message was posted.
The Raspberry Pi sends and receives serial data from the WisBlock Meshtastic radio, and it sends pulses via its GPIO header to the Arduino Nano when a post is added to the bulletin-board database. When the Nano receives a signal, it raises a physical flag until the reset button is pushedJames Provost
I fished an Arduino Nano out of my drawer and hooked it up to a servo, a push button, and the Pi’s GPIO pin. The Nano listens for an incoming pulse from the Pi. When the Nano hears one, it moves the arm of the servo through 90 degrees, raising a little red flag. Pressing the button to acknowledge the flag lowers the notification flag again and the Nano resumes listening for another pulse. This eliminates the need to keep the Pi plugged into a display, and I can check to see what the new message is via my HelTXT radio or smartphone.
So please, if you’re in New York City and have a Meshtastic radio, drop by our new/old digital watering hole and leave a message! As for me, I’m going to keep climbing up the LoRa stack and see if I can write one of those door games.
From Your Site Articles
Related Articles Around the Web