PREDICT(1)

NAME
predict - Track and predict passes of satellites in Earth orbit.

SYNOPSIS
predict [-u tle_update_source] [-t tlefile] [-q qthfile] [-d dbfile] [-a serial_port] [-a1 serial_port] [-n network_port] [-f sat_name starting_date/time ending_date/time] [-dp sat_name starting_date/time ending_date/time] [-p sat_name starting_date/time] [-o output_file] [-s] [-east] [-west] [-north] [-south]

DESCRIPTION
PREDICT is a multi-user satellite tracking and orbital prediction application created by John A. Magliacane, KD2BD, for execution under the Linux operating system. PREDICT is free software. It may be redistributed and/or modified under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License or any later version. PREDICT provides real-time satellite tracking and orbital prediction information to users and client applications through the system console, through the command line, through a network socket, and through the generation of audio speech. Information such as a spacecraft's sub-satellite point, azimuth and elevation headings, Doppler shift, path loss, slant range, orbital altitude, orbital velocity, footprint diameter, orbital phase (mean anomaly), squint angle, eclipse depth, propagation delay, the time and date of the next AOS (or LOS of the current pass), orbit number, and sunlight and visibility information are provided on a real-time basis. PREDICT can even track (or predict the position of) the Sun and Moon. PREDICT also has the ability to control AZ/EL rotators to establish and maintain accurate antenna orientation toward the direction of communication satellites. As an aid in locating and tracking satellites through optical means, PREDICT can articulate azimuth and elevation bearings in addition to visibility information to users in the form of plain speech. PREDICT has been successfully employed by the National Aeronautics and Space Administration where it provides orbital prediction and tracking data for VLBI radio telescope steering. It is used by the European Space Agency's Rutherford Appleton Laboratory where it provides tracking data and velocity profiles used to steer the 25 meter dish antenna at the Chilbolton Observatory. PREDICT also powers AMSAT-NA's on-line satellite prediction web page (https://www.amsat.org/track/), and has served as the basis for a host of other derivative software applications. PREDICT 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.

REQUIREMENTS
PREDICT is written in 'C' and distributed as source code for Linux environments. Compilation requires Bash, a C compiler (gcc or clang), ncurses, pthreads, and ALSA libraries. PREDICT can also be compiled and executed under an Android environment running Termux, a free and open source Android terminal emulator and Linux environment app that is available through GitHub and F-Droid. The DOS version of PREDICT includes a pre-compiled executable file that was built using GCC under a DJGPP environment powered by FreeDOS, and is distributed with a 32-bit DOS Protected Mode Interface. While PREDICT's capabilities are limited by those of DOS, it does function well under DOSEMU (using FreeDOS) and DOSBox, which can operate under Linux, OS/2, RISC OS, Windows, BeOS, and MacOS X.

