PSK31 for Windows on the EVM
PSK31 for Windows on the Sound Card

Warning: Do not connect the soundcard output of your computer direct to the microphone input of your transmitter. You MUST reduce the soundcard output level with an attenuator. Read the SOUNDCARD SETUP topic!

This program operates under Windows 3.11, Windows 95, Windows 98, and Windows NT, in conjunction with most known types of 16-bit sound card.

PSK31 is used to transmit and receive text over a radio link using Phase Shift Keying. A SSB transceiver is needed (a Class C transmitter is not suitable), with the PSK signal generated and received as an audio tone.

Click one of the following topics or keep selecting >> to view all topics in turn.

PSK31 overview

Connecting the transceiver

Sound-card setup <<<<<<<<<<<<<<<<<<<<<<<< Very important!!!

Starting PSK31SBW

PSK31 Operating

The Setup Menu

Extended character-set

PSK31 modulation theory

QPSK and Error Tolerance

PSK31 Coding Theory

Extended ANSI characters   (including the slash-0 option)

PSK31 and propagation


PSK31 overview

In spite of new DSP technology appearing in HF data modes, traditional RTTY has maintained it's popularity. There is evidently a special quality in RTTY that is missing in newer modes. It may be that RTTY is easier to use, or more "hands-on", or more sociable since you can listen-in and join-in which an ARQ link cannot do. It may just be because RTTY is cheaper.

A new mode is emerging over the last year which may bridge the gap between RTTY and the high-tech modes. Based on an idea by SP9VRC, the PSK31 mode is based on the use of low-cost DSP starter kits and public-domain software, using modern DSP techniques to implement a basic live-QSO transmit-receive keyboard-to-screen mode. The bandwidth of PSK31 is much lower than any other data mode, which means it can work at lower signal levels in today's crowded bands.

The basic idea of PSK is that keying is done by phase-shifting the carrier rather than frequency-shifting it. The bandwidth is equal to the baudrate rather than to the shift plus the baudrate. With the chosen baudrate of 31.25, that brings the bandwidth down from the 300-500Hz of other modes down to 31Hz. By using an alphabet similar to morse with short codes for common letters, the text speed of PSK31 comes out at about 50 wpm. By using the narrowest possible filters in the transmitter and receiver, the performance of PSK31, even without error-correction, is certainly better than most, and has the added advantage for live QSOs that the performance degrades very gracefully as the signal drops. For paths where errors occur in bursts rather than randomly, PSK31 can be switched to use a convolutional code at the transmitter and a matching Viterbi decoder at the receiver. QPSK, with 4 phase-shifts instead of two, is used for this, but the bandwidth and text speed stay the same. The price paid for this robustness is a tighter frequency stability requirement and a delay of 640mS in the decoder.


Connecting the transceiver

Connect a screened audio cable from the audio output of your SSB receiver to the line input jack of your soundcard. Either left or right input (or both) will work. Don't use the microphone input of the soundcard. It's best to use a dedicated auxiliary audio output on the receiver which does not vary in level with speaker volume.

Connect a similar audio lead from the left or right stereo output (but not both) of the soundcard to the auxiliary audio input of your SSB transmitter. Again, it's best to use a dedicated auxiliary audio input (phone patch) rather than the microphone input. Do  not connect the soundcard output direct to the mike input. If you have to use the microphone input, build a 100:1 attenuator right inside the mike plug (100k in series followed by 1000 in parallel) to reduce the soundcard output level (about 1 volt) down to the level of a typical microphone (about 10 milli-volt). If you use the auxiliary audio input, make sure that the mike is not live when you are working PSK31, or other band users will hear your shack noise!  Do not use a speech processor with PSK31: although a speech processor in OK for SSB,  it will generate distortion products close-in which make a PSK31 signal much wider spectrum-width (500Hz) than it should be (31Hz).

It is recommended that you always use upper sideband  for PSK31, because it will be easier to drive the spectrum analyser display and the tuning controls.

To change from receive to transmit, you can enable the VOX on the transceiver, or use the RTS or DTR pin on a spare COM port to do operate the PTT line. Connect pin 7 or pin 4 of the DB9 (pin 4 or 20 of a DB25) either to the base of a transistor or the gate of a small FET, and connect the collector/drain to the PTT line of your transceiver, with the emitter/source going to ground. Use the SETUP menu to select the COM port in the program. If you do not wish to do this, you can still use the program but you must switch the transceiver to transmit manually.


Setting up the sound card

IMPORTANT: Please understand that the audio level from the soundcard must not overdrive the transmitter input. Overdrive with PSK31 will make the transmission broad-band and cause severe interference to other band users.

You must have a 16 bit sound card installed in your computer to use this program. There are other versions of the PSK31 software which operate with other DSP development kits. Read the documentation with the sound card for full instructions on the use of this card in general. Find the mixer control panel, which may be a program that was supplied with the soundcard or it may be part of the WINDOWS Control Panel. Learn how to adjust the soundcard playback output level and the record input level using the mixer panel: these controls will be used to set the levels for PSK31.

If you are feeding audio direct from the soundcard output to the microphone socket, you will need to make an attenuator of about 100:1 ratio to reduce the 1 volt output of the soundcard down to 10 mV for the microphone socket. Do not use a speech processor with PSK31.

To check that the soundcard is not overdriving the transmitter, first set the mike gain control to the normal level used for SSB voice and start with the soundcard output level at zero on the mixer control panel. Then key F8  in the PSK31SBW program to transmit a tuning tone and slowly turn up the soundcard output level while watching the transmitter output power. Stop when the power is just reaching maximum. The ALC meter will start to read. This is the correct setting. If the transmitter power jumps to maximum on the first step of the output control, you will need to make an attenuator to reduce the soundcard output level going to the transmitter. If you are using the transmitter mike input, you will certainly need to make an attenuator! The best way is to make the attenuator big enough so that you can leave the Mike gain at the normal setting and the soundcard output level at maximum. It will then be impossible to accidentally overdrive the transmitter.

When you have reached the correct setting, you will see that changing from the tuning tone to typing text, will make the transmitter power swing from 50% (no typing) to 100% (typing or tuning-tone). This change in power is correct.

It's quite OK to let the transmitter ALC line operate on PSK31. The ALC line will control the drive level without clipping in the same way that it does on voice operation.

To check that the receiver output is not overdriving the soundcard, tune to a strong steady carrier to give 1000Hz audio tone, with the RF gain of the receiver at maximum so that the receiver AGC line is fully operating. Check that the waterfall shows a single vertical white line with no red. Reduce the soundcard input gain in the mixer control panel if you see red lines on strong signals.

