Last updated 2026-10-13 03:23 UTC
mLink

mLink Quickstart

What mLink is and what it does, a page per topic

By Tyler Dinsmoor, K7OTR · tyler@dinsmoor.us

Chapter 1

What mLink is

mLink is a concurrent global radio mail system: a complete radio messaging system for organised communications, with an HF data network, a mail system and a net-control tool in one package. Concurrent because one frequency carries several exchanges at once instead of one session at a time. Global because any station with internet access is a gateway to a central mailserver, so a mail reaches any callsign on any band anywhere, and ordinary email too. And still a radio mail system: when the internet is gone, stations carry mail for each other by radio alone. It turns an SSB transceiver, a sound interface and a computer into a station that moves messages and mail directly, through other stations, or through the internet, whichever works. Each heading below links to the chapter of the full manual that explains it.

Chapter 2

One system, top to bottom

mLink is designed as a whole, from the modem on the air to the mailbox on the internet, and is intended as a full replacement for the Winlink network and its several separate programs: the mail client, the modem, the gateway software and the central mail servers. Because every layer is built for the others, nothing has to be configured to match, and no air time is spent on negotiation between them.

JobWinlinkmLink
Writing and reading mailA client programThe client
The signal on the airA separate modem you must also have: VARA, ARDOP, packet, or a Pactor box costing well over a thousand dollarsThe daemon's own three modems; a sound interface with a PTT line is the only hardware
Choosing when and to whom to transmitThe operator picks a gateway and starts a sessionThe daemon, from what it has heard
Radio to internetGateway software at stations set up for itAny station with internet access
Radio only, station to stationA separate network of chosen stationsEvery station
Holding mailThe central mail serversThe mailserver
Nets, distress calls, maps, several bandsOther programs, or not coveredBuilt in

mLink is built to beat Pactor, VARA, ARDOP and packet where it counts: mail that arrives, and a frequency that carries everyone's traffic. With those modems an operator keeps a list of gateways, picks one, and hopes it is listening and in range. An mLink network works together: every station is always decoding and always helping, so there is no particular gateway to reach. Several exchanges run at once, there is no session to set up, only what was lost is sent again, weaker stations are reached, and strong compression can put mLink ahead of even the fastest of them for ordinary text. In simulated twelve-station nets running for hours, every mail and every message was delivered.

Full manual: What mLink Is; One system, top to bottom.

Chapter 3

The signal

An mLink channel is one SSB voice channel, about 3 kHz wide. Inside it are three kinds of signal, each in its own strip of the audio, each with its own modem. A receiver decodes all of them all the time.

announce region 200–1500 Hz bulk region 1500–3000 Hz emergency 125–175 Hz 400 800 1200 VOX leader 1400 Hz (optional) bulk-control 2250 OFDM 1594–2906 Hz 05001000 150020002500 3000 Hz emergency (8 tones) announce channel (QPSK) bulk (OFDM) allotment boundary (not where energy stops)
Figure 3.1. One SSB channel: the emergency signal at the bottom, three announce channels in the lower middle, and the bulk signal at the top.
StripAudioCarriesSounds like
Emergency125–175 HzDistress calls onlyA low, slow warble
Announce, three channelscentred on 400, 800 and 1,200 HzStation identification, short messages, acknowledgments, requests and repliesShort buzzy bursts, two thirds of a second each
Bulk1,500–3,000 HzLong messages, mail and attachmentsA wide, even hiss, 5.44 seconds per frame

A fourth announce-type channel, the bulk-control channel, sits in the middle of the bulk strip at 2,250 Hz. It carries only the short frames that open and acknowledge a bulk transfer, and takes turns with the bulk signal. It lives there rather than on an announce channel for a practical reason: most messages and mail compress small enough to go as short frames, so the bulk strip is quiet most of the time, while the announce channels get busier as more stations come on. Keeping a bulk transfer's own openers and replies inside the bulk strip means they are never held up by unrelated chatter, which matters because the two ends of a transfer are working to a reply deadline.

The strips are separated by empty spectrum, and every modem filters its own output, so a signal in one strip does not disturb another. Your radio's filters must pass audio from about 115 Hz to about 2,900 Hz, which is lower at the bottom than many voice settings. The placement of the strips is the result of a year of simulation; it may still move once mLink has been run between several real radios on the real ionosphere.

Four words this document uses carefully. A frame is one block of modulated data, the thing a modem sends and decodes. A transmission is one press of the key: one or more frames, then the radio unkeys. A message is what an operator sends, from one typed line up to about 64,000 bytes, carried by as many frames and transmissions as it takes. Mail is a message with a subject, recipients and attachments, which the mailserver can hold.

Full manual: One Passband, Three Regions; The Transmission Is the Unit.

Chapter 4

Modulation and error correction