FIRST TIME USE
PREDICT predicts passes of satellites based on the geographical location of the ground station, the current date and time provided by the computer system's clock/calendar, and Keplerian orbital data for the satellites of interest to the ground station. First time users of PREDICT are provided default ground station location and orbital data information files. These files are managed by the program and are normally located in a user's home directory under a hidden subdirectory named .predict. First time users will be prompted to supply PREDICT with their geographical location the first time the program is executed. This information can be changed at any later date by selecting option [G] from the program's Main Menu. Latitude is normally expressed in degrees North with latitudes south of the equator expressed in negative degrees. Longitude is normally expressed in degrees West (0-360 degrees). Eastern longitudes can be expressed in negative degrees. This behavior can be modified by passing the -east or -south commmand line switches to PREDICT. Latitudes and longitudes may be entered either in decimal degrees (41.716905) or in degree, minute, second (DMS) format (41 43 0.84). Station altitude is accepted as the number of meters the ground station is located above sea level. This parameter is not very critical. If unsure, make a realistic guess or simply enter 0. PREDICT employs a line editor that normally operates in Overwrite Mode. Overwrite Mode can be toggled to Insert Mode (and vice versa) by tapping the Insert key. The cursor (and current editing position) can be moved left or right by pressing the corresponding cursor arrow keys. The insertion point can be moved to the beginning of the line by pressing the Home key. Selecting the End key will move the insertion point to the end of the line. The Delete key deletes the character currently under the cursor. The Backspace Key will delete the character to the right of the cursor. Pressing Enter, the Tab key, or clicking the left mouse button will terminate the editing process and accept the edited line exactly as it appears. Pressing the ESCape key or clicking the right mouse button will also terminate the editing function, but will discard any changes made to the line. Users of PREDICT need Keplerian orbital data for the satellites they wish to track that is preferably not older than one month. The default orbital data supplied with the program is liable to be quite old, and so must be brought up to date if accurate results are to be expected. This may be accomplished by selecting option [E] from PREDICT's Main Menu and manually entering Keplerian data for each satellite in the program's database. Updates can also be made by selecting option [U] and specifying a file containing recent 2-line Keplerian element data sets that correspond to the satellites in the program's database. Keplerian orbital data is available from a variety of sources, including https://celestrak.org/, http://www.space-track.org/, and http://www.amsat.org/. It is possible to replace an existing satellite in PREDICT's Keplerian element orbital database with a different one by manually editing all the Keplerian data for that satellite. Howewver, it is often easier to simply edit the name and object number of an existing satellite with corresponding information for the new satellite of interest. Then, follow Main Menu option [U] and specify a file containing a Keplerian element set for the new satellite of interest that is more recent than that of the satellite you wish to replace. Uplink and downlink frequencies are held in PREDICT's transponder database file predict.db located under $HOME/.predict. A default file is provided with PREDICT. The database may be viewed or edited by selecting the [B] Main Menu option. Up to ten transponders, uplink, or downlink frequencies may be specified for each satellite. In addition, Bahn Coordinates for each satellite may be entered to permit the proper determination of squint angles in Single Satellite Tracking Mode.

PROGRAM OPERATION
The start-up screen of PREDICT lists the program's main functions. Several tracking and orbital prediction modes are available, as well as several utilities to manage the program's orbital database.

PREDICTING SATELLITE PASSES
Orbital predictions are useful for determining in advance when a satellite is expected to come within range of a ground station. They can also be used to look back to previous passes to help to confirm or identify past observations. PREDICT includes two orbital prediction modes to predict any pass above a ground station (Main Menu option [P]), or list only those passes that might be visible to a ground station through optical means (Main Menu option [V]). In either mode, the user is asked to select a satellite of interest from a menu, and then asked to enter the date and time (in UTC) at which prediction calculations should start. The current date and time may be selected by default by entering nothing and hitting simply the ENTER key when prompted to enter the starting date and time. Otherwise, the starting date and time should be entered in the form:
    DDMonYY HH:MM:SS Entering the time is optional. If it is omitted, midnight (00:00:00) is assumed. Once complete, orbital calculations are started and prediction information is displayed on the screen. The date and time in UTC, along with the satellite's elevation above ground, azimuth heading, modulo 256 orbital phase, sub-satellite point latitude and longitude, slant range between the ground station and the satellite, and the satellite's orbit number are all displayed. If spacecraft attitude parameters (ALAT, ALON) are included in PREDICT's transponder database file, then spacecraft antenna squint angles are displayed instead of orbit numbers in the orbital prediction output. An asterisk (*) displayed to the right of the orbit number or squint angle means the satellite is in sunlight at the date and time listed on the line. A plus symbol (+) means the satellite is in sunlight while the ground station is under the cover of darkness at the time and date listed. Under good viewing conditions, large satellites such as the International Space Station (ISS), the Hubble Space Telescope (HST), and many others are visible to the naked eye. If no symbol appears to the right of each line, then the satellite is in the Earth's shadow at the time and date listed and is not receiving any illumination from the sun. Pressing the ENTER key, the 'Y' key, the space bar, or clicking the left mouse button will advance the orbital predictions to a screen listing the next available passes. Pressing the 'L' key allows the currently displayed screen plus any subsequent screens to be logged to a text file in your current working directory. The name given to this file is the name of the satellite plus a ".txt" extension. Any slashes or spaces appearing in the satellite name are replaced by the underscore (_) symbol. The logging feature may be toggled on and off at any time by pressing the 'L' key. Exiting the orbital prediction mode by pressing 'N', hitting the ESCape key, or clicking the right mouse button will also close the log file. The log file will be appended with additional information if additional predictions are conducted for the same satellite with the logging feature turned on. Selecting [V] from PREDICT's Main Menu will permit a ground station to only predict passes for satellites that are potentially visible through optical means. Since all other passes are filtered out in this mode, and since some satellites may never arrive over a ground station when optical viewing conditions are possible, the program provides the option of breaking out of visual orbital prediction mode by pressing the [ESC]ape key or clicking the right mouse button as calculations are made. A prompt is displayed at the bottom of the screen to alert the user of this option. In either orbital prediction mode, predictions will not be attempted for satellites that can never rise above the ground station's horizon, or for satellites in geostationary orbits. If a satellite is in range at the starting date and time specified, PREDICT will adjust the starting date back in time until the point of AOS so that the prediction screen displays the first pass in its entirety from start to finish.

