Version 20230802 ================ **Fixed:** - Increase UHD USB ``num_send_frames`` to 64 to avoid spurious underflows on some machines. **Added:** - Add support for adjusting the SRS-4 rolloff using the ``rx/tx_rolloff`` arguments for the ``SRS4Radio()`` class and the ``--rx/tx-rolloff`` argument for ``sl-radio``. Version 20230207 ================ **Fixed:** - Fix return values for symbol rate error, SNR and BER estimates when gated. **Changed:** - Add new ``msg_gate`` block to gate transmit on messages instead of samples. - Limit symbol synchronization and Costas loop maximum deviations. Version 20221207 ================ **Fixed:** - Fix missing GRC block parameters for ``satlab_srs3_tx``, ``satlab_srs4_tx``, and ``idle_frame_gen`` YAML files. Version 20221206 ================ **Changed:** - Synchronize on full convolutional encoded syncword if enabled and adjust syncword tolerance to limit false detection rate (SRS-3). This change also removes the ``swtol`` argument from the hierarchical ``srs3_rx/srs4_rx`` blocks as it is now selected automatically, but it can still be changed dynamically using the ``set_swtol()`` function. Version 20221129 ================ **Fixed:** - Fix update of Costas loop limits on rate change (SRS-4) - Fix missing idleframe transmissions (SRS-3) **Changed:** - Reduce samples per symbol to 2 for reduced CPU usage (SRS-4) - Replace receive resampler for improved receive performance (SRS-4) - Increase syncword tolerance to 4 for improved reception performance (SRS-3) **Added:** - Add FLL to extend frequency pull-in range (SRS-4). - Add downlink SNR estimate (SRS-4). - Add Viterbi decoder corrected bit error rate (SRS-4). - Add support for USRP device and channel selection. Version 20220912 ================ **Fixed:** - Reintroduce the 1-byte postamble for burst frames with a preamble. It is necessary to reliably flush the modulator pulse shaping filter. - Fix key types in encrypt/decrypt block GRC definitions. **Changed:** - Drop support for SRS-3 version 1.x firmware framing format. **Added:** - Add Viterbi node synchronization. - Add support in ``sl-radio`` for disabling CRC and pseudo-randomization, using the ``--rx/--tx-crc`` and ``--rx/--tx-rand`` arguments. - Add support in ``sl-radio`` for setting absolute transmit power instead of transmit gain, using the ``--tx-power`` argument. This requires the device to be calibrated using the UHD reference power API. - Add support for modulation scheme selection in the SRS-4 receive and transmit GRC blocks. Version 20220602 ================ **Changed:** - Updated for GNU Radio v3.10 Version 20211215 ================ **Fixed:** - Set module ``VERSION_PATCH`` to 0 in ``CMakeLists.txt`` to avoid littering the install directory with ``libgnuradio-satlab.so.-`` files. See upstream commit https://github.com/gnuradio/gnuradio/commit/896b7138bc0 for more information. **Changed:** - The key for the encryption/decryption blocks must now be passed as a 32-byte byte sequence instead of a list of integers. **Added:** - Add support for running ``sl-radio`` without the ncurses terminal UI. Start the application with ``--no-tui`` to disable the TUI. - Add websocket sink. This block is automatically built if WebSocket++ is installed on the system. Enable or disable with ``ENABLE_WEBSOCKET=ON/OFF`` switch to CMake. Version 20210730 ================ **Fixed:** - Remove the fixed 1-byte postamble that was inserted after frames when a preamble was enabled. **Changed:** - Move everything under the "gnuradio" namespace to avoid the toplevel "satlab" headers and python module. Users using GRC should not notice any changes, and pure python users should only need to change their import to: `from gnuradio import satlab`. - Tested with GNU Radio 3.9.2.0 and UHD 4.1.0.1. - Switched to date based version numbering. **Added:** - Rework idle frame generator to keep track of in-flight frames. This can then be used to avoid overflowing the internal GNU Radio block message queues, in case the input rate is higher than the output rate. Overflowing is best avoided since the console is filled with warning messages in this case. The queue size is system-wide and can only be adjusted through GNU Radio configuration files. The idleframe count and queue sizes can be adjusted in the python objects and sl-radio.