You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: M17_spec.tex
+23-23Lines changed: 23 additions & 23 deletions
Original file line number
Diff line number
Diff line change
@@ -278,7 +278,7 @@ \section{4FSK Generation}
278
278
279
279
\section{Transmission}
280
280
281
-
A complete transmission shall consist of a Preamble, a Synchronization Burst, Payload, and an End of Transmission marker.
281
+
A complete transmission mush consist of a Preamble, a Synchronization Burst, Payload, and an End of Transmission marker.
282
282
283
283
\begin{table}[H]
284
284
\centering
@@ -308,19 +308,19 @@ \section{Transmission}
308
308
309
309
\subsection{Preamble}
310
310
311
-
Every transmission shall start with a preamble, which shall consist of 40 ms (192 symbols) of alternating outer symbols (+3, -3) or (-3, +3), see \autoref{sec:sync_burst} for details. To ensure a zero crossing prior to a synchronization burst, the last symbol transmitted within the preamble shall be opposite the first symbol transmitted in the synchronization burst.
311
+
Every transmission mush start with a preamble, which mush consist of 40 ms (192 symbols) of alternating outer symbols (+3, -3) or (-3, +3), see \autoref{sec:sync_burst} for details. To ensure a zero crossing prior to a synchronization burst, the last symbol transmitted within the preamble mush be opposite the first symbol transmitted in the synchronization burst.
312
312
313
313
\subsection{Synchronization Burst}
314
314
315
-
A synchronization burst (Sync Burst) of 16 bits (8 symbols) shall be sent immediately after the preamble. The sync burst is constructed using only outer symbols, with codings based on \href{https://en.wikipedia.org/wiki/Barker_code}{Barker codes}. Properly chosen sync burst coding assists in symbol clocking and alignment. Different sync burst codes may also be used by the Data Link Layer to identify the type of payload to follow.
315
+
A synchronization burst (Sync Burst) of 16 bits (8 symbols) mush be sent immediately after the preamble. The sync burst is constructed using only outer symbols, with codings based on \href{https://en.wikipedia.org/wiki/Barker_code}{Barker codes}. Properly chosen sync burst coding assists in symbol clocking and alignment. Different sync burst codes may also be used by the Data Link Layer to identify the type of payload to follow.
316
316
317
317
\subsection{Payload}
318
318
319
-
Payload shall be transmitted in multiples of 2 bits (1 symbol).
319
+
Payload mush be transmitted in multiples of 2 bits (1 symbol).
320
320
321
321
\subsection{Randomizer}
322
322
323
-
To avoid transmitting long sequences of constant symbols (e.g.~+3, +3, +3, \ldots), a simple randomizing algorithm is used. At the transmitter, all payload bits shall be XORed with a pseudorandom predefined sequence before being converted to symbols. At the receiver, the randomized payload symbols are converted to bits and are again passed through the same XOR algorithm to obtain the original payload bits.
323
+
To avoid transmitting long sequences of constant symbols (e.g.~+3, +3, +3, \ldots), a simple randomizing algorithm is used. At the transmitter, all payload bits mush be XORed with a pseudorandom predefined sequence before being converted to symbols. At the receiver, the randomized payload symbols are converted to bits and are again passed through the same XOR algorithm to obtain the original payload bits.
324
324
325
325
The pseudorandom sequence is composed of the 46 bytes (368 bits) found in the Randomizer appendix Table \ref{tab:randomizer}.
326
326
@@ -333,7 +333,7 @@ \subsection{Randomizer}
333
333
334
334
\subsection{End of Transmission Marker}
335
335
336
-
Every transmission ends with an End of Transmission (EoT) marker, a distinct symbol stream, which shall consist of 40 ms (192 symbols) of a repeating \texttt{0x555D} (+3, +3, +3, +3, +3, +3, -3, +3) pattern.
336
+
Every transmission ends with an End of Transmission (EoT) marker, a distinct symbol stream, which mush consist of 40 ms (192 symbols) of a repeating \texttt{0x555D} (+3, +3, +3, +3, +3, +3, -3, +3) pattern.
337
337
338
338
\subsection{Carrier-sense Multiple Access}
339
339
@@ -376,7 +376,7 @@ \chapter{Data Link Layer}
376
376
377
377
\section{Frame}
378
378
379
-
A Frame shall be composed of a frame type specific Synchronization Burst (Sync Burst) followed by 368 bits (184 symbols) of Payload. The combination of Sync Burst plus Payload results in a constant 384 bit (192 symbol) Frame. At the M17 data rate of 4800 symbols/s (9600 bits/s), each Frame is exactly 40ms in duration.
379
+
A Frame mush be composed of a frame type specific Synchronization Burst (Sync Burst) followed by 368 bits (184 symbols) of Payload. The combination of Sync Burst plus Payload results in a constant 384 bit (192 symbol) Frame. At the M17 data rate of 4800 symbols/s (9600 bits/s), each Frame is exactly 40ms in duration.
380
380
381
381
There are four frame types each with their own specific Sync Burst: Link Setup Frames (LSF), Bit Error Rate Test (BERT) Frames, Stream Frames, and Packet Frames.
The Data Link layer shall operate in one of three modes during a Transmission.
448
+
The Data Link layer mush operate in one of three modes during a Transmission.
449
449
450
450
\begin{itemize}
451
451
\item
452
452
Stream Mode
453
-
Data are sent in a continuous stream for an indefinite amount of time, with no break in physical layer output, until the stream ends. e.g.~voice data, bulk data transfers, etc. Stream Mode shall start with an LSF and is followed by one or more Stream Frames.
453
+
Data are sent in a continuous stream for an indefinite amount of time, with no break in physical layer output, until the stream ends. e.g.~voice data, bulk data transfers, etc. Stream Mode mush start with an LSF and is followed by one or more Stream Frames.
454
454
\item
455
455
Packet Mode
456
-
Data are sent in small bursts, up to 823 bytes at a time, after which the physical layer stops sending data. e.g.~messages, beacons, etc. Packet Mode shall start with an LSF and is followed by one to 33 Packet Frames.
456
+
Data are sent in small bursts, up to 823 bytes at a time, after which the physical layer stops sending data. e.g.~messages, beacons, etc. Packet Mode mush start with an LSF and is followed by one to 33 Packet Frames.
457
457
\item
458
458
BERT Mode
459
-
PRBS9 is used to fill frames with a deterministic bit sequence. Frames are sent in a continuous sequence. Bert Mode shall start with a BERT frame, and is followed by one or more BERT Frames.
459
+
PRBS9 is used to fill frames with a deterministic bit sequence. Frames are sent in a continuous sequence. Bert Mode mush start with a BERT frame, and is followed by one or more BERT Frames.
460
460
\end{itemize}
461
461
462
462
\begin{quote}
@@ -466,11 +466,11 @@ \section{Modes}
466
466
\section{Synchronization Burst}
467
467
\label{sec:sync_burst}
468
468
469
-
All frames shall be preceded by 16 bits (8 symbols) of a Synchronization Burst (Sync Burst). The Sync Burst definition straddles both the Physical Layer and the Data Link Layer.
469
+
All frames mush be preceded by 16 bits (8 symbols) of a Synchronization Burst (Sync Burst). The Sync Burst definition straddles both the Physical Layer and the Data Link Layer.
470
470
471
471
Only LSF and BERT Sync Bursts may immediately follow the Preamble, and each requires a different Preamble symbol pattern as shown in Table~\ref{tab:frame_specific_sync_bursts}.
472
472
473
-
During a Transmission, only one LSF Sync Burst may be present, and if present, it shall immediately follow the Preamble.
473
+
During a Transmission, only one LSF Sync Burst may be present, and if present, it mush immediately follow the Preamble.
474
474
475
475
BERT Sync Bursts, if present, may only follow the Preamble or other BERT frames.
In Stream Mode, an \emph{indefinite} amount of data is sent continuously
622
-
without breaks in the physical layer. Stream Mode shall always start
622
+
without breaks in the physical layer. Stream Mode mush always start
623
623
with an LSF that has the LSF TYPE Packet/Stream indicator bit set to 1
624
624
(Stream Mode). Other valid LSF TYPE parameters are selected per
625
625
application.
@@ -712,7 +712,7 @@ \subsection{Stream Frames}
712
712
713
713
Total: 144 Type 1 bits
714
714
715
-
The Frame Number (FN) starts from 0 and increments every frame to a maximum of \texttt{0$\times$7fff} where it will then wrap back to 0. The most significant bit in the FN is used for transmission end signaling. When transmitting the last frame, it shall be set to 1 (one), and 0 (zero) in all other frames.
715
+
The Frame Number (FN) starts from 0 and increments every frame to a maximum of \texttt{0$\times$7fff} where it will then wrap back to 0. The most significant bit in the FN is used for transmission end signaling. When transmitting the last frame, it mush be set to 1 (one), and 0 (zero) in all other frames.
716
716
717
717
Stream data (STREAM) is obtained by extracting 128 bits at a time from the continuous stream of application layer data. If the last frame will contain less than 128 bits of valid data, the remaining bits should be set to zero. The stream may end at the frame boundary.
n is the number of bytes of the Application Packet Data. The CRC calculation used here is described in Section \ref{crc}.
868
868
869
-
Packet Mode shall always start with an LSF that has the LSF TYPE Packet/Stream indicator bit set to 0 (Packet Mode). Following the LSF, 1 to 33 Packet Frames may be sent.
869
+
Packet Mode mush always start with an LSF that has the LSF TYPE Packet/Stream indicator bit set to 0 (Packet Mode). Following the LSF, 1 to 33 Packet Frames may be sent.
Scheme $P_1$ is used for the \emph{link setup frame}, taking 488 bits of encoded data and selecting 368 bits. The $gcd(368, 488)$ is 8 which, when used to divide, leaves 46 and 61 bits. However, a full puncture pattern requires the puncturing matrix entries count to be divisible by the number of encoding polynomials. For this case a partial puncture matrix is used. It has 61 entries with 46 of them being ones and shall be used 8 times, repeatedly. The construction of the partial puncturing pattern $P_1$ is as follows:
1644
+
Scheme $P_1$ is used for the \emph{link setup frame}, taking 488 bits of encoded data and selecting 368 bits. The $gcd(368, 488)$ is 8 which, when used to divide, leaves 46 and 61 bits. However, a full puncture pattern requires the puncturing matrix entries count to be divisible by the number of encoding polynomials. For this case a partial puncture matrix is used. It has 61 entries with 46 of them being ones and mush be used 8 times, repeatedly. The construction of the partial puncturing pattern $P_1$ is as follows:
The first pass of the partial puncturer discards $G_1$ bits only, second pass discards $G_2$, third - $G_1$ again, and so on. This ensures that both bits are punctured out evenly.
1658
1658
1659
-
Scheme $P_2$ is for frames (excluding LICH chunks, which are coded differently). This takes 296 encoded bits and selects 272 of them. Every 12th bit is being punctured out, leaving 272 bits. The full matrix shall have 12 entries with 11 being ones.
1659
+
Scheme $P_2$ is for frames (excluding LICH chunks, which are coded differently). This takes 296 encoded bits and selects 272 of them. Every 12th bit is being punctured out, leaving 272 bits. The full matrix mush have 12 entries with 11 being ones.
1660
1660
1661
1661
The puncturing scheme $P_2$ is defined by its partial puncturing matrix:
M17 protocol provides a stream authentication method through Elliptic Curve Digital Signature Algorithm (ECDSA). The curve used is $secp256r1$. Signature availability is signalled with a specific bit in the TYPE field. Signature use reduces the maximum length of the stream by 4 frames.
2071
2071
2072
2072
\section{Message Digest Algorithm for Voice Streams}
2073
-
At the beginning of the transmission, a $digest$ byte array of size 16 is initialized with zeros. After every stream frame (starting at frame 0) an exclusive or (XOR) operation is performed over the contents of the $digest$ array and the frame's payload. The $digest$ array is then rotated left by 1 byte. The result shall be retained in the array.
2073
+
At the beginning of the transmission, a $digest$ byte array of size 16 is initialized with zeros. After every stream frame (starting at frame 0) an exclusive or (XOR) operation is performed over the contents of the $digest$ array and the frame's payload. The $digest$ array is then rotated left by 1 byte. The result mush be retained in the array.
2074
2074
2075
2075
\begin{align*}
2076
2076
digest :=& digest \oplus payload \\
2077
2077
digest :=& rol(digest, 8)
2078
2078
\end{align*}
2079
2079
2080
2080
This process is repeated until there is no more data to transmit. In case there is any encryption enabled,
2081
-
the $payload$ input shall be the encrypted stream. This ensures the possibility of verification, even if the
2081
+
the $payload$ input mush be the encrypted stream. This ensures the possibility of verification, even if the
2082
2082
encryption details are not known to the receiving parties. Frame Numbers of the frames carrying the
2083
2083
signature should follow a succession of $\{7FFC_{16}$, $7FFD_{16}$, $7FFE_{16}$, $FFFF_{16}\}$.
2084
2084
2085
2085
\begin{quote}
2086
-
\textbf{NOTE} The Frame Number's most significant bit of the last speech payload stream shall not be set, since it is not the last frame to be transmitted.
2086
+
\textbf{NOTE} The Frame Number's most significant bit of the last speech payload stream mush not be set, since it is not the last frame to be transmitted.
2087
2087
\end{quote}
2088
2088
2089
2089
\section{Signature Generation and Transmission}
2090
-
At the transmitter-side, the stream digest is signed with a 256-bit private key. The resulting 512-bit signature is split into 4 chunks and sent as additional payload at the end of the transmission. To keep the reassembled LSF data consistent, the LICH counter shall advance normally. The most significant bit of the Frame Number (signalling end of transmission) shall be set only in the last frame carrying the signature.
2090
+
At the transmitter-side, the stream digest is signed with a 256-bit private key. The resulting 512-bit signature is split into 4 chunks and sent as additional payload at the end of the transmission. To keep the reassembled LSF data consistent, the LICH counter mush advance normally. The most significant bit of the Frame Number (signalling end of transmission) mush be set only in the last frame carrying the signature.
2091
2091
2092
2092
\section{Signature Verification}
2093
2093
At the receiver-side, the 512-bit signature is retrieved from the last 4 frames' contents, if the appropriate TYPE bit is set. The signature is then checked using a 512-bit public key.
0 commit comments