1.
Introduction
OLIVIA Mode supports communications in the Olivia digital mode.
OLIVIA Mode's source code is based on the original C++ reference
application written by the creator of the Olivia digital mode,
Pawel Jalocha. In order to incorporate the relevant source code, I
had to manually translate it to C and to adapt it for use with the
Lhpsdr HPSDR client application. OLIVIA Mode operates as a Guest
mode of Lhpsdr and in its own GTK-3 Window. The Receive and
Transmit functions work with Lhpsdr's receiving and transmitting
functions and not with the computer's sound card, as was the
original, and an IFFT-based "Waterfall" display is available to
help tune in signals.
Transmission of OLIVIA-encoded characters is realized by sending pre-computed audio samples to the transceiver's DUC. OLIVIA 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.
OLIVIA Mode's receiving functions are based on Pawel Jalocha's original reference application. Reception of Olivia transmissions is carried out by processing the audio samples stream from the CW Demodulator, after down-sampling to the original 8kHz sample rate from the Demodulator's 48kHz sample rate.
2. Features
"Waterfall" display with
CAT
OLIVIA has a "Waterfall" (audio spectrum) display derived from the
IFFT of the Receiver's audio output. A vertical white line
indicates the center frequency of the CW Filter used in reception.
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. OLIVIA 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 whiter center line. Because of the very narrow frequency error tolerance of OLIVIA, it is usually necessary to fine tune manually after this, usually by rounding to the nearest 0.1 kHz value.
Macros in Transmit
mode
OLIVIA 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/olivia/olivia.config run time configuration file and are
invoked by clicking on the relevant Macro button. Short labels for
these Macros are also stored in olivia.config and are displayed in
the button labels. For even more operating convenience OLIVIA
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
OLIVIA Mode can save details of activity during its operation in
three separate files on the disk:
1. In ~/.lhpsdr/olivia/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/olivia/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/olivia/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.
OLIVIA Mode User
Interface
OLIVIA Mode's window has the following widgets:
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 OLIVIA between the Transmit and Receive modes.
The Transmit Character Monitor: At the top of the Transmit window there is a long text entry widget that displays the characters that are being transmitted by the OLIVIA Mode in real time. Characters typed in the keyboard or supplied by a saved Macro appear immediately in the Transmit window and are queued in the Olivia transmit buffer for the Olivia encoder to be transmitted in turn. When transmission is complete, the "LED" indicator at the left of the entry widget will turn to green and a "Beep" sound will be played in the audio output of lhpsdr.
The Receive window: Displays characters decoded from a OLIVIA 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 OLIVIA between the Receive mode and Standby.
Receive Parameters display: At the top of the Receive
window there are text entry widgets that display the status of the
Receive functions:
The Char/sec entry indicates the number of characters that
can be transmitted per second, depending on the Olivia mode.
The Input SNR entry indicates the Signal-to-Noise ratio of
the input signal.
The Sync SNR entry indicates the Signal-to-Noise ratio at
the Olivia Synchronizer.
The Freq Offset entry indicates the calculated difference
between the transmitting and receiving stations. This difference is
indicated in Hz and the Tune button to the right can change the
Transceiver's frequency to match the incoming signal's frequency.
The reading is valid when it stabilizes after the initial
synchronization effort by the Olivia functions.
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/olivia/ 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 OLIVIA each time a new record is opened. OLIVIA 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/olivia/
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.
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 OLIVIA (in the ~/.lhpsdr/olivia/ directory). Clicking on a button puts OLIVIA in Transmit mode and starts transmission of the macro, clicking again on any of these buttons interrupts the macro but leaves OLIVIA in transmit mode.
The pop-up menu: This opens on a right-click on the
Receive or Transmit window. It has the following items:
OLIVIA mode: Select the Olivia mode. The OLIVIA Guest
supports some of the popular Olivia modes: 4/125, 4/250, 8/250,
8/500, 16/500, 32/500 and 32/1000.
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 OLIVIA Mode.
Configuration and
set-up
After compilation and installation, the
~/.lhpsdr/olivia/olivia.config run time configuration file MUST be
edited for proper operation! To do this, load
~/.lhpsdr/olivia/olivia.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, OLIVIA 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 OLIVIA
signals
OLIVIA Mode is a narrow-band mode and it requires accurate tuning
for reliable operation. For manual tuning this requires the
receiver to have a tuning step of 1 Hz, but because Olivia is a
(very) weak signal mode operating frequencies are normally
channelized on a voluntary basis. Stations may also agree on a
frequency if a schedule is agreed on. In both cases, usually the
operating frequency would be rounded to the nearest 0.1kHz value.
The Waterfall display can be used to tune in a signal by clicking
near its trace. OLIVIA will adjust the center frequency so that
that the signal is tuned in closely but manual fine tuning will
likely be needed.
Conducting a QSO
As usual to make a QSO with another station using OLIVIA 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, OLIVIA will revert to Receive mode if an
underscore '_' in the macro is encountered. Otherwise if a tilde
'~' is encountered, OLIVIA will remain in Transmit mode so that a
manually typed message can follow the Macro. Reversion to Receive
would then be done by typing in ESCAPE.
Please note that Macro transmission can be interrupted by
middle-clicking on the Receive or Transmit window.
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 offsets less than +- 50-60 Hz will be automatically corrected by the Olivia Sync functions.
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/olivia/log.adif and ~/.lhpsdr/olivia/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 OLIVIA.
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, OLIVIA 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/olivia/olivia.config for some typical prepared
Macros.
NOTE: You will need to edit at least some of these!!
4. Bugs and deficiencies
I have fixed whatever bugs I came across testing OLIVIA, but there
may be some hiding, waiting for the right conditions to appear.
5. 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.