To complete the soundcard setup for use with PSK31, the soundcard sample rate needs to be set. This is done from the Setup  menu. See the sample rate section of the SETUP topic for further details.


Starting the PSK31SBW program

The first time you start PSK31SBW, a warning box will appear telling you that the sample rate has not been set. Read the sample rate section of the Setup menu topic to see how to do this. The next time you start the program, this message will not appear (unless the PSK31.INI file has been deleted or is missing) The Setup menu also allows other settings to be made and these will be remembered when you start the program again later.


PSK31 operating

Select any of the following topics, or keep clicking on >> to see them all in turn

Setting the receive frequency

Tuning in PSK31 signals 	Beginners start here!

The Waterfall Display 	See the band activity each side

The Phase Scope Display 	Fine-tune to the PSK signal

Tuning display examples 	Learn the tuning display

Wide/Narrow receive filters	Set the receiver bandwidth

Sideband selection with PSK31	Why it's important for QPSK

Waterfall display limitations	Beware of image responses

Receiving PSK31 	Receive and print PSK31 text

Transmitting PSK31 	Don't overdrive the transmitter!

Operating techniques 	Some new tricks needed here

Saving received text 	Using the LOG file

Sending text files 	Send your brag tape

PSK31 signal quality reports	Help keep the bands free of splatter


Setting Rx Frequency
Setting the receive frequency

To receive PSK31 on a particular radio frequency, you will be using an SSB radio. The RF frequency that you will receive will be offset from the dial frequency of the radio (which shows the suppressed carrier frequency of the SSB signal). For example, to tune to a PSK31 signal on 14070.15 kHz, you may set the receiver to upper sideband and set the dial to 14069.0 kHz. The PSK31 signal will then be heard as an audio tone at 1.15kHz.

PSK31 needs to be tuned to within a few Hz, and the tuning steps on most modern radios are too coarse. So the PSK software has a narrow audio filter which can be tuned over the audio range. In the above example, the PSK31  audio filter would be set to 1150Hz by using the Rx Freq  box. You can click in this box and edit the frequency direct, use the up/down buttons next to the box, or the left and right cursor keys on the keyboard.

There is another way you can set the receive frequency. You can put the mouse cursor on top of a signal in the waterfall display that is off-centre, click the mouse, and that will automatically bring the signal to the centre.


Tuning in PSK31
Tuning in PSK31 signals

Tuning-in a PSK31 signal is rather different from tuning-in any other signal, for example RTTY, for two reasons. First the PSK31 signal is sometimes a single tone in the centre and sometimes two tones either side. If you tune 15Hz off-centre, one of the two tones is in the centre and the other is outside the passband, so you can get a false tuning point either side of the correct one. The other reason why tuning PSK31 is different is because the bandwidth is so narrow that it's possible to receive a PSK31 signal as little as 50Hz away from another signal, and at this narrow spacing, the human ear is not good enough to separate the two and guide you to the correct tuning-point.

Some new techniques have to be learned. To help with this, the PSK31SBW program has two tuning indicators, a waterfall display and a phase scope  To tune in PSK31 signals you will learn to use your ears to guide you within 250Hz of the right frequency, then the waterfall display to get within 15Hz, then the phase scope to fine-tune to within the 1 or two Hz needed for good reception of PSK31. The phase scope also tells you if the signal you are receiving is sending BPSK or QPSK so that you can switch modes, and gives you a good idea of the quality of the link.


Waterfall Display
The waterfall display

The waterfall display, in the bottom left of the screen, is like a miniature spectrum analyser, showing all the signals up to 250Hz either side of the receiver centre frequency, but using brightness to show signal-strength. As you tune either the main receiver dial or the Rx Freq setting, the received signals will move across the display. If the signal is on the right hand side of the display, it is higher in frequency. The display scrolls downwards like a waterfall so you can see the band activity for the previous three seconds. To tune in a PSK31 signal, adjust the main receiver dial until the signal comes nearest to the centre. Because modern receivers will only tune in steps rather than continuously, you will not be able to get the signal to the exact centre this way, but you can then fine-tune with the up/down buttons next to the Rx Freq  box, or use the left- and right-arrow keys on the keyboard until it the signal is lined-up with the centre reference mark. Another way to tune a signal that you can see on the waterfall to the centre, is to click once the mouse on the brightest part of that signal. This will bring it to the centre.

If you see a red horizontal line across the waterfall, that shows that the audio input to the soundcard is too high and it's overdriving the soundcard input. Reduce the soundcard input gain using the sound mixer program, or build an attenuator to reduce the audio level from the receiver.

The Tuning display examples topic shows what is displayed on the waterfall display and the phase scope as you tune across PSK31 signals. An example of a distorted PSK31 transmitter is also shown.


Phase Scope display
The phase scope display

If you have just upgraded from version 1.01 or earlier, note that the rotation sense of the phase scope has been reversed in this version. A signal HF of centre is now clockwise from the top.

The waterfall display will usually get the tuning close enough to print, but for fine-tuning, the phase scope is useful, and the phase scope gives a good idea of the signal quality, and is also the way to recognise if the signal is keying with BPSK or QPSK so that you can switch modes to copy it correctly.

The phase scope shows the phase shift modulation and the amplitude of the carrier. An unmodulated carrier has no phase shift and shows as a line vertically up from the centre: a stronger carrier gives a longer upwards line. The PSK31 idle signal has 180 degrees phase-shift modulation and so shows as a line vertically downwards from the centre.

If the signal is off-tune, the line on the phase scope will be rotated from the vertical. If the signal frequency is too high, the line is rotated to the right. You can fine-tune the line to the vertical position with the left and right cursor keys or click on the up/down buttons next to the Rx Freq box.

If you tune an unmodulated carrier 15Hz off to one side, it will rotate the phase scope line through 180 degrees from vertically up to vertically down - the same as an idle signal on-tune, but you can see the difference because on the waterfall display, an idle signal is two tones, one each side, but an off-tune carrier only one. Similarly, an idle signal off-tuned by 15Hz looks the same as an unmodulated carrier on-tune, but you can see the difference on the waterfall. If you tune more that 15Hz off, the amplitude of the signal will drop off and the phase scope display will break-up into the noise, but you will still see the signal on the waterfall display.

It will help you to practise tuning if you first try it with unmodulated carriers. Tune the main receiver dial, which will usually be in steps of 10Hz or more, until a carrier shows on the waterfall, click the mouse exactly on the carrier, and then finalise the tuning with the cursor keys until the phase scope line is vertically upwards. With practice you will be able to do it very quickly. Try to click the mouse so that the phase scope line appears close to the top of the phase scope.

