Reed-Solomon Identification
Reed-Solomon Identification (RSID) of digital modes is a creation of Patrick Lindecker, F6CTE, and kindly released to the public domain. It is used in several digital mode programs. Patrick maintains the master list of code / mode assignments in order to maintain compatibility between these programs. He accepts requests for new modes if it can be shown that the mode has a high utility factor. The reason for not simply adding every mode in current use will be explained later in this document.
RSID allows the automatic identification of any digital transmission which has been assigned a unique code identifier. All RSID's are detected by fldigi, but not all are decoded. All detected codes are annunciated. On reception of a RS ID, two events occur: the mode used is detected and the central frequency of the RSID, which is also the central frequency of the identified mode, is determined with a precision of 2.7 Hz. This is sufficient to allow all current modes to begin accurate decoding. This is an excellent way to insure that signals like MFSK are properly tuned and decoded.
The RSID signal is transmitted in 1.4 sec and has a bandwidth of 172 Hz. Detection of the RSID signal is possible down to a Signal to Noise ratio of about -16 dB, so with a sensitivity equal or better than the majority of the digital modes (RTTY, PSK31...), except several modes as PSK10, PSKAM10, THROB, THROBX or JT65.
Note: consequently, it is possible to detect RSID and not be able to decode the ensuing data signal due to it being too weak a signal.
fldigi allows the RSID signal to be sent at the beginning and the end of each transmission. The leading RSID is the normal position.
During reception fldigi can decode RSID signals within the entire audio spectrum. It can also be configured to limit the reception to a narrow bandwidth centered on the current audio subcarrier. Detection occurs as a background process and does not interfer with the normal signal decoding. False detection is possible, but statistically rare due to the use of a very strong autocorrelation function associated with the RSID codes.
At the present time, five
programs offer RSID:
RS ID programs sources are available C++, from OK1IAK, W1HKJ and HB9DRV. They are also available from F6CTE in Delphi.
The master list of RSID code/mode combinations is maintained by Patrick, F6CTE, and changes made to the list in concurrence with the above list of software developers. This list is distributed on the DigitalRadio Yahoo group at each change.
Description of RSID
Each mode corresponds to a number which is transformed in a particular Reed-Solomon sequence. This RS coding ( RS (k = 4, t = 6) ) is defined by the parameters
Each RS sequence is composed of 15 symbols of 4 bits, among which 3 (n – 2 x t) contain data. In other words, 12 bits (3 x 4) are available to define the mode number. Consequently, the number of possibilities would be equal to 4096 (2^12).
In addition, even if the maximum number of errors which could be fixed is equal to 6, it is limited to one correction so as to have a negligible probability of false detection. This is accomplished by increasing the Hamming distance between any random sequence and the selected sequences.
It has been proposed that two RSID could be sent sequentially or that two RSID could be also transmitted in juxtaposed frequencies. As false RS ID detection with part of one and part of the other (either in the time domain or the frequency domain) must be avoided, it is necessary to identify a subset of the 4096 RSID codes that are mutually independent or orthogonal. That is, two unique RSID sequences can't produce a valid but wrong RSID code. This subset is composed of only 272 unique values. Secondary and tertiary subsets can be identified which can produce false detections. These are only assigned for use during the development of a new modem type.
If every known digital signal were assigned a unique code the list of 272 would quickly be exhausted. It is for that reason that not every combination of baud rate, tone numbers, and bandwidth is currently supported for RTTY, MFSK, OLIVIA, CONTESTIA, DOMINO-EX and THOR. Some RSID codes exist for modes which are currently out of vogue. That is simply due to the development history of the RSID technique. Multipsk was the only digital modem program to support RSID for some time and Patrick merely assigned codes to all of the modes supported by his program at the time that RSID was introduced.
Each symbol is transmitted using MFSK modulation. There are 16 possibilities of frequencies separated by 11025 / 1024 = 10.766 Hz. Each symbol transmission being done on only one frequency for a duration equal to 1024 / 11025 x 1000 = 92.88 ms. The entire RSID sequence of 15 symbols is transmitted in 15 x 1024 / 11025 = 1393 ms. The RSID signal is transmitted at the maximum peak power of the associated modem signal.
Decoding can be accomplished by a brute force algorithm where all the possibilities are tested. The possible found solutions are sorted according to their distance (0 or 1) to a valid solution and according to a pseudo signal-to-noise ratio (peak power/average power). The final detected code will have the lowest distance with the largest pseudo signal-to-noise ratio.
Vojtech, OK1IAK, developed a hashing algorithm which reduces the detector processing load. He kindly made that code available to other developers. Both fldigi and DM780 use Vojtech's decoding algorithm.
For each semi-step of time (46.44 ms) and for each semi-step of frequency (5.38 Hz), the program attempts to detect a RSID extending for the last 1.393 seconds. So each second, about 8500 possible RSID (depending on the selected bandwidth) are tested (depending on the bandwidth).
The analysis is based on a Fast Fourier transform of 2048 points at 11025 samples/sec, regularly done at each semi-step of time (46.44 ms).
There are only two
possible outputs from the detection algorithm:
The
probability of detecting a wrong RSID is almost nil.
List of assigned RSID codes by RSID code, mode, and whether supported by fldigi:
# |
RSID Code |
Mode |
fldigi |
1 |
1 |
BPSK31 |
yes |
2 |
2 |
BPSK63 |
yes |
3 |
4 |
BPSK125 |
yes |
4 |
126 |
BPSK250 |
yes |
5 |
173 |
BPSK500 |
yes |
6 |
110 |
QPSK31 |
yes |
7 |
3 |
QPSK63 |
yes |
8 |
5 |
QPSK125 |
yes |
9 |
127 |
QPSK250 |
yes |
10 |
183 |
PSK125R |
yes |
11 |
186 |
PSK250R |
yes |
12 |
187 |
PSK500R |
yes |
13 |
7 |
PSKFEC31 |
|
14 |
8 |
PSK10 |
|
15 |
9 |
MT63-500 long interleave |
yes |
16 |
10 |
MT63-500 short interleave |
yes |
17 |
11 |
MT63-500 very short interleave |
|
18 |
12 |
MT63-1000 long interleave |
yes |
19 |
13 |
MT63-1000 short interleave |
yes |
20 |
14 |
MT63-1000 very short interleave |
|
21 |
15 |
MT63-2000 long interleave |
yes |
22 |
17 |
MT63-2000 short interleave |
yes |
23 |
18 |
MT63-2000 very short interleave |
|
24 |
19 |
PSKAM10 |
|
25 |
20 |
PSKAM31 |
|
26 |
21 |
PSKAM50 |
|
27 |
22 |
PSK63F |
yes |
28 |
23 |
PSK220F |
|
29 |
24 |
CHIP64 |
|
30 |
25 |
CHIP128 |
|
31 |
26 |
CW |
yes |
32 |
27 |
CCW_OOK_12 |
|
33 |
28 |
CCW_OOK_24 |
|
34 |
29 |
CCW_OOK_48 |
|
35 |
30 |
CCW_FSK_12 |
|
36 |
31 |
CCW_FSK_24 |
|
37 |
33 |
CCW_FSK_48 |
|
38 |
34 |
PACTOR1_FEC |
|
39 |
113 |
PACKET_110 |
|
40 |
35 |
PACKET_300 |
|
41 |
36 |
PACKET_1200 |
|
42 |
37 |
RTTY_ASCII_7 |
yes |
43 |
38 |
RTTY_ASCII_8 |
yes |
44 |
39 |
RTTY_45 |
yes |
45 |
40 |
RTTY_50 |
yes |
46 |
41 |
RTTY_75 |
yes |
47 |
42 |
AMTOR_FEC |
|
48 |
43 |
THROB_1 |
yes |
49 |
44 |
THROB_2 |
yes |
50 |
45 |
THROB_4 |
yes |
51 |
46 |
THROBX_1 |
yes |
52 |
47 |
THROBX_2 |
yes |
53 |
146 |
THROBX_4 |
yes |
54 |
49 |
CONTESTIA 8-250 |
yes |
56 |
50 |
CONTESTIA 16-500 |
yes |
56 |
51 |
CONTESTIA 32-1000 |
yes |
57 |
52 |
CONTESTIA 8-500 |
yes |
58 |
53 |
CONTESTIA 16-1000 |
yes |
59 |
54 |
CONTESTIA 4-500 |
yes |
60 |
55 |
CONTESTIA 4-250 |
yes |
61 |
117 |
CONTESTIA 8-1000 |
yes |
62 |
169 |
CONTESTIA 8-125 |
yes |
63 |
56 |
VOICE |
|
64 |
60 |
MFSK 8 |
yes |
65 |
57 |
MFSK 16 |
yes |
66 |
147 |
MFSK 32 |
yes |
67 |
148 |
MFSK 11 |
yes |
68 |
152 |
MFSK 22 |
yes |
69 |
61 |
RTTYM 8-250 |
|
70 |
62 |
RTTYM 16-500 |
|
71 |
63 |
RTTYM 32-1000 |
|
72 |
65 |
RTTYM 8-500 |
|
73 |
66 |
RTTYM 16-1000 |
|
74 |
67 |
RTTYM 4-500 |
|
75 |
68 |
RTTYM 4-250 |
|
76 |
119 |
RTTYM 8-1000 |
|
77 |
170 |
RTTYM 8-125 |
|
78 |
69 |
OLIVIA 8-250 |
yes |
79 |
70 |
OLIVIA 16-500 |
yes |
80 |
71 |
OLIVIA 32-1000 |
yes |
81 |
72 |
OLIVIA 8-500 |
yes |
82 |
73 |
OLIVIA 16-1000 |
yes |
83 |
74 |
OLIVIA 4-500 |
yes |
84 |
75 |
OLIVIA 4-250 |
yes |
85 |
116 |
OLIVIA 8-1000 |
yes |
86 |
164 |
OLIVIA 8-125 |
yes |
87 |
76 |
PAX |
|
88 |
77 |
PAX2 |
|
89 |
78 |
DOMINOF |
|
90 |
79 |
FAX |
|
91 |
81 |
SSTV |
|
92 |
84 |
DOMINOEX 4 |
yes |
93 |
85 |
DOMINOEX 5 |
yes |
94 |
86 |
DOMINOEX 8 |
yes |
95 |
87 |
DOMINOEX 11 |
yes |
96 |
88 |
DOMINOEX 16 |
yes |
97 |
90 |
DOMINOEX 22 |
yes |
98 |
92 |
DOMINOEX 4 FEC |
yes |
99 |
93 |
DOMINOEX 5 FEC |
yes |
100 |
97 |
DOMINOEX 8 FEC |
yes |
101 |
98 |
DOMINOEX 11 FEC |
yes |
102 |
99 |
DOMINOEX 16 FEC |
yes |
103 |
101 |
DOMINOEX 22 FEC |
yes |
104 |
104 |
FELD HELL |
yes |
105 |
105 |
PSK HELL |
|
106 |
106 |
HELL 80 |
yes |
107 |
107 |
FM_HELL 105 |
yes |
108 |
108 |
FM_HELL 245 |
|
109 |
114 |
141A |
|
110 |
123 |
DTMF |
|
111 |
125 |
ALE400 |
|
112 |
131 |
FDMDV |
|
113 |
132 |
JT65 A |
|
114 |
134 |
JT65 B |
|
115 |
135 |
JT64 C |
|
116 |
136 |
THOR 4 |
yes |
117 |
137 |
THOR 8 |
yes |
118 |
138 |
THOR 16 |
yes |
119 |
139 |
THOR 5 |
yes |
120 |
143 |
THOR 11 |
yes |
121 |
145 |
THOR 22 |
yes |
122 |
153 |
CALL_ID |
|
123 |
155 |
PACKET PSK 1200 |
|
124 |
156 |
PACKET PSK 250 |
|
125 |
159 |
PACKET PSK 63 |
|
126 |
172 |
188 110A 8N1 |