Everything you wanted to know about Viterbi, but were afraid to ask, and other tech terms:

Life moves pretty fast. If you don't stop and look around once in a while, you could miss it.

When You receive satellite data and imagery, there are things that are monitored and displayed and you might be wondering what they mean:

Here is a typical line of information that is generated when receiving a GOES- R Signal. I’ll go through them one by one:

2023-05-17T14:17:16Z [monitor] gain: 3.91, freq: -624.9, omega: 2.589, vit(avg): 98, rs(sum): 29, packets: 58, drops: 0

Gain

A Multiplier to normalize the signal coming from the SDR using digital signal processing (DSP).


Freq

This is the computed frequency offset of the signal.

The computed frequency offset of the signal is the difference between the actual frequency of the signal and the frequency that the receiver is expecting. It is usually expressed in hertz (Hz).

Omega

Technical Description:

Omega, in clock recovery, refers to the number of samples per symbol. It is a measure of the sampling rate of the clock recovery system. The sampling rate must be at least twice the symbol rate in order to avoid aliasing.

In clock recovery, the goal is to synchronize the sampling clock to the incoming signal. This is done by estimating the symbol rate and then adjusting the sampling clock accordingly. The symbol rate can be estimated by looking at the spacing between the symbols.

Once the symbol rate is estimated, the sampling clock can be adjusted to match it. This is done by multiplying the sampling clock by the symbol rate. The resulting sampling clock will be synchronized to the incoming signal.

The number of samples per symbol, omega, is an important parameter in clock recovery. It determines the accuracy of the clock recovery system. A higher omega will result in a more accurate clock recovery system. However, a higher omega will also require more resources, such as memory and processing power.

Non-Technical Description:

Imagine you are trying to read a book that is being read to you by a friend. Your friend is reading the book at a steady pace, but you are not always able to listen to them. Sometimes you have to stop and do something else, and sometimes you have to rewind the tape because you didn’t hear what they said.

This is a little bit like what happens when a computer is trying to read a digital signal. The digital signal is like the book, and the computer is like you. The computer is trying to read the signal at a steady pace, but it can’t always do it. Sometimes the signal gets interrupted, and sometimes the computer has to rewind the signal because it didn’t read it correctly.

Omega is a way of making sure that the computer can read the signal correctly. It is like the rewind button on the tape player. Omega tells the computer how many times to read the signal in order to make sure that it gets it right.

The more omega there is, the more times the computer will read the signal. This means that the computer is more likely to get it right. However, it also means that the computer will take longer to read the signal.

The amount of omega that is needed depends on how fast the signal is being sent. If the signal is being sent very quickly, then the computer will need more omega in order to read it correctly. If the signal is being sent slowly, then the computer will need less omega.

Viterbi

Technical Description:

The Viterbi algorithm is a dynamic programming algorithm for finding the most likely sequence of hidden states given an observed sequence of symbols. It is used in GOES-R to decode the signals that are sent from the satellite. The satellite sends a lot of data, and it is possible for some of the data to be garbled. The Viterbi algorithm is used to fix the garbled data information and imagery needed.

The Viterbi algorithm works by keeping track of all the possible ways that the message could have been garbled. It then calculates the probability of each possible garbled message. The most likely garbled message is the one that is most likely to have been sent.

The Viterbi algorithm works by starting with the first symbol in the observed sequence and then working its way through the rest of the symbols. For each symbol, the algorithm looks at all the possible hidden states that could have generated that symbol. It then calculates the probability of each hidden state given the symbol. The hidden state with the highest probability is the one that the algorithm assumes generated the symbol.

The algorithm continues working its way through the symbols, always assuming that the hidden state with the highest probability generated the next symbol. When it reaches the end of the observed sequence, it has a list of the hidden states that it believes generated the symbols. The hidden state at the end of the list is the most likely hidden state, and the message that was sent is the one that the hidden state represents.

It should be pointed out that there is a difference between how SatDump measures Viterbi, vs how goestools measures it. They present different statistics, as goestools shows the total number viterbi corrections per packet, while SatDump represents it as the percentage of bits that needed to be corrected in decimal form. (Thanks JVital!)

Non-Technical Explanation:

Imagine you are playing a game of telephone with your friends. You whisper a message to the person next to you, and they whisper it to the person next to them, and so on. By the time the message reaches the last person, it is often very garbled.

The Viterbi algorithm is a way to fix this problem. It works by keeping track of all the possible ways that the message could have been garbled. It then calculates the probability of each possible garbled message. The most likely garbled message is the one that is most likely to have been sent.

The Viterbi algorithm is used in GOES-R and most other satellites to decode the signals that are sent from the satellite. The satellite sends a lot of data, and it is possible for some of the data to be garbled. The Viterbi algorithm is used to fix the garbled data so that scientists can get the information and imagery they need.

Here is an analogy that might help you understand the Viterbi algorithm. Imagine you are trying to solve a mystery. You have a bunch of clues, but you are not sure what they mean. You can use the Viterbi algorithm to help you solve the mystery. The Viterbi algorithm will keep track of all the possible solutions to the mystery. It will then calculate the probability of each possible solution. The most likely solution is the one that is most likely to be correct.

