PSK31 Mode User Manual

  1. Introduction
  2. Features
  3. Operation
  4. Bugs and annoyances
  5. Version history
  6. Copying
W

1. Introduction
PSK31 Mode supports communications in the PSK31 digital mode. PSK31 detects the carrier phase changes that make a PSK31-encoded character by processing the audio samples stream from the CW Demodulator. The audio signal is processed by a software phase detector which, for BPSK, detects '1' or '0' states ('0' signaled by a 180 deg phase reversal) and the resulting stream of BPSK31-coded bits is decoded into ASCII characters for printing to the Receive window of PSK31. In QPSK the carrier phase changes are processed by a soft-decision Viterbi decoder which provides error correction in bad receiving conditions. An IFFT-based "Waterfall" display is available to help tune in signals.

Transmission of PSK31-encoded characters is realized by sending pre-computed audio samples to the transceiver's DUC. PSK31 mode has a limited built-in CAT capability which enables the user to change the Transceiver's center frequency using the Waterfall and to switch between Transmit and Receive modes.

Software phase detector
PSK31 was designed from the beginning to be simple and efficient, decoding PSK31 signals using mostly integer arithmetic and simple processing methods. It uses the audio samples stream from the CW Demodulator to read the '1' and '0' elements that make the PSK31-coded characters by implementing a software detector of the received audio signal's phase shift. This software phase detector is centered on a nominal frequency of 500 Hz and it operates by integrating the output from an in-phase and a quadrature detector over the period of a PSK31 element (31.25 msec). The carrier phase is then calculated by an integer arctan function implemented using tables to calculate the arc tan (in degrees) of the (quadrature/in-phase) signal ratio. Phase changes are calculated by comparing consecutive values of the carrier's phase after every PSK31 element.

Magniphase Indicator
PSK31 has a simple visual aid for tuning the receiver accurately and displaying the carrier's phase changes. At the lower left corner of the PSK31 window there is an indicator for the carrier magnitude and phase (Receive Magniphase), in which which a line emanating from the center of the circular dial indicates the magnitude of the PSK31 carrier by its length and the phase by its direction. For a BPSK signal, the line should be seen to change direction by 180 deg at each carrier reversal, and additionally for QPSK, it should also change direction by +/- 90 deg. Any error in the receiver's frequency results in the Magniphase line rotating either clockwise or anti-clockwise, and so it can be used for tuning the receiver accurately to the incoming signal's frequency. A second line from the Magniphase center shows the tuning error as calculated by the AFC function, if activated. More on this in the Operation section.

"Waterfall" display with CAT
PSK31 has a "Waterfall" (audio spectrum) display derived from the IFFT of the receiver's audio output. The Waterfall and Magniphase displays can be toggled by clicking on the button at the top of the relevant Frame. A vertical white line indicates the center frequency of the tone detector. When tuning a signal manually, its trace should be centered on this line for best results.

The Waterfall display can be used to tune in a signal by clicking with the left mouse button near its trace. PSK31 will scan a small section of the display either side of the mouse pointer, looking for the strongest trace and then tune the receiver so that the signal is centered on the white line. Because of the very narrow frequency error tolerance of PSK31, it is usually necessary to fine tune manually after this.

Macros in Transmit mode
PSK31 allows 10 prepared Macros to be sent by clicking on one of the ten buttons in the 'Prepared Macros' frame for easy transmission of repeated messages like call-sign exchanges, station info, BTU, sign-off etc. Theses Macros are stored in the ~/.lhpsdr/psk31/psk31.config run time configuration file and are invoked by clicking on the relevant Macro button. Short labels for these Macros are also stored in psk31.config and are displayed in the button labels. For even more operating convenience PSK31 allows the use of 'tags' embedded in the Macros for automatic insertion of certain basic strings in the transmitted message: call-sign, RST, name, QTH and QTH locator for both the operator and the remote station, the current UTC date and time and the operating frequency. The program's version string is also available as a tag so that it can be included in a macro, e.g. there are 13 tags altogether in this version. More on this in the Operation section.

