Installation steps for Fedora 17

This section outlines the steps required to install and run UltraMSK under the Linux distribution Fedora 17

08 Jul 2013

Install Fedora

First step is to install the Fedora operating system. I choose to install the 64-bit LXDE spin. LXDE is a lightweight X11 desktop environment.

Update the system

Once the operating system has been installed to disk. Reboot and then as root run "yum update" to download the latest system updates.

JACK Audio

UltraMSK uses the JACK audio connection kit to access the computer soundcard. As root run "yum install jack-audio-connection-kit" to check that JACK is installed.

[root@swan tmp]# yum install jack-audio-connection-kit
Loaded plugins: langpacks, presto, refresh-packagekit
Package jack-audio-connection-kit-1.9.8-9.fc17.x86_64 already installed and latest version
Nothing to do
[root@swan tmp]#

Download the UltraMSK software

The next step is to download and unpack the ultramsk software.


Or latest beta version: UltraMSK-1.0.5b4-F17.tar.gz

[james@swan tmp]$ tar -zxvf UltraMSK-1.0.2-F17.tar.gz
[james@swan tmp]$

Add user to jackuser group

To run the jack audio code correctly you need add your username to the jackuser group

[root@swan james]# usermod -a -G jackuser james
[root@swan james]# more /etc/group |grep jack
[root@swan james]#

Request an evaluation license

A license is required to run the software. A free evaluation license is available. Please contact us to discuss your requirements.

Copy your license.dat file into the UltraMSK directory

Once you have received your license.dat.gz file. Uncompress it and copy it into the UltraMSK directory.

[james@swan tmp]$ gunzip license.dat.gz
[james@swan tmp]$ cp license.dat UltraMSK-1.0.2-F17
[james@swan tmp]$ cd UltraMSK-1.0.2-F17/
[james@swan UltraMSK-1.0.2-F17]$ ls
license.dat msk msk.i386
[james@swan UltraMSK-1.0.2-F17]$ more license.dat
Name: Your Name
Organization: Your Organization
License: Evaluation
Expires: 2012-12-31
Key: A910048AC6....
[james@swan UltraMSK-1.0.2-F17]$

Running the software

Now check that the msk program runs and lists the program options.

