Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: wb2osz/direwolf
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: f9ffec78d6e0fa3fffe6d020bb9c69e61e65ef33
Choose a base ref
...
head repository: wb2osz/direwolf
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: ea68a191d0ea8d4b2e318cb023a6dea2b9473ce5
Choose a head ref

Commits on Mar 30, 2020

  1. Copy the full SHA
    45cad0f View commit details

Commits on Nov 5, 2020

  1. Copy the full SHA
    4a1aa2b View commit details

Commits on Nov 7, 2020

  1. Copy the full SHA
    a207287 View commit details
  2. Copy the full SHA
    714d03f View commit details

Commits on Nov 8, 2020

  1. Copy the full SHA
    e272ff8 View commit details

Commits on Nov 14, 2020

  1. Copy the full SHA
    48b9bac View commit details
  2. Copy the full SHA
    adebd06 View commit details
  3. Merge pull request #261 from ew1abz/dev

    cmake: Avoid try_run when cross-compiling
    wb2osz authored Nov 14, 2020
    Copy the full SHA
    791982a View commit details

Commits on Nov 22, 2020

  1. Copy the full SHA
    fdf660a View commit details

Commits on Nov 28, 2020

  1. New AFSK demodulators.

    'A' uses mark and space filters but simpler and cleaner
    than earlier attempts.
    New 'B' uses a different technique where the demodulated
    signal is proportional to the frequency.
    wb2osz committed Nov 28, 2020
    1
    Copy the full SHA
    9922f17 View commit details
  2. More consistent results.

    wb2osz committed Nov 28, 2020
    Copy the full SHA
    c1e1960 View commit details
  3. Raise upper limits.

    wb2osz committed Nov 28, 2020
    Copy the full SHA
    07fdc75 View commit details

Commits on Dec 23, 2020

  1. Addded options to transmit steady tones at various frequencies

    (including 1200/2200Hz) to -x command line argument in Direwolf.
    This is useful for calibrating FM deviation using a meter,
    devcal, or manually. See:
    
    https://groups.io/g/direwolf/topic/setting_deviation/78633292
    
    Options are:
    
    -x a: alternating mark/space tones (original functionality)
    -x m or -x 1: steady mark tone (e.g. 1200Hz)
    -x s or -x 2: steady space tone (e.g. 2200Hz)
    -x p: set PTT only - for RTL-SDR adjustments
    
    Scope tested with mark_freq>=300Hz and space_freq<=5000Hz.
    Returns an error message if mark/space frequencies are set
    to 0.
    BehemothTheKitten committed Dec 23, 2020
    Copy the full SHA
    042a0c4 View commit details

Commits on Dec 28, 2020

  1. Implement DNS-SD publishing of KISS over TCP service on Linux and Mac

    This allows client applications to locate the IP addresses and the port of
    the KISS TCP service, allowing the end user to just select a Dire Wolf from
    a list instead of trying to guess its dynamic IP address and typing it in
    manually.  This is especially convenient on mobile devices.
    
    On Linux, the standard Avahi daemon is used via dbus and the avahi-client
    library.  Building with it requires installing the development header
    package; README.md is updated accordingly.
    
    On Mac, the MacOS dnssd API is used:
    https://developer.apple.com/documentation/dnssd?language=objc
    
    I don't have Windows, but more recent Windows 10 builds apparently have
    a working DNS-SD mDNS implementation that can be used on 64-bit builds.
    hessu committed Dec 28, 2020
    Copy the full SHA
    feb1034 View commit details

Commits on Dec 31, 2020

  1. Issue 150 - Check whether platform provides strlcpy & strlcat

    or if we need to provide our own.
    wb2osz committed Dec 31, 2020
    Copy the full SHA
    1d67b44 View commit details
  2. Copy the full SHA
    52e3a5b View commit details
  3. Merge pull request #305 from BehemothTheKitten/x_fm_calibrate

    Steady FM deviation calibration tones for -x
    wb2osz authored Dec 31, 2020
    Copy the full SHA
    8bca486 View commit details

Commits on Jan 1, 2021

  1. Copy the full SHA
    1cad6ed View commit details
  2. Copy the full SHA
    085e837 View commit details