When you do this on a PSK31 signal, clicking the mouse on the centre of the signal, instead of a single line up from the centre you will see either a line downwards from the centre if the signal is idling, or a vertical line right across the diameter if the signal is sending text. See the Tuning Display Examples topic for some pictures.

When the PSK31 signal is idling, you will see a two-digit dB display inside the Phase Scope circle. This is measuring the signal quality. See the PSK31 Signal Quality reports topic for the details.


Narrow filter selection
Receive wide/narrow filter selection

The PSK31 program has two receive filters. The default "wide" filter is +/-45Hz wide at the 50db-down points, and is good enough for most purposes. The "narrow" filter can be selected in the setup Menu, and is +/-31Hz at 60dB down. Before you choose to enable the narrow filter permanently, remember that it uses more processor time than the wide filter. On some slow computers it might not be possible to use the narrow filter, especially if a high soundcard sample rate is in use. If you select the narrow filter on a slow computer and it locks up, delete the PSK31.INI file and then restart the program. However, if your computer is a fast modern one, you can probably leave the narrow filter permanently selected.


Sideband selection
Sideband selection with PSK31

You can use either upper sideband or lower sideband when using PSK31, but there are two things to remember.

When tuning to a particular frequency, for a sked or a net for example, the exact frequency specified for the net will be the centre-frequency of the RF signal. If your radio is operating with upper sideband, the RF frequency that it will receive will be the dial frequency of the radio plus the frequency shown in the Rx Freq box in the PSK31SBW program. This means that to operate on a given RF frequency for a sked, you need to subtract the Rx Freq from the RF frequency to get the required dial frequency. If your radio is operating with lower sideband, you should add the Rx Freq value to the RF frequency to get the required dial frequency.

The other thing to remember when choosing which sideband to use, is that it's important that both stations use the same keying convention when using QPSK. In this program, the default is to use upper sideband. If you choose to use lower sideband and you will be using QPSK, then you must  change the keying convention for QPSK, both when receiving and transmitting. This is done by checking the Inverted QPSK  box in the SETUP menu.

The keying polarity does not matter with BPSK, so it does not matter which sideband to use for BPSK, and the Inverted QPSK  checkbox has no effect on BPSK, but you should remember the QPSK polarity problem because you may want to switch to QPSK during a contact, and if you have the wrong polarity, you will lost the copy.

It is recommend to use upper sideband for PSK31. It will be easier to read the waterfall display and decide which way to QSY if the RF spectrum is the same way up as the audio spectrum.


Waterfall limitations
Waterfall display limitations

The waterfall display in this program is not a full-performance spectrum analyser. It's designed to show the signals up to 250Hz either side, but it also will show on the waterfall some strong signals that are outside the +/-250Hz range. The out-of-band responses are well-down on the in-band response, but you may see them from time to time and it will help to recognise them so that you can avoid confusion. If you tune in a strong unmodulated carrier, you will see that if you tune it to 250Hz off-centre so that it reaches the edge of the waterfall display and keep tuning, it will re-appear on the opposite side of the waterfall, moving towards the centre again, but it disappears as it gets towards the centre. So it's possible that a strong signal, for example, 300Hz below centre, will show as a weak signal 200Hz above centre. If you click on such an "image" signal to try to bring it to the centre, it will just vanish!. However, you can soon learn to recognise these images. For example, if a strong carrier appears in the speaker at a lower pitch that the signal you are copying, but the waterfall shows a signal appearing on the high side, you will know it's an image. You can never get images on the centre of the waterfall, they will only appear near the edges. If you receive through a 500Hz CW filter, you will never see these images at all because they will be outside the passband of the CW filter.


Receiving PSK31 on-air
Receiving PSK31 on the air

With only background noise in the receiver, the phase scope will be red and flickering at random, but nothing will appear on the main screen. When you have found a PSK31 signal that is idling and tuned it in, the phase scope will be a vertical line down from the centre of the phase scope and the waterfall display will be a pair of lines close together at the centre. If the Squelch box is set to Auto, the phase scope will change from red to yellow to indicate that the signal has been detected, and when the signal starts to transmit text, the phase scope line will jump as the signal phase-shifts, the waterfall display will modulate, and text will appear in the main screen. If the signal is too weak to trigger the squelch, but you want to try to copy it anyway, you can click the Squelch  to Off and the phase scope will always be yellow and it will then try to copy even band noise. The F2 key toggles the Squelch between Auto and Off. You can fine tune the Rx Freq until the phase scope trace is exactly vertical, or you can enable the AFC, which will automatically fine-tune the signal as the squelch pulls-in, and tracks any drift during the transmission.

Most PSK31 contacts use the BPSK keying mode, where the phase scope keys from bottom to top, but if you see the phase scope keying a cross pattern instead of a vertical line, this shows that the signal is QPSK. See the receiving QPSK topic for instructions on receiving QPSK.


Receiving QPSK

When the tuning display is flipping between up and down, the signal is in the BPSK mode. The signal is sending one bit of data every 32mS and the data is encoded using the Varicode alphabet. Errors in the received data will result in errors in the decoded text. PSK31 can also operate in an error-tolerant mode, by transmitting extra redundant data. But rather than send more data bits and therefore slow-down the text speed, two data bits are sent every 32mS by using four phases in the shift pattern instead of two. The tuning display now appears as a cross instead of a flipping line. This is the QPSK mode.

If you see a cross on the tuning display, the signal you are receiving is sending QPSK. The program will print garbage if it is set to BPSK mode. Use the Mode menu to change to QPSK mode, or key F1. The QPSK idle condition is the same as for BPSK, so an idling QPSK signal should be tuned so the line is at the bottom. There is no automatic switching between modes: you need to recognise the pattern and manually select the mode. QPSK has lower error-rate when there is fading or interference, but the tuning needs to be more accurate. The markers around the phase scope will remind you which mode is selected. If you select QPSK mode to copy a signal which is a cross-pattern on the phase scope, but it is still garbled or the squelch keeps dropping out, it's possible that it is the wrong phase-shift polarity. When receiving BPSK off-air, it does not matter whether you are using upper sideband or lower sideband on the receiver, but it is important on QPSK. The PSK31SBW program defaults to receiving QPSK correctly when the receiver is on upper sideband, but you can reverse this in the setup Menu if you wish to use lower sideband to receive QPSK correctly. Check your receiver is on the correct sideband and the Inverted QPSK  flag is set correctly in the setup  screen.