QSO Recording and Logging
PSK31 can save details of activity during its operation in three separate files on the disk:
1. In ~/.lhpsdr/psk31/record.txt all characters printed in the Transmit or Receive window including Macros are recorded 'raw' e.g. in real time and unedited. This makes it possible to check everything transmitted or received during operation if something goes wrong.
2. In ~/.lhpsdr/psk31/log.txt all details of a QSO entered in the QSO Record form (under the Receive window) are saved in text form with the addition of date and time to form a standard station log.
3. In ~/.lhpsdr/psk31/log.adif an ADIF-formatted version of the QSO Record is saved for direct uploading to eQSL.cc or other sites that can accept ADIF formatted logs.

Recognized characters The alphabetic characters, punctuation marks and special codes that PSK31 can currently recognize are in the source file codec.c. The table of characters has the ASCII symbol on the left, the Varicode bit pattern in the middle and the equivalent HEX code on the right.

5. Operation

PSK31 User Interface
PSK31 Mode's window has the following widgets:

1. The Transmit window: Any text typed during transmission appears in this window. When it is filled, it scrolls automatically so that the last line is always visible. It can be cleared by right-clicking in the window and activating the 'Clear Window' item in the pop-up menu. Clicking the middle button toggles PSK31 between the Transmit and Receive modes.

2. The Receive window: Displays characters decoded from a PSK31 signal. When it is filled, it scrolls automatically so that the last line is always visible. It can be cleared by right-clicking in the window and activating the 'Clear Window' item in the pop-up menu. Clicking the middle button toggles PSK31 between the Receive mode and Standby. If PSK31 is in Transmit mode it is changed over to Receive, but if a Macro is being transmitted, then it is interrupted and PSK31 remains in Transmit mode until another middle-click on either window.

3. Receive Magniphase/Waterfall and Squelch: The Magniphase/Waterfall widget is an aid to tuning the receiver accurately to an incoming PSK31 signal. It displays a simple round 'dial' in which a line emanating from the center indicates the magnitude of the PSK31 signal by its length and the phase by its direction. Another line from the center indicates by its inclination, the frequency error as measured by the AFC function of PSK31. The "Waterfall" audio spectrum display appears in place of the Magniphase when the button at the top of the frame is clicked.

The Squelch slider sets a threshold on the detected PSK31 carrier below which decoding is suppressed. This is useful in limiting gibberish printing in the Receive window under poor signal conditions. The Rx Freq slider to its right allows for compensation of small frequency errors in the tuning of the Rx and the AFC check box enables software Auto Frequency Control of the Phase Detector's center frequency, over a small range.

4. The QSO Record frame: In this frame there are seven entry fields in which basic QSO data are entered for saving in the text-format station log file and the ADIF-format log file in the ~/.lhpsdr/psk31/ directory. The minimum requirement for a valid record is the DX station's call-sign, signal report and operating frequency. The mode and date are entered automatically by PSK31 each time a new record is opened. PSK31 will read the Transceiver status and enter the signal report and operating frequency automatically each time a new record is opened.

The buttons below the QSO Record fields have the following functions:
Open New Record: This button clears all but the 'Band' field and enters the mode (BPSK, QPSK-USB or QPSK-LSB) and date and time to the QSO record buffer in memory. If there is a previous valid record then this is saved to the log files in ~/.lhpsdr/psk31/ before a new record is opened. Key F10 also opens a new Record.
Save Record: Opens a pop-up save dialog box. If the QSO Record is valid (call-sign, RST-out and Band have been entered) then a confirmation request for saving is shown, otherwise if not, a warning is given to that effect. Key F11 also has the same function.
Clear All Fields: This button clears all entry fields. NOTE: This will clear the QSO Record buffer in memory, resulting in lost data if the record has not been saved first!.
Clear Windows: Clears the Transmit and Receive windows of all text.

5. The Macro buttons frame: In this frame there are ten buttons that initiate the transmission of prepared macros, e.g. standard messages saved in the run time config file PSK31 (in the ~/.lhpsdr/psk31/ directory). Clicking on a button puts PSK31 in Transmit mode and starts transmission of the macro, clicking again on any of these buttons interrupts the macro but leaves PSK31 in transmit mode.

6. The pop-up menu: This opens on a right-click on the Receive or Transmit window. It has the following items:
PSK31 mode: Select the PSK31 mode: BPSK, QPSK-USB or QPSK-LSB.
Record QSO's: Enable/disable recording of everything printed in the Receive or Transmit windows to the record.txt file.
Capitalize letters: Enable/disable capitalization of letters in the Receive and Transmit windows.
Clear Window: Clears all characters of the underlying window.
Identify in CW: Sends sends the station call-sign in CW/Morse code.
Quit: Quits PSK31 Mode.

