
Beelzebubba the Third · Master of Ceremonies
Broadcasting? I invented broadcasting. There is a small outstanding matter with a lightning rod and a patent clerk in 1888 that I intend to litigate until the sun burns out, but — here, look — the boy in Kentucky has built himself a proper little radio-table and a machine that reads it, and it is my genuine pleasure to introduce it.
What sits before you is a command-line control panel for a MeshCore radio, written in harmless plain Python, no phone app, no downloads. It shows you the node, the contacts it can hear, the messages, the telemetry, and the actual route a packet took, hop by hop. There is also a map view that pulls the official public node list and tells you, coldly, where the nearest live repeaters are and whether a chain exists between you and any place you name.
And that is where the fun stops being fun. The radio is running on our MeshCore 500 profile, in Lexington, and Philadelphia is roughly 820 kilometres away, which as the map view will cheerfully inform you is a gap of some seven hundred and ninety lonely kilometres with not one repeater standing in it. The little machine is on the correct channel. It is simply shouting into a field. I respect the optimism; I have shouted into fields myself, professionally, for centuries.
— Beelzebubba the Third
Today's Outstanding Grievance A network with an eight-hundred-kilometre hole in it is not a network, it is a rumour with a callsign, and I will be filing with the relevant office.
What it actually does
One terminal program, talking to a MeshCore companion radio over TCP. Written for people who would rather read a status line than pair a phone.
Talk to the node
Node info, contacts, channels, DMs with ACK timing, telemetry, battery, and a live event log — over the companion protocol on TCP :5000.
Trace the hops
Send a trace and see the path a packet took, with SNR at every hop. The closest thing MeshCore has to a traceroute.
See the network
Press v (or M) for a topology view from the official node list: nearest active repeaters, your local profile, and a route-gap check to any target.
Push to ntfy
The host watches the mesh and posts to an ntfy topic on the events you pick — a tracked key heard, a DM, a channel message, a trace.
Inside the zip
Run it with ./play.sh --host <ip>, or ./play.sh --demo for the full interface with synthetic data and no radio at all.
Where it is — and why it won't connect to Philly
The node is in Lexington, KY (~38.04, −84.50). The PhillyMesh reference node is near Philadelphia (~39.80, −75.16): about 820 km apart.
- On MeshCore 500, the map view finds the nearest node ~800 km away, with a ~790 km unbroken gap to Philly (≈5% of the line covered).
- On the US-default profile (910.525/62.5/SF7/CR5) Lexington is dense — hundreds of repeaters within 150 km, nearest ~3 km — but that profile cannot talk to MeshCore 500 at all.
Why the gap can't be routed around:
- Hop caps. MeshCore 2-byte paths top out at
32hops; Meshtastic's limit is7. 820 km needs ~30–45 ground hops at realistic spacing — a 7-hop Meshtastic path would need ~117 km/hop, which the ground does not provide. - No chain exists. Repeaters cluster around cities; nothing spans the Appalachians between KY and PA, and every hop would have to be live at once.
- The protocols don't bridge on RF. MeshCore and Meshtastic nodes physically cannot hear each other — one radio, one firmware.
- The map can't create propagation. Maps are built from observers hearing adverts over RF; a silent node in Kentucky won't appear on the Philly map.
The only realistic "reach Philly" paths are internet backhaul (an MQTT/HTTP bridge with cooperation at the Philly end) or a temporary aerial relay — not RF from here. So read this as a live control-panel demo plus a map tool, running on the PhillyMesh profile on purpose.
The device & the profile
| Board | Heltec WiFi LoRa 32 V4.3 (ESP32-S3, SX1262, 16 MB) |
|---|---|
| Firmware | MeshCore v1.18.0 — heltec_v4_companion_radio_wifi, custom-compiled with the Wi‑Fi SSID/password baked in (the prebuilt v1.18.0 assets ship only BLE and USB companions; the Wi‑Fi build is source-only) |
| Radio | 919.5 MHz / BW 500 / SF10 / CR5, TX 22 dBm, path-hash mode 1 (2-byte) — the MeshCore 500 profile |
| Network | joined Wi‑Fi, companion TCP on :5000 |
| Address at handoff | 192.168.4.30:5000 (DHCP) |
| Name | EdGPT (key prefix bb8828d8) |