DarwinPSK - PSK31 for amateur radio on the Macintosh
Beginning with Version 0.7, the source code package reverts to its original name
of LinPSK. It now automagically detects what type of machine it is on and builds
the Macintosh version (DarwinPSK) when it discovers it is on a Mac. If you
download the pre-built binary, it may be called DarwinPSK to distinguish it from
the version that runs on other CPUs.
DarwinPSK is a version of LinPsk, written by Volker Schroer/ DL1KSV for Linux
and ported to the Macintosh OSX operating system with the help of Tom Dove /
K3ORC. DarwinPsk allows a Mac to receive and transmit with PSK31 (Phase Shift
Keying 31 Hz), a narrow-band digital mode which allows efficient keyboard
communications even with low power or in poor propagation conditions.
PSK31 enables real-time "chat" over ham radio, with one operator typing a
message on a computer, which is then transmitted and displayed on the screen of
the other. It has become quite popular on the 20-meter amateur band, with
activity centered around 14.070.15 mHz.
DarwinPSK (ver 0.7 and later) also supports RTTY communications.
Besides the software, you need an amateur transceiver (and government license to
transmit) capable of Single Sideband operation and an interface that will send
the audio output of your Mac to the microphone input of the radio and send the
received audio from the radio to the external microphone input or Line In jack
of your Mac. For receiving, this interface can be as simple as a set of
headphones resting on the Mac's internal speaker, although a hard-wired
connection will be much better.
DarwinPsk was ported from LinPsk using a 500mHz iMac (2001 model) with 320mB of
RAM. It also builds and runs reliably on a 366 mHz iBook (2000 Blueberry) with
192 mB of RAM, but that machine has not been tested fully with sound I/O to a
I believe that DarwinPsk is the first amateur radio application to be ported
from UNIX/Linux to Macintosh OSX.
1. A Macintosh running OSX, version 10.2.6 or later 2. OSX Developer Tools,
version December 2002 or later, available on the OSX CD or by free download from
the Apple Web site at www.apple.com 3. A working X-Windows environment. I
recommend Apple X11, a free download from the Apple Web site.
The Fink project with at http://fink.sourceforge.net is an excellent free source
of the following necessary packages, Qt, esound, and fftw:
4. The Qt libraries for XDarwin, version 2.3. 5. The Esound sound daemon. 6. The
Fastest Fourier Transform in the West (fftw). Also install rfftw, a variant. 7.
Automake version 1.7. Check this with "fink list automake" as some versions of
Fink may install automake 1.6 by default.
These instructions assume a standard installation of Apple X11 and packages
installed with Fink. If you have used Tenon XTools or other method of installing
X-Windows, the directory holding your local files will have a different name
from /sw, which is the Fink standard.
1. Start X11 in the usual way and open your favorite terminal program. You can
also work in the Mac OSX Aqua environment with Terminal, but X11 must be
installed to provide the necessary libraries and compilers for building
2. Move to the /sw directory, create a new subdirectory for DarwinPsk and move
3. Copy the tarball into this directory from wherever you saved it and untar it.
cp /SOURCEDIRECTORY/linpsk-0.7.x.tar.gz . (note the dot at the end)
tar -zxvf linpsk-0.7.x.tar.gz
4. The /sw/ham directory should now look something like this
The program shows its heritage here in the LinPSK name. LinPSK is basically a
Linux program. The configure process automatically discovers what kind of
machine it is on and adapts to a Mac when it builds the binary executable file
5. Move into the the linpsk-0.7.x directory and build the program. On a 500 mHz
iMac, this takes about fifteen minutes. Your mileage may vary.
6. This creates an executable file in the linpsk subdirectory. Go there and take
a test drive.
7. You should see the DarwinPsk window, with no activity in either of the white
display screens. Click on the Settings menu and choose the Settings submenu.
Click on the DemoMode button to turn it off. You can set other options in this
window, including your amateur callsign, your timezone as an offset from UTC,
and the sound OutputLevel. The default OutputLevel is 50, which will be much too
high for most Macs, so the sound will be distorted. Try 1 as a starting point.
Click OK to return to the main screen.
Click on the RX button. This should produce a display in the lower left window,
showing the Spectrum input to the microphone of your Mac. Tap the microphone and
look for a change in the display. If there is no change in the display, the
sound input of your Mac is not activated.
8. Activate the microphone input by going to the Mac OSX Aqua interface and
opening the System Preferences control panel. Click on Sound to open the sound
input window. In a few seconds, the display in that window should indicate the
sound source as Internal Microphone. This means that the sound input is
9. Go back to XDarwin and DarwinPsk. Tapping the microphone should now produce a
visible change in the Input display window. If so, the sound input is working
properly. There should be a dark blue background with yellow dots that indicate
noise. Whistle a single note into the mic and a yellow line should appear on the
waterfall. This resembles the display of a signal tone from an incoming PSK31
10. Tune your receiver to 14.070.15 mHz, Upper Sideband. If the 20-meter band is
open, you should hear a variety of warbling tones from the radio speaker, each
one representing a ham using PSK31. Turn up the volume until DarwinPsk "hears"
the audio through the Mac microphone, as shown on the display. Adjust the volume
so the Waterfall shows a dark blue background with white or yellow lines
streaking down it. Click on one of these lines. In a moment, the ham's message
should appear in the Rx window as he types. If not, click on the Squelch bar and
lower it until the signal breaks through the squelch. Noise will show up as
random letters on the Rx display.
11. With receive working, click on TX. A clean-sounding warbling tone should
come from the speakers. If the tone is raspy, the OutputLevel is too high. Type
some words in the window to the right of the TX/RX button. The warbling sound
should vary as your typed words appear in the Rx window above. Click on the
TX/RX button to return to receive mode.
12. Once everything works satisfactorily, make it easier to start by creating a
symbolic link in a location that X11 can locate. After this, you will be able to
start DarwinPsk by typing "psk31" from any terminal prompt, or you can include
it in menus.
ln -s /sw/ham/linpsk-0.7.x/linpsk/linpsk psk31
13. Wire up an interface between the Mac and the transceiver. The exact setup
will vary with your radio and the specific Mac model you have and is beyond the
scope of this document. Many hams use a commercial interface, such as a
RigBlaster or MFJ 1275, for PSK31 operation. Others find a simple cable
connection is sufficient. Some Mac portables do not have sound I/O and will
require a USB audio adapter, such as the iMic, to interface with the radio. It
may be necessary to put a variable potentiometer in the sound input to drop the
audio level and prevent overdriving DarwinPsk.
14. Explore the options in DarwinPSK. You can create macros to automate calling
CQ, answering calls, sending "brag" files and many other functions. These
preferences are saved in your home directory (/Users/USERNAME) as
LinPSKConfig.xml and include your callsign, macros and "brag" files.
15. I am aware of the sound output problem, which seems to be a bug in esound.
The output is too high, so set it at the lowest setting ("1") in the Settings
menu. You may need to drop the level with a variable pot or other means before
it reaches the microphone input on your radio, to avoid distortion. Always use
the minimum levels to and from the radio that will produce a clean signal.
Please send comments and bug reports to email@example.com so we can continue to
73 es BCNU on PSK31!
-- Tom Dove / K3ORC -- Home page at http://www.toad.net/~tdove/