See the Tuning Scope pictures topic for some hints on tuning QPSK.


Tuning scope examples
Tuning display examples

Select a topic to see pictures of typical tuning displays to help you recognise what you see on the screen.

Unmodulated carrier

Idling PSK31 signal

BPSK sending traffic: on tune

BPSK sending traffic: 6Hz low

BPSK sending traffic: 15Hz low

QPSK sending traffic: on tune

QPSK sending traffic: 8Hz low

QPSK sending traffic: 15Hz low

Distorted transmitter idling 	Be sure your transmitter is not like this!


Tuning scope: unmodulated carrier
Tuning scope showing unmodulated carrier

An unmodulated carrier, tuned exactly in the receiver passband centre, looks like this. The length of the red line will decrease if the signal is weaker. The waterfall display is showing the carrier as a white line exactly in the centre. The intensity of the line will decrease if the signal is weaker.

As you fine-tune, the red line rotates and the waterfall trace moves slightly to one side.


Tuning Scope Idling PSK31
Tuning scope showing idling PSK31 signal

This is an idling PSK31 signal (it could be BPSK or QPSK), again, tuned exactly in the receiver passband centre. The phase scope line has changed to yellow indicating that the receiver has identified the idle signal and enabled the receive printout. The yellow line is pointing downwards indicating the 180 degree idle condition. The waterfall display is showing the spectrum of the idle signal as two lines either side of the centre. These lines are 31.25Hz apart, the same spacing as the white lines on the reference marker alongside.

As you fine-tune the Rx Freq, the phase scope line rotates and the waterfall display moves to one side. When you are 15Hz off, the phase scope has rotated to the top, just like the unmodulated carrier, and you will see then that the waterfall display now has one tone lined-up in the centre and the other one off to one side. This is the wrong tuning point.

The "dB" figure is the signal quality readout. See the PSK31 signal quality reports topic for details.


Tuning scope: BPSK on-tune
Tuning scope showing BPSK signal sending traffic

This is a BPSK signal being keyed by a distant operator typing or sending a file. BPSK because it's bipolar, (there are two arms to the display). The signal is exactly in the centre of the receiver passband. The phase scope is showing the phase alternating between zero and 180 degrees and the waterfall is showing the spectrum changing between two tones and one. As you fine-tune to one side, the phase scope rotates and the waterfall moves to one side.

 When the distant operator stops keying, the trace goes back to a single line at the bottom, and when he ends the transmission, the trace goes to a single line at the top for 1 second before it goes off. The trace goes red when that happens and the screen printout stops.


Tuning scope: BPSK 6Hz low
Tuning scope showing BPSK signal 6Hz off-tune

The BPSK signal is still transmitting traffic, but the receiver has been tuned 6Hz low, so the signal is 6Hz higher than the receiver centre. Note the line has rotated clockwise, and the waterfall display is just noticeably off centre to the right. If you clicked the mouse on the off-centre signal, the tuning error would be corrected.


Tuning scope: BPSK 15Hz low
Tuning scope showing BPSK signal 15Hz off-tune

The transmitter is transmitting text and the receiver is now 15Hz low. The signal is now 15Hz higher than the receiver passband and is right on the edge of the filter. The bottom phase scope arm has rotated round to the top, and the top arm has rotated to the bottom, but they are not lined up, and although it's not possible to see it in this picture, they are jumping around as the random text is received. The main screen will be printing garbage. The waterfall shows clearly that the signal is on the high side of the centre. Clicking the mouse on the centre of the signal in the waterfall display would bring the signal back on tune.


Tuning Scope QPSK On-tune
Tuning scope showing QPSK signal sending traffic

This is QPSK, tuned exactly right, sending traffic. QPSK because it's quaternary  keying, with four arms to the display. QPSK mode has been selected on the main menu so there are four tuning marks around the circle. Note that even a completely noise-free signal has a little bit of a "jitter" effect on the arms. The waterfall display looks similar to the BPSK signal, but if you look carefully and the signal is very clear you can see that it's not always symmetrical either side of the centre. See the next topic for what happens as you tune off.


Tuning Scope: QPSK 8Hz low
Tuning Scope showing QPSK tuned 8Hz off

QPSK with the distant transmitter sending traffic and the receiver now 8Hz low. The trace has rotated 90 degrees to the right. Although this looks similar to the "on-tune" display, you can recognise that it's wrong because the arms are not at right angles. What cannot be shown in this diagram is that the whole phase scope trace is jumping around and breaking up. The waterfall display shows a small tuning error with the signal to the right, that is, higher than the centre. When the distant transmitter goes to idle, the trace will change to line at the 3 o'clock position.


Tuning Scope: QPSK 15Hz low
Tuning Scope showing QPSK 15Hz off

QPSK now with the receiver 15Hz low of the signal, with the distant transmitter sending traffic. The whole signal has broken up and is right on the edge of the passband, but the waterfall display shows that the signal is off-tune on the high side. You could click the mouse on this off-centre signal and that would bring the signal back to the centre.


Waterfall display showing distorted signal
Tuning display showing overdriven transmitter.

This transmission is idling and is distorted. Notice that the phase scope is not affected but there is splatter each side of the signal visible in the waterfall display which could cause interference to other band users. The most common cause of transmitter distortion like this is overdrive of the audio from the soundcard to the transmitter microphone input, but it could be that a speech processor has not been switched-off, or the final amplifier may be non-linear, for example it may be operating in Class B or Class C. If you see PSK31 signals like this, please help the other operator to find the problem and fix it.

The "dB" readout is the signal quality measured from the waterfall display. See the PSK31 Signal Quality reports topic for details.

Distortion and splatter like this can also be caused in the receiver, but the AGC action of the receiver will usually prevent that, and the waterfall display will flash red if you have too much audio from the receiver to the soundcard.


Transmitting PSK31

To switch the PSK31SBW program to transmit PSK31, just hit any text key. It is a good idea to use the ENTER  key so that the distant receiver starts on a new line. If you have previously set the soundcard output levels for correct drive to the transmitter, the transmitter will be radiating a pure two-tone so the indicated power should be about 50% of the keydown level. Make sure the transmitter is not clipping. Unlike FSK where the envelope is a constant level and it does not matter too much if the transmitter limits, PSK31 has a varying envelope, and will splatter if the transmitter distorts the envelope. Look at the picture of a distorted signal  to see what a distorted transmission looks like to other band users!

