#packet #radio #ham-radio #protocols #client-server #low-bandwidth #ax

minipac

A packet radio protocol, designed for ham radio. Similar in function to AX.25

5 unstable releases

0.3.1 Dec 19, 2022
0.3.0 Dec 19, 2022
0.2.0 Jan 17, 2022
0.1.2 Jan 7, 2022
0.1.1 Nov 7, 2021

#12 in #ham-radio

25 downloads per month
Used in minitransfer

MIT license

46KB
1.5K SLoC

Minipac

Minipac is a client-server protocol designed to be used with low-bandwidth packet radio.

Features:

  • Compression

  • Error detection

  • Efficient packet resending

  • Packet acknowledgement

Data Transfer

Here's roughly how a data transfer works:

  • Node A sends a DataStart packet, indicating the number of packets that will be sent(not including this one) as well as the first chunk of data.
  • Node B sends a DataStartAck packet, acknowledging the request. If Node A doesn't hear this, it will resend the DataStart packet several times before aborting.
  • Node A sends all remaining packets in quick succession.
  • Node B sends a list of packet ids to Node A. These are the packet ids is it missing(lost in transit, or checksum didn't match). If Node A doesn't hear this, it will resend the last packet.
  • Node A resends the required packets, as well as a packet with the max ID to signify that it is done.
  • This repeats several times until all packets have been received and decoded properly.
  • Node B sends a DataResend packet, but with no ids. This tells Node A that it has received everything successfully.
  • The data has been transferred.

Unlike with AX.25 or AX.26, there are no constant back-and-forths, greatly speeding up the maximum transfer rate.

Dependencies

~6–15MB
~174K SLoC