Last updated: 20090909

Receive only Satellite Ground Station

Even before PCSAT2 [1] was deployed, radio amateurs were invited to help with reception of PCSAT2 Telemetry along with solar cell data[2]. I attempted this initially back in August 2005.

I forgot about it for a while until late September when, Andrew Rich, VK4TEC, posted a script to the amsat-bb list. And a follow on script he put on his website [3] . Showing basic doppler corrections for his Kenwood TM-D700. That started me thinking.

Firstly, I already had a Linux server running 24/7 so I could use that for receiving and decoding data, secondly I had a radio sitting idle while I was in work or asleep every day. So why not set the equipment up to work autonomously while I was not at the controls.

My own radio is a Yaesu[4] FT-847 which is computer controllable via its CAT port. I had used Hamlib[5] from a previous project, to control an Icom PCR 1000[3]. Sure enough, it supported the FT-847, so I installed it.

Satellite Tracking

Andrew's Script used Predict[6] to supply the doppler correction factor required, so I downloaded, compiled and installed Predict.

As I wished to run the tracking software as a 'service' I chose to run it on an unused tty. After some trial and error I managed to get it working by modifying the /etc/event.d/tty6 file to read

##/etc/event.d/tty6
# tty6 - getty
#
# This service maintains a getty on tty6 from the point the system is
# started until it is shut down again.

start on runlevel-2
start on runlevel-3
stop on runlevel-4
stop on runlevel-5

stop on shutdown

respawn /usr/local/bin/run_predict

And the run_predict script contains

##run_predict
/bin/su - predict -s /bin/bash -c "/usr/bin/predict -s < /dev/tty6 > /dev/tty6 "

I created a specific Predict user rather than allowing the program to run as root. Allowing programs to un-necessarily run as root is frowned upon and generally considered bad practice.

Now that we have a Predict server running, it needs to be kept up to date. Inside in the 'clients' subdirectory is a directory with a name of kep_reload. The 'README' file therein says:

"kep_reload" is a simple utility that forces an immediate reload of PREDICT's Keplerian database through a socket connection while PREDICT is running in server mode. It is especially useful in environments where PREDICT runs continuously, and periodic Keplerian element updates are made outside of PREDICT, such as through scripts run through a crontab.

The "kepupdate" script found in this directory is an example of a Keplerian element update script that can be run on an automated basis through a crontab. It is designed to be placed in your home directory under a subdirectory called "cronjobs". It downloads Keplerian orbital data from www.celestrak.com using the HTTP protocol. (The "wget" utility, available from the Free Software Foundation, is required, and is included in many Linux distrubutions.)

Type crontab -e to edit your crontab. Simply add the following entry:

0 8 * * * kepupdate

Perfect for what I needed. So following the instructions I now had a satellite tracking engine that was automatically kept up-to-date.

Radio Control

Basically I used the Hamlib Hamlib library that comes with the distribution. Along with a modified version of Andrews script[7].

Radio Modem

I used the soundmodem [8] version that was available on the distribution. At the moment I'm using Ubuntu 8.04.3 LTS. [9] My configuration looks like this:

<?xml version="1.0"?>
<modem>
<configuration name="test">
<chaccess txdelay="200" slottime="100" ppersist="64" fulldup="1" txtail="20"/>
<audio type="soundcard" device="/dev/dsp1" halfdup="1" capturechannelmode="Left"/>
<ptt file="none" hamlib_model="" hamlib_params=""/>
<channel name="Channel 0">
<mod mode="fsk" bps="9600" f0="1200" f1="2200" diffenc="1" filter="df9ic/g3ruh"/>
<demod mode="fsk" bps="9600" filter="rootraisedcosine"/>
<pkt mode="MKISS" ifname="sm0" hwaddr="EI7IG-3" ip="10.0.0.1" netmask="255.255.255.0" broadcast="10.0.0.255"/>
</channel>
<channel name="Channel 1">
<mod mode="afsk" bps="1200" f0="1200" f1="2200" diffenc="1"/>
<demod mode="afsk" bps="1200" f0="1200" f1="2200" diffdec="1"/>
<pkt mode="MKISS" ifname="sm1" hwaddr="EI7IG-4" ip="10.0.0.1" netmask="255.255.255.0" broadcast="10.0.0.255"/>
</channel>
</configuration>
</modem>

It is receive only, so I'm not using any PTT line. Also you can see that I'm using /dev/dsp1. The second soundcard in the computer. To bring up the soundmodem, I open a terminal and run (as root) soundmodem -v 9. Immediately, some multicast packets get sent to the port so I issue the following commands

ifconfig sm0 -multicast
ifconfig sm1 -multicast

AX.25 Configuration

# /etc/ax25/axports
#
# The format of this file is:
#
# name callsign speed paclen window description
#
9k6 EI7IG-3 9600 128 1 9k6 port
1k2 EI7IG-4 1200 128 1 1k2 port
1200 EI7IG-1 57600 255 7 4m Winlink Port
tmd7 EI7IG-2 57600 255 7 TM-D710 APRS

That is pretty much all there is to it. I use Xastir[10] as a general APRS program and it will also I-gate most Satellite traffic. Using an Omnidirectional Vertical antenna, I regularly receive packet date from the International Space Station. At the moment there is a pair of temporary satellites in orbit that were launched from STS-127. These are known as the Atmospheric Neutral Density Experiment[11] and I occasionally can receive a packet or two from one of them (POLLUX).

[1] http://web.usna.navy.mil/bruninga/pcsat2.html PCSAT2 Design Page
[2] http://web.usna.navy.mil/bruninga/pec/pc2ops.html PCSAT2 Operations Webpage
[3] www.tech-software.net VK4TEC's Homepage
[4] http://www.yaesu.com Yaesu
[5] http://hamlib.sourceforge.net Ham Radio Control Libraries
[6] http://www.qsl.net/kd2bd/predict.html Predict Satellite Tracking Software
[7] http://www.ei7ig.org/predict_control.txt predict_control.pl
[8] http://www.baycom.org/~tom/ham/soundmodem/ Multiplatform Soundcard Packet Modem
[9] http://www.ubuntu.com Ubuntu Linux
[10]http://www.xastir.org Xastir
[11] https://goby.nrl.navy.mil/ANDE/Main.html Atmospheric Neutral Density Experiment
[12] http://www.findu.com/cgi-bin/ariss/index.cgi Amateur Radio Stations heard via ISS
[13] http://www.findu.com/cgi-bin/raw.cgi?call=pollux-1 Raw Data from POLLUX