SINGLE SATELLITE TRACKING MODE
In addition to predicting satellite passes, PREDICT allows satellites to be tracked in real-time using PREDICT's Single Satellite Tracking Mode (Main Menu option [T]), or simultaneously as a group of 24 using the program's Multi-Satellite Tracking Mode (Main Menu option [M]). The bearings to the Sun and Moon are also displayed when tracking satellites in real-time. Selecting option [T] from PREDICT's Main Menu places the program in Single Satellite Tracking Mode. The user will be prompted to select the satellite of interest, after which a screen will appear and display tracking positions for the satellite selected. In Single Satellite Tracking Mode, a wealth of information related to tracking a spacecraft and communicating through its transponder is displayed. The current date and time is displayed along with the satellite's sub-satellite point, its orbital altitude in both kilometers and statute miles, the slant range distance between the ground station and the satellite in both kilometers and statute miles, the current azimuth and elevation headings toward the satellite, the orbital velocity of the satellite in both kilometers per hour and statute miles per hour, the footprint of the satellite in both kilometers and statute miles, the modulo 256 orbital phase of the satellite, the eclipse depth, the spacecraft antenna squint angle, and orbital model in use, as well as the current orbit number are also displayed. The date and time for the next AOS is also provided. Additionally, if the satellite is currently in range of the ground station, the amount of Doppler shift experienced on uplink and downlink frequencies, path loss, propagation delay, and echo times are also displayed. The expected time of LOS is also provided. Normally, the transponder displayed when Single Satellite Tracking Mode is started will be the first transponder defined in the transponder database. However, if a particular transponder is defined to be active at the current orbital phase or day of the week when Single Satellite Tracking Mode is started, then that specific transponder will be the first one displayed. PREDICT will not change the transponder displayed in Single Satellite Tracking Mode without user intervention. (That would be rude.) Transponders may be sequenced in ascending order by pressing the SPACE BAR, the Right Arrow Cursor Key, or by left clicking the mouse over the transponder's name. Pressing the Left Arrow Cursor Key or right clicking the mouse over the transponder's name sequences the transponders in reverse order. Pressing the Home Key or the Up Arrow Cursor Key selects first transponder in PREDICT's database. Pressing the End Key or the Down Arrow Cursor Key selects the last. The passband of the transponder may be tuned in 1 kHz increments by pressing the < and > keys. 100 Hz tuning is possible using the , and . keys. (These are simply the < and > keys without pressing the SHIFT key.) If no transponder information is available, the data displayed on the tracking screen is abbreviated. The features available in the Single Satellite Tracking Mode make it possible to accurately determine the proper uplink frequency to yield a given downlink frequency, or vice versa. For example, if one wishes to communicate with a station heard on 435.85200 MHz via FO-29, then 435.85200 MHz can be selected via the keyboard as an RX frequency using the tuning keys while tracking FO-29, and the corresponding ground station TX frequency will be displayed by PREDICT. Obviously, an accurate system clock and up-to-date orbital data are required for the best tuning accuracy. If a sound card is present on your machine and the Single Satellite Tracking Mode is invoked with an uppercase 'T', PREDICT will make periodic voice announcements stating the satellite's tracking coordinates in real-time. If Single Satellite Tracking Mode is invoked with a lowercase 't' or by left clicking over the Single Satellite Tracking Mode option in PREDICT's Main Menu, announcements can be initiated by pressing the letter 't' once the tracking mode has begun. Announcements can be suspended by pressing the 's' key. Once initiated, announcements such as: "This is PREDICT. Satellite is at fifty six degrees azimuth and forty five degrees elevation, and is approaching. Satellite is currently visible." are made at intervals that are a function of how quickly the satellite is moving across the sky. Announcements can occur as frequently as every 50 seconds for satellites in low earth orbits such as the International Space Station (370 km), or as infrequently as every 8 minutes for satellites in very high orbits, such as the AMC-6 geostationary satellite (35780 km). Voice announcements are performed as background processes so as not to interfere with tracking calculations as the announcements are made. Alarms and special announcements are made when the satellite being tracked enters into or out of eclipse. Regular announcements can be forced by pressing the 'T' key in Single Satellite Tracking Mode.