Each strip has a modem chosen for its job. This page says what they are; the full manual explains how they work.

EmergencyAnnounceBulk
Modulation8 tones, one at a time (8-FSK), 6.25 Hz apartQPSK on one carrierOFDM: 28 carriers 46.875 Hz apart, 24 of QPSK data and 4 pilots
Symbol rate6.25 baud200 baud37.5 symbols per second on each carrier
Error correctionReed-Solomon (23,11)Reed-Solomon (23,11)LDPC at rate 1/2, 3/4 or 5/6
One frame carries11 bytes11 bytes603, 907 or 1,008 bytes
One frame lasts10.24 s0.64 s5.44 s at every rate
Useful speedabout 9 bit/sabout 130 bit/sabout 900 to 1,500 bit/s
Decodes down to−15 dB for one frame; a call reaches −17 dB because it repeats−5 dBabout +3 dB at rate 1/2; rates 3/4 and 5/6 need about 1 and 2 dB more

Signal levels are signal-to-noise ratios in a 3 kHz bandwidth (the SNR@3k yardstick). A report from FT8 or JS8 for the same signal reads about 0.8 dB higher. "Decodes down to" means the level at which nearly every frame still gets through: 99.7 % of short frames at −5 dB, 96 % of emergency frames at −15, and 19 bulk frames in 20 at +3. All three were measured in steady noise, through the whole receive path; the full manual has the curves.

Full manual: Error Correction: Reed-Solomon and LDPC; The Emergency Modem: NB8FSK; The Announce Modem: QPSK; The Bulk Modem: OFDM.

Chapter 5

How a message is sent

You never choose how a message goes out. The station picks from the size of the message and from how well the other station has been hearing you.

Size after compressionSent asAir time
Up to 156 bytesA shortburst: up to 16 announce frames in a row2 to 12 s
157 to 601 bytes, weak pathA longburst: two to four shortbursts, each acknowledged15 to 47 s
100 bytes and up, good pathA bulk transfer: up to 10 bulk frames per transmission, 64 in all7 s for one frame, 56 s for ten

The largest message to one station is about 64,000 bytes after compression; a broadcast to everyone is limited to about 6,000.

5.1 One exchange

  1. The station waits until it is not in another exchange, nobody has reserved the part of the passband it needs, and its receiver hears nothing. Then it waits a short random time, so stations that were all waiting do not key together.
  2. It sends one transmission. The first frame, PRESENCE, is the station's callsign and grid square, which is also its identification. The next says what follows and for whom. Then come the data frames.
  3. Stations that hear the opening stay off that part of the passband until the transfer is over.
  4. The recipient replies about two thirds of a second after the transmission ends: an acknowledgment if everything arrived, or a map of which frames did not.
  5. The sender repeats only the missing frames. A fade that destroys one frame in ten costs one frame, not the transfer.

If no reply comes, the sender does not repeat the data. It asks one short question, "did you get that?", and if that is not answered either it looks for a relay (Chapter 7).

Full manual: Mail in mLink; Three Sizes of Message; Getting Every Byte There.

Chapter 6

Several conversations at once

Most data modes give the whole channel to one transmission at a time. mLink divides the channel, so stations that are not talking to each other do not have to wait for each other.

time → 150400800 1200150022503000 Hz station B: distress call, 150 Hz station C station D station E station C, next message station A: bulk burst station A: presence, opener
Figure 6.1. Five stations transmitting in different strips. Two are on different announce channels at the same moment, and one comes back later on another channel. A receiver hears the sum and decodes each one.

One station still transmits one thing at a time and cannot receive while it transmits. The gain is across stations: on a busy frequency several exchanges proceed side by side, between stations that are out of each other's hearing or that are not following each other's transfers. How well it works is measured on a simulated air. In twelve-station nets running for hours, between none and about two frames in a hundred are overlapped by another station's transmission, and in a deliberately punishing search-and-rescue test on two bands, with many stations that cannot hear one another at all, about one in fifty. With 200 stations on one frequency about a quarter of all frames overlap another and are sent again, and the mail still arrives (Chapter 14).

Full manual: Sharing the Channel; One audio stream, many signals; Operator simulations.

Chapter 7

Automatic relay

On HF a station often cannot hear the one it wants, while a third station hears both. mLink uses that third station without anyone asking it to.

