dsdcc

Digital Speech Decoder (DSD) rewritten as a C++ library

Stars
284

Bot releases are visible (Hide)

dsdcc - Make PLL symbol synchronization optional

Published by f4exb over 7 years ago

For signals strong enough to lock the PLL this works significantly better than with the ringing filter alone .

However with marginal signals the ringing filter alone and a few heuristics work better. This is why the PLL has been made optional.

Use setter to copy bytes into FICH structure. Use a packed structure so the number of bytes is exact

  • dsdcc_1.7.1-1_amd64.deb Debian package for Intel/AMD 64 bit architecture. Works in Ubuntu 16.04
  • dsdcc_1.7.1-1_armhf.deb Debian package for ARM (armv7l) architecture. Intended for Debian Jessie distributions
dsdcc - PLL for symbol synchronization

Published by f4exb over 7 years ago

A PLL for symbol synchronization has been added. It is centered around the symbol rate and driven by the output from the existing ringing filter itself fed by the square of the discriminator output. This significantly improves the decoding in all modes and is a major improvement from the previous versions.

In addition code cleaning up was carried out using cppcheck and Eclipse own static analysis checker. This may have an effect on occasional segmentation fault errors. Judging by burn in tests using the DSD demod plugin of SDRangel the occasional segmentation fault has not reappeared yet on a 24h+ period.

  • dsdcc_1.7.0-1_amd64.deb Debian package for Intel/AMD 64 bit architecture. Works in Ubuntu 16.04
  • dsdcc_1.7.0-1_armhf.deb Debian package for ARM (armv7l) architecture. Intended for Debian Jessie distributions
dsdcc - Status messages output option for dsdccx

Published by f4exb almost 8 years ago

New option -M to specify an output file where status messages are written every N input samples. The number N is calculated from the polling time given in the -m option as the number of samples processed during this time at a 48kS/s rate. Thus for example with a polling time of 0.1s (the default) N = 48000 * 0.1 = 4800 samples.

The format of the file is described here

Two more options have been added to specify a reference location when geographical data is sent in the messages (D-Star only). These are:

  • -P: latitude in decimal degrees with North positive
  • -Q: longitude in decimal degrees with East positive

Details of the interface have changed concerning DMR so you will have to re-compile your client application if you use this version

Fixed missing attributes initialization which could cause trouble in some circumstances. In paricular the release build was not working (default build was debug).

Last but not least two Debian packages are provided for x86_64 and armv7 architectures.

Install it as usual for a .deb package:

  • Make sure the universe repository is in your /etc/apt/sources.list

Then in a terminal do:

  • sudo apt-get update
  • sudo dpkg -i dsdcc_vx.y.z-1_amd64.deb where x.y.z is the version number
  • sudo apt-get -f install this will install missing dependencies

The software is installed in /opt/dsdcc you can start the dsdccx utility from the command line with:

  • /opt/dsdcc/bin/dsdccx
  • dsdcc_1.6.0-1_amd64.deb Debian package for Intel/AMD 64 bit architecture. Works in Ubuntu 16.04
  • dsdcc_1.6.0-1_armhf.deb Debian package for ARM (armv7l) architecture. Intended for Debian Jessie distributions
dsdcc - Fixed build process and dsdccx

Published by f4exb almost 8 years ago

It is now possible to compile dsdcc if only one, both or none of the mbelib or SerialDV dependencies are met. This solves issue #3

Of course without support of mbelib nor SerialDV no audio will come out. However this is a provision for future developments for use cases where only the MBE frames are needed (for example in a repeater operation).

All is in the title.

dsdcc - D-Star slow data text fix

Published by f4exb almost 8 years ago

Fixed wrong charcters in slow data text. D-Star slow data is not very well protected against errors and quite often non printable ASCII characters (that is < 0x20) pass through. Now these characters are filtered and replaced by dots.

In addition whenever a header frame is processed the slow data is reset. This avoids the data from the previous station to be still displayed.

dsdcc - Removed obsolete headers

Published by f4exb almost 8 years ago

