Menu

Tree [e8c2c8] master /
 History

HTTPS access


File Date Author Commit
 FFTW 2025-06-16 Nathan Towne Nathan Towne [4ddcd3] initial commit
 OrthPoly 2025-06-16 Nathan Towne Nathan Towne [4ddcd3] initial commit
 StatisticsCS 2025-06-16 Nathan Towne Nathan Towne [4ddcd3] initial commit
 Stokes 2025-06-24 Nathan Towne Nathan Towne [7f92b3] Stokes - support for single thread (run in call...
 python 2025-06-27 Nathan Towne Nathan Towne [e8c2c8] utils.py - improved header function; new precis...
 sidmon5 2025-06-24 Nathan Towne Nathan Towne [7f92b3] Stokes - support for single thread (run in call...
 sound 2025-06-16 Nathan Towne Nathan Towne [4ddcd3] initial commit
 .gitignore 2025-06-17 Nathan Towne Nathan Towne [18390b] Working with fixes.
 Header.txt 2025-06-19 Nathan Towne Nathan Towne [19ab4b] Converted markdown to html.
 Readme.md 2025-06-27 Nathan Towne Nathan Towne [a5696b] Simplified Readme; details moved to Wiki.
 install 2025-06-19 Nathan Towne Nathan Towne [45fd4d] update
 plot 2025-06-24 Nathan Towne Nathan Towne [36dec5] GOES fixes for plots.
 sidmon 2025-06-24 Nathan Towne Nathan Towne [36dec5] GOES fixes for plots.
 sidmon5.net.sln 2025-06-18 Nathan Towne Nathan Towne [6e0816] update

Read Me

sidmon5.net

This package is a VLF receiver for monitoring VLF transmitter signals for evidence of transients indicating ionospheric disturbances, usually caused by x-ray bursts from the sun. It takes sample pairs from dual-channel sound cards and spectrally processes them to Stokes parameters.

In sidmon5 data sets, there are four Stokes parameters per transmitter, plus four for a total-power 'transmitter' that can be used as a diagnostic or for flagging data points to be ingnored in post processing.

sidmon5 was the precursor of this program. The motivation for this new .Net version is that sidmon5 is not able to keep up with the data in its python environment, even when multiprocessing was employed. Although python with numpy can be fast, particularly when processing large arrays, the larger number of smaller steps involved in the extraction of spectral-line intensities is slow in the interpretive environment of python.

So sidmon5.net was developed in .Net in C# and Visual Basic. Running on a Raspberry Pi 4B, it requires only a 15% usage of a cpu-core while data utilization is 100%. An earlier version streamed samples from alsaaudio through a python program via stdout to a .Net program. But the current version streams data from libsoundio through its C API to a 100% .Net program.

The plot utility is written in python.

Features

  1. Acquires two polarizations from loop antennas via a sound card, recording Stokes parameters.
  2. Compiled application in .Net, written in C# and Visual Basic.
  3. Stokes parameters of a wider-bandwidth 'transmitter' are recorded for diagnostic and flagging purposes.
  4. Time plots and scatter plots.
  5. Utilities for controlling sidmon, plotting, downloading data, etc.

Other notes.

  • As with sidmon5, the acquisition program is inspired by SuperSID, but was written independently.
  • Only tested on linux using ALSA backend through libsoundio.
  • The python viewer (plot.py) evolved from supersid_plot.py.
  • There is no interoperability between SuperSID and this code.

Data are saved to the output file in the following format:

    yyyy-mm-ddThh:mm:ss.fffffffZ,I1,Q1,U1,V1,I2,Q2,U2,V2, ...
    2025-06-04T21:19:32.5520007Z,21.46,-21.64,-3.42,-0.10,20.43,-15.56,13.20,1.88,45.37,18.29,-42.19,-11.10
    ...

Requires libsoundio.

See the Wiki for additional information.

Installation

Clone the program to a directory

    cd <dir>
    git clone https://git.code.sf.net/p/sidmon5-net/code sidmon5.net

Run the installation script.

    cd sidmon5.net
    ./install dependencies
    ./install configure

The first installs linux packages needed by the program, including FFTW, libsoundio, and .Net. The second creates

  • /etc/sidmon5.net/install_location - for the sidmon installation directory,
  • /etc/sidmon5.net/user - install user,
  • /etc/sidmon5.net/events_location - forthe installation directory for SWPC events reports (default is subdirectory EventsReports), and
  • /etc/sidmon5.net/goes_location - for the directory where GOES x-ray intensities are placed.
  • /etc/sidmon5.net/data_location - for the directory into which data are deposited and from which data are read (default is subdirectory data).

The first path should not be changed, but use the commands

    echo "<eventspath>"     | sudo tee /etc/sidmon5.net/events_location
    echo "<goesdatapath>"   | sudo tee /etc/sidmon5.net/goes_location
    echo "<datapath>"       | sudo tee /etc/sidmon5.net/data_location

to update the others to the actual destination directories. The configuration step will not modify them once they are defined.

Useful aliases for pasting into .bashrc or elsewhere:

    alias sidmon='/etc/init.d/sidmon'
    alias audio="$(cat /etc/sidmon5.net/install_location)/python/audio.py"
    alias plot="$(cat /etc/sidmon5.net/install_location)/plot"
    alias plot.py="$(cat /etc/sidmon5.net/install_location)/python/plot.py"

The file sidmon is placed in /etc/init.d/ during installation for use to control sidmon. It is not configured as a service.

Generate a header file starting with Header.txt. In that file, edit the following lines

  • device - for the sound device. sidmon5.net needs a sound device that delivers 32 bit floats. Run audio hardware to list sound devices on the system and look for the name plughw:DEVICE=nnnn,DEV=0 where 'nnnn' is the correct sound-card name. Enter that device name.
  • sampleratesetting - for the sample (frame) rate at which the sound card will run. Enter the same into the sampleratemeasured line, at least for now. Start with 96000 Hz. One need not be limited to 'supported' frame rates if one is careful to fully test a choice with audio.

There are settings for transmitters, transmitter groups, and antenna characteristics that can be edited as needed.

The location of the header file can be anywhere as defined in sidmon, but consider placing it in the data directory, in which case a path need not be provided in sidmon.

Inspect the output of sidmon info and look for errors or empty entries that might indicate incomplete installation and configuration.

See the Wiki for details of the configuration (header) file.

Basic usage

To control and monitor sidmon5 using the sidmon alias,

    sidmon start        # start
    sidmon stop         # stop
    sidmon restart      # restart
    sidmon status       # view status (Running | Stopped)
    sidmon info         # print installation information and status
    sidmon log | err    # print tail of stdout and stderr log files
    sidmon tail         # print tail of current data file
    sidmon cron         # list installed cron tasks

when queried from another computer, use a command like

    ssh <user>@<ip> "/etc/init.d/sidmon <subcommand>"

There are convenience functions.

    install aliases   # list useful aliases for pasting into .bashrc
    install version   # display versions of .Net and FFTW

The python program plot.py is used for time plots and scatter plots. There is also a Bash script plot with a simplified syntax. Additional information in the Wiki.

See the SuperSID reference below and other sources for information on loop antennas and the ins and outs of SID detection.

References

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.