A sender B recipient C unattended 1. the mail: B does not hear it 2. A asks for a relay; C offers, A picks C 3. C sends its copy; B replies to C 4. C tells A the mail was delivered
Figure 7.1. B does not hear A. C, which hears both and overheard the message, delivers it.
  1. Every station keeps what it overhears. A message sent to someone else is kept by every station that decoded it, for as long as the operator leaves it in the database.
  2. The sender asks. When a message gets no reply, the sender transmits one short REQUEST naming the recipient and the message. It does not send the message again.
  3. Stations that can help offer. A station offers only if it holds a copy, has heard the recipient recently, within about half an hour, and has a usable path to it; stations that heard the recipient in the last two minutes answer first. Offers go out in separate time slots so they do not collide, and each says how well that station hears the recipient. When many stations could help, each works out its own place in line, two answer per slot, and normally only the best two answer at all. A station far down the line stays silent and moves up each time a request goes unanswered, so that a crowd does not all answer at once.
  4. The sender picks one, two seconds after the first good offer: the station with the best path to the recipient.
  5. The relay delivers its copy in a transfer of its own, with repairs if needed. The recipient files the message under the station that originally sent it, not under the relay.
  6. The relay reports back, and the sender's outbox shows the message as sent.

If nobody offers, the sender keeps the message and tries again when it next hears any station, first after one minute and then at gaps that double up to 32 minutes. From then on the request also invites a station that hears the recipient but did not overhear the message: such a station answers "I can reach them but I need the message", and the sender hands it the message in a transfer of its own.

Relay is not limited to one hop. A relay that cannot reach the recipient after all asks for a relay of its own, in the same way, and the message keeps the name of the station that originated it. No routes are configured and no station is a designated relay. Each hop is arranged for one message, from what stations have heard in the last few minutes.

Full manual: Relay: Recruiting a Helper; Finding Each Other.

Chapter 8

Mail

Mail in mLink looks like email: a subject, recipients, copies, replies tied to the mail they answer, and attachments. You write it, send it and walk away.

8.1 How it travels

8.2 How it arrives

You do not have to ask. When a gateway hears your station, it looks in your mailbox and tells your station what is waiting; your station fetches it. Several mails for one station travel together in one transfer. Where many gateways hear the same station they take turns, each looking at most once every fifteen minutes and standing down when it hears another has already answered. A station that no gateway can hear directly can ask through a relay.

8.3 What to know

Full manual: Mail Over the Air; The Mailserver.

Chapter 9

Virtual nets

Normally an mLink frequency has no net control. An operator who wants a net in the familiar sense can open one, give it a name, and let other stations join. Stations that do not join carry on as before on the same frequency.

A net is a layer of organisation, not a requirement. Messages, mail, relay and distress calls work the same with or without one.

Full manual: Virtual Nets.

Chapter 10

Distress calls

Any station can send a distress call, and every station is always listening for one. The call has its own strip at the bottom of the passband and its own modem, built to be heard when nothing else can be.

10.1 When a station hears one

The distress modem exists to raise the alarm, not to hold a conversation. Once a call is acknowledged the repeats stop, and the caller and the station that answered talk as any two stations do, with ordinary messages and mail, through relays and gateways like everything else. That is where the details get sorted out and where a rescue can be called off if it is not needed.

Full manual: The Emergency Modem: NB8FSK; Emergency: The SOS Service.

Chapter 11

Clusters: one station, several radios

A station can be more than one radio. Several computers, each running the daemon with its own radio on its own band, join into a cluster that shares one callsign and behaves as one station.

cluster link LAN or internet, never the radio member "shack" daemon + HF rig 40 m internet gateway member "hilltop" daemon + VHF rig 2 m member "trailer" daemon + HF rig 80 m W7AAA (40 m) K7BBB (2 m) on the air on the air operator's client connects to any member
Figure 11.1. Three members on three bands, joined over a network. Operators connect to any of them.

Joining takes a label, the address of one existing member, and approval by an administrator who compares two key fingerprints.

Full manual: Clusters: One Station, Several Radios.

Chapter 12

Also built in

12.1 Stations find each other

A new station listens for ten minutes before it identifies itself on its own. If it hears other stations it joins in; if it hears nobody it asks whether anyone can hear it. After that it sends a short beacon now and then, less often on a crowded frequency. A message you send goes out as soon as the air is clear, listening period or not. Every station keeps a list of who it has heard and how strongly, and stations pass each other short notes about who hears whom, which builds a map of the links on the frequency.

12.2 Position and maps

Every station is placed on a world map from its grid square, or exactly with a GPS. Stations can send position reports that leave a trail, and operators can share map objects such as search areas and routes. A message can be addressed to "any station in this area".

12.3 Internet data over the air

A station without internet can ask for data such as a weather report. A station with internet fetches it and sends back a compact answer.

12.4 Operators and roles

Several operators can work one station at once, each with an account. Three roles (operator, technician, administrator) decide who may change the station's settings. Sending a distress call is never restricted.

12.5 Identity and encryption