MULTI-SATELLITE TRACKING MODE
Selecting [M] from PREDICT's Main Menu places the program in a real-time multi-satellite tracking mode. In this mode, all 24 satellites in the program's database are tracked simultaneously along with bearings to the Sun and Moon. Tracking data for the satellites is displayed in two columns of 12 satellites each. The name, azimuth heading, elevation, sub-satellite point latitude (in degrees North) and longitude (in degrees West) positions are provided, along with the slant range distance between the satellite and the ground station (in kilometers). A letter displayed to the right of the slant range indicates the satellite's sunlight and eclipse conditions. If the satellite is experiencing an eclipse period, an N is displayed. If the satellite is in sunlight and the ground station is under the cover of darkness, a V is displayed to indicate the possibility that the satellite is visible under the current conditions. If the satellite is in sunlight while conditions at the ground station do not allow the satellite to be seen, a D is displayed. Satellites in range of the ground station are displayed in BOLD lettering. The AOS dates and times for the next three satellites predicted to come into range are displayed on the bottom of the screen between the tracking coordinates of the Sun and Moon. Predictions are not made for satellites in geostationary orbits or for satellites so low in inclination and/or altitude that they can never rise above the horizon of the ground station. A left mouse click over any satellite displayed in the Multi-Satellite Tracking list will bring the user into Single Satellite Tracking Mode for more detailed tracking information on the chosen spacecraft. A right click on the background of the Single Satellite Tracking Mode window will return the user back to Multi-Satellite Tracking Mode.

SOLAR ILLUMINATION PREDICTIONS
Selecting [S] from PREDICT's Main Menu will allow solar illumination predictions to be made. These predictions indicate how much sunlight a particular satellite will receive in a 24 hour period. This information is especially valuable to spacecraft designers and satellite ground station controllers who must monitor spacecraft power budgets or thermal conditions on-board their spacecraft due to sunlight and eclipse periods. It can even be used to predict the optimum times for astronauts to perform extra-vehicular activities in space. Solar illumination predictions may be logged to a file in the same manner that orbital predictions may be logged (by pressing L).

SOLAR AND LUNAR ORBITAL PREDICTIONS
In addition to making orbital predictions of spacecraft, PREDICT can also predict transits of the Sun and the Moon. Lunar predictions are initiated by selecting [L] from PREDICT's Main Menu. Solar predictions are selected through Main Menu option [O]. When making solar and lunar orbital predictions, PREDICT provides azimuth and elevation headings, the right ascension, declination, Greenwich Hour Angle (GHA), radial velocity, and normalized distance (range) to the Sun or Moon. Declination and Greenwich Hour Angle correspond to the latitude and longitude of the object's sub-satellite point above the Earth's surface. The radial velocity corresponds to the speed and direction the object is traveling toward (+) or away (-) from the ground station, and is expressed in meters per second. When the radial distance of the Moon is close to zero, the amount of Doppler shift experienced in Moonbounce communications is minimal. The normalized distance corresponds to the object's actual distance to the ground station divided its average distance. In practice, the normalized distance can range from about 0.945 to 1.055 for the Moon, and about 0.983 to 1.017 for the Sun. Note that the effects of atmospherics are ignored in determining the elevation angles for the Sun and Moon. Furthermore, the data provided by PREDICT corresponds to the object's center, and not the upper or lower limb, as is sometimes done when predicting the rising and setting times of these celestial objects.

