Files
quisk/freedvpkg
..
2023-12-26 15:39:37 -05:00
2023-12-26 15:39:37 -05:00
2023-12-26 15:39:37 -05:00
2023-12-26 15:39:37 -05:00
2023-12-26 15:39:37 -05:00
2023-12-26 15:39:37 -05:00



Note:  The directory freedvpkg no longer contains source files.  It only contains copies of

       the codec2 libraries for use by Quisk.  If any other files are present, delete them.



FreeDV and Directory freedvpkg

==============================



FreeDV is the combination of the codec2 codec and the fdmdv modem.  It provides digital voice

suitable for HF and VHF transmission.  Quisk has native (built-in) support for

FreeDV.  Just push the FDV mode and talk.  This freedvpkg directory contains copies of the

codec2 libraries for use by Quisk.



You can also use the separate FreeDV program available at freedv.org, and the Quisk DGT-U mode

which attaches to external digital programs. The setup is identical to fldigi and other external

digital programs.



Quisk will add the FDV button if specified on the Config/radio/Controls tab.

If there is a problem with the freedv module, the button will be grayed out.



The freedv module requires the codec2 library.  This library is included for Windows and for

Ubuntu 18.04 LTS 32-bit and 64-bit.  For other systems (such as ARM) you will need to build another

codec2.  Just try the FDV mode and see if it works.  It should always work on Windows, and may work

on Linux.  If the FDV button is grayed out, you need a different codec2 than the one included.  Make

a new codec2 library, and copy it to freedvpkg or to the correct system directory.



2020 mode

=========

You can now use 2020 mode with Quisk.  Note however that 2020 mode requires a processor with AVX. 

Also note a Raspberry PI (model 4B) does not have enough processing power even if neon is used

and it is overclocked.



There are two parts to this:

1. build LPCNet

2. rebuild codec2

The details are found here: https://github.com/drowe67/codec2#freedv-2020-support-building-with-lpcnet



Both liblpcnetfreedv and libcodec2 are needed.  If you are running under windows, the resultant

liblpcnetfreedv.dll file needs to be placed in the quisk folder.  Libcodec2 may be placed in the

quisk freedvpkg folder. Or install the DLL's in the correct system folders.



Search Order

============



Quisk will search for a valid codec2 library in this order on Windows:

1.  The system codec2 library installed outside of Quisk by another program.

2.  freedvpkg/libcodec2.dll.     Not included. You can copy your own codec2 here but a system-wide installation is better.

3.  freedvpkg/libcodec2_32.dll.  The 32-bit codec2 shipped with Quisk.

4.  freedvpkg/libcodec2_64.dll.  The 64-bit codec2 shipped with Quisk.



Quisk will search for a valid codec2 library in this order on Linux:

1.  The system codec2 library installed outside of Quisk by another program.

2.  freedvpkg/libcodec2.so.     Not included. You can copy your own codec2 here but a system-wide installation is better.

3.  freedvpkg/libcodec2_32.so.  The 32-bit codec2 shipped with Quisk.

4.  freedvpkg/libcodec2_64.so.  The 64-bit codec2 shipped with Quisk.



How to Build a New codec2

=========================



The source for codec2 is available on github.  Or google for other sources or perhaps a pre-built library.

If you need to compile codec2 from source, first change to a suitable directory (not the Quisk directory)

and download the source with git:



  git clone https://github.com/drowe67/codec2.git



Then build codec2 using the directions found at https://github.com/drowe67/codec2/blob/master/INSTALL.

The directions given below are current as of June 2020, but check for changes.

Then copy the codec2 library to the freedvpkg directory under Quisk.



Build a New codec2 on Linux

===========================

Create the codec2 shared library.  This assumes a 64-bit linux. Change the directory

name from build_linux64 to build_linux32 for 32-bit linux.  Note the "../".



  cd codec2

  mkdir build_linux64

  cd build_linux64

  cmake -DCMAKE_BUILD_TYPE=Release ../

  make

  cd src

  cp libcodec2.so my-quisk-directory/freedvpkg



Build a New 32-bit codec2 on 64-bit Linux

=========================================

Make sure package libc6-dev-i386 is installed.

Create the codec2 shared library.  Note the "../".



  cd codec2

  mkdir build_linux32

  cd build_linux32

  export CFLAGS=-m32

  cmake -DCMAKE_BUILD_TYPE=Release ../

  make

  cd src

  cp libcodec2.so my-quisk-directory/freedvpkg



Build a New codec2 on Windows

=============================

For Windows you need to install MinGW-w64, MSYS2, and g++.  Use the mingw shell.  The Speex libraries

are not needed by codec2, but are required for the Unit Test modules.  To build the Unit Test modules,

you need to install Speex and add -DSPEEXDSP_INCLUDE_DIR=../speex/include/speex -DSPEEXDSP_LIBRARY=../speex/bin.



  # Use mingw32.exe 32-bit shell:

  cd codec2

  mkdir build_win32

  cd build_win32

  cmake -G "MSYS Makefiles" -DCMAKE_BUILD_TYPE=Release -DUNITTEST=OFF  ../

  make codec2

  cd src

  cp libcodec2.dll  my-quisk-directory/freedvpkg



  # Use mingw64.exe 64-bit shell:

  cd codec2

  mkdir build_win64

  cd build_win64

  cmake -G "MSYS Makefiles" -DCMAKE_BUILD_TYPE=Release -DUNITTEST=OFF -DCMAKE_SYSTEM_PROCESSOR=x86_64 ../

  make codec2

  cd src

  cp libcodec2.dll  my-quisk-directory/freedvpkg



Testing

=======

You can just start Quisk and see if the FDV button is not grayed out, and FDV works.  Or you can

test the import of freedv and look for error messages.



  cd my-quisk-directory

  python                                # Use the correct Python 2 or 3 in 32 or 64 bit

    import _quisk

    _quisk.freedv_get_version()         # This should return 13 or higher for a recent codec2