HamCore · de KC2KVY

Off-grid LoRa mesh messaging for US amateur radio operators. A Part 97-legal fork of MeshCore: plaintext on the air, Ed25519-authenticated, your callsign in every transmitted frame.

Get the app

⬇ HamCore Open for Android (APK)   iPhone via TestFlight   ▶ Use in your browser

iPhone: install Apple's TestFlight app first, then open the invite link. The browser version connects to your radio over Web Bluetooth or USB — Chrome or Edge required.

v9.5.0+16 · 303 MB · SHA-256 4661c2e994dfa62c8a219e8e35ad50c0144c0ef130ffc4687693a472bc8718fb
arm64 devices · install requires allowing “unknown sources” · source on GitHub

Firmware downloads — Heltec V3 & V4

Pre-built HamCore firmware (build d45db176, SHA-256 sums). Flash the whole image to address 0x0 with ESP Web Flasher (Chrome) or esptool write_flash 0x0 <file>.bin. Other boards: build from source (~87 supported variants).

Heltec V3 — companion radio (BLE)download
Heltec V3 — repeaterdownload
Heltec V4 — companion radio (BLE)download
Heltec V4 — repeaterdownload

What is HamCore?

HamCore is multi-hop mesh text messaging over LoRa — no internet, no infrastructure — operated under an FCC amateur radio license instead of Part 15. Compared to stock MeshCore:

Message contentPlaintext — §97.113(a)(4) prohibits obscuring meaning. Ed25519 advert signatures and keyed authentication codes are kept (authentication is permitted).
Station IDAn 8-byte callsign trailer on every transmitted frame (§97.119). The radio will not transmit until a valid callsign is configured, and the node name must start with it.
FrequenciesLocked to the 33cm (902–928 MHz) and 70cm (420–450 MHz) US amateur bands. Default: 906.875 MHz / BW 250 / SF 10 / CR 4:5.
Admin loginAn HMAC proof-of-password — the password itself never goes over RF.
CompatibilityNot over-the-air compatible with stock MeshCore, by design: the two networks reject each other's frames cleanly.

Get started

  1. Hold a license. Technician class or higher to transmit; receive-only monitoring needs none.
  2. Flash the firmware to any MeshCore-supported LoRa board (Heltec V3/V4, RAK4631, T-Deck, T1000-E, ~87 variants): github.com/tek126/hamcore
  3. Install the app above, connect over BLE or USB, and set your node name to your callsign (e.g. KC2KVY or KC2KVY-2). TX stays inhibited until you do.
  4. Pick a band preset — US 33cm (recommended) or US 70cm — and mind your local band plan.

The pieces

hamcoreFirmware for companion radios, repeaters, room servers, and sensors. Compliance rationale in HAMCORE.md.
hamcore-openThe Android/iOS/desktop app (this APK) — chat, channels, maps, repeater admin. Fork of meshcore-open.
hamcore_pyPython library for scripting against a HamCore radio.
hamcore-cliTerminal client (meshcli) over BLE / USB / TCP.
No expectation of privacy. Everything sent on a HamCore network — including direct messages — is transmitted in plaintext and is readable by anyone with a receiver. That's the law on amateur spectrum, and the design embraces it. Don't send anything sensitive, and treat repeater passwords as access tokens, not secrets.