Skip to content

Releases: mobilinkd/tnc3-firmware

Clock Recovery Improvements

01 Jun 01:56
Compare
Choose a tag to compare
Pre-release
  • Update to version 2.4.4.
  • Clock recovery improvements.
    • Improve clock recovery by updating the filter closer to the sync word.
    • Update the sample index more frequently to reduce EVM.
    • Choose the best time to update the sample index.
    • Fix bug in sample index computation.
  • Re-wrote the symbol deviation, offset, EVM code.
  • More code comments.

Kalman Filtered Symbol Clock

23 Jan 20:56
Compare
Choose a tag to compare
Pre-release

This headline item on this release is the use of a Kalman filter for M17 symbol clock recovery. This simplifies the code and improves symbol clock recovery. It comes at the cost of a dependency on Blaze and the need to enable C++ exceptions.

The 2.4.2 tag was never released. The primary change there was fixing an issue with LICH fragment re-assembly.

  • Add M17 Setup Guide.
  • Validate the LICH fragment number and mask the LICH segment bitfield properly. Send -1 for BER while LICH decode is incomplete.
  • Add 8 and 11 symbol RRC filters to M17 demod.
  • Trivial optimization to Viterbi.
  • The FirFilter constructor and init function do not need to be templatized.
  • Add reset() function to IIR filter.
  • Use an 8-symbol length FIR filter for symbol interpolation.
  • Update firmware version to 2.4.2.
  • Make the adcInputQueue size match the number of buffers allocated in AudioInput.hpp (8).
  • Add Kalman filter code. This adds a dependency on Blaze and requires that exceptions be enabled.
  • Add symbol slope integrator code (currently unused).
  • Allow more time for DC offset to settle.
  • Add feature to allow forced DCD unlocking to aid in modem recycling.
  • Use EOT sync word for end of stream rather than EOS bit. Use only sync word and Kalman filter for clock recovery. Simplify some of the state transistions. Reduce DCD limits since we can follow symbol clock at lower levels now. Use a smaller FIR filter for RRC.
  • Update README.md for Blaze dependency.
  • Change clock used for M17 to 48MHz.
  • Update firmware version to 2.4.3.

M17 Receive Polarity Bug Fix

26 Oct 01:16
Compare
Choose a tag to compare

Fix M17 RX reverse polarity.

M17 RSSI/Viterbi cost

06 Sep 20:57
Compare
Choose a tag to compare
M17 RSSI/Viterbi cost Pre-release
Pre-release

Add RSSI indicator on M17 KISS stream frames.

EOT & BLE

05 Sep 17:42
Compare
Choose a tag to compare
EOT & BLE Pre-release
Pre-release
  • Add new End of Transmission indicator.
  • Modify BM78 config to eliminate disconnects.

Updated LSF Puncture Matrix

30 Aug 01:55
Compare
Choose a tag to compare
  • Update to version 2.3.3.
  • Update EOS check.
  • New LSF puncture matrix (P1).
  • Update stlink config for 72MHz.

M17 Bit Error Rate Testing

03 Aug 03:01
Compare
Choose a tag to compare
  • Add support for M17 BER testing.
  • Update version to v2.3.2
  • Fix timing error which would match an M17 sync word too early causing frame corruption.
  • Add 1kHz test tone for M17 deviation setting.

This firmware adds two features to support BER (bit error rate) testing when in M17. In the config app, when sending test tones, three test patterns can be sent:

  1. A preamble tone (2400Hz)
  2. A 1000Hz tone for adjusting deviation (use Bessel Null at 2405Hz to set 2400Hz deviation)
  3. A M17 BER test pattern

It will also decode M17 BER frames, emitting KISS frames which can be consumed and displayed in M17 KISS HT. This is not perfect. Frames can be missed and dropped completely, and this will not be counted.

Update M17 Stream Frame Format

02 Jul 02:25
Compare
Choose a tag to compare
Pre-release
  • Add support for frame resizing (HdlcFrame). Handle old stream frame type in encoder.
  • Update firmware to use new stream frame format. Update version to 2.3.0.
  • Simplify FIR filter code.
  • Share storage (RAM) for all demodulators.
  • Use same Viterbi code as m17-cxx-demod.

The M17 code is still very much experimental in nature.

M17 Updates

23 Jun 02:18
Compare
Choose a tag to compare
M17 Updates Pre-release
Pre-release
  • Improve the timing accuracy for M17 to under 250ppm (typical is about 100ppm) using MSI PLL mode, and by using a clock speed that is an
  • exact multiple of the sampling rate.
  • Improve M17 demodulator by updating the sync decode and frame timing estimates.
  • Use a DFT for M17 carrier detection.
  • Update callsign decoding based on spec clarification.
  • Fix a memory leak in M17 packet code which would cause the TNC to hang.

Fix LICH Decode

22 Feb 01:35
Compare
Choose a tag to compare
Fix LICH Decode Pre-release
Pre-release

This update fixes a defect in LICH decoding that prevented demod of in-progress or interrupted M17 streams. It also improves the handling of back-to-back streams, addressing a defect in the M17 state machine. Memory handling changes were made to handle stack size issues encountered during a compiler upgrade (to GCC 10.2). C++20 support is now required of the compiler (for std::span).