1.
Introduction
satcom is a ncurses based satellite communications application for
the console. Satellite position and velocity are calculated using
the NORAD SGP4 model for near-earth and SDP4 for deep-space orbits.
Other satellite parameters like Azimuth, Elevation, slant range,
range rate, Latitude, Longitude, Altitude, footprint, solar
illumination, AOS/LOS time etc are also calculated, using routines
mainly ported from Dr. T. S. Kelso's sgp4-plb26a Pascal library and
from the 'predict' and 'trk' open-source satellite tracking
applications. As a secondary feature, the position of the moon and
sun are also calculated.
satcom has a built-in serial port driver for the Yaesu GS-232 controller for the G-5500 Az/El rotors enabling automatic tracking of antennas, as well as a serial port driver for the Yaesu FT-847 'Earth Station' transceiver, providing CAT control of Tx/Rx frequencies including Doppler compensation, Tx/Rx tracking and Tx/Rx mode matching.
User
Interface
satcom is an interactive ncurses application and all main 'Modes'
of operation use ncurses windows with a two- or three-line
keystroke command 'bar' at the bottom of the root window. All
information produced by the chosen Mode is presented in windows
with a regular color scheme so that a familiar appearance is
presented to the user. (The color scheme can be customized at
compilation time by editing the satcom.h
header file). Some keystroke commands are single-action (e.g.
trigger some function or new Mode), and others are toggle types
(e.g. activate-deactivate some function or enable-disable a
feature). Some auxiliary functions like data entry are carried out
in a pop-up form window while some others, like small-scale data
entry, are carried out within the main window of the current Mode
(by superimposing form fields over the main window).
Currently the following basic color scheme is used:
Once these files are properly set up, satcom enables the user to choose the satellite to be tracked either from a menu-like multi-satellite tracking Mode or by keystroke navigation commands. Whenever a satellite is chosen and antenna tracking and CAT control are enabled, satcom will automatically point antennas to the satellite by sending Az/El position commands to the GS-232 rotor controller and will setup the required Tx/Rx frequencies and modes on the FT-847 via the serial port CAT facility. This makes it very easy to select a satellite of interest and prepare for communication through its chosen transponder.
The observer database allows the user to easily select the current observer location so that satellite orbital data can be calculated for different observers, enabling footprint overlap predictions for QSO scheduling. New observers can be entered on the fly by specifying the Maidenhead QTH locator or Latitude/Longitude and can be saved into the observer database file.
NORAD orbital models
satcom uses the NORAD SGP4 orbital model for near-earth satellites
and the SDP4 orbital model for deep-space satellites. The original
FORTRAN routines in NORAD's Spacetrack report #3 have been ported
to C and they are used in conjunction with routines ported to C
from Dr. T. S. Kelso's sgp4-plb26a Pascal library to calculate
various orbital and tracking parameters. Some routines from Lapo
Pieri's 'trk' and J. Magliacane's 'predict' trackers have been
adopted to calculate the position of the moon and the accessibility
of satellites.
Variety of displayed
information
satcom calculates a lot of information about the selected satellite
and displays it in appropriate ncurses 'windows' selected by
keystroke commands from the main window which appears at start-up.
The various functions and displays provided, are grouped in 'Modes'
of operation of satcom so that it can be used for specific
purposes.
Ham Radio
support
satcom has built-in support for the Yaesu G-5500 Az/El rotors via
the GS-232 controller and CAT control for the Yaesu FT-847
transceiver, enabling easy operation on the various satellites
available to the ham radio community. satcom permits automatic
tracking of satellites by pointing antennas at the calculated
position (Az/El) of the selected satellite with a maximum
resolution of 1 deg, although backlash and other errors can be
expected to reduce accuracy to a lower level. Manual control of the
rotors is also provided with the up-down-left-right keys or by
typing directions in a form. 'Parking' of the rotors in a
predefined (in the satcom.h header file)
position is also available as a keystroke command.
satcom has built-in CAT control for the Yaesu FT-847 'Earth Station' transceiver's Tx and Rx frequencies and modes, providing automatic Doppler shift compensation and smart Tx/Rx frequency and mode tracking, enabling easy tuning and netting in the satellite's transponder. Transponder mode and uplink/downlink/beacon frequencies are selected in a menu-like style from predefined entries in the satcom.sat file with a keystroke action, while the transceiver's Tx/Rx frequencies and modes are calculated taking into account converters or transverters and any errors in the vfo or transponder local oscillators.
Grid Locator
calculator
satcom has a Maidenhead Grid Locator calculator which enables the
calculation of a grid locator from the Longitude and Latitude of a
position or vice-versa. The Grid Locator calculator allows quick
on-the-fly entry of a new observer for the prediction of satellite
position at a remote site for QSO scheduling. It also makes it
possible to specify observers in the satcom.obs file with just the
QTH locator if exact position is not known.
Customization
satcom.h: Before
compiling satcom, the satcom.h header file must be edited to
customize the default values of some defined constants that affect
the operation of satcom. The first four #define statements must be
customized, since they are needed for correct operation. The rest
of the #define statements in the customizable group may be left
unedited.
The first #define specifies the default home position for the Maidenhead Grid Locator calculator and the required information is East Longitude and North Latitude in the format "E/ddd:mm:ss N/dd:mm:ss", e.g. deg:min:sec of arc for both values. These values are entered in the 'Home' position fields of the grid locator calculator.
The second and third #define specify the serial port to which the Yaesu GS-232 computer controller for the G-5500 rotors and the FT-847 transceiver CAT port are connected. If you do not intend to use these ham radio equipment, you may leave these #defines unedited and provided you do not activate rotor control and CAT control, there will be no problems. Otherwise satcom will exit with an error message if it cannot open the specified serial port device files.
The fourth #define specifies the default current satellite at start-up, and must be chosen from satellites names in the satcom.sat file. If the satellite name specified does not match one in the satcom.sat file, then the first satellite in this file will be selected as the default current satellite.
Other definitions that can be customized optionally are as
follows:
The tracking resolution of the G-5500 rotors. The G-5500 Az/El rotors working with the GS-232 controller have a resolution of 1 deg as set up for use with satcom. This is too fine for tracking fast, low orbit satellites and probably much more than needed for an average VHF/UHF antenna. satcom uses three #define'd constants for tracking different objects: LOW_RESOL for fast, low orbit satellites, MED_RESOL for slow, high orbit satellites and HIGH_RESOL for manual position commands and for tracking the moon and sun. These constants have default values of 5, 2 and 1 degrees respectively. These can be customized to suit individual requirements depending on antenna directivity, but please remember that the maximum position error for a given resolution is +- half the resolution so LOW_RESOL implies a max error of +- 2.5 deg etc.
The default 'parking' position for the rotors is 180 deg Azimuth and 0 deg Elevation as defined in the AZIM_PARKING and ELEV_PARKING constants. This can be customized to some other value if needed in the range 0-360 and 0-180 for Az/El respectively. These constants are used by the Park-Rotors keystroke command to manually position the rotors when not in use.
The results/screen refresh delay time UPDATE_DELAY is set to 10 (tenths of sec) and this can be customized if needed (minimum value should be 1), and a maximum of about 100 (10 sec) should be a reasonable upper limit.
The AZIM_OFFSET constant is needed when the G-5500 rotors are used with the GS-232 controller, because the voltages returned by the position transducers in these rotors are in a range that is not directly compatible with the ADC the GS-232 controller. (The latter was originally designed to be used with other types of antenna rotors like the G-5400, G5600 or G-500). If you intend to use one of these Az/El rotors then AZIM_OFFSET should be defined as 0. More details in the Offset and Full-Scale adjustment procedures.
The next three #define's affect the way satcom carries out a
search for the next AOS or LOS time and horizon crossings of a
satellite.
The HORIZON constant is the threshold of Elevation below which a
satellite is considered to have crossed the horizon. The default
value is 0.03 degrees and seems satisfactory.
The ANGL_STEP constant is the Azimuth or Elevation step used when
searching for a horizon crossing which is done by a 'hunt-and-peck'
process. The default value of 2 deg. seems sufficient for detecting
most passes but some very low 'grazing' passes can be missed or the
AOS and LOS times can be incorrectly calculated producing
meaningless pass predictions. Reducing the value of this constant
can improve the situation but it makes pass predictions more
time-consuming.
The TIME_STEP constant is the step in minutes for carrying out a
'hunt-and-peck' search for the next AOS or LOS time of a satellite.
The default value of 2 seems satisfactory but short 'grazing'
passes may be missed if the search process jumps over the pass
period. Reducing the value of this constant can improve the
situation but it makes pass predictions more time-consuming.
Finally there are a number of color pair definitions for the appearance of the user interface and these may be edited at will to customize the look of satcom. You may need to have a look in the ncurses manual for more details of color definitions and usage.
Compilation
Compiling satcom is quite simple. Just type 'make' in the satcom
directory to compile the source and produce the 'satcom' binary.
You can install this in a directory of your choice by copying or
type 'make install' to copy the binary to /usr/local/bin, the
.satcom directory to the home directory and this satcom.html manual
to /usr/local/doc. Typing 'make uninstall' will remove all of these
files. 'make clean' will remove all files produced by compilation
except for the 'satcom' binary and 'make distclean' will leave only
the files that were included in the original satcom package.
4. Operation
Run time files
Before satcom can be started, there must be three files with valid
entries in the .satcom directory, which itself must be in
your 'home' directory.
The first file is satcom.obs and should have at least one
entry with the default observer's location. Details on the required
data and format of this file are provided as comments in the file
itself.
The second file is satcom.sat and it should contain at least
one valid entry regarding a satellite of interest. Again details on
the required data and format of this file are provided as comments
in the file itself.
Finally the satcom.tle file should contain Keplerian
elements for at least the satellites that are specified in
satcom.sat and in the NASA Two Line Elements (TLE) format. Nothing
else may be present in this file, e.g. no comments, blank lines etc
as satcom carries out a strict validation of the TLE data and it
will exit with an error message if anything is out of line. A good
site for Keplerian elements is Dr T.S. Kelso's site CelesTrak and also AMSAT.
get_tle.sh is a very simple Bash script for downloading and
concatenating some Keplerian files into satcom.tle from CelesTrak.
It is included only as an aid to quick refreshing of the TLE
database and will need to be edited if it will be used to download
different Keplerian files.
Starting satcom
Since satcom is a ncurses interactive application for the console,
there are no command line arguments so it is just started by
issuing 'satcom'. The first 'Main' screen to appear is just an
introduction to available functions or 'Modes' together with a
command bar at the bottom and a display of some basic information
about the default observer. This includes Location Name, Longitude
East, Latitude North, Altitude asl, QTH Locator, UTC time and date
and Local Time. Information about the sun's Azim/Elev and the
moon's Range, Azimuth and Elevation are also displayed.
Selecting and running a function or
Mode of operation
At the bottom of the Main screen is a three-line command 'bar' with
the keystroke commands that start the desired Mode of operation.
Each Mode displays an individual screen with the various results it
produces as well as a command bar at the bottom showing whatever
keystroke commands are available. Some Modes have keystrokes that
activate another Mode which replaces the original, e.g. in the
Single-Satellite/Single-Observer Mode the 'L' keystroke starts the
Single-Satellite/Multi-Location Mode. Quitting a Mode with 'Q' or
ESC returns satcom to the previous Mode.
The following keystroke commands are available in the Main
(start) screen:
'S': Single-Satellite/Single-Observer Mode. (Satellite tracking and
CAT).
'M': Multi-Satellite/Single-Observer Mode. (Satellite selection
menu).
'L': Multi-Location/Single-Observer Mode. (Footprint overlap
predictions).
'P': Pass Predictions Mode (Accessible/Visible pass
predictions).
'C': Manual Commands Mode. (Various manual operations).
'I': Illumination Predictions Mode. (Satellite illumination
predictions).
'O': Offset-Calibration Mode. (GS-232/G-5500 Offset
calibration).
'F': Full-Scale-Calibration Mode. (GS-232/G-5500 Full-Scale
calibration).
'G': Maidenhead Grid Locator Calculator Mode. (QTH Locator).
'Q': Quit satcom.
Single-Satellite/Single-Observer Mode
This Mode is started with the 'S' keystroke. In this Mode a
selected satellite is tracked from one location and if desired the
Yaesu G-5500 Az/El rotors can be controlled to track the satellite
and/or the CAT control of the FT-847 can also be activated.
The following location information is calculated and displayed
(at a default 1 sec intervals):
Location name, Longitude East, Latitude North, Altitude asl.
QTH Grid Locator, UTC date and time and local time.
Sun's Azimuth/Elevation, Moon's range, Azimuth and Elevation.
The following satellite information is calculated and displayed
(at 1 sec intervals):
Satellite name, Azimuth (deg East), Longitude (deg East).
Tracking Model (NORAD SGP4|SDP4), Elevation (deg North), Latitude
(deg North).
Next AOS in UTC date/time, Slant Range in km, Altitude in km.
Next LOS in UTC date/time, Orbital Phase in units per 256,
Footprint in km.
Satellite visibility, Doppler shift in Hz/MHz, Revolution
number.
Rotor control for
Yaesu GS-232/G-5500
Please note: Before the GS-232/G-5500 controller/rotor
combination is used for Aerial tracking or other activity, the
Offset and Full
Scale Calibration procedures must be followed to prepare and
calibrate rotor control.
If a GS-232/G-5500 Az/El rotor system is available and connected to a serial port, the 'R' keystroke activates satellite tracking which brings up the Rotor Control window which displays the following information:
In the top line of the window 'TRACKING' is shown in yellow
while satellite tracking is enabled. Then the Azimuth and Elevation
Demand sent to the GS-232 controller and the Actual position of the
Azimuth and Elevation rotors are shown in colors depending on the
current status: If the Actual position of a rotor is within +- 2
deg from the demand, it is shown in green, otherwise in red. When a
rotor reaches the required position, then 'Stop' is shown in yellow
in place of the green Demand value. If for some reason data cannot
be read from the GS-232 (serial port problem or power off) then
'!Data?' is shown in red in place of the Actual position.
If 'parking' of the rotors is requested with the 'H' (home)
keystroke then 'RUNNING' is shown in the top line of the Rotor
Control window until the rotors reach their parking position,
whereby the Rotor Control window closes.
Satellite tracking through rotor control is enabled by the 'R' keystroke, which has a toggle type action, e.g. enables/disables this function alternately. The position demand in degrees of Azimuth and Elevation is sent by satcom to the GS-232 rotor controller via the serial port and it is derived from the satellite Azim/Elev as follows: Depending on the object tracked, the tracking resolution used is selected from one of the three values specified in satcom.h and the defaults are 5 deg for near-earth, 2 deg for deep space orbits and 1 deg for the sun and moon. The object's Azimuth and Elevation are rounded to the nearest (integer) multiple of the resolution and are used as the demand for the rotor position. Thus the maximum error in position demand is half the resolution in use which is 2.5 deg for the lowest resolution. Of course there are other factors like backlash, alignment errors etc that affect the error in the actual position of the rotors and the antennas attached to them.
Since the azimuth rotor is effectively limited in the range 0-360 degrees, if the satellite crosses the location's North direction there will be an abrupt change in Azimuth of about 360 deg, necessitating a near full turn of the Azimuth rotor. To avoid this problem, satcom detects North crossing orbits when calculating AOS/LOS and sets a North crossing flag which then instructs the rotor control function to do a 'reverse track' by changing Azimuth demand to 360 - Azimuth and Elevation demand to 180 - Elevation. This will then avoid the North-crossing 'stumbling' point and the time delay for a ~360 Azimuth rotation. Reverse tracking is indicated by a yellow 'R' in front of the displayed Actual position of both rotors.
To avoid repeated transmission of position demands to the GS-232 controller, which result in momentary operation of the relays supplying power to the rotors, the rotor control function waits for the rotors to reach the requested position first, before sending another command. This may result in a delay in updating the position demand if one of the rotors is running when a new rotor position is required, as may happen when a low-orbit satellite passes nearly overhead resulting in fast-changing azimuth position.
CAT control of the Yaesu
FT-847
Please note: Before CAT control can be operational, the
FT-847 serial port speed must be set to 57600 baud using the CAT
RATE menu item (menu 37). This highest speed rating is needed to
avoid unacceptable slowing of satcom.
If a Yaesu FT-847 is in use for communication via amateur radio satellites then satcom can provide CAT control of the transmitter and receiver frequencies including Doppler shift correction, Tx/Rx frequency/mode tracking and S-meter and Power-output/ALC indications. CAT control is activated with the 'C' keystroke which toggles enabling of CAT control and opens the CAT control window. This window displays the following information:
In the left half of the window, the Receiver and Downlink status
are shown:
Receiver mode, Receiver frequency and the Doppler shift that was
added to it in order to receive the Downlink frequency as output by
the satellite.
The Downlink frequency as output by the satellite and the path loss
in db.
The Receiver's S-meter indication shown as a simple bar
graph.
In the right half of the window, the Transmitter and Uplink
status are shown:
Transmitter mode, Transmitter frequency and the Doppler shift that
was subtracted from it so that the signal frequency arriving at the
satellite is the required Uplink frequency.
The Uplink frequency arriving at the satellite and the path loss in
db.
The transmitter's PO/ALC indication shown as a simple bar
graph.
Between the RECEIVER STATUS and TRANSMITTER STATUS labels is and
indication of the selected transponder or beacon 'Mode' name as
entered in the satcom.sat file. This is shown
in blue color but if a mode is not specified for a particular
satellite (e.g. no transponder/beacon data) then 'No Mode' is shown
in red. If there is a failure in serial port transmission or the
transceiver is not powered, then 'SERIAL FAIL!' is shown in red
color. This normally requires toggling CAT control off/on by keying
'C' since this fault condition will normally occur when the
transceiver is not powered initially, in which case when it is
powered with CAT already active, it will not receive the CAT ON
command which is only issued when CAT is enabled.
Between the Receiver and Transmitter status fields is the TRACK Tx/Rx tracking status indicator. When Tx/Rx tracking is enabled this will show '<--->' in yellow, otherwise '---' is shown in green. Tx/Rx tracking provides a very convenient way of tuning across the satellite passband, especially when Doppler shift changes quickly. Both Tx and Rx frequencies are Doppler-shift corrected independently and they are set so that the Transmitter is always netted accurately with the Receiver, ready to transmit to a station that has been tuned in.
Initially Tx and Rx frequencies are read from the satcom.sat file when CAT is enabled and if data in this file is correct, then Tx and Rx will be correctly tracked. But of course if the Rx or Tx is tuned manually then tracking is lost. To recover and maintain tracking the 'T' keystroke command is given to toggle tracking on but due to limitations in the software, before satcom tracks the Tx and Rx frequencies one of the two must be changed manually to signal the tracking function. After this any change in either the Tx or Rx frequency will result in the other being changed to maintain tracking, including any changes to the VFO frequency resulting from a change in operating mode. And please note that when tracking is enabled, satcom will also match Tx/Rx operating modes if there is a manual change by the user. If the transponder passband is inverting, satcom will match USB on Rx with LSB on Tx and vice-versa, otherwise both Tx and Rx will have the same mode. For all other modes (CW, FM etc) the Tx and Rx will be tracked to the same mode regardless of passband characteristics since invert/normal operation is irrelevant. This makes tuning and mode change very easy even on low-orbit fast moving satellites.
Accurate Tx/Rx tracking depends on a number of factors like frequency stability in the satellite transponder and the transceiver, accurate Doppler shift calculation and accurate information in the satcom.sat file. If for any reason tracking does not seem accurate enough, then it is possible to correct errors using the 'U' command to update tracking. To do this, first tracking must be disabled with the 'T' command and then after tuning in the Rx accurately on the downlink frequency produced by the Tx, tracking must be re-enabled with the 'U' command. This will signal satcom to maintain the current relationship between Tx and Rx frequencies for the duration of CAT control or until another update is done.
Keystroke
Commands
The following keystroke commands are available in this Mode:
'C': Toggle CAT control for Yaesu FT-847 On/Off.
'T': Toggle Transmitter/Receiver frequency and mode tracking
On/Off.
'U': Update Transmitter/Receiver frequency tracking, enable
tracking.
'W': Cycle through available satellite transponder/beacon
'Modes'.
'D': Toggle Doppler shift compensation for Tx and Rx frequencies
Off/On.
'R': Toggle control the Yaesu GS-232/G-5500 Aerial rotors
On/Off.
'H': Park rotors in 'Home' position and disable Aerial
tracking.
'M': Change to satcom's Multi-Satellite/Single-Observer Mode.
'P': Change to satcom's Pass Predictions Mode.
'L': Change to satcom's Single-Satellite/Multi-Location tracking
mode.
'N': Select a new satellite by entering its name in 'Satellite
Name' field.
'Up, Down, Left, Right': Select a satellite from the database.
'Insert': Select the default satellite as specified in the satcom.h file.
'Q' or 'ESC': Exit from current Mode to previous Mode.
Multi-Satellite/Single-Observer Mode
In this Mode satcom displays a summary of all satellites in the
satcom.sat file together with a summary of the
currently selected satellite's and observer's status. The following
information is shown:
Location Name, Grid Locator, Local time, sun and moon
Azim/Elev.
Satellite Name, Azim, Elev, Range in km, UTC date and time.
All-satellites
menu
A summary of all satellites in the satcom.sat
file in a 'page' of two main columns with a maximum of 30
satellites is displayed. If there are more than 30 satellites in
satcom.sat then the satellite summary can be scrolled with the
'Page Up' and 'Page Down' keys, displaying groups of 30 satellites
at a time. The 'Home' and 'End' keys display the first and last
group of 30 satellites. The information shown is Satellite Name,
Azimuth/Elevation in degrees, Range in km and UTC date/time of next
AOS or next LOS as appropriate.
The satellites are sorted in the following order:
Accessible (above the horizon) satellites first, highlighted in
yellow color, ranked according to furthest LOS. (geostationaries
are listed last).
Inaccessible (below the horizon satellites), displayed in green
color, ranked according to nearest AOS. Therefore an accessible
satellite with the furthest LOS is ranked first and an inaccessible
satellite with the furthest AOS last. If a satellite is never
accessible, then 'No AOS/LOS' is shown in red.
This ranking is carried out by considering all satellites in the
database and when the display is scrolled, the order does not
change.
The summary listing of all available satellites can be used as a convenient menu-like selector of the current satellite. The blue/yellow or blue/white highlighted line in the list can be scrolled using the Up/Down/Left/Right keys to move to the desired satellite and then the RET key will select this satellite as current for tracking and exit this Mode, returning to the previous.
Keystroke
Commands
The following keystroke commands are available in this Mode:
'Page Up': Display summary of previous group of 30
satellites.
'Page Dn': Display summary of next group of 30 satellites.
'Home': Display summary of first group of 30
satellites.
'End': Display summary of last group of 30
satellites.
'P': Select previous observer location from data base as
current.
'N': Select next observer location from data base as current.
'H': Select 'Home' observer location from data base as current.
'Insert': Select default satellite as specified in satcom.h as current.
'Left/Right/Up/Down': Scroll highlighted line in satellite summary
to select a desired satellite.
'RET': Select highlighted satellite as current for tracking.
'Q' or 'ESC': Exit from current Mode to previous Mode.
Single-Satellite/Multi-Observer Mode
In this Mode satcom displays a summary of information on the
currently selected satellite as observed from up to four different
locations, read from the satcom.obs file.
Information is displayed in blocks of four lines, two for the
location and two for the satellite, with the first block assigned
to the currently selected location and having a slightly different
format compared to the next three blocks.
The following information is displayed in each block:
Location Name, Grid Locator, Longitude East, Latitude North,
Altitude in mtr.
UTC Date and Time, sun Azim/Elev, moon Azim/Elev.
Satellite Name, Azimuth, Elevation, Range in km, Doppler shift in
Hz/MHz.
For the current location:
Next AOS, next LOS, Longitude East, Latitude North, Altitude in
km.
For other ('remote') locations:
Next AOS, next LOS, Footprint overlap with the 'current' location,
in UTC Date/Time.
When this Mode is entered only the block for the current location is displayed. To display more blocks, the 'Page Down' key is pressed and the new block that is opened will display information on the second location entry in the satcom.obs file. To change the location in the last-opened block the 'Home' and 'End' keys will read the previous or next entry in satcom.obs while the 'H' key will read the first ('Home') location data. The 'Page Up' key removes the last block in the screen.
Manual Location
Entry
It is possible to enter a new location in the last-opened block by
keying 'U' which opens writable fields in the first line of the
block where location data can be entered temporarily or saved in
the location database (satcom.obs) file. For a quick entry, just
the QTH Locator can be typed in with the rest of the data
calculated by satcom (Height is taken as zero). If both QTH Locator
and Lon/Lat are entered, satcom will compare the two and if there
is disagreement it will show ERROR! in the Locator field. Valid
user-entered data can be saved with the 'S' keystroke which will
write another location data block in the satcom.obs file.
Keystroke
Commands
The following keystroke commands are available in this Mode:
'Page Dn': Add a new location block to the screen.
'Page Up': Remove the last location block from screen.
'Home': Read the previous location in database into the last-opened
block.
'End': Read the next location in database into the
last-opened block.
'H': Read the 'home' location in database into
the current (last) block.
'U': Enter location data into the last-opened block manually.
'RET': Verify manually-entered location data and enter into the
last-opened block.
'S': Verify and save manually-entered location data into location
database. Also enter into the last-opened block.
'M': Change to satcom's Multi-Satellite/Single-Observer Mode.
'Up, Down, Left, Right': Select a satellite from the database.
'Insert': Select the default satellite as specified in the satcom.h file.
'Q' or 'ESC': Exit from current Mode to previous Mode.
Pass Predictions
Mode
In this Mode satcom displays a simple graphical display of pass
predictions for the currently selected satellite. At the top of the
screen, summary information on the current location and satellite
are shown as follows:
Location name, Grid Locator, Local Time, sun and moon
Azim/Elev.
Satellite Name, Azimuth, Elevation, Range in km and UTC
date/time.
The Pass Predictions display also shows a simple character-cell
graphical representation of the satellite's Azimuth and Elevation
for a number of cases as follows:
Accessible Pass
predictions
This is the default display at start up and it shows the UTC date
and time, the satellite's Elevation in deg. and a simple plot of
this, the satellite's Azimuth and a simple plot of this, the Phase
in units/256 and the satellite's Longitude East and Latitude North
in deg. If the satellite is in range, the display is updated in
real time so the plots show the progress of the satellite in the
sky until it goes below the horizon, when a plot of the next
accessible pass is shown. If the satellite is out of range when
this Mode is entered then the next accessible pass is plotted.
Using the 'F' command the display can be moved forward in time to the next accessible pass and the 'U' command can be used to open a form for entering a user-specified date and time from which to start a search for upcoming passes. The 'S' command resets a search back to the time entered by the user while the 'R' command resets the search back to real time. Unfortunately there is no command for back-tracking pass predictions in time as this was rather awkward to implement, so it is necessary to use 'R' or 'S' to restart a search and then go forward again to an over-stepped pass prediction. Accessible pass predictions for Elevation are plotted with a yellow '*' when the satellite is in sunlight, a yellow '.' when the satellite is eclipsed and for Azimuth, with a blue '+'.
Visible Pass
predictions
The 'V' keystroke command changes this Mode to the display of
visible pass predictions, e.g. passes during which the satellite
can be seen either with a naked eye or a telescope if the
brightness is too low. The predictions are done using solar
illumination of the satellite and local darkness as criteria, so
that 'seeing' (e.g. weather) conditions are not taken into account.
This Mode is useful for visual observation of satellites and
searches for visible passes can be made using the 'F', 'U', 'S' and
'R' commands as for accessible passes. Visible pass predictions for
Elevation are plotted with a cyan '*' when the satellite is in
visible, a blue '.' when the satellite is eclipsed and for Azimuth,
with a blue '+'.
Keystroke
Commands
The following keystroke commands are available in this Mode:
'A': Show accessible pass predictions.
'V': Show visible pass predictions.
'U': Start searching from user-entered time.
'R': Revert to searching in real-time.
'F': Search forward for next pass prediction.
'S': Restart searching from user-entered time.
'Page Dn': Change current location to next one in database.
'Page Up': Change current location to previous one in database.
'H': Change current location to 'Home' in database.
'M': Change to Multi-Satellite/Single-Location Mode.
'Up, Down, Left, Right': Select a satellite from the database.
'Insert': Select the default satellite as specified in the satcom.h file.
'Q' or 'ESC': Exit from current Mode to previous Mode.
Manual Commands
Mode
In this Mode satcom displays summary information on the current
observer and some keystroke commands for manual operations. The
observer information is displayed as follows:
Location Name, Longitude East, Latitude North, Height in mtr.
Grid Locator, UTC date and time, Local Time.
Sun Azim/Elev, Moon Range in km, Moon Azimuth and Elevation.
Manual Rotor
Control
This Mode provides commands for manually controlling the
GS-232/G-5500 Az/El rotor position. The left, right, up, down arrow
keys initiate corresponding movement of the rotors up to the limits
of 0-360 in Azimuth and 0-180 in Elevation. The Space bar stops
both rotors when keyed and the 'H' key returns the rotors to their
default parking position. The 'M' command opens a form for entering
desired positions for the Azimuth and Elevation rotors, while a
'Return' on the 'Done!' field initiates rotation to the specified
position. A 'Return' on the 'Abort' field cancels the
operation.
Tracking the Moon and
Sun
The 'L' and 'S' commands toggle tracking of the moon and sun
respectively. Tracking in this Mode is done with the high
resolution specified in the satcom.h file
and the default value is 1 degree. Moon tracking is useful for EME
communications and for testing rotor positioning accuracy. Tracking
the sun is useful for testing receiving equipment for sensitivity
by measuring solar noise etc.
Keystroke
Commands
The following keystroke commands are available in this Mode:
'Left, Right, Up, Down" arrow keys: Initiate movement of
rotors.
'Space': Stop movement of rotors.
'M': Open form for entering desired rotor position.
'H': Park rotors in default 'Home' position.
'L': Initiate tracking of the moon.
'S': Initiate tracking of the sun.
'Q' or 'ESC': Exit from current Mode to previous Mode.
Illumination Predictions
Mode
In this Mode satcom displays satellite illumination predictions for
the next 30 days as min/day and percentage, starting from current
date and time at start-up. Predictions for the next or previous 30
days can be requested with the 'F' and 'B' commands while the 'R'
command reset the predictions to real time. The 'U' command opens a
form for user entry of the starting date and time and 'Return'
starts the prediction calculations. At the bottom of the screen in
the first line on the keystroke commands 'bar' a slider indicates
the progress of the calculations.
A summary of all satellites in the satcom.sat file together with a summary of the
currently selected satellite's and observer's status is also
displayed. The following information is shown:
Location Name, Grid Locator, Local time, sun and moon
Azim/Elev.
Satellite Name, Azim, Elev, Range in km, UTC date and time.
Keystroke
Commands
The following keystroke commands are available in this Mode:
'F': Predictions for the next 30 days.
'B': Calculation for the past 30 days.
'R': Reset start of predictions to user-input date and time
'U': Open a form for user entry of date and time of start of
predictions.
'M': Change to Multi-Satellite/Single-Observer Mode.
'Up, Down, Left, Right': Select a satellite from the database.
'Insert': Select the default satellite as specified in the satcom.h file.
'Q' or 'ESC': Exit from current Mode to previous Mode.
Offset Calibration
Mode
In this Mode satcom displays a simple graphical aid to adjusting
the Azimuth and Elevation Offset null controls in the Yaesu GS-232
computer controller. You can refer to the GS-232 manual for some
information on this subject, although it is meant for a simpler,
lower level approach.
To carry out the Offset Calibration procedure, the GS-232, G-5500 Dual Controller and the Azimuth/Elevation rotors must be connected together as per the user Manual and the GS-232 must be connected to the computer's appropriate serial port as specified in satcom.h. Keying the 'O' command in the Main screen will open a simple graphical aid to this calibration procedure, with a horizontal bar-graph display for the Azimuth and Elevation Offset.
To perform this calibration, first position both rotors at the 0 degrees mechanical position using the manual controls on the G-5500 Controller. DO NOT rely on the analogue meters for this, as they are not accurate enough even when calibrated. If available, use the markers on the rotor cases which normally line up at the 0 deg position otherwise the counter-clockwise mechanical stop can be used as a 0 deg reference. You can then remove the covers from the GS-232 and adjust the trimmers marked AZ and EL until the vertical arrows under the bar-graphs point to the central green bar. Usually there is a +- 1 count ambiguity in the ADC's that measure rotor position so the arrow may play one division left or right. When finished, reset the GS-232 by switching off and on to get it out of the Offset calibration Mode and to return satcom to the Main screen.
Full-Scale
Calibration Mode
In this Mode satcom displays a simple graphical aid to adjusting
the Azimuth and Elevation Full-scale controls in the Yaesu G-5500
rotor controller. You can refer to the GS-232 manual for some
information on this subject, although it is meant for a simpler,
lower level approach and it does not apply to the GS-232/G-5500
combination. Please read on for the proper procedure that makes
this calibration compatible with satcom.
To carry out the Full-scale Calibration procedure, the GS-232, G-5500 Dual Controller and the Azimuth/Elevation rotors must be connected together as per the user Manual and the GS-232 must be connected to the computer's appropriate serial port as specified in satcom.h. Keying the 'F' command in the Main screen will open a simple graphical aid to this calibration procedure, with a horizontal bar-graph display for the Azimuth and Elevation Full-Scale offset.
To perform this calibration, first position both rotors at the 0 degrees mechanical position using the manual controls on the G-5500 Controller. DO NOT rely on the analogue meters for this, as they are not accurate enough even when calibrated. If available, use the markers on the rotor cases which normally line up at the 0 deg position otherwise the counter-clockwise mechanical stop can be used as a 0 deg reference. If there are no markers on the Azimuth rotor case, mark the 0 deg reference position with opposing lines on the fixed and moving parts of the rotor using a marker pen. Then use the manual control on the G-5500 to position the Azimuth rotor at 360 deg by re-aligning the markers on the case. The Elevation rotor must be positioned at 180 deg and normally there are markers on the case that can be used for this operation. Then you can adjust the OUTPUT VOLTAGE ADJUST controls on the rear of the G-5500 Controller until the vertical arrows under the bar-graph displays align with the central green bar. Usually there is a +- 1 count ambiguity in the ADC's that measure rotor position so the arrows may play one division left or right. When finished, reset the GS-232 by switching off and on to get it out of the Full-scale calibration Mode and to return satcom to the Main screen.
Maidenhead Grid Locator
Mode
In this Mode satcom displays summary information on the current
observer and a ncurses form for entering location coordinates or
grid locators and carrying out bearing and range calculations. The
observer information is displayed as follows:
Location Name, Longitude East, Latitude North, Height in mtr.
Grid Locator, UTC date and time, Local Time.
Sun Azim/Elev, Moon Range in km, Moon Azimuth and Elevation.
Grid Locator
Functions
Enter a position as Longitude/Latitude in degrees, minutes and
seconds of arc, then type 'g' to calculate the grid locator. You
may type 'd' to enter the default HOME position from the satcom.h
header file. Please note that blank position fields are read as a
zero value by default. The 'return' key toggles the East/West and
North/South flags ahead of longitude and latitude entries.
Enter a Maidenhead grid locator (all six characters) and type 'p' to calculate the Longitude/Latitude of the position. Please note that blank or lower case characters in the locator field will produce erroneous results.
To calculate bearing and distance to a second 'remote' point, enter the Longitude/Latitude or the grid locator and type 'b'. Both short path and long path bearings (in degrees) and distances (in km) are calculated along a great circle path.
Keystroke
Commands
Please note that only lower case characters are accepted, to avoid
errors when entering grid locator characters in uppercase. Also,
the keystroke commands at the bottom of the screen are inactive in
this Mode.
The following keystroke commands are available in this Mode:
'G': Calculate the Maidenhead Grid Locator of a position, given
Longitude and Latitude.
'P': Calculate a position's Longitude and Latitude given a
Maidenhead Grid Locator.
'B': Calculate the bearing and distance to a remote position given
its Longitude/Latitude or grid locator.
'D': Enter default location from the satcom.h file.
'Q' or 'ESC': Exit from current Mode to previous Mode.
Error Messages
Some (fatal) error messages may printed by the system if operations
like opening serial port device files or run-time files fail. These
will normally appear only if the satcom.h
file is not properly customized or if run time files are missing or
misnamed.
The following messages are printed by satcom before exiting,
after receiving the relevant signal from the kernel:
"satcom: Exiting via User Interrupt"
"satcom: Segmentation Fault"
"satcom: Floating Point Exception"
"satcom: Abort Signal received"
"satcom: Termination Request received"
The following messages are printed when the satcom.tle file cannot be read for some reason, when
the number of lines in satcom.tle is not a
multiple of three and when the TLE data for a satellite do not pass
the verification tests.
"satcom: Error reading ~/.satcom/satcom.tle file - exiting"
"satcom: Incorrect number of lines in ~/.satcom/satcom.tle file -
exiting"
"satcom: Invalid TLE set in ~/.satcom/satcom.tle - exiting"
The following messages are printed when the satcom.obs file cannot be read for some reason, when
no observer location name can be found in satcom.obs, when the observer location data is
incomplete or invalid and when the observer's position data
(Longitude/Latitude) do not compare with the Grid Locator
specified.
"satcom: Error reading ~/.satcom/satcom.obs file - exiting"
"satcom: No valid observer location name found - exiting"
"satcom: Invalid observer location data - exiting"
"satcom: Conflicting Grid Locator/Position data - exiting"
The following messages are printed when calls to the malloc()
function for allocating memory to one of the buffers used by
satcom, fails. Normally this should never happen.
"satcom: Call to malloc() for TLE database failed - exiting"
"satcom: Call to malloc() for observer database failed -
exiting"
"satcom: Call to malloc() for multisat status buffer failed -
exiting"
"satcom: Call to malloc() for transponder modes buffer failed -
exiting"
The following messages are printed when the satcom.sat file cannot be read for some reason, when
no satellite name can be found in satcom.sat
and when a satellite name found in satcom.sat does not appear in
satcom.tle.
"satcom: Error reading ~/.satcom/satcom.sat file - exiting"
"satcom: No satellite names found in satcom.sat - exiting"
"satcom: No matching satellite name found in satcom.tle -
exiting"
The following messages are printed when a satellite's
transponder data in the satcom.sat file is
incomplete and when the passband type specified in satcom.sat is
not recognized.
"satcom: Satellite transponder data incomplete - exiting"
"satcom: Transponder passband flag not recognized - exiting"
Known Bugs
The satellite tracking functions in sgp4sdp4.c were ported to C
from the FORTRAN routines in NORAD's Spacetrack Report #3 and so
are subject to any bugs that may be present in these routines, and
more likely to any bugs introduced during the porting process. I
have incorporated fixes to the 'Lyddane' and 'Actan' bugs as
mentioned in the acknowledgments section
and have tested the port as best as I could and have compared
satcom with other trackers, mostly 'trk' and 'predict' for major
discrepancies. The functions in sgp4sdp4.c have also been used by
other programmers in their own projects and a couple of reported
bugs have been fixed so hopefully the satellite ephemerides
produced by satcom are correct.
I have fixed all true 'bugs' (e.g. coding errors) that I have
noticed in satcom but there may well be some that got away, waiting
for some untested conditions to bring them forth. However there are
also some inadequacies and mis-operations in satcom that are due to
external hardware (rotor controller/transceiver), or due to
programming difficulties. Here are these 'bugs', listed for each
Mode.
Single-Satellite/Single-Observer
Mode
Multi-Satellite/Single-Observer
Mode
The 'Sun Az/El" field displays incorrect data momentarily when the
default satellite is selected by the 'Insert' keystroke or when
changing the observer location with the 'P', 'N' or 'Home'
commands, because a search is carried out in time for the next
AOS/LOS of the new satellite resulting in a temporary change to the
value of the Julian date used in calculations.
Single-Satellite/Multi-Observer
Mode
The 'Sun Az/El" field displays incorrect data momentarily when a
new satellite is selected by a keystroke command, because a search
is carried out in time for the next AOS/LOS of the new satellite
resulting in a temporary change to the value of the Julian date
used in calculations.
Maidenhead Grid Locator Mode
Letters entered into the Grid Locator fields must be in capitals to
avoid confusion with keystroke commands. For the same reason, only
lower-case keystroke commands are recognized.
Version History
Version 0.1 was a basic implementation of the SGP4/SDP4
tracking routines, showing information on just one satellite and
observer.
Version 0.2 incorporated selection of the current satellite
from the satcom.tle file and the current observer from the
satcom.obs file. It also incorporated the
Multi-Satellite/Single-Observer Mode and Maidenhead Grid Locator
function.
Version 0.3 incorporated the Offset and Full-Scale
calibration functions and the GS-232/G-5500 control functions for
the Yaesu G-5500 Az/El rotors.
Version 0.4 incorporated the Pass-Prediction,
Multi-Observer, Illumination Prediction and Manual Control
functions.
Version 0.5 incorporated the CAT control function for the
Yaesu FT-847 'Earth Station' transceiver and the satcom.sat
satellite database system.
Version 0.6 Bug fix release, incorporating a fix to a
malloc bug that caused segmentation faults on some systems. This
bug got away because for some reason accessing a pointer without
first initializing it with malloc() did not create any problems on
my system (UP1000/SuSE 7.0).
Also a potential segmentation fault problem, that could have been
caused by a malformed satcom.obs file, has been fixed.
Version 0.7 Bug fix release, incorporating a fix to a rather subtle combination of two bugs in the preparation of the satellite name string, in two separate functions, that produced a somewhat weird and seemingly unpredictable corruption of the displayed 'current' satellite's name if it was 11 characters long, like ISS(ZARYA).
Version 0.8 Incorporates some changes to the 'feel' of
this application as suggested by Lapo Pieri (developer of trk). The
serial ports handling functions have been edited so that satcom
does not exit with an error message if a serial port device is not
correctly specified in satcom.h.
An attempt to speed up the response of satcom to keystrokes has
been abandoned because the FT847 transceiver could not respond to
faster CAT commands, since even with a refresh rate of 1 per sec it
sometimes cannot respond to the serial port signals from the
computer.
Version 0.9 Fixed a bug that prevented satcom from correctly reading some of the operating modes like CW(N), CW-R, FM(N) etc. Also increased the read timeout of the Rotor serial port to 0.5 sec to avoid timeouts during Offset and Full-scale calibration.
Version 1.0 Hopefully the first release version. Modified the Makefile to prevent overwriting files in an existing .satcom configuration directory with stale default files.
Version 1.1 Fixed a buggy 'strcpy()' statement which could possibly cause a segmentation fault when reading the satcom.sat file.
Version 1.2 After a bug report from Juha Vierinen regarding seg faulting of xnec2c, my graphical adaptation of NEC2, I changed all "sprintf" commands to "snprintf" to avoid buffer overruns. Following on the above changes, I revised all similar situations in satcom source code and changed all "sprintf" commands to "snprintf" just in case. While going through the satcom source code, I also fixed some minor bugs like typos and tidied error messages.
Version 1.3 I re-wrote the Calculate_Moon_Position() and Calculate_Solar_Position() functions in solar_lunar.c to agree with the algorithm for the position of the Sun and Moon as given in the book "Astronomical Algorithms" by Jean Meeus. The original Calculate_Moon_Position() function had some bugs that resulted in slight errors in the calculation of the Moon's azimuth and elevation.
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:
http://www.gnu.org/copyleft/gpl.txt
Acknowledgments
The SGP4 and SDP4 tracking functions in sgp4sdp4.c were ported to C
from the FORTRAN routines in NORAD Spacetrack Report #3.
I have incorporated a fix for the 'Lyddane' bug the 'dpper' section of the 'Deep' routine, as suggested by Rob Matson.
I have incorporated a fix for the 'Actan' bug in the four-quadrant arctan function as suggested by Eduard Savage.
I have reverted to using values, for all constants involved with SGP4 and SDP4 functions, from the NORAD Spacetrack Report #3 as suggested by Scott Pogorelc. This was done in order to remain compatible with the TLE sets produced by using the NORAD routines.
Many functions in date_time.c, input.c, math.c, observer.c and solar_lunar.c were ported or adapted from Dr. T.S. Kelso's sgp4-plb26a Pascal library of satellite tracking and related routines.
Some functions relating to AOS/LOS predictions were adopted from John Magliacane's predict tracker.
The moon tracking routine in solar_lunar.c was adapted from Lapo Pieri's trk tracker, which I have also used for comparisons with satcom.
31 Jan 2003.Last modified: Fri Jan 31 17:24:28 EET 2003