[D66] GeoTalk ๐Ÿ“ก : Pseudo-HAM Radio & Text Messaging โ€” Geo-grouped by Postal Code

Renรฉ Oudeweg roudeweg at gmail.com
Sat Mar 7 20:54:43 CET 2026


[Voila: een kersverse pseudo-HAM CLI tool dat elke postcode of postcode 
regio in een tekst- en audiokanaal tovert. Heeft Henk van Lingen 
interesse om een de relay server op tuxtown.net te installeren? Dan 
kunnen we texten en broadcasten over het internet zonder dure HAM 
radio's en de nodige licenties voor zendamateurs. :-) Dat is weer eens 
wat anders dan knipselkrantjes maken...

PS: Enige Linux hack ervaring is een must.

Nog geen GUI. Niet getest met Windows of MacOS. Dus ik neem aan dat 
weinigen op deze lijst hiermee overweg kunnen. Maar goed, probeer het 
eens zou ik zeggen.

retour,

Renรฉ Oudeweg

]


--

https://github.com/juggao/geotalk

GeoTalk ๐Ÿ“ก

Pseudo-HAM Radio & Text Messaging โ€” Geo-grouped by Postal Code

GeoTalk is a Linux CLI tool that turns any postal code into a radio 
channel. Users in the same postal zone share a UDP group; voice (PTT) 
and text messages are broadcast to everyone on that channel โ€” like a 
local walkie-talkie net. Works on a LAN via IP multicast, or across the 
internet via a relay server.

Version 1.3.1

## Features

| | Feature | Details |
|---|---|---|
| ๐Ÿ“ฎ | Exact postal channels | Any EU/UK postal code is a channel โ€” 
`#59601`, `#
1234AB`, `#SW1A` |
| ๐Ÿ” | Wildcard channels | `#59**` = Venlo region ยท `#750**` = Paris ยท 
`#1***??`
  = Amsterdam |
| ๐Ÿงฉ | Regex channels | `/^[0-9]{4}[A-Z]{2}$/` โ€” full Python regex 
between `//`
|
| ๐Ÿ—บ๏ธ | Region database | 120+ EU postal prefixes resolved to 
human-readable regio
n names |
| ๐Ÿ’ฌ | Text messaging | Instant broadcast to all channel members |
| ๐ŸŽ™๏ธ | Push-to-Talk (PTT) | Real mic audio over UDP (16 kHz PCM) |
| ๐Ÿ“ป | Multi-channel RX | Subscribe to many channels at once; all arrive 
in one
terminal |
| ๐Ÿ”Ž | Channel scan | `/scan 59**` โ€” probe a region for live users, 
results stre
am in real time |
| ๐ŸŒ | Relay mode | `--relay HOST` for internet use โ€” no multicast 
routing neede
d |
| ๐Ÿ”„ | Auto-reconnect | Client reconnects to relay with exponential 
back-off |
| ๐Ÿ”’ | LAN mode | Pure peer-to-peer UDP multicast, zero infrastructure 
required
|


--


JOINING A CHANNEL

You join a channel by typing its postal code prefixed with #:

     #5912       join the exact channel for postcode 5912
     #5944AV     join the exact channel for postcode 5944AV

Anyone else on the same LAN (or connected to the same relay) who has 
joined #5912 will see your messages and hear your voice.


WILDCARD CHANNELS

You can also join a region rather than a single postcode:

     #591*       joins the Venlo Centrum region (5910โ€“5919, 591Aโ€“591Z)
     #59**       joins the entire Venlo regio (5900โ€“5999 and more)
     #750**      joins all Paris postcodes

The * matches exactly one character. The ** matches one or more. So 
#591* covers 5910, 5911, 5912 ... 591Z as a single subscription.


A CONCRETE EXAMPLE

Suppose three people are running GeoTalk:

     BOB    joined #5912
     ALICE  joined #5913
     CHARLIE joined #591*

BOB and ALICE are on different exact channels โ€” they cannot hear each 
other directly. But CHARLIE, on the wildcard #591*, is subscribed to a 
channel whose pattern covers both 5912 and 5913. BOB sends a message on 
#5912 โ†’ CHARLIE receives it. ALICE sends a message on #5913 โ†’ CHARLIE 
receives it too.


SCANNING FOR ACTIVE USERS

If CHARLIE wants to discover who is active in the Venlo area before 
joining, he can run a scan:

     /scan 591*

GeoTalk expands 591* into all 36 concrete codes (5910โ€“5919, 591Aโ€“591Z) 
and sends a probe to each multicast group. BOB's client receives the 
probe on #5912 and replies automatically. ALICE's client receives it on 
#5913 and replies. Within a few seconds CHARLIE sees:

     โ–บ #5912    BOB     NL ยท Venlo Centrum
     โ–บ #5913    ALICE   NL ยท Venlo Centrum

He can then join either channel directly, or join #591* to receive from 
both simultaneously.

A broader scan works the same way:

     /scan 59**    โ†’ probes all 5900โ€“5999 (100 channels) plus 
alphanumeric variants
     /scan 750**   โ†’ probes all Paris postal codes


PUSH-TO-TALK

Voice works like a walkie-talkie. Press Ctrl+T to toggle the mic on, 
speak, press Ctrl+T again to release. Everyone on the channel hears you 
in real time. Press Ctrl+Y to mute incoming audio if you only want to type.


RELAY MODE (internet use)

For use across the internet, one person runs the relay server:

     python3 geotalk-relay.py --port 5073

Everyone else connects to it:

     python3 geotalk.py --nick PA3XYZ --relay relay.example.com

The relay routes all traffic โ€” text, voice, and scans โ€” between 
connected clients. It requires only a single UDP port (5073) open on the 
server.


Let me know if you have any questions.

Best regards,

Renรฉ Oudeweg



More information about the D66 mailing list