4. Connecting to Mercury
A goal of Mercury is to provide flexible connectivity to GS services from
the Internet. This includes both command and control of GS hardware as
well as satellite data services.
Currently, Mercury supports two methods of controlling GS resources:
an HTTP-based graphical user interface (GUI), and a TCP-based session
message server. The HTTP GUI uses PHP scripts embedded in Apache served
web pages to configure the ground station, manage persistent data (such
as satellite keplerian elements and frequencies), and command and control
resources during satellite contact sessions. Connections can also be
made into the TCP-based session message server where GSML messages
are passed. These servers are not usually open to the public network for
obvious security reasons but can be accessed on local are networks in
ground station protected by firewalls. Future Mercury versions with have
SSL enabled message servers to provide secure remote access. This will
allow custom GUIs to be developed as well as software-agent based control.
The Mercury system is currently designed to work with OSCAR (orbiting
satellite carrying amateur radio) satellites, and thus for using in
OSCAR-class ground stations. The typical data services for OSCAR
stations center around the terminal node controller (TNC). TNC's provide
moduluation/demodulation, HDLC framing, as well as AX.25 packetization.
Some can be placed in
KISS mode,
which forwards all AX.25 packets, wrapped in a KISS packet, to a processing
CPU. Mercury is designed to work with these types of TNCs. The data
server essentially provides a TCP (plain or SSL protected) socket connection
to the TNC. It's converts an RS-232 port to a TCP socket.
This method works well when using the TNC's non Kiss interfaces. When
using the TNC in KISS mode, the software that handles the AX.25 packets is
traditionally designed to talk only to the serial port. For instance,
the Linux kernel has wonderful modules and drivers for talking to KISS TNC's.
(The Linux kernel also allows you to run IP over AX.25. Very nice. We can
telnet, ftp, etc into QuakeSat this way.)
However, they only speak to the serial port. They are designed to
use the Internet. So, we have to be creative because Mercury exports the
TNC interface as a TCP socket.
With a couple of serial ports and a second data server, you can use serial
port software with Mercury. We have done this successfully with the Linux
KISS drivers mentioned above as well as the Pacsat software,
WISP. In the ground station, Mercury maps a serial port to a TCP socket
with a data server. On the ops end, we use a data server (connected on one
end to the Mercury data server and on the other to a serial port) to unmap
the TCP data to the serial port. Then, we connect a null modem cable from
this serial port to a second. Finally, we connect our serial-only software
to this second port. The data is then relayed through the two serial ports
to the local data server and on to the Mercury system. A bit of a hack, but
it works quite well, especially considering we didn't have to modify the
orginal software source code. (Note, a similar trick can be done with virtual
machines and their serial port configurations.)
We've also run Mercury with a Cisco router installed with ground station
modems. The router has a sychronous serial port interface that is compatable
with most modems. In this case the data server is not used. Currently,
Mercury does not have extensions for supporting configuration of the router,
but since it is networked, it can be reached externally by the satellite
operations team if needed.
5. Release Information
Mercury 1.1.x releases are described below:
- 1.1.1 - Initial Mercury release. Provides basic virtual hardware
level control with session level control through the HTTP GUI.
Unfortunately, quite buggy.
- 1.1.2 - Second release of Mercury with substantial bugs fixes. This
version, as of 22 Aug 2003, is supporting full time operations for
the QuakeSat mission.
6. Future Work
Much remains to do on Mercury. Some is bug fixing. Some is feature
addition, such as making the HTTP GUI more user friendly. Some is fundamental
to the way space systems are operated. Mercury is part of a university
research effort where we are attempting to reduce the cost and improve space
system capabilities. This list is by no means exhaustive. Other improvements
are listed and can be requested
here.
- Future Mercury versions with have SSL enabled message servers to
provide secure remote access. This will allow custom GUIs to be
developed as well as software-agent based control.
- Suite of software agents to monitor performance and update time
critical information such as keplerian elements.
- Integrate Mercury systems into the MGSN to enable a global sharing
of ground station resources.
- Add ROC techniques to automate failure detection and recovery.
- Our ultimate goal is flexible application level support. Mercury
will enable control of basic, fundamental ground station services
such as antenna pointing and session scheduling. It will also have
a standardized mechanism for running flexible application level
software. We will be using virtual machines, with a standardized
protocol for running them, that will encapsulate all application
level services that an operations team could dream of. Thus the
GS will not have explicit knowledge of what they are, but will still
be able to run them.