This description is of a computer program. It acts as a command centre for receivers covering from 0 to 30,000 kHz. It is written entirely in 'C' using only the X11 windowing facility: no external graphics or widget libraries are necessary. It may be compiled from the supplied source code and run on any Unix-type operating system e.g. Linux, BSD or System V. [PDF]
To run this program you must first compile it from the source code. Create a new directory in a convenient place. Download the file com.zip. Move it to your new directory. Unzip the com.zip file. The zip file contains the source code com.c plus 5 data files. Open com.c in a text editor. I prefer gedit because of its good source highlighting. Open a terminal. Do a 'cd' to your new directory. The compiling and running instructions are near the beginning of the source listing. If you happen to be running 64-bit Linux, you may be able to skip the compiling process by simply entering the command './com' in a terminal window from the directory containing the files you unzipped.
This program creates, and runs within, a 500 x 400 pixel window. Its content is distributed across 8 tabs. The different tabs are selected by clicking on their respective tab buttons across the top of the window area. Following is a description and operating instructions for each of the 8 tabs. It is useful to have the program running alongside the web browser while reading the following text.
This program is not a receiver controller. It does not attempt to replace any of the normal front panel controls of a receiver. The control of a specific receiver is far better done via its own front panel. The only aspect of what could be termed 'receiver control' done by this program is to request that a receiver turn to a specified frequency. The only aspect of what could be termed 'receiver monitoring' done by this program is to input the signal strength returned for the requested frequency. The purpose of this program is to help the user organise and gain a full picture of his activities within the radio spectrum from 0 to 30,000 kHz.
The main feature of the SCOPE tab is the frequency graticule at the top right. It represents a 300 kHz stretch of the spectrum. Each pixel along the graticule represents 1 kHz. The horizontal frequency scale at the bottom of the graticule shows which 300 kHz stretch of the spectrum is currently displayed. The graticule is 120 pixels high and represents signal strength at the same scale as shown for the S-meter box to the left of the graticule. A scope trace of signals within the given 300 kHz stretch of the spectrum are displayed in green on the graticule.
The signals shown on the scope trace are not 'live'. The purpose of the scope trace is not to show actual signal strength at the time. It is to give a sense of the varying level of expected average occupancy of the spectrum. Obviously there is no single receiver able to cover contiguously the stretch of the spectrum from 0 to 300 kHz. To experiment with Very Low Frequencies [VLF] it is necessary to construct several very specialised receivers. I think that best practice would be to construct a series of receivers, each covering an octave of interest: that is, from a given frequency to double that given frequency.
For instance, if you are interested in listening to the Alexanderson Alternator transmissions on 17.2 kHz every 1st of July, perhaps you should construct a receiver to cover from 10 to 20 kHz plus some kind of tuned torroid aerial to pick up its magnetic vector. What this program can do is issue the command to listen on 17 kHz. An adjunct to this program will then select which receiver should be used, switch to it and command it to listen on that frequency. You will then have to adjust your receiver's front panel controls to fine-tune it to 17·2 kHz.
The idea of the SCOPE tab is to be able to select and search specific radio bands. The first step in this process is to select the type [or usage] of the band you wish to search. A list of band types appears in the upper left of the SCOPE tab. You simply click on the band type you want. The clicked band type then highlights and a list of bands of this type appears in the lower panel beneath the frequency graticule. Click on any band name in this list to display the frequency stretch of the band on the frequency graticule. The official boundaries of the selected band are marked on the graticule by a yellow box. Many bands are more than 300 kHz wide. In this case, several 300 kHz stretches are marked with the band name, each followed by a number indicating which part of the band is displayed in ascending order of frequency.
Moving the mouse horizontally across the graticule causes the frequency at the mouse pointer [MOUSE FREQ:] to be displayed above the graticule on the right. The anticipated signal strength at this frequency, as shown on the scope trace, is displayed on the S-meter to the left of the frequency graticule. Clicking the left mouse button selects this frequency for listening [LISTENING ON:] and displays it above the graticule on the left. Clicking the LISTEN button at the bottom centre of the tab illuminates it and sends an "Audio ON" signal to the receiver. Clicking the LISTEN button, when it is illuminated, dulls the button and sends an "Audio OFF" signal to the receiver.
The signals shown in green on the frequency graticule are stored in a file called 'scope.dat'. This file contains exactly 30,000 bytes of data. Each byte represents the signal strength [in the range 0 to 120] over the 1 kHz bandwidth at the frequency [in kHz] corresponding to the byte's position within the file. For example, Byte Number 198 within the file gives the signal strength across a 1 kHz bandwidth centred on 198 kHz. The signal strengths shown in this demonstration version of the program were compiled into a single file from many separate scans of different bands made using an AR86000 scanner. The signal data has been enhanced by software to provide a more meaningful presentation. The AR86000 has a maximum scan resolution of 2 kHz over small scans with even less resolution for wider scans. Eventually, I would like to construct a scanner plus associated input software with a 1 kHz resolution capable of generating the file 'scope.dat' in its entirety. Ideally, I would like it to automatically re-scan the spectrum each day of the week on a rolling basis so that an up to date picture is always available for this program.
The purpose of the SCAN tab is to facilitate scanning of the frequencies on which a particular broadcaster transmits. The panel on the left displays a list of the broadcasters on file. The list is long and can be scrolled using the mouse wheel. A particular broadcaster is selected by clicking on that broadcaster's name. That name highlights in bright white and the list of frequencies on which that broadcaster transmits appears in the panel at bottom right underneath the frequency graticule. The first frequency in the list is highlighted.
A 'GetFrq' [Get Frequency] command is sent to the appropriate receiver to tune to the highlighted frequency. The part of the spectrum 150 kHz either side of the highlighted frequency is displayed in the frequency graticule, with the signal at the highlighted frequency displayed in bright yellow. The name of the broadcast band within which the highlighted frequency lies is shown above the graticule on the right and its bounds are marked on the graticule itself by a yellow box.
To listen to the highlighted signal, click on the LISTEN button in the row of buttons along the bottom of the tab. This sends an "Audio ON" signal to the receiver. Clicking the LISTEN button, when it is illuminated, dulls the button and sends an "Audio OFF" signal to the receiver.
When a broadcaster transmits on more frequencies than can be displayed in the frequencies panel, the list of frequencies can be scrolled sideways using the mouse wheel. You can click on any frequency in the list to listen on that frequency. Clicking the NEXT or PREV buttons, in the row of buttons along the bottom of the tab, causes the next or previous frequency in the list to become highlighted for listening. You can also initiate a progressive scan through all a broadcaster's frequencies by clicking on the SCAN button and halt the scan by clicking on the STOP button.
This tab is not implemented in the demonstration version of this program. It contains the functionality necessary for building and maintaining a station database. Each record of the database contains a station's name, call sign, latitude, longitude, height, power and primary frequency. The station's global
range and bearing from your home station are calculated using the Vincenty algorithm and displayed with the primary data. A list of additional frequencies is accessible from a separate Frequency List file where applicable by pressing the FREQS button.
A dossier file about the station can be created and accessed by pressing the DOSSIER button. All this data, plus the frequency list file and dossier file can be edited. Records for new stations can also be created and edited. This facility is mainly for broadcasting stations but can include any type of station that adheres to a specific frequency or set of frequencies.
This tab is not implemented in the demonstration version of this program. It contains the functionality necessary to dynamically maintain a directional aerial or dish aligned towards any given radio source that is moving relative to your receiver. It computes the terrestrial distance and bearing of a ground station or the right ascension and declination of a satellite, including the moon for experimenting with moonbounce transmissions. It steers an aerial to the direction of the new source whenever the frequency of your currently active receiver is changed.
This tab displays input messages from the receiver. In this demonstration version, only the signal strength at the last requested frequency is implemented. Other message types can be added. Messages are received via 'stdin' when the STDIN button is bright. An auxhiliary program must be written to interpret the messages as delivered by the particular receiver in use. That program must be placed in a terminal line command that pipes its 'stdout' to the 'stdin' of this program. This facility is only simulated here, so the 'STDIN' button is inactive.
This tab displays the output commands that are sent to the active receiver. The most common command is "GetFrq". This supplies a frequency [given in kilohertz] to which the receiver is required to tune. The only other output commands implemented are "Audio ON" and "Audio OFF". Other commands can be added. When the STDOUT button is 'on', these commands are sent to 'stdout'. To drive a receiver, 'stdout' from this program must be piped through another program to convert them into the format understood by the specific receiver being used.
This tab manages the establishment of a link-level connection between two nodes of a global network of data transceivers. The connection sequence is initiated by clicking the CONNECT button. A command is sent to the relevant transceiver to switch on. When a message from the transceiver confirms that it is in and ready, a command to tune to the link's frequency is issued. A message is later received confirming that the transceiver is on frequency. A subsequent message then confirms that the transceiver has acquired the remote carrier.
The transceiver then endeavours to phase-lock its data parser signal at 90 degrees to the incoming carrier. Once done, the transceiver sends a message confirming the parser's phase-lock. The transceiver then injects a test signal to verify that a 16-bit pattern can be mapped onto a carrier cycle and sends a message to confirm success. Finally it requests and receives handshaking test data to confirm that the data channel is open and sends an ultimate message to confirm this. The data channel is thus open for reception. A similar process takes place at the remote transceiver to allow transmission of data from the home station.
The LISTEN button has a different function in this tab. It causes the free-wheeling Lissajous figure to precess slowly to demonstrate the manner in which unlocked carrier and parser signals would roll. Subsequently clicking the LOCK button waits for the Lissajous ellipse to become circular to demonstrate the phase-lock process between the parser and the carrier. The MODU button demonstrates a 16-bit phase modulation of the phase-locked carrier.
This tab is not implemented in the demonstration version. It contains the functionality necessary for establishing and maintaining a Small World network of nodal multidiver­sity HF data transceivers for the free and open exchange of information between any two of its nodes. TCP/IP may be run upon its link protocol thus forming a kind of global low capacity infrastructure-free internet. The only part of this facility in the demonstrator is the LINK tab, which is used for establishing a link-level connection between two nodes.
These nodes are one of the types of 'station' whose details are entered and maintained under the STNS tab.