When you start to type, the power will flicker upwards towards the 100% mark. The phase scope changes to green and typed text appears in the transmit window as you type it. You can see to correct your typing errors in this window before the text has been transmitted. The backspace key sends a backspace code over the air and that will backspace the received copy, but only as far as the beginning of the current line. Extended ANSI text symbols, if they are available on your keyboard, for example umlauts and accented letters, will also be transmitted, but they may only be received correctly at the other end if both stations are using the ANSI character-set. As the text is transmitted - which might be delayed if you are typing fast - it appears on the main screen. Remember that the efficiency of PSK31 relies to some extent on the fact that shorter codes are used for more common characters. This means that lower-case text is quicker to transmit than upper-case. So it's very slow if you engage the CAPS LOCK and send in upper-case only. If you are not comfortable typing with mixed upper- and lower-case text then just type everything in lower-case.

Just as with receiving, it does not matter which sideband you use for transmitting BPSK, but it is important for QPSK. The PSK31SBW program defaults to transmitting QPSK correctly when in upper sideband but you can reverse this in the Setup menu if you wish to use lower sideband to transmit correct QPSK. Check the inverted QPSK box if you need to do this.

Press F5 or click Tx Off and the transmitter tone will change to a steady note for 1 sec at 100% power and then go off, or you can press F6 or click CWID to send your callsign in morse-code after the transmitter goes off.

The F8 key can be used to transmit a pure carrier for tuning purposes if needed, and the F7  key sends a CQ call followed by a CW ident

Warning: This program generates the audio signal in software. If the program is interrupted, the audio will stop. This may happen if you carry out certain processor-intensive operations, such as swapping or starting-up other applications while transmitting, or moving/resizing the program window. The transmitted signal will be corrupted if this happens. Don't do these things while transmitting!


Operating Techniques

The Squelch box, when set to Auto, turns on the print of received text to the screen and turns the phase scope display yellow when a PSK31 signal starts transmitting, and keeps it on while the signal is good. It turns the text off and makes the phase scope red when the signal goes off and keeps it off if there is only noise in the receiver. When Squelch is set to Off, the received text is always shown on the screen and the phase scope is always yellow, so a weak signal that will not reliably pull in the squelch can be received, but band-noise will print garble. The F2 key toggles the squelch between Auto and Off. On BPSK the squelch circuit detects how "clean" is the phase scope display, and on QPSK it detects how well the Viterbi decoder is correcting errors. Notice that if you tune in a BPSK signal or an inverted QPSK signal while in QPSK mode, or a QPSK signal in BPSK mode, the squelch will drop out when the signal is sending traffic. The squelch action has a time-constant of about 1.5 secs. The squelch will also turn on as an idle is detected and turn off if the squelch "tail" on the end of a PSK31 transmission is detected, so a PSK31 transmission starting with an idle and ending with a tail will never miss the first characters and never have any trailing garble.

The AFC check-box, when enabled, corrects off-frequency receive signals. It works in two ways. Firstly, when you receive a new signal and the frequency is not exactly right, the signal is automatically fine-tuned exactly to the centre as the squelch pulls in. Secondly, if the signal drifts slowly during the transmission, the AFC will follow it. In both cases the Rx Freq box updates to show the adjustment. When you wish to reply to that signal, make sure the Net  option is turned-on in the Tx Freq  box, so that when you start to type and the transmitter switches on, the transmitter will be set to the receiver frequency and you will reply exactly on the same frequency. Keeping the Net  option on is equivalent to operating transceive with the RIT off: you will always reply on the same frequency as the other station, even if one of you is drifting and you both have the AFC  on to track the drift. The F3 key toggles the AFC. You may prefer to have the AFC off if you want to fine-tune a signal manually.

The only time you need to switch Net off is if you are deliberately working split-frequency, or if, when you are working on a single frequency, you find that each time you pass the transmission back to the other station you have to retune to copy him. If you have to retune in the same direction by the same amount each time, so that the contact "walks" across the band, with one step for each passing of the over, this indicates that one station or the other has an offset between transmitter and receiver frequencies. In this case, one station can turn Net off in order to stop the "walking" effect. If you know that your transceiver has a transmit-receive offset, you should switch your Net option off. This makes sure that at least the other station can reply on your frequency, and make it easier for a third station to copy you both without retuning. The F4 key toggles the Net option.

If you want to change frequency to an adjacent channel within the SSB bandwidth, you can click the mouse in the Rx Freq box, then edit the frequency. The same applies to the Tx Freq  box if the Net  option is off or if you are transmitting. In both cases the actual frequency change takes place when the flashing cursor leaves the box. It will do this if you hit the Enter  key or click the mouse in the transmit window or use the Tab key.

You can also change frequency within +/-250Hz by clicking the mouse in the waterfall display, so it's possible to see a clear frequency and QSY the receiver to it. In that case, to QSY the transmitter also, the Net  option must be turned on.

As well as the CWID button (or the F6 key) to send your callsign at the end of your transmission, you can use the Mode menu to select Morse transmission mode. Just type at the keyboard. Use the Tx Off  button or F5 key to switch back to receive when you have finished typing. There is no morse receive mode.

Click on the CQ button or key F7 to send a CQ call with a CW ident at the end. If you want to abort a CQ call before it has finished, use the Tx Off button or F5.key


The Setup Menu

Use the Setup menu to set the soundcard sample rate when you first install the program, to change the COM port used for the PTT-line control, set your callsign, change the audio centre-frequency, selected inverted QPSK, or switch between wide and narrow receive filters.

Select a topic to see how to use each setting

Sample rate	Must be set before you start

Sample rate tolerance adjustment	Correct off-frequency soundcards

Callsign 	Set your call for CQ's

Frequency 	Set for your favourite CW filter

Inverted QPSK 	If you really MUST use LSB

Narrow filter 	Better filtering for fast computers

PTT control via COM port 	Use a COM port for PTT switching

Click on OK or Cancel to accept or discard the changes and close the Setup box. All these settings are saved when you exit the program in the PSK31.INI file.


Setting sample-rate
Setting the sample rate

The Sample Rate box is used to set up the soundcard sample-rate. You need to choose the right sample-rate for your system because some soundcards will only operate at high sample-rates, but if your computer is slow, you will want to use low sample-rates so that you do not overload the CPU in the computer.

All sound cards will work at sample-rates of 44100, 22050, and 11025, but all these rates are much faster than is needed by the PSK31 program, which needs a sample-rate higher than about 3-times the audio tone frequency.  So you can choose to use 11025 and that will be OK.