The Viterbi algorithm is a very powerful tool that can be used to solve a variety of problems. It is used in many different applications, including GOES-R.

A rate of ~1000 may give you sporadic packets. A rate of ~400 can give you the complete stream of packets without any drops, but is very sensitive to interference. A rate of ~100 or lower is good and can give you a packet stream without drops for hours on end. The lower the Viterbi error rate, the better your signal.


R/S Errors

Technical Description:

The data collected by the GOES-R satellite is transmitted back to Earth in digital form. This data is very sensitive to errors, so it is important to protect it from corruption. Reed-Solomon error correction is used to protect the data from corruption.

Reed-Solomon error correction is a type of error-correcting code that can be used to detect and correct errors in data. It works by adding some extra information to the data, called a “check value”, before it is sent. The check value is calculated using a special mathematical formula. When the data is received, the check value is recalculated and compared to the original check value. If the two check values match, then the data has not been corrupted. If the check values do not match, then the data has been corrupted and Reed-Solomon error correction can be used to try to fix it.

The check value is calculated by using a special mathematical formula called a polynomial. The polynomial is chosen so that it is very sensitive to errors. This means that even a small error in the data will cause a large change in the check value.

When the data is received, the check value is recalculated using the same polynomial. If the recalculated check value does not match the original check value, then the data has been corrupted.

Non-Technical Explanation:

Reed-Solomon error correction works by adding some extra information to the message before it is sent. This extra information is called a “checksum”. The checksum is calculated by using a special mathematical formula. When the message is received, the checksum is recalculated and compared to the original checksum. If the two checksums match, then the message has not been corrupted. If the checksums do not match, then the message has been corrupted and Reed-Solomon error correction is used to try to fix it. When it comes to imagery, this works very well, you can get away with a high number of errors and not see any quality loss to the resulting image.

Reed-Solomon error correction is a very powerful tool that can be used to protect data from corruption. It is used in many different applications, including CDs, DVDs, and Blu-ray discs Ra and almost all space communications.

Here is an analogy that might help you understand Reed-Solomon error correction. Imagine you are trying to send a message to your friend by writing it on a piece of paper and then folding it up and putting it in an envelope. You are worried that the message might get damaged in the mail, so you decide to add a checksum. You do this by writing down the number of letters in the message. When your friend receives the message, they can unfold it and count the number of letters. If the number of letters does not match the checksum, then they know that the message has been damaged and they can try to fix it.

Packets

Technical Description:

Packets are used in GOES and other sats to transmit data between the satellite and the ground. A packet is a small piece of data that is sent as a unit. Each packet contains a header, a payload, and a footer.

The header contains information about the packet, such as its destination and its size. The payload contains the actual data being transmitted. The footer contains error-correcting code (ECC) that can be used to detect and correct errors in the data.

Packets are used in GOES-R because they are a very efficient way to transmit data. They are small and compact, so they can be transmitted quickly and easily. They are also very reliable, as the ECC can be used to correct errors in the data.

GOES and other sats use a variety of different packet sizes. The smallest packets are 128 bytes in size, while the largest packets are 1024 bytes in size. The size of the packet is determined by the amount of data being transmitted.

The files must be specified in chronological order because they are read in order. Packets for a single LRIT file can span multiple packet files, so if they are not specified in chronological order some LRIT files will be dropped.

Non-Technical Explanation:

Imagine you have a big box of Legos. You want to build a Lego house, but you can’t carry the whole box of Legos at once. So, you decide to divide the Legos into smaller groups, or packets. Each packet contains a certain number of Legos, and each packet has a label on it that says what kind of Legos are inside.

Now, you can carry the packets of Legos one at a time to the place where you’re going to build the house. When you get there, you can put the packets together to build the house.

Packets are used in GOES-R in a similar way. The satellite collects data about the Earth’s weather and climate. This data is very large, so it can’t be transmitted all at once. Instead, the data is divided into smaller packets, and each packet is transmitted separately.

The packets are transmitted using radio waves. The radio waves travel to a ground station. The ground station that receives the packets and puts them together to create a complete image of the Earth’s weather and climate.

DROPS

Drops are not good. “Drops” indicate the number of packets that were dropped. It happens, and many times it is in the signal, not the decoding of that signal. Complete images can be put together with a few drops, but, if you get a lot, then you are missing valuable data and imagery.
Every LRIT file is built up from many packets. A single TP_PDU packet is up to 8192 bytes large and can therefore span multiple VCDU packets. If it sees a packet drop in the middle of decoding a TP_PDU packet, it will drop the whole thing. If it’s the first packet in a sequence of TP_PDU packets, it will show the VCDU drop error. Drops can also be caused by hardware or software issues. If you’re using a Raspberry Pi, then it might have its CPU throttled. This can happen because of high temperature or high load and can be undone by rebooting it and adding additional cooling.