OPERATION UNDER THE X-WINDOW SYSTEM
PREDICT may be run under the X-Window System by invoking it through the xpredict script contained with this software. xpredict can invoke rxvt, xterm, Eterm, gnome-terminal, or kvt, and display PREDICT in a virtual terminal window. xpredict should be edited for best results. In many cases, holding down the SHIFT key while pressing the plus (+) and minus (-) keys allows PREDICT's window to be re-sized when started under xpredict.

COMMAND LINE ARGUMENTS
By default, PREDICT reads ground station location, orbital data, annd transponder information from a pair of files located in the user's home directory under a hidden subdirectory named .predict. Ground station location information is held in a file named predict.qth, while orbital data information for 24 satellites is held in a file named predict.tle. Satellite transponder information, if available, is stored in a file named predict.db. If we wish to run PREDICT using data from alternate sources instead of these default files, the names of such files may be passed to PREDICT on the command line when the program is started. For example, if we wish to read the TLE file visual.tle and the QTH file beach_house.qth rather than the default files, we could start PREDICT and pass the names of these alternate files to the program in the following manner:
    predict -t visual.tle -q beach_house.qth or
    predict -q beach_house.qth -t visual.tle or
    predict -t amateur.tle -d oscar.db If the files specified are not located in the current working directory, then their relative or absolute paths should also be specified along with their names (predict -t /home/kd2bd/orbs/visual.tle). It is also possible to specify only one alternate file while using the default for the others. For example,
    predict -t visual.tle reads QTH information from the default predict.qth location, TLE information from visual.tle, and transponder database information from predict.db while
    predict -q bobs.qth reads QTH information from bobs.qth and TLE information from the default ~/.predict/predict.tle location.

QUIET ORBITAL DATABASE UPDATES
It is also possible to update PREDICT's satellite orbital database using another command line option that updates the database from a NASA two-line element data set. PREDICT then quietly exits without displaying anything to the screen, thereby eliminating the need for entering the program and selecting the appropriate menu options. This option is invoked using the -u command line switch as follows:
    predict -u orbs248.tle This example updates PREDICT's default orbital database with the Keplerian elements found in the file orbs248.tle. PREDICT may be updated from a list of files as well:
    predict -u amateur.tle visual.tle weather.tle If an alternate datafile requires updating, it may also be specified on the command line using the -t switch as follows:
    predict -t oscar.tle -u amateur.tle This example updates the oscar.tle orbital database with the two-line element data contained in amateur.tle. These options permit the automatic update of PREDICT's orbital data files using Keplerian orbital data obtained through automatic means such as FTP, HTTP, or pacsat satellite download. For example, the following script can be used to update PREDICT's orbital database via the Internet:
   #!/bin/sh
   wget -qr https://www.amsat.org/tle/current/nasabare.txt -O amateur.txt
   wget -qr https://celestrak.org/NORAD/elements/visual.txt -O visual.txt
   wget -qr https://celestrak.org/NORAD/elements/weather.txt -O weather.txt
   /usr/local/bin/predict -u amateur.txt visual.txt weather.txt If duplicate entries exist among the downloaded files, PREDICT will use the most recent element set to update it's Keplerian database. A script called kepupdate containing the commands illustrated above have been included with PREDICT. A call to this script can be made as a crontab entry to automate the process of updating PREDICT's database at regular intervals. Simply include a line such as the following in your crontab (type crontab -e to edit your crontab):
    0 2 * * * kepupdate and PREDICT will automatically update its database every day at 2:00 AM.

AUTOMATIC ANTENNA TRACKING
PREDICT is compatible with serial port antenna rotator interfaces conforming to the EasyComm 2 protocol standard. This includes the PIC/TRACK interface developed by Vicenzo Mezzalira, IW3FOL <http://digilander.iol.it/iw3fol/pictrack.html>, TAPR's EasyTrak <https://web.tapr.org/~n7hpr/easytrak/>. The FODTRACK rotator interface is supported through the use of Luc Langehegermann's (LX1GT) fodtrack utility written for and included with PREDICT. Using any of these hardware interfaces, PREDICT can automatically control the position of AZ/EL antenna rotators, and keep antennas accurately pointed toward a satellite being tracked by PREDICT. In operation, tracking data from PREDICT is directed to the specified serial port using the -a command line option. For example:
    predict -a /dev/ttyS0 will send AZ/EL tracking data to the first serial port when the program is tracking a satellite in the Single Satellite Tracking Mode. The data sent to the serial port is of the form: AZ241.0 EL26.0 using 9600 baud, 8-data bits, 1-stop bit, no parity, and no handshaking. Data is sent to the interface if the azimuth or elevation headings change by one degree or more. For interfaces requiring keepalive updates at least once per second whether the AZ/EL headings have changed or not (such as the ones by SAI), the -a1 option may be used:
    predict -a1 /dev/ttyS0