[james@swan UltraMSK-1.0.2-F17]$ ./msk
UltraMSK. Version 1.0.2. Build Aug 18 2012.
Copyright 2005-2012 (
-f [frequency] : set receiver Frequency (Hz)
-b [baud rate] : set Baud rate (default = 200 Hz)
-c [call sign] : set station Call sign (default = MSK)
-r [resolution] : set output Resolution (default = 1.0 seconds)
-o [directory] : set data file Output directory (default = .)
-g [gain] : set 1 PPS signal Gain (default = 1.0)

Audio sampling options:
-p [input] : set input channel for 1 PPS signal (default = 1)
-s [input] : set input channel for VLF Signal (default = 2)
-n [name] : specify the jackd server Name
-D [device] : enable ALSA sampling using specified device
-F [sample rate]: set ALSA sampling rate (default = 96000 Hz)

Output options:
-d : enable status output
-l : enable combined polar output (dB, degrees)
-m : output messages to a log file
-i : enable binary file format output
-h [site name] : specify the site name to appear in the output file
-L [file prefix] : output one minute summary file
[james@swan UltraMSK-1.0.2-F17]$


Determine the name of your soundcard

[james@swan UltraMSK-1.0.2-F17]$ more /proc/asound/cards
0 [NVidia ]: HDA-Intel - HDA NVidia
HDA NVidia at 0xdfff8000 irq 22
1 [M1010LT ]: ICE1712 - M Audio Delta 1010LT
M Audio Delta 1010LT at 0xec00, irq 19
[james@swan UltraMSK-1.0.2-F17]$

This system has two soundcards installed and we will use the M Audio Delta 1010LT card. This card has a device name of "M1010LT".

Start the JACK audio server jackd

We will now start the JACK audio server jackd. For the M Audio Delta 1010LT card the following jackd options are required. Other soundcards may require different options.

jackd -R -d alsa -d hw:M1010LT -n 20 -p 256 -r 96000

[james@swan UltraMSK-1.0.2-F17]$ jackd -R -d alsa -d hw:M1010LT -n 20 -p 256 -r 96000 &
[1] 11528 [james@swan UltraMSK-1.0.2-F17]$ jackdmp 1.9.8
Copyright 2001-2005 Paul Davis and others.
Copyright 2004-2011 Grame.
jackdmp comes with ABSOLUTELY NO WARRANTY
This is free software, and you are welcome to redistribute it under certain conditions; see the file COPYING for details
no message buffer overruns
no message buffer overruns
no message buffer overruns
JACK server starting in realtime mode with priority 60
Acquire audio card Audio1
creating alsa driver ...
configuring for 96000Hz, period = 256 frames (2.7 ms), buffer = 20 periods
ALSA: final selected sample format for capture: 32bit integer little-endian
ALSA: use 20 periods for capture
ALSA: final selected sample format for playback: 32bit integer little-endian
ALSA: use 20 periods for playback
[james@swan UltraMSK-1.0.2-F17]$

Connect the GPS 1PPS signal

Connect the 1PPS signal from your GPS receiver to one of the input channels of your soundcard. Use the -p option to specify which input channel is used. For a stereo soundcard the left channel is usually input 1 and the right channel is input 2. For a multichannel soundcard the inputs and usually labelled numerically. In the example below I am using input 8 for the 1PPS signal.

[james@swan UltraMSK-1.0.2-F17]$ ./msk -p 8 -d -f 1
% Your evaluation license will expire on 2012-12-31.
% Connected to VLF signal on input system:capture_2
% Connected to PPS signal on input system:capture_8
First ppsOffset = 7.834010, rate = 26182.834010, mPPSPhase = -8.16043e-05
1346387662.002 96005.939784 6.18727e-05 1 -0.999997
1346387663.001 96006.021465 5.69062e-09 1 -0.999996
1346387664.002 96006.006321 -7.77683e-07 1 -0.999995
1346387665.001 96005.993134 -1.40359e-06 1 -0.999994
1346387666.002 96005.981632 -1.93804e-06 1 -0.999994
1346387667.001 96005.971685 -2.33104e-06 1 -0.999998
1346387668.002 96005.963192 -2.5855e-06 1 -0.999998
1346387669.001 96005.955996 -2.74974e-06 1 -0.999998
1346387670.001 96005.949847 -2.90485e-06 1 -0.999999
^C% Terminating...
[james@swan UltraMSK-1.0.2-F17]$

Terminate using Ctrl-C. For each GPS pulse received the program outputs one line of 5 numbers. The first number is the unix time stamp of the pulse. The second number is the current estimate of sound card sampling rate. The third number is the time difference between an internally generated 1 Hz signal and the received GPS 1PPS signal. The fourth number is the number of seconds since the previous GPS pulse was received. The fifth number is the correlation coefficient of a linear fit to the phase of the GPS pulse versus frequency. This value must be very close or equal to -1.0.

Setting up the 1PPS detection is one of the most important steps in the configuration of your UltraMSK receiver. It is critical that the 1PPS pulse is correctly detected for the receiver to function optimally. Use alsamixer to adjust the gain of the 1PPS channel. Reduce the gain until the 1PPS is not detected and then increase the gain just enough so that the pulses are reliably detected each second. Not all soundcards are suitable for use with ultramsk.

Connect your VLF signal and start recording

Now connect your VLF signal into another one of your soundcard inputs. The "" can be used to start up the receiver software. One msk process is started for each VLF station that you wish to record. In the script below, three receiver processes are started to record VLF stations NLK, NWC & NPM.

[james@swan UltraMSK-1.0.2-F17]$ more

#sound card & input channel numbers
#edit these to suit

#kill the JACK server if it running
killall jackd
sleep 1

#and then start it
#Fedora 17: jackd needs X server
#use Xvfb to create one
if [ -z "$DISPLAY" ]; then
echo "No DISPLAY. Creating virtual X Display"
Xvfb :1 &
export DISPLAY=:1
jackd -R -d alsa -d hw:$CARD -n 20 -p 256 -r 96000 &> jack.log &

#kill any msk processes
killall msk
sleep 2

#and then start them
./msk -f 19800 -l -c NWC -s $VLF -p $PPS -d -m > pps.dat &
./msk -f 21400 -l -c NPM -s $VLF -p $PPS &
./msk -f 24800 -l -c NLK -s $VLF -p $PPS &
[james@swan UltraMSK-1.0.2-F17]$

Note that you may need to install Xvfb. Run "yum install xorg-x11-server-Xvfb" as root.

Data file output format

UltraMSK has a number of data file output format option. The -l option produces three column ASCII encoded data files. The first column is the time is seconds since midnight UTC, the second column is the signal amplitude in dB (0 dB is full scale) and the third column is the signal phase in degrees. An example is shown below.

[james@swan UltraMSK-1.0.2-F17]$ more NWC20120831.txt 
% UltraMSK: version 1.0.2
% Site: swan
% Date: 2012-08-31
% Frequency: 19800.000000 Hz
% Baud Rate: 200 Hz
% VLF Channel: 3
% PPS Channel: 8
% Jack Server: default
% Output Format: Polar
% End             
18820.000  -46.38   45.39
18821.000  -46.49   62.36
18822.000  -46.21   63.96
18823.000  -46.35   69.21
18824.000  -46.32   76.19
18825.000  -46.27   79.76
18826.000  -46.04   82.63
18827.000  -45.95   82.49
18828.000  -46.15   83.51
18829.000  -46.04   85.51
18830.000  -45.91   86.76
18831.000  -45.74   86.53
18832.000  -45.70   86.24
18833.000  -45.58   83.97
18834.000  -45.54   84.92
18835.000  -45.66   82.93
18837.000  -45.72   82.48
18838.000  -45.44   81.52
18839.000  -45.63   80.01
18840.000  -45.61   79.36

Final configuration steps

To ensure that your receiver starts automatically whenever the you computer reboots, add the to your crontab entry.

[james@swan ~]$ crontab -l
@reboot cd /home/james/UltraMSK-1.0.2-F17;./
[james@swan ~]$

Use NTP to keep your computer clock accurately synced. This will ensure that your data files are accurately time stamped.

Stuck? Feel free to ask any questions at any stage.