Commits on Jan 2, 2021

  1. Merge branch 'feature/dns-sd' of git://github.com/hessu/direwolf into…

    … hessu-feature/dns-sd
    wb2osz committed Jan 2, 2021
    Copy the full SHA
    6f95752 View commit details
  2. Copy the full SHA
    14d6eed View commit details
  3. Copy the full SHA
    5d02e0b View commit details
  4. Fix UNITTEST for MacOSX.

    wb2osz committed Jan 2, 2021
    Copy the full SHA
    6513efd View commit details
  5. Comments about units.

    wb2osz committed Jan 2, 2021
    Copy the full SHA
    81447ed View commit details

Commits on Jan 5, 2021

  1. Copy the full SHA
    8683ddc View commit details
  2. Fix Linux build.

    wb2osz committed Jan 5, 2021
    Copy the full SHA
    7ac1262 View commit details
  3. Copy the full SHA
    667e9ca View commit details

Commits on Feb 7, 2021

  1. Copy the full SHA
    a1afcbb View commit details
  2. Copy the full SHA
    04b32c4 View commit details

Commits on Feb 25, 2021

  1. add sndio support

    jg1uaa committed Feb 25, 2021
    Copy the full SHA
    677117b View commit details
  2. add sndio support (CMake)

    jg1uaa committed Feb 25, 2021
    Copy the full SHA
    c18b562 View commit details
  3. cosme

    rewrite
    
        int err;
        err = poll_sndio();
        if (err < 0) {
            :
    
    to
    
        if (poll_sndio() < 0) {
            :
    jg1uaa committed Feb 25, 2021
    Copy the full SHA
    0c285a0 View commit details

Commits on Mar 13, 2021

  1. Update comments.

    wb2osz committed Mar 13, 2021
    Copy the full SHA
    e449e39 View commit details

Commits on Mar 14, 2021

  1. Copy the full SHA
    09de2f6 View commit details

Commits on Mar 16, 2021

  1. Merge pull request #326 from jmkristian/w6jmk-cm108

    Windows USE_CM108
    wb2osz authored Mar 16, 2021
    Copy the full SHA
    7fa91dd View commit details

Commits on Apr 11, 2021

  1. Issue 325 - When building regex for Windows, don't repeatedly define …

    …the global variable re_syntax_options.
    wb2osz committed Apr 11, 2021
    Copy the full SHA
    44df4a7 View commit details
  2. Copy the full SHA
    12de518 View commit details
  3. Copy the full SHA
    73d5d13 View commit details
  4. Copy the full SHA
    0e68a77 View commit details
  5. Copy the full SHA
    6370b26 View commit details
  6. Copy the full SHA
    b66c21d View commit details

Commits on Sep 19, 2021

  1. Fix errors in comments

    Errors found with codespell.
    dforsi committed Sep 19, 2021
    Copy the full SHA
    6bfd228 View commit details
  2. Fix errors in strings

    Errors found with codespell.
    dforsi committed Sep 19, 2021
    Copy the full SHA
    d10ccb6 View commit details
  3. Fix errors in man pages

    Errors found with codespell.
    dforsi committed Sep 19, 2021
    Copy the full SHA
    edc5707 View commit details

Commits on Sep 21, 2021

  1. Copy the full SHA
    1b3ed76 View commit details
  2. Copy the full SHA
    257d2e3 View commit details
  3. More debug code.

    wb2osz committed Sep 21, 2021
    Copy the full SHA
    b777627 View commit details
  4. cleanup

    wb2osz committed Sep 21, 2021
    Copy the full SHA
    1712fbc View commit details
  5. Copy the full SHA
    3220931 View commit details
  6. Copy the full SHA
    023f675 View commit details
Showing with 11,873 additions and 2,025 deletions.
  1. +22 −1 CHANGES.md
  2. +50 −13 CMakeLists.txt
  3. +16 −7 README.md
  4. +3 −3 cmake/cpack/direwolf.desktop.in
  5. +19 −0 cmake/modules/FindAvahi.cmake
  6. +6 −2 cmake/modules/FindCPUflags.cmake
  7. +42 −0 cmake/modules/Findsndio.cmake
  8. +1 −1 conf/99-direwolf-cmedia.rules
  9. +16 −4 conf/generic.conf
  10. +16 −10 data/symbols-new.txt
  11. +59 −42 data/tocalls.txt
  12. +1 −1 external/geotranz/mgrs.h
  13. +21 −0 external/hidapi/CMakeLists.txt
  14. +26 −0 external/hidapi/LICENSE-bsd.txt
  15. +674 −0 external/hidapi/LICENSE-gpl3.txt
  16. +9 −0 external/hidapi/LICENSE-orig.txt
  17. +13 −0 external/hidapi/LICENSE.txt
  18. +1 −0 external/hidapi/README.md
  19. +1,091 −0 external/hidapi/hid.c
  20. +498 −0 external/hidapi/hidapi.h
  21. +25 −6 external/misc/CMakeLists.txt
  22. +1 −1 external/regex/CMakeLists.txt
  23. +7 −1 external/regex/regex.h
  24. +30 −3 man/direwolf.1
  25. +12 −0 man/gen_packets.1
  26. +1 −1 man/kissutil.1
  27. +1 −1 man/tt2text.1
  28. +91 −5 src/CMakeLists.txt
  29. +6 −6 src/agwlib.c
  30. +2 −2 src/ais.c
  31. +6 −2 src/appserver.c
  32. +122 −29 src/aprs_tt.c
  33. +2 −2 src/aprs_tt.h
  34. +21 −15 src/atest.c
  35. +241 −10 src/audio.c
  36. +47 −20 src/audio.h
  37. +2 −2 src/audio_portaudio.c
  38. +4 −2 src/audio_win.c
  39. +34 −20 src/ax25_link.c
  40. +59 −6 src/ax25_pad.c
  41. +5 −2 src/ax25_pad.h
  42. +4 −2 src/ax25_pad2.c
  43. +23 −3 src/beacon.c
  44. +3 −3 src/cdigipeater.c
  45. +257 −70 src/cm108.c
  46. +390 −83 src/config.c
  47. +35 −8 src/config.h
  48. +329 −132 src/decode_aprs.c
  49. +12 −5 src/decode_aprs.h
  50. +80 −99 src/demod.c
  51. +148 −62 src/demod_9600.c
  52. +2 −2 src/demod_9600.h
  53. +487 −435 src/demod_afsk.c
  54. +3 −3 src/demod_psk.c
  55. +107 −52 src/digipeater.c
  56. +5 −1 src/digipeater.h
  57. +258 −53 src/direwolf.c
  58. +26 −27 src/direwolf.h
  59. +64 −3 src/dlq.c
  60. +260 −0 src/dns_sd_avahi.c
  61. +65 −0 src/dns_sd_common.c
  62. +7 −0 src/dns_sd_common.h
  63. +10 −0 src/dns_sd_dw.h
  64. +89 −0 src/dns_sd_macos.c
  65. +84 −50 src/dsp.c
  66. +5 −1 src/dsp.h
  67. +2 −2 src/dtmf.c
  68. +1 −1 src/dwgps.c
  69. +20 −10 src/dwgpsd.c
  70. +41 −61 src/dwgpsnmea.c
  71. +1 −1 src/dwsock.h
  72. +18 −11 src/encode_aprs.c
  73. +0 −2 src/fsk_demod_agc.h
  74. +154 −54 src/fsk_demod_state.h
  75. +20 −15 src/fx25_init.c
  76. +1 −1 src/fx25_rec.c
  77. +65 −12 src/gen_packets.c
  78. +14 −4 src/gen_tone.c
  79. +6 −6 src/grm_sym.h
  80. +5 −3 src/hdlc_rec.c
  81. +1 −1 src/hdlc_rec2.c
  82. +89 −45 src/hdlc_send.c
  83. +9 −2 src/hdlc_send.h
  84. +63 −2 src/igate.c
  85. +145 −0 src/il2p.h
  86. +263 −0 src/il2p_codec.c
  87. +673 −0 src/il2p_header.c
  88. +226 −0 src/il2p_init.c
  89. +298 −0 src/il2p_payload.c
  90. +276 −0 src/il2p_rec.c
  91. +157 −0 src/il2p_scramble.c
  92. +147 −0 src/il2p_send.c
  93. +977 −0 src/il2p_test.c
  94. +6 −6 src/kiss.c
  95. +3 −2 src/kiss.h
  96. +63 −39 src/kiss_frame.c
  97. +47 −3 src/kiss_frame.h
  98. +345 −198 src/kissnet.c
  99. +8 −2 src/kissnet.h
  100. +6 −4 src/kissserial.c
  101. +4 −2 src/kissserial.h
  102. +15 −8 src/kissutil.c
  103. +45 −4 src/latlong.c
  104. +1 −1 src/log.c
  105. +2 −4 src/log2gpx.c
  106. +6 −6 src/mgn_icon.h
  107. +12 −2 src/mheard.c
  108. +4 −4 src/morse.c
  109. +14 −4 src/multi_modem.c
  110. +3 −0 src/multi_modem.h
  111. +6 −6 src/pfilter.c
  112. +26 −26 src/ptt.c
  113. +1 −1 src/recv.c
  114. +5 −1 src/rrbb.c
  115. +7 −10 src/serial_port.c
  116. +27 −17 src/server.c
  117. +50 −21 src/symbols.c
  118. +6 −6 src/telemetry.c
  119. +1 −1 src/textcolor.c
  120. +1,284 −0 src/tnctest.c
  121. +5 −5 src/tq.c
  122. +8 −6 src/tt_text.c
  123. +8 −8 src/tt_user.c
  124. +1 −1 src/ttcalc.c
  125. +8 −8 src/waypoint.c
  126. +1 −1 src/xid.c
  127. +13 −13 src/xmit.c
  128. +59 −54 test/CMakeLists.txt
  129. +11 −0 test/scripts/check-fx25
  130. +4 −0 test/scripts/check-il2p
  131. +4 −2 test/scripts/check-modem1200
  132. +4 −0 test/scripts/check-modem1200-i
  133. +4 −2 test/scripts/check-modem300
  134. +18 −0 test/scripts/check-modem9600-i
23 changes: 22 additions & 1 deletion CHANGES.md
Original file line number Diff line number Diff line change
@@ -2,8 +2,29 @@
# Revision History #


## Version 1.6 -- October 2020 ##
## Version 1.7 -- Under Development ('dev' branch) ##


### New Features: ###

- Improved Layer 2 Protocol [(IL2P)](https://en.wikipedia.org/wiki/FX.25_Forward_Error_Correction). Use "-I 1" on command line to enable transmit for first channel. Compatible with Nino TNC for 1200 and 9600 bps.

- Limited support for CM109/CM119 GPIO PTT on Windows.

- Dire Wolf now advertises itself using DNS Service Discovery. This allows suitable APRS / Packet Radio applications to find a network KISS TNC without knowing the IP address or TCP port. Thanks to Hessu for providing this. Currently available only for Linux and Mac OSX. [Read all about it here.](https://github.com/hessu/aprs-specs/blob/master/TCP-KISS-DNS-SD.md)

- The transmit calibration tone (-x) command line option now accepts a radio channel number and/or a single letter mode: a = alternate tones, m = mark tone, s = space tone, p = PTT only no sound.

- The BEACON configuration now recognizes the SOURCE= option. This replaces the AX.25 source address rather than using the MYCALL value for the channel. This is useful for sending more than 5 analog telemetry channels. Use two, or more, source addresses with up to 5 analog channels each.

- For more flexibility, the FX.25 transmit property can now be set individually by channel, rather than having a global setting for all channels. The -X on the command line applies only to channel 0. For other channels you need to add a new line to the configuration file.

> After: "CHANNEL 1" (or other channel)
>
> Add: "FX25TX 1" (or 16 or 32 or 64)

## Version 1.6 -- October 2020 ##

### New Build Procedure: ###

63 changes: 50 additions & 13 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -4,12 +4,13 @@ project(direwolf)

# configure version
set(direwolf_VERSION_MAJOR "1")
set(direwolf_VERSION_MINOR "6")
set(direwolf_VERSION_MINOR "7")
set(direwolf_VERSION_PATCH "0")
set(direwolf_VERSION_SUFFIX "")
set(direwolf_VERSION_SUFFIX "Development")

# options
option(FORCE_SSE "Compile with SSE instruction only" OFF)
# See Issue 297.
option(FORCE_SSE "Compile with SSE instruction only" ON)
option(FORCE_SSSE3 "Compile with SSSE3 instruction only" OFF)
option(FORCE_SSE41 "Compile with SSE4.1 instruction only" OFF)
option(OPTIONAL_TEST "Compile optional test (might be broken)" OFF)
@@ -31,15 +32,6 @@ set(COPYRIGHT "Copyright (c) 2019 John Langner, WB2OSZ. All rights reserved.")
add_definitions("-DCOPYRIGHT=\"${COPYRIGHT}\"")
set(IDENTIFIER "com.${COMPANY}.${APPLICATION_NAME}")
add_definitions("-DIDENTIFIER=\"${IDENTIFIER}\"")
# raspberry as only lxterminal not xterm
if(NOT (WIN32 OR CYGWIN))
find_program(BINARY_TERMINAL_BIN lxterminal)
if(BINARY_TERMINAL_BIN)
set(APPLICATION_DESKTOP_EXEC "${BINARY_TERMINAL_BIN} -e ${CMAKE_PROJECT_NAME}")
else()
set(APPLICATION_DESKTOP_EXEC "xterm -e ${CMAKE_PROJECT_NAME}")
endif()
endif()

find_package(Git)
if(GIT_FOUND AND EXISTS "${CMAKE_SOURCE_DIR}/.git/")
@@ -71,6 +63,7 @@ set(CUSTOM_SRC_DIR "${CMAKE_SOURCE_DIR}/src")
set(CUSTOM_EXTERNAL_DIR "${CMAKE_SOURCE_DIR}/external")
set(CUSTOM_MISC_DIR "${CUSTOM_EXTERNAL_DIR}/misc")
set(CUSTOM_REGEX_DIR "${CUSTOM_EXTERNAL_DIR}/regex")
set(CUSTOM_HIDAPI_DIR "${CUSTOM_EXTERNAL_DIR}/hidapi")
set(CUSTOM_GEOTRANZ_DIR "${CUSTOM_EXTERNAL_DIR}/geotranz")
set(CUSTOM_DATA_DIR "${CMAKE_SOURCE_DIR}/data")
set(CUSTOM_SCRIPTS_DIR "${CMAKE_SOURCE_DIR}/scripts")
@@ -131,7 +124,7 @@ endif()
# auto include current directory
set(CMAKE_INCLUDE_CURRENT_DIR ON)

# set OS dependant variables
# set OS dependent variables
if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
set(LINUX TRUE)

@@ -143,6 +136,10 @@ elseif(${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD")
configure_file("${CMAKE_SOURCE_DIR}/cmake/cpack/${CMAKE_PROJECT_NAME}.desktop.in"
"${CMAKE_BINARY_DIR}/${CMAKE_PROJECT_NAME}.desktop" @ONLY)

elseif(${CMAKE_SYSTEM_NAME} STREQUAL "OpenBSD")
set(OPENBSD TRUE)
set(HAVE_SNDIO TRUE)

elseif(APPLE)
if("${CMAKE_OSX_DEPLOYMENT_TARGET}" STREQUAL "")
message(STATUS "Build for macOS target: local version")
@@ -156,6 +153,10 @@ elseif(APPLE)
set(CMAKE_MACOSX_RPATH ON)
message(STATUS "RPATH support: ${CMAKE_MACOSX_RPATH}")

# just blindly enable dns-sd
set(USE_MACOS_DNSSD ON)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DUSE_MACOS_DNSSD")

elseif (WIN32)
if(NOT VS2015 AND NOT VS2017)
message(FATAL_ERROR "You must use Microsoft Visual Studio 2015 or 2017 as compiler")
@@ -195,10 +196,16 @@ if (C_CLANG OR C_GCC)
# I also took out -Wextra because it spews out so much noise a serious problem was not noticed.
# It might go back in someday when I have more patience to clean up all the warnings.
#

# TODO:
# Try error checking -fsanitize=bounds-strict -fsanitize=leak
# Requires libubsan and liblsan, respectively.

###set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -Wvla -ffast-math -ftree-vectorize -D_XOPEN_SOURCE=600 -D_DEFAULT_SOURCE ${EXTRA_FLAGS}")
if(FREEBSD)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -Wvla -ffast-math -ftree-vectorize -D_DEFAULT_SOURCE ${EXTRA_FLAGS}")
else()
#set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wvla -ffast-math -ftree-vectorize -D_GNU_SOURCE -fsanitize=bounds-strict ${EXTRA_FLAGS}")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wvla -ffast-math -ftree-vectorize -D_GNU_SOURCE ${EXTRA_FLAGS}")
endif()
#
@@ -246,6 +253,20 @@ else()
endif(WIN32 OR CYGWIN)

# requirements

include(CheckSymbolExists)
# Some platforms provide their own strlcpy & strlcat. (BSD, MacOSX)
# Others don't so we provide our own. (Most, but not all Linux)
# Define the preprocessor macro so libgps does not supply its own version.
check_symbol_exists(strlcpy string.h HAVE_STRLCPY)
if(HAVE_STRLCPY)
add_compile_options(-DHAVE_STRLCPY)
endif()
check_symbol_exists(strlcat string.h HAVE_STRLCAT)
if(HAVE_STRLCAT)
add_compile_options(-DHAVE_STRLCAT)
endif()

set(THREADS_PREFER_PTHREAD_FLAG ON)
find_package(Threads REQUIRED)

@@ -276,6 +297,17 @@ if(LINUX)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DUSE_CM108")
endif()

find_package(Avahi)
if(AVAHI_CLIENT_FOUND)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DUSE_AVAHI_CLIENT")
endif()

elseif (HAVE_SNDIO)
find_package(sndio REQUIRED)
if(SNDIO_FOUND)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DUSE_SNDIO")
endif()

elseif (NOT WIN32 AND NOT CYGWIN)
find_package(Portaudio REQUIRED)
if(PORTAUDIO_FOUND)
@@ -287,8 +319,12 @@ else()
set(ALSA_LIBRARIES "")
set(UDEV_INCLUDE_DIRS "")
set(UDEV_LIBRARIES "")
# Version 1.7 supports CM108/CM119 GPIO PTT for Windows.
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DUSE_CM108")
set(PORTAUDIO_INCLUDE_DIRS "")
set(PORTAUDIO_LIBRARIES "")
set(SNDIO_INCLUDE_DIRS "")
set(SNDIO_LIBRARIES "")
endif()

# manage and fetch new data
@@ -297,6 +333,7 @@ add_subdirectory(data)
# external libraries
add_subdirectory(${CUSTOM_GEOTRANZ_DIR})
add_subdirectory(${CUSTOM_REGEX_DIR})
add_subdirectory(${CUSTOM_HIDAPI_DIR})
add_subdirectory(${CUSTOM_MISC_DIR})

# direwolf source code and utilities
23 changes: 16 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@


# Dire Wolf #

### Decoded Information from Radio Emissions for Windows Or Linux Fans ###
@@ -9,11 +9,15 @@ Why waste $200 and settle for mediocre receive performance from a 1980's technol

![](tnc-test-cd-results.png)

Dire Wolf now includes [FX.25](https://en.wikipedia.org/wiki/FX.25_Forward_Error_Correction/) which adds Forward Error Correction (FEC) in a way that is completely compatible with existing systems. If both ends are capable of FX.25, your information will continue to get through under conditions where regular AX.25 is completely useless.
Dire Wolf now includes [FX.25](https://en.wikipedia.org/wiki/FX.25_Forward_Error_Correction) which adds Forward Error Correction (FEC) in a way that is completely compatible with existing systems. If both ends are capable of FX.25, your information will continue to get through under conditions where regular AX.25 is completely useless.

![](fx25.png)

Dire Wolf is a modern software replacement for the old 1980's style TNC built with special hardware.
Version 1.7 adds [IL2P](https://en.wikipedia.org/wiki/Improved_Layer_2_Protocol), a different method of FEC with less overhead.



### Dire Wolf is a modern software replacement for the old 1980's style TNC built with special hardware. ###

Without any additional software, it can perform as:

@@ -131,15 +135,17 @@ On Debian / Ubuntu / Raspbian / Raspberry Pi OS:
sudo apt-get install cmake
sudo apt-get install libasound2-dev
sudo apt-get install libudev-dev
sudo apt-get install libavahi-client-dev

Or on Red Hat / Fedora / CentOS:

sudo yum install git
sudo yum install gcc
sudo yum install gcc-c++
sudo yum install make
sudo yum install git
sudo yum install gcc
sudo yum install gcc-c++
sudo yum install make
sudo yum install alsa-lib-devel
sudo yum install libudev-devel
sudo yum install avahi-devel

CentOS 6 & 7 currently have cmake 2.8 but we need 3.1 or later.
First you need to enable the EPEL repository. Add a symlink if you don't already have the older version and want to type cmake rather than cmake3.
@@ -190,6 +196,9 @@ Read the **User Guide** in the [**doc** directory](https://github.com/wb2osz/dir

If you have problems, post them to the [Dire Wolf packet TNC](https://groups.io/g/direwolf) discussion group.

You can also install a pre-built version from Mac Ports. Keeping this up to date depends on volunteers who perform the packaging. This version could lag behind development.

sudo port install direwolf


## Join the conversation ##
6 changes: 3 additions & 3 deletions cmake/cpack/direwolf.desktop.in
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
[Desktop Entry]
Name=@APPLICATION_NAME@
Comment=APRS Soundcard TNC
Exec=@APPLICATION_DESKTOP_EXEC@
Icon=@CMAKE_PROJECT_NAME@_icon.png
Exec=@CMAKE_PROJECT_NAME@
Icon=@CMAKE_PROJECT_NAME@_icon
StartupNotify=true
Terminal=false
Terminal=true
Type=Application
Categories=HamRadio
Keywords=Ham Radio;APRS;Soundcard TNC;KISS;AGWPE;AX.25
19 changes: 19 additions & 0 deletions cmake/modules/FindAvahi.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@

find_library(AVAHI_COMMON_LIBRARY NAMES avahi-common PATHS ${PC_AVAHI_CLIENT_LIBRARY_DIRS})
if(AVAHI_COMMON_LIBRARY)
set(AVAHI_COMMON_FOUND TRUE)
endif()

find_library(AVAHI_CLIENT_LIBRARY NAMES avahi-client PATHS ${PC_AVAHI_CLIENT_LIBRARY_DIRS})
if(AVAHI_CLIENT_LIBRARY)
set(AVAHI_CLIENT_FOUND TRUE)
endif()

FIND_PACKAGE_HANDLE_STANDARD_ARGS(AVAHI DEFAULT_MSG AVAHI_COMMON_FOUND AVAHI_CLIENT_FOUND)

if (AVAHI_FOUND)
set(AVAHI_INCLUDE_DIRS ${AVAHI_UI_INCLUDE_DIR})
set(AVAHI_LIBRARIES ${AVAHI_COMMON_LIBRARY} ${AVAHI_CLIENT_LIBRARY})
endif()

mark_as_advanced(AVAHI_INCLUDE_DIRS AVAHI_LIBRARIES)
8 changes: 6 additions & 2 deletions cmake/modules/FindCPUflags.cmake
Original file line number Diff line number Diff line change
@@ -78,7 +78,6 @@ endfunction()
# The default will be set for maximum portability so packagers won't need to
# to anything special.
#
set(FORCE_SSE 1)
#
# While ENABLE_GENERIC also had the desired result (for x86_64), I don't think
# it is the right approach. It prevents the detection of the architecture,
@@ -354,7 +353,12 @@ elseif(ARCHITECTURE_ARM)
if(C_MSVC)
try_run(RUN_NEON COMPILE_NEON "${CMAKE_BINARY_DIR}/tmp" "${TEST_DIR}/test_arm_neon.cxx" COMPILE_DEFINITIONS /O0)
else()
try_run(RUN_NEON COMPILE_NEON "${CMAKE_BINARY_DIR}/tmp" "${TEST_DIR}/test_arm_neon.cxx" COMPILE_DEFINITIONS -mfpu=neon -O0)
if(${CMAKE_HOST_SYSTEM_PROCESSOR} STREQUAL ${CMAKE_SYSTEM_PROCESSOR})
try_run(RUN_NEON COMPILE_NEON "${CMAKE_BINARY_DIR}/tmp" "${TEST_DIR}/test_arm_neon.cxx" COMPILE_DEFINITIONS -mfpu=neon -O0)
else()
try_compile(COMPILE_NEON "${CMAKE_BINARY_DIR}/tmp" "${TEST_DIR}/test_arm_neon.cxx" COMPILE_DEFINITIONS -mfpu=neon -O0)
set(RUN_NEON 0)
endif()
endif()
if(COMPILE_NEON AND RUN_NEON EQUAL 0)
set(HAS_NEON ON CACHE BOOL "Architecture has NEON SIMD enabled")
42 changes: 42 additions & 0 deletions cmake/modules/Findsndio.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
# - Try to find sndio
#
# SNDIO_FOUND - system has sndio
# SNDIO_LIBRARIES - location of the library for sndio
# SNDIO_INCLUDE_DIRS - location of the include files for sndio

set(SNDIO_ROOT_DIR
"${SNDIO_ROOT_DIR}"
CACHE
PATH
"Directory to search for sndio")

# no need to check pkg-config

find_path(SNDIO_INCLUDE_DIRS
NAMES
sndio.h
PATHS
/usr/local/include
/usr/include
/opt/local/include
HINTS
${SNDIO_ROOT_DIR}
)

find_library(SNDIO_LIBRARIES
NAMES
sndio
PATHS
/usr/local/lib
/usr/lib
/usr/lib64
/opt/local/lib
HINTS
${SNDIIO_ROOT_DIR}
)


include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(SNDIO DEFAULT_MSG SNDIO_INCLUDE_DIRS SNDIO_LIBRARIES)

mark_as_advanced(SNDIO_INCLUDE_DIRS SNDIO_LIBRARIES)
2 changes: 1 addition & 1 deletion conf/99-direwolf-cmedia.rules
Original file line number Diff line number Diff line change
@@ -3,7 +3,7 @@
# $ ls -l /dev/hidraw*
# crw------- 1 root root 247, 0 Sep 24 09:40 /dev/hidraw0
#
# An ordinary user, trying to acccess it will be denied.
# An ordinary user, trying to access it will be denied.
#
# Unnecessarily running applications as root is generally a bad idea because it makes it too easy
# to accidentally trash your system. We need to relax the restrictions so ordinary users can use these devices.
20 changes: 16 additions & 4 deletions conf/generic.conf
Original file line number Diff line number Diff line change
@@ -263,10 +263,22 @@
%C%
%C%#DTMF
%C%
%C%#
%C%# If not using a VOX circuit, the transmitter Push to Talk (PTT)
%C%# control is usually wired to a serial port with a suitable interface circuit.
%C%# DON'T connect it directly!
%L%# If using a C-Media CM108/CM119 or similar USB Audio Adapter,
%L%# you can use a GPIO pin for PTT control. This is very convenient
%L%# because a single USB connection is used for both audio and PTT.
%L%# Example:
%L%
%L%#PTT CM108
%L%
%W%# If using a C-Media CM108/CM119 or similar USB Audio Adapter,
%W%# you can use a GPIO pin for PTT control. This is very convenient
%W%# because a single USB connection is used for both audio and PTT.
%W%# Example:
%W%
%W%#PTT CM108
%W%%C%#
%C%# The transmitter Push to Talk (PTT) control can be wired to a serial port
%C%# with a suitable interface circuit. DON'T connect it directly!
%C%#
%C%# For the PTT command, specify the device and either RTS or DTR.
%C%# RTS or DTR may be preceded by "-" to invert the signal.
Loading