But most soundcards will operate lower than 11025, and if your computer slows down too much when you are running PSK31SBW, you can try sample-rates lower than 11025. Most soundcards will operate at a sample-rate of 8000. The PSK31SBW program can be set at any rate that is a multiple of 500Hz so you can try even lower than 8000 if your computer is still too slow and your soundcard will handle it. If you try to set a sample-rate that is too low for your soundcard, it may give an error message, or it may not work correctly, or it may not work at all. If you try to set a sample-rate that is too high for a slow computer it may lock up. If that happens, delete the PSK31.INI file before you try again.

When you have found a sample-rate setting that works for your system, read the sample-rate tolerance topic, because you have to now set the sample-rate more accurately to get the PSK31 timing exactly right.


Sample rate tolerance
Sample rate tolerance.

Because sound cards are very simple, they cannot always give exactly the right sample-rate. This is because the sample-rate crystal may not be accurate, or because the electronics can only program in steps and will choose the nearest step to the rate you want. Since PSK31 needs to generate accurate frequencies for the tones and the 31.25 baud data clock, this error must be corrected.

To allow for this, you can make a fine adjustment of the sample-rate value used by the PSK31SBW program to calculate the frequencies it generates. This done by "fine-tuning" the value in the sample-rate box in the setup screen, moving it slightly above or below the starting value (11025 or 8000 or a multiple of 500Hz).

For PSK31, the data clock must be set to within 1000ppm (0.1%). To get this accuracy you need a frequency counter with at least a 10 sec timebase, or an accurate frequency standard with a 1 kHz or 10kHz output and an oscilloscope.

If you are going to use a counter, first use the Tx Freq box to enter a frequency that you will measure. Choose a frequency that is a multiple of 500Hz, as high as possible up to 3000Hz, but lower than 1/3 of the sample-rate. Then key F8 to make the soundcard give a pure tone at the chosen frequency.

Measure the audio output frequency from the soundcard. If the measured frequency is too high, use the setup  box to increase the sample-rate setting. For example, if you chose a frequency of 2000Hz and you measure 2002Hz and your sample-rate was set to 8000, increase the sample-rate to 8008. Check the frequency again and it should now be correct. If the measured frequency is low you decrease the sample-rate setting to correct it. The sample-rate value does not need to be a whole number: Use the same format for decimal numbers that your WINDOWS system uses.

If you have a frequency standard with a low-frequency output such as 1000Hz or 10 kHz, you can use it synchronise the oscilloscope so that you can check the frequency accurately, or use a Lissajou figure.

The sample-rate setting will be saved to the PSK31.INI file when you terminate the PSK31SBW program.


Setting your callsign

The Callsign  box in the setup screen is used to set the callsign in the CW ident and the CQ call. The callsign will be saved to the PSK31.INI file when you terminate the program.


Setting the starting frequency

You can change the frequency on which the program starts, for example if you want it to match the audio frequency that corresponds to the centre of a CW filter. Type the frequency in Hz into the box. The frequency will be saved to the PSK31.INI file when you terminate the program. If you change the Rx Freq or Tx Freq  settings while you are working with PSK31, these changes will not be saved when the program terminates.


Setting Inverted QPSK
Setting the QPSK keying polarity

If you have to use the transceiver in LSB mode, check the inverted QPSK  box so that transmission and reception of QPSK will be inverted in the audio so that it is correct on the air. This setting will be saved to the PSK31.INI file when you terminate the program.


Selecting narrow Filter
Setting narrow receive filter

The Narrow box can be used to switch in a narrower receive filter than the default one. If your computer is a fast modern one, you can safely check this box and take advantage of the narrower filter, which is +/-31Hz wide at 60dB down, compared to +/-46Hz wide at 50dB down for the wide filter. However the narrow filter does use up more processor time, so if your computer is particularly slow, you may have to stay with the wide filter (or try a lower sample-rate). The narrow filter setting will be saved to the PSK31.INI file when you terminate the program. If switching to narrow locks up your computer, delete the PSK31.INI  file before restarting the program.


Selecting PTT line control
Setting PTT line control

The PTT control  panel allows you to choose which COM port to use for controlling the PTT line to the transmitter. Leave this panel set at None  if you don't use this feature. See connecting the transceiver  for details of the hardware connections between the serial port cable and the transceiver PTT line. The PTT control COM port setting will be saved to the PSK31.INI file when you terminate the program.


Saving received text

The text in the main screen can be saved to a file. Select the File menu then Log to File and either accept the suggested "PSK31.LOG" name, or enter your own choice. Text will be saved in this file as it is received. If you click on the File menu, the Log to File menu item will have a check-mark to show that the log is open. To close the log, click on Log to File again. If you use the same log file later, the new text will be added to the end of the existing file. It is up to you to delete log files that you don't need any more.


Sending Text Files

A previously-written text file can be transmitted over the air, by selecting Send File from the File menu. A file selection box appears from which you can select a file to transmit. The default extension is .TXT or you can change it, but be sure to only select files which are text files and not binary data files. When you click on OK the box closes and the file is transmitted. A message- box is shown while the file is being transmitted, and you can stop the file being sent by clicking on the Abort button, or the box will close by itself when the file is sent.

Warning. This programs generates the transmitted audio tone in software. If the program is interrupted, the tone may stop and corrupt the transmitted signal On some computers this can happen when opening a disk file. If this causes a problem when starting to send text files, use Tx Off  to cut carrier before you select Send File.  The transmitter will switch on again and open-up the distant receiver when the file sending starts.


Signal Quality reports
PSK31 Signal Quality reporting

To transmit PSK31 correctly, the transmitter must be operated with good linearity, just like an SSB transmission. In the past with RTTY it has not been necessary for the transmitter to be linear. This has meant than some newcomers to PSK31 have not found it easy to set up the transmitter. This program has a feature which shows the linearity of the received signal, so it is easy to report the quality of the signal to the distant operator.

The quality readout appears in the middle of the phase scope circle when the signal is idling. It is a measure, in dB, of the level of the first pair of unwanted sidebands (at +/-46Hz from the centre-frequency) compared to the main pair of wanted sidebands (at +/-15Hz). The readout appears only when the signal is idling, that is, when the emission is actually the same two-tone signal that is used for checking the quality of SSB transmitters. In fact the dB figure in the quality readout is the same as the third-order intermodulation performance figure given for SSB transmitters.

To give a PSK31 signal quality report, wait until the signal is idling, or ask the distant station to leave a pause so that you can get a reading, then tell him the dB figure on your next transmission. Of course, if he is also using PSK31SBW (version 1.08 or later), you can leave a pause in your transmission and ask the distant operator to give you a report.

Warnings

There are some times when this readout will give a false reading:

1.	If there is another signal very close in frequency, it may be close enough to affect the readout even if it does not affect the wanted signal itself.

2.	A very weak signal may give a low quality reading if the unwanted sidebands are below the band noise.

3.	Remember that a bad quality reading could also be caused by distortion in your own receiver. For example, fast AGC can sometimes cause distortion of the received signal, and sometimes the speaker output may be poor quality but the aux. output is better. A poor quality readout on all signals might be a clue that there is a problem in the receiver which could make strong signals on the band look like they are splattering.

Quality guide

The higher the dB figure the better the quality. Higher dB figures mean less interference. A normal SSB transmitter can give better than 25dB. If you get a report worse than this, there is probably something wrong. Some not-so-good transmitters may only give 20dB at full power and so it may be necessary to run lower power to get a better signal. A figure worse than 20dB usually means that the transmitter is overdriven from the soundcard. 10dB is the readout you would get by feeding square-waves to the transmitter instead of sinewaves. If it's worse than 10dB then the transmitter is being pulse-modulated.


PSK31 Modulation Theory

The 31 baud BPSK modulation system used in PSK31 was introduced by SP9VRC in his SLOWBPSK program written for the Motorola DSP56002EVM. Instead of the traditional frequency-shift keying, the information is transmitted by patterns of polarity-reversals (sometimes called 180-degree phase shifts)This process can be thought of as equivalent to sending information by swapping-over the two wires to the antenna, although, of course, the keying is more usually done back in the audio input into the transceiver. A well-designed PSK system will give better results than the conventional FSK systems that amateurs have been using for years, and is potentially capable of operation in much narrower bandwidths than FSK. The 31 baud data rate was chosen so that the system will just handle hand-sent typed text easily. There is a problem with PSK keying which doesn't show up with FSK, and that is the effect of key-clicks. We can get away with hard FSK keying at moderate baudrates without generating too much splatter, but polarity reversals are equivalent to simultaneous switching-off of one transmitter and switching-on of another one in antiphase: the result being keyclicks that are TWICE AS BAD as on-off keying, all other things being equal. So if we use computer logic to key a BPSK modulator such as an exclusive-or gate, at 31 baud, the emission would be extremely broad. In fact it would be about 3 times the baudrate wide at 10dB down, 5 times at 14dB down, 7 times at 17dB down, and so on (the squarewave Fourier series in fact) The solution is to filter the output, or to shape the envelope amplitude of each bit which amounts to the same thing. In PSK31, a cosine shape is used. To see what this does to the waveform and the spectrum, consider transmitting a sequence of continuous polarity-reversals at 31 baud. With cosine shaping, the envelope ends up looking like full-wave rectified 31Hz AC. This not only looks like a two-tone test signal, it IS a two-tone test signal, and the spectrum consists of two pure tones at +/-15Hz from the centre, and no splatter. Like the two-tone and unlike FSK, however, if we pass this through a transmitter, we get intermodulation products if it is not linear, so we DO need to be careful not to overdrive the audio. However, even the worst linears will give third-order products of 25dB at +/-47Hz (3 times the baudrate wide) and fifth-order products of 35dB at +/-78Hz (5 times the baudrate wide), a considerable improvement over the hard-keying case. If we infinitely overdrive the linear, we are back to the same levels as the hard-keyed system.

There is a similar line of reasoning on the receive side. The equivalent to "hard-keying" on the receive side is a BPSK receiver which opens a gate at the start of a bit, collects and stores all the received signal and noise during the bit, and then "snaps" the gate shut at the end. This process gives rise to the receive-side equivalent of key-clicks, namely sidelobes on the receiver passband. So, although this "integrate-and-dump" method is 100% efficient in the task of sorting out signal from noise, it will only reject signals by 10dB at 3 times the baudrate wide and so on, the same spurious rejection figures that we got as spurious emission figures for the transmit side. The PSK31 receiver overcomes this by filtering the receive signal, or by what amounts to the same thing, shaping the envelope of the received bit. The shape is more complex than the cosine shape used in the transmitter: if we used a cosine in the receiver we end up with some signal from one received bit "spreading" into the next bit, an inevitable result of cascading two filters which are each already "spread" by one bit. The more complex shape in the receiver overcomes this by shaping 4 bits at a time and compensating for this intersymbol interference, but the end result is a passband that is at least 64dB down at +/-31Hz and beyond, and doesn't introduce any inter-symbol-interference when receiving a cosine-shaped transmission.

Note that the transmitter and receiver filters have to be "matched" to each other for the ISI performance to be right. Some systems like this use a pair of identical receive and transmit filters which are matched. If I did this and someone else came along wanting to improve the performance, they would have to get everyone else to change their transmit filters. I have therefore chosen to use the simple cosine shape for the transmitter and match that in the receiver. This leaves the way open for others to develope better receivers without new transmitters being incompatible with old. This is slightly different from the SP9VRC approach.


QPSK and Error tolerance

The QPSK mode used in PSK31 takes the binary data-stream, at the point where it would otherwise go direct to the BPSK modulator, and feeds that through a 5-bit shift-register. A logic operation then forms the parity function of the 1st, 2nd, and 5th stages, and another forms the parity function of the 1st, 3rd, and 5th, giving two bit-streams at the same 31.25 bps rate as the original data. These two bits form a binary number, the four values of which are mapped to the four possible phase-shifts in the QPSK modulation. Thus a single data-bit from the source results in a 5-bit-long predictable sequence of 90-degree and 180 degree phase-shifts, interleaved with those of following and preceding bits.

In the receiver, a Viterbi decoder is used to keep track of all 32 possible combinations of guesses at the transmitted datastream, and a running total of how well the received pattern of phase-shifts matches each guess. The clever thing about the Viterbi decoder is that it can be sure that if it throws out the worst 16 guesses before it receives the next signal (which doubles the number of guesses to 32 again), it can never get it wrong, and after about 20 more signals it can be pretty certain that it's guess 20 signals ago was right. The snag is that it can only output it's best guess after a delay of 20 signals, or 640mS in the case of PSK31. Longer Viterbi decoders are possible, but the amount of computation doubles at each extra signal delay, and for PSK31 which is used for live QSO's the delay would be too long.


PSK31 Coding Theory

The asynchronous ASCII coding used on the original version of this system by SP9VRC, and indeed the asynchronous system used for transmission of RTTY for the last 50 years, uses one start-bit, a fixed number of data-bits, and one or more stop-bits. The start-bit is always the opposite polarity to that of the stop-bit. When no traffic is being sent the signal sits in stop polarity. This enables the receiver to start decoding as it receives the edge between the stop-signal and the start-bit, and drop back to idle when the stop bit arrives.

