znudigi and RPSK

znidig and RPSK are a pair of programs for ham digimode use. They are both written in Java, and are available as open source under the GPL license.



$ ./znudigi --list
[Listing devices]
[Device 0: system [plughw:0,0]]
[Device 1: nForce2 [plughw:1,0]]
[Device 2: nForce2 [plughw:1,1]]
[Device 3: nForce2 [plughw:1,2]]
[Device 4: Java Sound Audio Engine]
[Device 5: Port system [hw:0]]
[Device 6: Port nForce2 [hw:1]]
$ ./znudigi
[Trying all sound devices in numeric order.]
[Trying device 0]
[Trying system [plughw:0,0] PCM_SIGNED 8000.0 Hz, 16 bit, mono, 2 bytes/frame, little-endian]
[Using device 0]
[Listening on network ServerSocket[addr=,port=0,localport=3125]]
Got Socket[addr=/,port=50808,localport=3125]
Received connection from Socket[addr=/,port=50808,localport=3125]


RPSK screenshot


znudigi is a network digimode server, written entirely in Java.  Besides being written in Java, znudigi in unique in that it offers absolutely no user interface; it is entirely a library of code and a threaded network stack which provides its services to clients, which themselves offer the user interface.


The second program is RPSK, which is a network-based UI for znudigi. RPSK is an incremental release over the RPSK program I developed in 2004.

znudigi isn't intended to require RPSK. I hope that, as the protocol is more fully developed, there will be clients in other environments
such as Flash, JavaScript, and C++/C#; plus non-traditional uses such as PSKMail, Chess programs, and other ways for amateurs to experiment with digital mode transport.

Both programs are small: znudigi is well under 100KB, and RPSK is under 50KB.

RPSK has been available since 2004, but supported only by patches to existing digimode programs. znudigi is in "pre-release." It supports receive of PSK31 and spectrum display only, and is not likely to be interesting to any users of any existing digimode program.


I have three reasons for writing a new one digimode program:

  1. I want to provide a platform for easy experimentation with new types of modulation and encoding schemes, and I believe that Java provides a good playground for coding and testing new modems, and delivering them on Mac, Linux, and Windows simultaneously. My tests show that Java code, without any special optimizations, is fast enough on a computer I bought for $400 two years ago.
  2. I believe that good modem designers and and good UI design are rare, yet still rarer is the individual who can -- and will -- do both. By separating the UI and the modems, I hope that talented hams inclined towards experimenting or contributing with only one of these two areas will feel freer to do so.
  3. I hope that the protocol used between the znudigi server and the RPSK client itself will be independently useful. I hope to evolve it and incorporate all the features necessary for successful digimode operation, including extensible rig control such as provided by Dave W1HKJ's RIGXML definition format.


To try out znudigi, fetch the two programs and untar or unzip them, and follow the README instructions for starting each. Both programs are available with full source, but the pre-compiled JAR files are available in the downoaded as well. Both are available as identical packages in both .tar.gz and .zip files:

znudigi requires JDK 6, available from

Choose "JDK 6 Update 4" for compilation or the smaller "Java Runtime Environment (JRE) 6 Update 4" if you just want to run the pre-compiled versions.

Please check the file TODO in the znudigi package for issues.

znudigi is presently receive only.


znudigi is released under GPL license.  I have incorporated code from gMFSK, fldigi, and PocketDigi.  In doing so, I may have used ideas, algorithms, or code which you previously developed.  Please check the AUTHORS file to see if I've properly credited your previously-released GPL code.  I've tried to cite everything in the authors file, but I may have overlooked something.

73 es TNX,