Low Latency Streaming
Overview
Low-Latency Streaming provides a continuous data feed from one modem to another, with less than 8 millisecond delay between the data entering one M7 and leaving the other. This mode is ideal for control of UAVs and other robotics as it provides a real-time response to control commands.
The M7’s low-latency streaming mode can provide a transparent, continuous 9600 baud stream from one modem to another.
Low-Latency Streaming Mode is available in M7 model radios via a firmware option specified at order time.
Differences from Other Modem Modes
In data modems, including the M7, data coming in to the modem for transmission is packetized before sending over-the-air. Packetizing data has a number of benefits, the two largest being that metainformation can be added to the data and checksums can be calculated. Packetizing data increases the overall range and reliability of the data modem substantially, while adding the necessary information to the packet to create diverse and complex networks. Packetizing data has two tradeoff costs: data bandwidth and latency. Streaming mode optimizes the data transmission for these.
The airtime used for the packetizing such as preambles, packet headers and checksums reduce the usable data bandwidth a little, depending on the ratios of packet length to headers. To provide a continuous stream, low-latency streaming mode removes these packet features and provides more useable data bandwidth.
Removing packetization provides an extremely large latency reduction. In packet mode, the latency of a piece of data within a packet is the length of time it takes to receive the entire packet into the modem, plus the time to transmit the packet over-the-air. The modem must receive the entire packet before it can begin transmission of the data, then the receiving modem must receive the entire packet to verify its integrity before it can begin outputting the data. In low-latency streaming mode, each data byte is transmitted immediately:
Example comparison between packet mode and streaming mode for a 60-byte piece of data with a 9600 baud serial link and 9600 baud over-the-air rate.
In general, most systems will want to use sync loss filtering, since it reduces the occurrence of bad data output. However, some systems may want to turn this off entirely, which instructs the receiver to output a constant stream of data, even if no sync can be detected. This is beneficial if the system design already includes a packet format with checksums or other measures of transmission success. In this case, the system’s packet format can be used to determine if the data has been received correctly or not, allowing the modem to output data that might have otherwise been dropped due to sync loss.Low Latency Streaming is only available as a custom firmware installation on the M7. Modems will be available with part number –SMR for stream receivers and –SMT for stream transmitters (e.g. RV-M7-UC-SMR).
Streaming mode is designed and optimized for a 9600 baud link over a narrow or wideband channel.
The follow sections detail the configuration decisions and settings that must be set for a low-latency streaming system.
Sync Loss Filtering
Sync Loss Filtering at the receiver allows the modem to suppress stream data output if it has determined that it lost the stream lock.
To enable sync loss filtering, issue the following command:
ATSS 1
Timeout Time
There are a few configuration options to consider when setting up streaming mode. The first is the timeout time. In streaming mode, the transmitter sends a continuous transmission that the receiver locks onto. If no data is available to send over the channel, an idle pattern is generated to allow the receiver to stay locked and ready to receive any real data that is transmitted.
There is a tradeoff here between the transmitter being keyed during the idle period (generating excess heat) and the receiver having to lock on a freshly started stream (creating a startup delay). This tradeoff is adjusted using
TXTOT x (Set x from 1-60 to configure how long transmitter will stay keyed if no data is present)
When a character is input at the transmitter and it is unkeyed, the stream is started and the timeout timer begins. Every time a new character is input at the transmitter, the timer restarts. Note that stream synchronization at the receiver usually takes a few hundred milliseconds, so it is likely that the first characters sent during this time are lost.
Other Required Settings
Streaming mode is a special protocol, set separately on the transmitter and the receiver. To enable streaming mode
ATMT 5 (to set to a stream transmitter)
ATMT 6 (to set to a stream receiver)
Finally, the baud rate must be set:
ATR2 8 (Over-the-air modulation set to 9600bps 4L)
It is recommended to set the serial port to 9600 baud as well. This will ensure more data cannot be provided to the modem than the stream allows. However, if this is not a concern, then setting the serial baud faster can further reduce latency delays (in a pulsed-data scenario).
ATBD 9600
ATMT 5 or ATMT 6 (Set as a transmitter or a receiver, respectively)
ATSS 1 (Optional. Require streaming sync to receive)