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 2 (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
Runtime 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 on 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 already be 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
runtime 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 exisiting .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.
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.
Last modified: Sat Mar 8 07:53:06 EET 2003