Setting up on CoreNet

From bare hardware to a radio on the network.

No VPN required. Your radio host connects straight to the network core — there is nothing to enrol in, no tunnel client to install and no overlay network to keep running. If your Pi can reach fne.corenet.systems on UDP port 62031, you are done networking. Everything you need is served from this site; there is nothing to fetch from anywhere else.

1 What you need

  • A Raspberry Pi 4 or 5 running 64-bit Raspberry Pi OS (Bookworm or Trixie). A regular Linux PC works too.
  • One or two radio boards — see the next section.
  • SSH access to the Pi, or a keyboard and monitor on it.
  • A P25-capable radio you can program.
  • Enough Linux familiarity to paste a command and read what it prints.

Network: an ordinary internet or LAN connection. Outbound UDP to port 62031 must not be blocked. No port forwarding is needed — your host makes the connection outward, nothing connects inward to you.

2 Choosing your hardware

How many boards you need depends on what you want to run.

SetupBoardsWhat it gives you
Conventional One board on the Pi A single voice channel. Simplest build; no control channel, so no trunking.
Trunking recommended Two boards — one on the Pi, one on a USB adapter A dedicated control channel plus a voice channel. This is what the two Peer IDs you are issued are for.
Linux PC Two boards on USB adapters Same as trunking, on any Linux host instead of a Pi.

The network issues everyone two Peer IDs — one control, one voice — so a trunking build works without asking for anything extra. A conventional build simply leaves the control peer unused.


Parts list

What members on this network actually build with. Prices are what they were when the list was last updated — treat them as a guide, not a quote.

PartCategoryQtyPrice
CanaKit Raspberry Pi 4 (4GB) Basic Kit
Raspberry Pi 4 (4GB) with case, power supply and microSD - the client node computer.
Compute 1 $124.99
AURSINC MMDVM Duplex Hotspot Module Dual Hat V1.5.2
Dual-slot MMDVM hotspot HAT for Raspberry Pi - supports P25, DMR, YSF, NXDN.
Radio Interface 1 $59.99
AURSINC MMDVM Simplex USB HAT Board
Simplex / dual-band MMDVM USB HAT modem - DMR / DSTAR / BlueDV.
USB HAT Board 1 $25.88
MMDVM Duplex Hotspot Module Dual Hat V1.5.2
Dual-slot MMDVM hotspot HAT for Raspberry Pi - supports P25, DMR, YSF, NXDN.
Radio Interface 1 $44.99
DVM-HS-USB Hotspot USB-C Serial Adapter (for MMDVM Hotspot HATs)
USB-C serial adapter that connects Pi-hat form-factor MMDVM hotspot boards to a PC/Pi over USB. CP2102 USB-to-serial with reset/power buttons and a BOOT0 switch for flashing.
USB HAT Board 1 $14.99
Zebra DRPi-1S Case (Duplex MMDVM + Raspberry Pi 4/3B+, Black Ice)
Enclosure for a Duplex MMDVM hotspot with a Raspberry Pi 4 or 3B+, with room for a 0.96" OLED screen.
Case 1 $29.99

You do not need everything here — pick the compute, the radio board(s) for your setup above, and a case if you want one. For a trunking build you need two radio boards and the USB serial adapter for the second one; that adapter's BOOT0 switch is also what makes flashing straightforward later.

3 Request access

Fill in the Request Access form with your callsign and why you want on the network.

Your account starts pending — you cannot sign in until an administrator approves it. On approval you are automatically issued a Radio ID, two Peer IDs and a Site ID. Nothing is issued before then, so there is no point building configs yet.

4 Collect your IDs

After approval, My Account shows your Radio ID, Control and Voice Peer IDs, Site ID and your own FNE password. You do not choose these — they are allocated for you, and they are unique to you.

5 Prepare the Pi

Flash 64-bit Raspberry Pi OS, boot it, and get a terminal on it. Then bring it up to date and attach your board(s):

sudo apt update && sudo apt full-upgrade -y
sudo reboot

For a trunking build, fit one board on the Pi's GPIO header and connect the second through its USB adapter. For a conventional build, just the one on the header.

The board on the GPIO header needs the Pi's serial console off and the UART on. The installer in the next step does this for you — that is why it reboots at the end.

6 Install

Once you are approved and signed in, this page shows a single command built for your account, with your Peer IDs and password already filled in. Paste it into the Pi and it installs the radio host, your configs and the control panel in one step.

Use the one-line command above. It is the only step that pulls your configs onto the Pi. The separate downloads below are for hand-building or replacing configs later — on their own they do not set up a working radio.

Other ways to install, all from My Account:

  • Full installer — the same all-in-one build, as a script you can read first.
  • Setup script — writes the configs and services only, for a host that already has the radio software built.
  • Config ZIP — just the two config files, to place yourself.

7 Flash the RF boards

The installer builds the firmware but does not load it onto the board. If your boards came pre-flashed and working, skip this step. If a board is new, blank, or you are updating it, do this — otherwise the services will start happily and you will have no RF at all.