mLink encrypts with AES-256-GCM. Two stations that each hold a certificate signed by the mLink certificate authority agree a key without sending anything secret, or a group shares one key in advance. A message is compressed first and then sealed. Encryption is for services whose rules allow it, such as MARS and SHARES. Amateur rules forbid hiding what a message says, and mLink does not know what frequency it is on, so it is the operator who keeps it off there: nothing is encrypted unless keys have been loaded and the operator asks for it on that message. Separately, and on every service, a mail carries a short proof of its author that the mailserver checks. Distress calls are never encrypted.

12.6 FM

FmLink is mLink for FM voice radios and repeaters. It works today and has been run on the air between two inexpensive handhelds keyed by VOX, the slowest way a radio can be keyed. Radios the computer controls directly will run a faster tier, and that is where the work is going. The cheap handheld is supported because so many people own one, not because it is a good way to run mLink.

Full manual: Finding Each Other; Position, Maps and Tactical Overlays; Sharing the Internet Over the Air; Accounts, Roles and Shared Stations; Security Under Part 97.

Chapter 13

Getting on the air

13.1 What you need

13.2 Installing and running mLink

mLink is not yet available for distribution. It is still being built and tested, and there is no package or source release to download. When there is, this page will say how to install it and get a first station on the air; until then the full manual's Installing and First Run chapter describes how that will work.

13.3 What to expect

Full manual: Installing and First Run; The Operator's Guide to the Client; The Outbox, and Why Your Station Waits.

Chapter 14

How demanding is it?

mLink makes heavy use of simulated air time, with real mLink stations sharing one audio baseband and each station given its own handicaps: some are deaf to certain others, some fade in and out, in all sorts of configurations. The stations are the real program; only the sound card is fake.

The most demanding simulation so far is a 20 m frequency with 200 mLink stations on it for six hours, with several things going on at once: a search-and-rescue net looking for a lost vessel, a casual evening net, plenty of ordinary QSOs, and a few disruptive stations constantly calling CQ. The intent is to make sure that a safety-critical net can still perform well despite everything else competing for the frequency.

So far it performs remarkably well, with most messages and mail delivered despite the interference, and the simulation is where most protocol improvement now comes from. The design goal is for mLink to scale to 256 stations on a single frequency while keeping excellent delivery and air-time figures.

On the computer side it is light: a station on that busy frequency used about 3 % of one processor core and 50 MB of memory, before the sound card, rig control and the client.

The full manual's appendix A Busy Frequency: the 200-Station Simulation has every current figure, the current weak spots and their causes, and what the test does not show; How We Know It Works explains the simulated air itself.

Chapter 15

Numbers at a glance

ItemValue
ChannelOne SSB channel; signals occupy 115 to 2,906 Hz of audio
Emergency strip125–175 Hz; 8-FSK at 6.25 baud; 10.24 s per frame; one frame decodes to −15 dB, a repeating call to −17
Announce channels400, 800 and 1,200 Hz; QPSK at 200 baud; 0.64 s per frame; decodes to −5 dB
Bulk strip1,500–3,000 Hz; OFDM, 28 carriers at 37.5 symbols per second; 5.44 s per frame; from about +3 dB at rate 1/2, 1 to 2 dB more at the higher rates
Bulk control channel2,250 Hz, shared in time with the bulk signal
Error correctionReed-Solomon (23,11) on short frames; LDPC rate 1/2, 3/4, 5/6 on bulk frames
Bulk frame payload603, 907 or 1,008 bytes by rate
Useful speedabout 9, 130 and 900–1,500 bit/s (emergency, announce, bulk)
Signal levelsSignal-to-noise ratio in 3 kHz; bulk is tried from an estimated +6 dB
Shortburst1 to 156 bytes, up to 16 announce frames
Longburst157 to 601 bytes on a weak path
Bulk transferup to 64 frames, 10 per transmission; about 64,000 bytes
Largest broadcastabout 6,000 bytes
Reply after a transmissionabout two thirds of a second
Relay offer conditionsholds a copy; heard the recipient within about 30 minutes, those within 2 minutes first; path of −5 dB or better
Relay hopsno fixed limit; one handshake per hop
Overheard copieskept until the operator prunes the database
Retry gaps for a waiting message1, 2, 4, 8, 16, then 32 minutes
Mail lifetimenever expires; the mailserver keeps delivered mail unless a retention period is set
Distress call1 to 15 frames; up to 182 characters; repeats about every 75 to 90 s
Virtual netup to 127 members; roll-call slot 1.2 s
Held mailnet control keeps a member's mail when the member has not been heard for 2 minutes and no relay answers within about 20 seconds; delivered after the next check-in; the net's list names up to 10
Clusterup to 16 members
New stationlistens 10 minutes before beaconing; operator messages go out at once
Frames overlapped by another station, in simulation0 to about 2 % with 12 to 38 stations; about a quarter with 200 on one frequency

Every figure here is defined, with its source in the code, in Numbers at a Glance of the full manual.