One disadvantage of this process is that if, during a long run of traffic, an error occurs in either a stop-bit or a start-bit, the receiver will lose synchronisation, and may take some time to get back into sync, depending on the pattern of following characters: in some situations of repeated characters the receiver can even stay in a false sync. for as long as the repeated character pattern persists.

The code used in PSK31 overcomes this problem by signalling the gap between one character and the next, not by means of the stop-start sequence which can occur in the middle of a character, but by designing the code carefully so that the sequence which marks the boundary between characters can never be mimicked inside a character. There can therefore never be a cascade of errors if the code loses synchronisation. This idea also has another advantage, in that the character-codes no longer need to be a fixed length.

If, as in normal amateur radio contacts, the traffic being sent consists of plain language, there are some characters which occur more often that others and there are some which may hardly ever be used. In morse code this is used to advantage by using short codes for the common letters and longer codes for less-common ones. In such a variable-length code, the average character rate is faster than in a code where all the characters are the same length. Or, stated in a different way, a variable-length code can be transmitted at a lower bit-rate, and therefore a lower bandwidth, and hence suffer less errors. The code used in PSK, called Varicode, works like this:

1. All characters are separated from each other by two consecutive 0 bits.

2. No character contains more than one consecutive 0 bit.

In the same way that it is obvious that all morse-code characters begin and end with a "keydown" element, all characters in Varicode must begin and end with a 1, and the "00" between characters is equivalent to the letterspace in morsecode.

With such a code, the receiver detects the end of one code and the beginning of the next by detecting the occurrence of a 00 pattern, and since this pattern never occurs inside a character, the "loss of sync" problem that gives trouble with asynchronous systems can never occur.

The variable-length coding used in PSK31 was chosen by collecting a large volume of English language ASCII text files and analysing them to establish the occurrence-frequency of each of the 128 ASCII characters. Next a list was made of all the binary patterns that start and end with a "one", and only ever have single "zeros" in the pattern. This list was generated by computer, starting at the shortest. The list was stopped when 128 patterns had been found. Next the list of ASCII codes, in occurrence-frequency order was matched to the list of binary patterns, in length order, so that the most frequently-occurring ASCII codes were matched to the shortest patterns. To see how well this would perform, a simple calculation was made to predict the average number of bits in typical plain language text transmitted by this code, taking into account the 00 gap between characters. The result was between 6 and 7 bits per character. This compares very favourably with 9 bits per character for the asynchronous system. The shortest character is the "space code", transmitted as a single 1. The longest is 10 bits long, or rather 12 bits since we must include the 00 separator. A list of the codes is in the file ALPHABET.TXT. This file is read into the program when running and should NOT  be edited.

In order to make sure that the receiver can regenerate the symbol timing, the logic zero state in Varicode is mapped to the "polarity reversal" state in the BPSK and QPSK modulation. In this way, when idling, there is a continuous modulation of the carrier and this amplitude modulation at the bit-rate is used in the receiver to keep in sync. The worst-case is transmission of a repeated "!" character in BPSK mode, where there will be a 9-bit period of unmodulated carrier followed by two reversals. This is enough to keep the receiver in sync, and in any case this is not a common character! In BPSK, every reversal gives a little boost to the bit-sync. process. In QPSK, even the +90 and -90 degree phase-shifts contain some amplitude modulation and there are no characters with long runs of 1's.


Extended ASCII Character sets
Extended character set

PSK31 can transmit 255 different varicode symbols, and it maps these to values in the range 0 to 255 for display as characters on the screen. This means that PSK31 is capable of handling some of the less-often-used symbols and special accented characters that are not in the standard 128-character ASCII character set.

Note, however, that the character-mapping used is the ANSI standard, intended for world-wide use, and not the character mapping used by DOS programs, which is different for each country and depends on the code page installed in your computer's display and keyboard drivers.

An optional feature enables you to display the number 0 (zero) on-screen as the ANSI character Ø. This can help to emphasise the difference between the number 0 and the letter O. Received text is, however, saved to the log file with the correct ASCII code for the number 0, and text is transmitted over the air with the correct ASCII code. To enable this feature, edit the PSK31.INI file and add the following line:

slasho=TRUE

Note that this option will not work if your WINDOWS system is a dual-language version, such as dual latin/cyrillic or latin/kata-kana.

You may also prefer not to use this option if the Ø symbol is used in your country as part of the language, for example in Norway.


PSK31 and propagation

PSK31 uses a much narrower bandwidth than any other mode used by radio-amateurs, except maybe on the VLF bands. By using only the minimum bandwidth needed to transmit the data, the signal-to-noise ratio is as high is possible, and this is why the performance is so good. But there are some situations where using very low bandwidth is not possible. For example, it would not have been a good idea thirty years ago because the frequency stability of the old VFO-controlled transmitters was not good enough. This is why the RTTY systems of those days used much wider bandwidths. Anything that introduced frequency instability will prevent us from making use of the narrow bandwidth idea.

But there is one source of frequency instability that we cannot eliminate because it is not inside our equipment. Up to now we have always assumed that if we transmit a signal on one precise frequency, it will be received on exactly the same frequency in a distant receiver. This has always been true enough for most purposes, but sometimes the ionosphere can be disturbed, by solar emissions, in a way which causes the length of the path to vary, and this introduces a frequency-modulation of all signals reflected from it. The effect on HF is sometimes called flutter fading, but it is not so much a fading effect as a slight wobble of the carrier, and hence a broadening of the spectrum of the signal.

With narrow-band PSK31 this kind of "Doppler spread" means that the ionosphere is introducing it's own "frequency instability noise" onto the signal. In these conditions any narrow bandwidth mode will suffer. It's not so much that PSK31 is not very good at handling flutter fading, but that because flutter-fading is actually a broadening of the signal spectrum, we cannot use a narrow-spectrum mode to give us a better signal-to-noise ratio when conditions are like this.

The parts of the ionosphere which are worst affected are over the north and south magnetic poles: high energy particles from solar emissions are forced along magnetic field lines and bombard the ionosphere around the poles. So paths across the polar regions are worst affected during solar events, and on the LF bands similar conditions can occur during bad solar storms on winter nights in high latitudes.

To summarise: PSK31 is so good because it uses minimum bandwidth to give maximum SNR. In most situations the propagation path is stable enough in frequency and the results are very good. Occasionally, when the sun is active, on paths which are close to the north and south poles, the frequency stability of the ionosphere gets too bad and a minimum-bandwidth system like PSK31 will suffer.