ADDITIONAL OPTIONS
The -f command-line option, when followed by a satellite name or object number and starting date/time, allows PREDICT to respond with satellite positional information. This feature allows PREDICT to be invoked within other applications that need to determine the location of a satellite at a particular point in time, such as the location of where a CCD camera image was taken by a Pacsat satellite based on its timestamp. The information produced includes the date/time in Unix format (the number of seconds since midnight UTC on January 1, 1970), the date/time in ASCII (UTC), the elevation of the satellite in degrees, the azimuth heading of the satellite, the orbital phase (modulo 256), the latitude and longitude of the satellite's sub-satellite point at the time specified, the slant range to the satellite in kilometers with respect to the ground station's location, the orbit number, and the spacecraft's sunlight visibility information. The date/time must be specified in Unix format (number of seconds since midnight UTC on January 1, 1970). If no starting or ending time is specified, the current date/time is assumed and a single line of output is produced. If a starting and ending time are specified, a list of coordinates beginning at the starting time/date and ending with the ending time/date will be returned by the program with a one second resolution. If the letter m is appended to the ending time/date, then the data returned by the program will have a one minute resolution. The -o option allows the program to write the calculated data to an output file rather than directing it to the standard output device if desired. The proper syntax for this option is as follows:
    predict -f ISS 977446390 977446400 -o datafile or
    predict -f 25544 977446390 977446400 -o datafile Note that referencing a satellite by its object number rather than by its name is the preferred practice when the name is especially long. A list of coordinates starting at the current date/time and ending 10 seconds later may be produced by the following command:
    predict -f ISS +10 If a list of coordinates specifying the position of the satellite every minute for the next 10 minutes is desired, the following command may be used:
    predict -f ISS +10m If a satellite name contains spaces, then the entire name must be enclosed by "quotes". The -p option allows orbital predictions for a single pass to be generated by PREDICT via the command-line. For example:
    predict -p OSCAR-11 1003536767 starts predictions for the OSCAR-11 satellite at a Unix time of 1003536767 (Sat 20Oct01 00:12:47 UTC). If the starting date/time is omitted, the current date/time is used. If a pass is already in progress at the starting date/time specified, orbital predictions are moved back to the beginning of AOS of the current pass, and data for the entire pass from AOS to LOS is provided. When either the -f or -p options are used, PREDICT produces an output consisting of the date/time in Unix format, the date and time in ASCII (UTC), the elevation of the satellite in degrees, the azimuth of the satellite in degrees, the orbital phase (modulo 256), the latitude (N) and longitude (W) of the satellite's sub-satellite point, the slant range to the satellite (in kilometers), the orbit number, the spacecraft's sunlight visibility information, and, if the satellite is in range, 100 MHz-normalized downlink Doppler shift information. For example: 1589489403 Thu 14May20 20:50:03 20 65 209 45 57 1766 38901 * 74.989726 The output isn't annotated, but then again, it's meant to be read by other software. The Unix "date" command can be used to determine the Unix time if only a human-readable date and time string are known. For example:
    date -d "Oct 12 2020 12:00:00 EDT" +%s returns a value of 1602518400 seconds for Unix time. Any time zone understood by the "date" command can be used. The "date" commmand can be combined in a call to PREDICT by enclosing its invocation within a pair of grave quotes (` `) as follows:
    predict -p ISS `date -d "Oct 12 2020 16:00:00 UTC" +%s` The -dp option produces a quick orbital prediction for the next pass of a specified satellite, including 100 MHz downlink Doppler shift information, in CSV format. For example:
    predict -dp ISS produces: 1525500165,Sat 05May18 06:02:45,701.256856
