Dire Wolf is a sound card based modem for packet radio. It can be downloaded for Windows and Linux here: https://github.com/wb2osz/direwolf

Although there is a reference to MacOS, there are no further build instructions for Mac. Google reveals some info: one site references an outdated version, the other one proposes to install the brew build/port environment to provide the cmake tool. Installing an environment like brew for just one tool, which actually is a build tool by itself, is .. well .. odd.

So I decided to build Dire Wolf on Mac without any hacks or special tools. After using the result for some time, it’s time to share it.

First step, install the proper tools:

  • Xcode with command line utilities, download from the app store.
  • Cmake IDE that includes the cmake tool. Download latest release from cmake.org, install the app and follow the instruction to enable the CLI tools:
    sudo "/Applications/CMake.app/Contents/bin/cmake-gui" --install

Next, build the portaudio library from source. Audio fans will know the squeezelite audio player. That program uses portaudio as well and produces stunning audio on Mac.

Portaudio can be downloaded from http://files.portaudio.com/download.html. Build and install the libraries like this:

tar xvzf pa_stable_v190700_20210406.tgz
cd portaudio
./configure && make
sudo make install
--> libraries are stored in /usr/local/lib.

Now it’s time for Dire Wolf. Just follow the official instructions:

git clone http://github.com/wb2osz/direwolf
cd direwolf
mkdir build && cd build
cmake ..
—> cmake should give two warnings about naming uppercase vs. lowercase.
make
sudo make install
—> installs manuals pages, binaries and docs
make install-conf
—> installs config files in user's home directory !

That’s all there is to it. Edit the config file with proper audio devices to start decoding. I use aggregate device names (explained here) and trigger PTT via RTS on the serial port. The result looks like this (all comments removed):

ADEVICE "9700-RX" "9700-TX"
CHANNEL 0
MYCALL DH4FR
MODEM 1200
PTT /tmp/IC-9700_13003307_A RTS
AGWPORT 8000
KISSPORT 8001

The special device file (/tmp/IC-9700_13003307_A) is explained here.

Many APRS user programs like UIView or PinPoint are Windows only. When using the KISS or AGW protocols via TCP/IP, you can run these programs in Parallels. Just change localhost in the config to your Mac’s IP address and Dire Wolf on Mac starts talking (howling ..) to PinPoint on Windows.

6 Comments

  1. I am running the M1 Mac with OSX 12.4. I do what to install Dierwolf to at a minimum do Winlink email with Pat. Presently I cannot get past installing Cmake. the command failed below.
    sudo: “/Applications/CMake.app/Contents/bin/cmake-gui”: command not found

    Do you know if this be installed on the M1 Mac?

    1. Author

      Hi Tim,

      On my Intel Mac running Catalina, cmake-gui is a link to ../MacOS/CMake. So you could try:
      “sudo /Applications/CMake.app/Contents/MacOS/CMake –install” instead.
      I noticed you wrote “sudo:”, maybe a typo, but it’s sudo without “:”.

      Looks like this command just creates some links so other scripts can find the cmake tools:

      ‘/usr/local/bin/cmake’ -> ‘/Applications/CMake.app/Contents/bin/cmake’
      ‘/usr/local/bin/ctest’ -> ‘/Applications/CMake.app/Contents/bin/ctest’
      ‘/usr/local/bin/cpack’ -> ‘/Applications/CMake.app/Contents/bin/cpack’
      ‘/usr/local/bin/cmake-gui’ -> ‘/Applications/CMake.app/Contents/bin/cmake-gui’
      ‘/usr/local/bin/ccmake’ -> ‘/Applications/CMake.app/Contents/bin/ccmake’

      Hope this helps.
      Best regards,
      Frank

  2. If it’s helpful to anyone, I was getting an error compiling PortAudio. After some perusing of the PortAudio documentation, I tried replacing “./configure” with

    ./configure –disable-mac-universal

    I’m not sure why that fixed the error, but maybe it has something to do with my Mac being an M1 Pro and not having some dependency required for an Intel Mac. Also I’m running MacOS Sonoma 14.1.1.

    Thanks for this guide Frank!

  3. I got back to this because the time allowed, and I ran into errors on the PortAudio. How do I fix these errors?
    src/common/pa_converters.c:1058:14: error: variable ‘src’ set but not used [-Werror,-Wunused-but-set-variable]
    1058 | PaInt32 *src = (PaInt32*)sourceBuffer;
    | ^
    src/common/pa_converters.c:1059:20: error: variable ‘dest’ set but not used [-Werror,-Wunused-but-set-variable]
    1059 | unsigned char *dest = (unsigned char*)destinationBuffer;
    | ^
    src/common/pa_converters.c:1419:14: error: variable ‘src’ set but not used [-Werror,-Wunused-but-set-variable]
    1419 | PaInt16 *src = (PaInt16*)sourceBuffer;
    | ^
    src/common/pa_converters.c:1420:18: error: variable ‘dest’ set but not used [-Werror,-Wunused-but-set-variable]
    1420 | signed char *dest = (signed char*)destinationBuffer;
    | ^
    src/common/pa_converters.c:1459:14: error: variable ‘src’ set but not used [-Werror,-Wunused-but-set-variable]
    1459 | PaInt16 *src = (PaInt16*)sourceBuffer;
    | ^
    src/common/pa_converters.c:1460:20: error: variable ‘dest’ set but not used [-Werror,-Wunused-but-set-variable]
    1460 | unsigned char *dest = (unsigned char*)destinationBuffer;
    | ^
    6 errors generated.
    make: *** [src/common/pa_converters.lo] Error 1
    timh

    1. Author

      Hi Tim,
      Just tried it on M1 Mac, same error.
      Cause is the -Werror compiler flag in the Makefile, line 21, in combination with -Wunused-but-set-variable which is a new default I guess. The variable is not used, not good coding but anyways, and the compiler gives a warning, that’s fine. But the -Werror flag makes the compiler treat this warning as error and exits. You can remove the -Werror flag and the compile will succeed.
      Good background info: https://embeddedartistry.com/blog/2017/05/22/werror-is-not-your-friend/

      Best 73
      Frank

Leave a Reply

Your email address will not be published. Required fields are marked *

9 + 1 =