The installer already compiled the firmware and installed the flashing tool. The file you are loading is dvm-firmware-hs_f1.bin, in the dvmfirmware-hs folder the installer built in.

Stop the radio services first. While they are running they hold the serial port open and the flash will fail:

sudo systemctl stop corenet-client@cc corenet-client@vc
cd ~/dvmfirmware-hs
Option A — on a USB adapter easiest

If you have the USB adapter board, flash through it. No jumper wires, no reset timing.

  1. Seat the board on the USB adapter.
  2. Set the adapter's switch to BOOT0 (on older adapters, position B or ON).
  3. Plug it into the Pi and run:
sudo stm32flash -v -w dvm-firmware-hs_f1.bin /dev/ttyUSB0

When it reports 100% and success, set the switch back to the normal position and replug. This is also how you flash the second board in a trunking build.

Option B — on the Pi's GPIO header

For the board sitting on the header, put it into programming mode by bridging its boot pins, then reset it.

  1. Bridge the board's boot jumper points (marked J1, or the two BOOT sockets) with a jumper or wires. Make sure bare wires are not touching each other.
  2. Press the board's reset button. The red heartbeat LED should stop flashing — that is how you know it is waiting for firmware.
  3. Run the command for your OS version:

Raspberry Pi OS Bookworm or newer (GPIO numbering changed, hence the different pin numbers):

sudo stm32flash -v -w dvm-firmware-hs_f1.bin -i 532,-533,533,-520 -R /dev/ttyAMA0

Older releases:

sudo stm32flash -v -w dvm-firmware-hs_f1.bin -i 20,-21,21,-20 -R /dev/ttyAMA0

Once it completes, remove the jumper and reset the board again. The heartbeat LED should resume.

Trunking builds have two boards — the one on the header (/dev/ttyAMA0, your control channel) and the one on the USB adapter (/dev/ttyUSB0, your voice channel). Both need working firmware.

Then start the services again:

sudo systemctl start corenet-client@cc corenet-client@vc

8 Check that you are on

After the reboot, on the Pi:

systemctl status corenet-client@cc
systemctl status corenet-client@vc

Both should be active (running). On this site, the Peer Health and Network Topology pages should list your two peers as connected within a minute or so. If they are not, jump to If something is wrong.

9 Program your radio

In your radio's programming software, match the network:

WACNAED00
System ID9A7
NAC9A1
Your radio / subscriber ID your assigned RID

Your talkgroup list, with the TGID to program for each, is on My Account → My Talkgroups.

Set the subscriber ID to your own RID. Two radios sharing an ID will not both work.

10 Encryption (optional)

Encrypted talkgroups need one key loaded into the radio by hand before anything can happen over the air:

  1. An administrator assigns you a UKEK (your radio's unique key).
  2. You load that UKEK into the radio with a key fill device. This part cannot be done over the air — it is what makes everything after it possible.
  3. From then on, traffic keys are delivered over the air automatically. When your radio asks for a rekey, the network answers.

If a radio requests a rekey and nothing happens, it has no UKEK assigned yet — an administrator can see exactly that on the OTAR Monitor.

11 If something is wrong

Peers will not connect
Most often the configs are older than your password. If you have changed your password since installing, My Account will say so — download your configs again and reload them.
I changed my password and everything stopped
Expected. Your radios use your sign-in password, so it changed for them too. Re-download your configs.
Rejected with an ACL error
Your Peer IDs are not authorised on the core yet. Ask an administrator to check the peer list — it is a one-click fix on their side.
Nothing reaches the core at all
Check the Pi can reach fne.corenet.systems on UDP 62031. A firewall blocking outbound UDP is the usual cause. Remember there is no VPN in the path — if you were expecting to connect a tunnel first, you do not need to.
The browser warns the site is not secure
This site uses its own certificate because it is reached by IP on a private network. The connection is still encrypted. An administrator can give you the certificate to import if you want the warning gone.
Radio is on but hears nothing
Check the WACN, System ID and NAC above match your codeplug exactly, and that you programmed a talkgroup you are actually cleared for.
Services run, peers connect, but there is no RF
Classic sign of a board with no working firmware. The installer builds the firmware but does not load it — see Flash the RF boards.
stm32flash cannot open the port
The radio services are holding it. Stop them first: sudo systemctl stop corenet-client@cc corenet-client@vc.
stm32flash says it cannot talk to the board
It is not in programming mode. Check the boot jumper is on (or the USB adapter switch is at BOOT0), press reset, and confirm the red heartbeat LED has stopped flashing before running the command. On Bookworm and newer, make sure you used the 532,-533,533,-520 pin numbers — the older ones will not work.
The Pi panel's update check says “Connection refused”
The panel is checking the wrong address for updates — usually one set at install time, before the server moved. On the Pi panel's Dashboard click Update source… (it opens on its own when a check fails) and set it to https://fne.corenet.systems/panel/atioverwatch-web.py, then Save. No such button means an older panel — re-run the install command from My Account once and it self-updates after that.
Still stuck? Sign in and open Help, or ask an administrator.