Removed:

  • dmr_voice.h
  • dmr_data.h

Following refactoring done in v1.4.0 these headers were only removed from the CMakeLists.txt file and this caused problems reported in P.R. #1.

dsdcc - Fixed TDMA slots handling in the main program

Published by f4exb about 8 years ago

Use a new option -T which is a bitmap of the slots processed i.e:

  • 0: none
  • 1: slot #1: use this one for FDMA. This is the default.
  • 2: slot #2
  • 3: slots #1 and #2 mixed

These are the options related to datascope and QPSK advanced options.

dsdcc - Fixed YSF voice on indicator

Published by f4exb about 8 years ago

this fix sets the slot1 voice indicator whenever a voice frame is processed like in the other modes

dsdcc - Yaesu System Fusion (YSF) support

Published by f4exb about 8 years ago

DSDcc now supports Yaesu System Fusion abbreviated YSF. YSF is developed and promoted by Yaesu for Amateur Radio customers. The voice full rate mode with SerialDV is not supported (garbled).

DSDcc is now able do decode D-Star slow data. In consequence:

  • it can retrieve header data even if the header frame was not received (late entry)
  • it can receive the 20 character user informative message
  • it can receive the geopositional data sent in the $$CRC frames
dsdcc - Refactoring of DMR

Published by f4exb about 8 years ago

Complete redesign from original code. This should give much better results in addition the source and target addresses are retrieved

Improvement is not so dramatic as with the DMR code. This is more a technical redesign to benefit from symbol buffers and simplify the code.

dsdcc - Major fix of FSK demod

Published by f4exb about 8 years ago

This is a complete rewrite of the FSK demod present in the DSDSymbol class. The original algorithm was giving a lot of errors because symbol synchronization and min/max estimation were not implemented correctly. This results in a much improved and robust decoding process removing many clicks and noises that were polluting voice output and less corruption in decoded data.

The min/max estimation runs permanently with an optimized running min/max calculator over 24 symbols.

The symbol synchronization is obtained by squaring the discriminator input signal and passing it through a narrow second order pass band filter. The zero crossings with enough quality (slope) are used to maintain symbol framing.

The sync words of each protocol (DMR, D-Star, dPMR, ...) are searched after processes above have taken place and this does not interfere with them. When looking for a protocol sync word a 2-FSK is assumed. Except for the case of Yaesu System Fusion (YSF) the synchronization words only use the extreme symbols (mapped to -3/+3 deviation). In the case of YSF the low deviation symbols (-1/+1) are mapped to their high deviation counterparts.

dsdcc - Partial support of dPMR and NXDN

Published by f4exb about 8 years ago

Although it has many bugs it should be able to detect most of the time if a signal is dPMR or NXDN in 2400 baud mode.

dsdcc - Better support of serial DV devices

Published by f4exb over 8 years ago

Added a standalone uspsampler by 6 or 7 to convert short samples to 48k. This is a helper class for upsampling audio frames returned by a serial DV device.

The rate should be changed only on positive sync determination. This avoids useless rate resetting with the serial DV device.

dsdcc - Mbelib support optional

Published by f4exb over 8 years ago

DSDcc can now be used to extract the AMBE frames to be processed externally thus making it possible to compile without mbelib support and therefore the already mentioned possible copyright issues. However mbelib support is still an option but in addition to have mbelibinstalled in your system you have to specify -DUSE_MBELIB on the cmake command line to activate the mbelib support during compilation The actual compile directive used is DSD_USE_MBELIB.

When mbelib is not activated the executable dsdccx expects to decode the AMBE frame using a serial device supporting the serial packet protocol of a DVSI AMBE3000 chip. That is a device that exposes the serial packet interface of the AMBE3000 chip. This is for example a ThumbDV USB dongle. To support the serial communication with the AMBE3000 chip through any hardware you see fit you will have to compile and install SerialDV which is found in this very Github repository.

dsdcc - First release

Published by f4exb over 8 years ago

This is a first release covering D-Star and DMR support.