💾 Archived View for nytpu.com › gemlog › 2024-09-05 captured on 2024-09-29 at 03:34:34. Gemini links have been rewritten to link to archived content

View Raw

More Information

-=-=-=-=-=-=-

↩ go back to index

ROOPHLOCH 2024: Radios and modems and serial, oh my!

September 5, 2024

This post available in the Pure, OG ROOPHLOCH form on Gopher, as well as on Gemini and the Web (all as per the usual):

gopher://nytpu.com/0/gemlog/2024-09-05

gemini://nytpu.com/gemlog/2024-09-05

http://nytpu.com/gemlog/2024-09-05

ROOPHLOCH announcement post & information (Gopher)

ROOPHLOCH announcement post & information (Gemini)

Every year I've seen it, I always end up forgetting about ROOPHLOCH or not having any decent ideas for it, but this year I had a decent idea and I'm getting started early in the month!

Authoring & transmission setup

Receiving & posting setup

1.67 miles away

Not posting a picture of my surroundings because it'd narrow you right down to where I live, but it was at the top of a grassy hill in a park, by a lake and a soccer field

In short, this post was written in a park on a c. 1983 NEC PC-8201A computer[1]. It is then uploaded over serial to a ClockworkPi uConsole[2], which modulates it using the Bell 103 standard[3], and plays the audio through my handheld amateur radio.

1.67 miles away, in my bedroom[4], I have my laptop with a software-defined radio[5] listening to the audio and attempting to demodulate any Bell 103 sounds it hears. Once it does, it looks for a predefined header and footer and dumps the content between them into a new gemlog post, triggers my static site generator, and uploads everything to my server.

Note that I am cheating my own rules and I manually copied all the images to my laptop using SSH on my phone over cellular data, but the text of the post was entirely transmitted using this setup and posted completely automatically once received.

EDIT ON-THE-GRID:

it took like five minutes to transmit, I wasn't expecting it to take quite that long XD. I was so sure something was gonna get corrupted, and then my SSG would abort because of the invalid UTF-8 and the autoupload wouldn't work. But no, shockingly everything worked as intended?!?

[1]: NEC PC-8201A computer

[2]: ClockworkPi uConsole

[3]: Bell 103 standard

[4]: I was going to try my backyard but it gets worse reception than inside my bedroom since the latter is above the trees

[5]: software-defined radio

Here's the full details of the setup: I'm writing this post on my NEC PC-8201A. Yes, I did actually type all this out by hand on the 8201A, including all the links.

After I finished writing, the 8201A is connected to my uConsole over a serial->USB adapter, and then the uConsole audio out is connected to a handheld radio. (I didn't write the post on the uConsole because it's really hard to type effectively on it lol, and it's amusing to add an extra intermediate step).

After setting up the serial parameters with `stty`, I begin a serial upload on the 8201A and directly modulate it using Bell 103 modem protocol and play the audio to the radio[6]:

cat header.txt /dev/ttyUSB0 footer.txt | minimodem -t 300

A bit of a tricky manuever because I have to hold the PTT on the radio for the whole duration, start the command on the uConsole, then start the file upload from the 8201A. Then once the file upload finishes I manually hit control-d on the 8201A to trigger an EOF on the uConsole end, and wait for it to finish sending the footer + my callsign.

Then, set up beforehand 1.67 miles away, I have my RTL-SDR set up on my laptop, hooked up to a homemade planar disk antenna[7]. On my laptop I have a Fun[8] script running that tunes the RTL-SDR, transcodes the audio, demodulates it, and then feeds the text to a simple Lisp program that looks for a specific header, and dumps the content after that into a new gemlog post file. After finding a footer, it triggers my “static site generator” and uploads it to my VPS. The script also saves pretty much every step of the process for inevitable debugging but that's not relevant when it functions.

The script setting up the listening and signal processing pipeline

The Lisp script processing the demodulated data

[6]: When choosing the frequency, I just checked repeater indexes and right before heading out browsed the 2 meter band in GQRX to make sure I'm unlikely to be stepping on anyone's toes. And listened in on my handheld right before transmitting. Not that this isn't allowed or anything, but since I'm just transmitting to myself rather than contacting others I wanted to stay as out-of-the-way as possible.

[7]: planar disk antenna

[8]: Fun

Postscript:

I'm 99% sure this is perfectly acceptable to do over amateur radio, but not completely. Unfortunately information out there is hazy about digital modes other than the super common standard ones. The main rule AFAIK is just that you can't be obscuring what you're transmitting, which I'm certainly not here. Bell 103 is still pretty universal (although not used in amateur radio AFAIK) and readily identifiable by ear, everything is being transmitted in plaintext, and I include my callsign at the end (and at the beginning for good measure).

I suppose I could've read all the FCC regulations directly to find out for certain, but I just didn't feel like it and went ahead anyways lol.

Post-postscript:

I realized when I tried to type the link to Solderpunk's ROOPHLOCH announcement post, that the NEC PC-8201A doesn't appear to have a tilde key lol. It has graphics in ROM for it, and does have an “alt graph” key, but that only seems to allow entering control characters and high ASCII. I eventually just manually executed some BASIC statements to open a new text file, write a tilde with `CHR$(126)`, and then I could copy and paste the character from that text file into the post. At least the 8201A has a cross-file clipboard (or a clipboard at all), unlike most other machines of the time and even 5+ years later!

↩ go back to index

also available on the web

contact via email: alex [at] nytpu.com

or through anywhere else I'm at

backlinks

-- Copyright © 2024 nytpu - CC BY-SA 4.0