Configuration and set-up
After compilation and installation, the ~/.lhpsdr/psk31/psk31.config run time configuration file MUST be edited for proper operation! To do this, load ~/.lhpsdr/psk31/psk31.config into your favorite editor and make sure that you review ALL the configuration fields in the file and that you properly edit all the ones that must be edited. There are three sections, PSK31 Run time, Operator/QTH info and Macros fields. Please review ALL and EDIT as needed!! There are more detailed instructions in the file itself so please follow them for a proper set-up. In particular, station details like Call-sign, operator's name and QTH etc must be edited for Macros to be usable.

Receiving PSK31 signals

PSK31 Mode is a narrow-band mode and it requires accurate tuning, to within less than +-3 Hz for reliable operation. For manual tuning this requires the receiver to have a tuning step of 1 Hz but if this is not available, the "Rx Freq +-" slider can be used to fine-tune the tone detector's frequency. The AFC function when enabled can also fine-tune the detector to about +-5 Hz and it is very helpful in locking an incoming PSK31 signal. The Waterfall display can be used to tune in a signal by clicking near its trace. PSK31 will adjust the center frequency so that that the signal is tuned in closely but manual fine tuning may also be needed.

Receiving QPSK signals is similar to BPSK but requires even more accurate tuning of the receiver. Please note that the operating mode of the Transceiver (USB or LSB) during transmit and receive, must match that of PSK31 as selected from the pop-up menu.

Conducting a QSO
As usual to make a QSO with another station using PSK31 you may call CQ or reply to a CQ. Calling CQ would normally be done using a prepared Macro by clicking on the relevant Macro button and during the course of a QSO, other Macros can be started as needed to send some of the standard messages that are usually exchanged. When the Macro is finished, PSK31 will revert to Receive mode unless a tilde '~' is the last character in the Macro, in which case it remains in Transmit so that a manually typed message can follow the Macro. Reversion to Receive would then be done by middle-clicking on the Receive or Transmit window.
Please note that Macro transmission can be interrupted by middle-clicking on the Receive or Transmit window or left-clicking on any of the Macro buttons.

When a station replies to a CQ it would normally be netted closely and characters transmitted will appear in the Receive window. If there is a significant frequency offset, it will cause errors in decoding but correcting this from the main dial may cause the remote station to miss reception. It may be preferable to disable the ->Rx Toggle button to allow independent Transmitter tuning.

Once two-way contact is established, at least the station's call-sign, RST, and the QSO frequency must be entered in the QSO Record's fields before it can be saved to ~/.lhpsdr/psk31/log.adif and ~/.lhpsdr/psk31/log.txt. BUT PLEASE NOTE: Always remember to 'Open New Record' before entering any data otherwise the mode and date/time will not be entered to the record buffer by PSK31.

Any information entered in the fields is available to any relevant 'tag' in the Macros but please note that if any fields are not filled, PSK31 enters blanks in place of tags! Please note that during transmission no entries should be made to the QSO Record fields since these will reflect in whatever tags are embedded in Macros.

To reply to a CQ, tune in the station accurately and type or copy-paste its call-sign, signal report and frequency in the QSO Record fields. Then prepared Macros can be used to reply to the call and conduct a QSO. Have a look in ~/.lhpsdr/psk31/psk31.config for some typical prepared Macros.
NOTE: You will need to edit at least some of these!!

6. Bugs and deficiencies
I have fixed whatever bugs I came across testing PSK31, but there may be some hiding, waiting for the right conditions to appear.

The PSK31 phase detector algorithm may need further improvements to make it more tolerant to fading and noise. The biggest problem seems to be adjacent strong signals raising the AGC and reducing the level of the PSK signal being decoded.

The use of a simple integer-mostly DSP decoding process makes it necessary to run the software phase decoder/synthesizer at a 500 Hz center frequency. This also makes it necessary to run the receiver with a CW pitch setting of 500 Hz. This well below the usual 700-800 BFO pitch setting and will probably make it necessary to change BFO settings for CW work.

8. Copying This software package is released under the GNU Public License. Please see the COPYING file for more details.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.