1525500169,Sat 05May18 06:02:49,678.755942
1525500172,Sat 05May18 06:02:52,656.033048
1525500176,Sat 05May18 06:02:56,633.093151
1525500179,Sat 05May18 06:02:59,609.940999
1525500183,Sat 05May18 06:03:03,586.582443
1525500186,Sat 05May18 06:03:06,563.022553
<... output trimmed ...>
1525500367,Sat 05May18 06:06:07,-733.663728
1525500370,Sat 05May18 06:06:10,-755.793182
1525500374,Sat 05May18 06:06:14,-777.690366
1525500377,Sat 05May18 06:06:17,-799.351435
1525500381,Sat 05May18 06:06:21,-820.773340
1525500384,Sat 05May18 06:06:24,-841.952820
1525500388,Sat 05May18 06:06:28,-862.887147
where the Unix time is followed by the UTC date/time and 100 MHz downlink-referenced Doppler shift. The satellite name or object number can be followed by a starting date/time and ending date/time much like the -f option.

SERVER MODE
PREDICT's network socket interface allows the program to operate as a server capable of providing tracking data and other information to client applications using the UDP protocol. It is even possible to have the PREDICT server and client applications running on separate machines provided the clients are connected to the server through a functioning network connection. The -s switch is used to start PREDICT in server mode:
    predict -s By default, PREDICT uses socket port 1210 for communicating with client applications. Therefore, the following line needs to be added to the end your /etc/services file:
    predict 1210/udp The port number (1210) can be changed to something else if desired. There is no need to recompile the program if it is changed. To run more than one instance of PREDICT in server mode on a single host, an alternate port must be specified when invoking the additional instances of PREDICT. This can be accomplished by using the -n switch:
    predict -n 1211 -t other_tle_file -s When invoked in server mode, PREDICT immediately enters Multi-Satellite Tracking Mode and makes live tracking data available to clients. Clients may poll PREDICT for tracking data when the program is running in either the Multi-Satellite or Single Satellite Tracking Mode. When in Multi-Satellite Tracking mode, tracking data for any of the 24 satellites in the program's database may be accessed by client applications. When in Single-Satellite Tracking mode, only live tracking data for the single satellite being tracked may be accessed. Either tracking mode may be ended at any time. When this is done, PREDICT will return the last calculated satellite tracking data until the program is again put into a real-time tracking mode. This allows the user to return to the Main Menu, and use other features of the program without sending potentially harmful data to client applications. The best way to write a client application is to use the demonstration program (demo.c) included in this distribution of PREDICT as a guide. The sample program has comments to explain how each component operates. It is useful to pipe the output of this program through less to easily browse through the data returned (demo | less). In operation, a character array is filled with the command and arguments to be sent to PREDICT. A socket connection is then opened, the request is sent, a response is received, and the socket connection is closed. The command and arguments are in ASCII text format. Several excellent network client applications are included in this release of PREDICT, and may be found under the predict/clients directory.

ADDING SATELLITES
One of the most frequently asked questions is how satellites in PREDICT's orbital database may be added, modified, or replaced. As it turns out, there are several ways in which this can be done. Probably the easiest is to manually edit your ~/.predict/predict.tle file, and replace an existing satellite's entry with 2-line Keplerian data for the new satellite. If this method is chosen, however, just make sure to include ONLY the two line data, and nothing else. Another way is to is select the Keyboard Edit option from the program's Main Menu, select a satellite you wish to replace. Edit the name and object number (replacing the old information with the new information). Just hit ENTER, and accept all the other orbital parameters shown. Get back to PREDICT's Main Menu. Select Auto Update, and then enter the filename containing the 2-line element data for your favorite new satellite. The new satellite data should be detected by PREDICT, and the orbital data for the old satellite will be overwritten by the new data.

NEAT TRICKS
In addition to tracking and predicting passes of satellites, PREDICT may also be used to generate a NASA two-line Keplerian element data set from data entered through the keyboard by using PREDICT's Main Menu option [E]. The 2-Line orbital data for the satellite(s) in question may be found in your orbital database file, and can be imported to any other satellite tracking program that accepts two-line element files or distributed to others electronically in this format. PREDICT can be run as a background process while having its display re-directed to an unused virtual console by using the following command:
        predict < /dev/tty8 > /dev/tty8 & Switching to virtual console number 8 (ALT-F8 in text mode) will allow PREDICT to be controlled and displayed even after you've logged out. This is especially handy when running PREDICT in server mode on a remote machine.

GLOSSARY OF TERMS
The following terms are frequently used in association with satellite communications and space technology:

AOS:
Acquisition of Signal - the time at which a ground station first acquires radio signals from a satellite. PREDICT defines AOS as the time when the satellite being tracked comes within +/- 0.03 degrees of the local horizon, although it may have to rise higher than this before signals are first heard.

Apogee:
Point in a satellite's orbit when the satellite is at its farthest distance from the earth's surface.

Anomalistic Period:
A satellite orbital parameter specifying the time between successive perigees.

Ascending Node:
Point in a satellite's orbit when its sub-satellite point crosses the equator moving south to north.

Azimuth:
The compass direction measured clockwise from true north. North = 0 degrees, East = 90 degrees, South = 180 degrees, and West = 270 degrees.

Bahn Coordinates:
A pair of angles (Alat/Alon) that describe a spin-stabilized satellite's inertial orientation in space.

Descending Node:
Point in a satellite's orbit when its sub-satellite point crosses the equator moving north to south.

Doppler Shift:
The motion of a satellite in its orbit around the earth, and in many cases the rotational motion of the earth itself, causes radio communication links between the earth and a satellite to undergo a frequency shift due to the Doppler Effect. PREDICT calculates what effect these motions have on satellite communication links, and displays real-time Doppler-corrected uplink and downlink frequencies in Single Satellite Tracking Mode.

Elevation:
The angle between the local horizon and the position of the satellite. A satellite that appears directly above a particular location is said to be located at an elevation of 90 degrees. A satellite located on the horizon of a particular location is said to be located at an elevation of 0 degrees. A satellite with an elevation of less than zero is positioned below the local horizon, and radio communication with a satellite in such a position is not possible under normal circumstances.

Footprint:
Diameter of the Earth's surface visible from a satellite. The higher the satellite's orbital altitude, the greater the footprint, and the wider the satellite's communications service area.

LOS:
Loss of Signal - the time at which a ground station loses radio contact with a satellite. PREDICT defines LOS as the time when the satellite being tracked comes within +/- 0.03 degrees of the local horizon.

Orbital Phase:
An orbital "clock" that describes a satellite's orbital position with respect to perigee. Orbital Phase may be modulo 256, or modulo 360, and is sometimes referred to as mean anomaly when speaking of amateur radio satellites in elliptical orbits. Orbital phase is zero at perigee.

Path Loss:
The apparent attenuation a radio signal undergoes as it travels a given distance. This attenuation is the result of the dispersion radio waves experience as they propagate between transmitter and receiver using antennas of finite gain. Free space path loss is technically an oxymoron since free space is loss free.

Perigee:
Point in a satellite's orbit when the satellite is at its closest distance to the earth's surface.

Nodal Period:
A satellite orbital parameter specifying the time between successive ascending nodes.

Slant Range:
The straight line distance between the ground station and the satellite at a given time.

Sub-Satellite Point:
The latitude and longitude specifying the location on the Earth that is directly below the satellite.

ADDITIONAL INFORMATION
Detailed information on the operation of PREDICT's UDP socket-based interface as well as sample code for writing your own client applications is available in the predict/clients/samples subdirectory. The latest news is available through the official PREDICT software web page located at: <http://www.qsl.net/kd2bd/predict.html>.

FILES

~/.predict/predict.tle
    Default database of orbital data

~/.predict/predict.db
    Default satellite transponder database file

~/.predict/predict.qth
    Default ground station location information

AUTHORS
PREDICT was written by John A. Magliacane, KD2BD <kd2bd@amsat.org>. The socket server code was contributed by Ivan Galysh, KD4HBO <galysh@juno.nrl.navy.mil>. The PIC/TRACK serial port antenna rotator controller code was contributed by Vittorio Benvenuti, I3VFJ <benscosm@iol.it>. SGP4/SDP4 code was derived from Pacsal routines written by Dr. T.S. Kelso, and converted to 'C' by Neoklis Kyriazis, 5B4AZ. See the CREDITS file for additional information.