Satellite Tracking using Astronomy Goto Mount

Recently, I reviewed the video by K4WOF https://www.youtube.com/watch?v=kpgV8P6ocLE  and was motivated to build my own satellite tracking mount. Satellite operations are considerably easier if satellite tracking is automated so that satellite passes can be focused on radio work. Somewhat comically, automated antenna tracking looks exciting and generates community interest in our amateur radio activities. I have to apologize as mistakes were made by me as I came up to speed with satellite operations. A shout out to Jason N8PDX for invaluable feedback.

As an amateur astronomer I have been working with “goto” telescope mounts for more than a decade – “Goto” computer controlled telescopes are designed to make night viewing easier by automatically moving the telescope to an object in the sky via computer control, and then the telescope mount can track the object for many hours. The more expensive goto telescope mounts can track objects for days with no tracking errors. With our busy lives and brief sky viewing opportunities, a “goto” telescope mount makes astronomy easy, and more complex activities such as long exposure astrophotography accessible to all. The inexpensive goto telescopes provide an easy path for new amateur astronomers as they take the guesswork out of finding objects in the night sky.

Goto telescopes are made up of four components – The Tripod/leveling base, the telescope mount (with motors) for object tracking, the optical tube, and the computer controller. Initial setup requires a simple alignment procedure, but once aligned, tracking will remain accurate for many hours. All the consumer goto telescopes have a basic sky object database built in to a small handheld computer controller with provision for serial connectivity to an external computer for advanced software control. The Meade ETX60 and the Celestron Astro FI are two examples of consumer grade goto telescopes.

Assembling PVC antenna mounting components.

Telescope mounts come in two form factors – Equatorial (Eq) Mounts, and Altitude/Azimuth (Alt/Az) mounts – Equatorial mounts tend to be simpler and more accurate if only since once they are first orientated to your latitude, they only need to track an object in one plane. Alt/Az mount are leveled to your location, and thus for solar system and deep space objects, they will need to move in two axis to track objects. Either mount would need to move in two axis to acquire a satellite. My personal preference is to use an Alt/Az mount for satellite tracking.

So, the important questions are “Can a goto telescope track satellites like planets, asteroids, or deep space objects?” The answer is maybe! “Can a goto telescope move quickly to a location in the sky?” The answer is absolutely yes! It’s the ability to move quickly from one location in the sky to another that makes goto telescope mounts useful to us for satellite work. To expand on this, certainly there are telescope mounts that can track satellites, but if we are also using VFO computer control, there is the need for coordination between two “computers” for each satellite pass. Selecting the satellite on the telescope mount, and selecting the satellite on the VFO control.

As an FYI, the coordinate system used to track solar system and deep space objects is a different model than what is used to track satellite positions. Although many telescope mounts have the fine and fast motor control to follow a satellite, only a few telescope mounts have the ability to accept satellite TLE data. The Meade “goto” mounts have satellite tracking capabilities.

The data a goto telescope mount uses for tracking objects.

When a “goto” scope is commanded to move from one location in the sky to another, the scope will move quickly to the desired location – This action is called slew or slewing. For satellite tracking, we just need to “slew” every few seconds to accurately track satellites for the purposes of amateur radio communication. Depending on the telescope mount software and hardware capabilities, the position commands for this action will either be entered as Right Ascension/Declination (Ra/Dec) coordinates followed by a slew command, or via Elevation or Altitude/Azimuth (Alt/Az) coordinates followed by a slew command. 

Some goto telescope mounts will only accept Ra/Dec or Alt/Az while others will accept both formats. Equatorial telescope mounts commonly only accept Ra/Dec commands. There is a means to calculate Right Ascension and Declination from Altitude and Azimuth but to do so, you will also need your local Latitude, Longitude, and UTC Time.

Software testing – Return to park position.

The astronomy community has been satellite tracking for some time the purpose of actually spotting satellites at sunrise and sunset with a telescope when the satellites are still illuminated by the sun – SkyTrack by http://www.heavenscape.com  is an example of one such program and with this program alone, you have automated satellite tracking using various goto telescope mount manufacturers. SkyTrack uses an open source telescope mount API called ASCOM to communicate with a telescope mount which is supported by most astronomy manufacturers. What astronomy programs are missing is satellite frequencies and transceiver VFO control to compensate for doppler.

I felt that there was a “fast path” to satellite tracking using a telescope mount. I believe the various Alt/Az one armed and fork mounts by Meade, Celestron, and iOptron well suited to the task. Portability is very important. I chose the iOptron Az Mount Pro as my platform with a number of advantages over other mounts with these features –

  • An Alt/Az mount with the ability to support Altitude and Azimuth commands.
  • Onboard battery so external power is optional.
  • 33lb primary dovetail interface with a secondary 11lb dovetail interface. A secondary allows a second telescope or antenna to be attached. A dovetail is a means of quickly attaching a telescope (or antenna).
  • A wifi interface so that command/control can be wireless.  
  • Single star alignment.
  • Portable!

Amateur radio satellite tracking programs have been optimized to work with more traditional “rotators” which unfortunately have fairly “cumbersome” I/O interfaces and large power requirements. Fortunately, these programs do output altitude (elevation) and azimuth data for rotators to action.

Lets review the software options we have available to us for satellite tracking –

  1. Some satellite mounts support TLE input. Meade as an example, but with the challenge adapting the mount to antennas. The Meade LX65 mount looks to be ideal for amateur radio satellite operations.
  2. ASCOM compatible software – Astronomy software SkyTrack using the ASCOM API. SkyTrack will accept an amateur radio TLE database and interface with any goto telescope mount via ASCOM. This is a Windows Program. Radio VFO control would need to be performed manually or via an independent program. 
  3. Hamlib compatible software – Hamlib is the “swiss army” knife of radio and rotator control includes VFO control of numerous radios together with support of rotators including telescopes. Radio software that has radio and rotator controls can take advantage of frequent updates to Hamlib that add new radio and rotators. Recently, the iOptron telescope mount was added to Hamlib adding to existing support of Meade and Celestron telescope mounts. Gpredict is one satellite tracking application that can leverage this support from Hamlib to both control VFO’s for satellite frequency and doppler adjustment and rotators including Telescope mounts for satellite tracking. 
  4. Write Your Own Software – Many satellite tracking software applications will provide a basic means of outputting Altitude and Azimuth information. As an example, MacDoppler can output rotator control information to a UDP port. If you have programming skills, you can use standard API’s and interfaces to adapt to your own needs.

I decided to pursue a “write my own” software for three reasons – (1) Take advantage of MacOS software MacDoppler and continue to use my Mac for portable operations, (2) take advantage of WIFI control of my goto telescope mount via TCP/IP simplifying data cabling between mount and computer. This means there is no interaction between me and the telescope mount during passes, and (3) The mount I am using have an incredibly simple alignment process as it has a built in GPS.  It calculates its own position, aligns itself, then prompts you to fine tune alignment on a single bright object in the sky.

My software consists of MacDoppler configured for my IC-9700 connected via USB cable for VFO control. The WIFI from my Mac is connected to my iOptron goto telescope mount and a Python script performs the following:

  • Opens the MacDoppler UDP port to receive Altitude and Azimuth information.
  • Opens a TCP port to the Telescope Mount
  • Formats the UDP Altitude and Azimuth information from MacDoppler into Telescope Mount commands a. Set Altitude, Set Azimuth, and Slew.
  • This occurs every 1 second and this frequency is more than accurate to maintain alignment. 

This Python script is available at https://github.com/djsincla/goto  and can be modified relatively easily to change from TCP to serial port control of the Telescope Mount. The program also includes a module to calculate Right Ascension and Declination if the goto telescope mount does not support Altitude and Elevation.

For antenna hardware, I chose the Arrow antennas phased at 90 degrees with phasing cables from Diamond for both 2M and 73cm connected to a diplexer so that a single antenna cable runs to the radio. Antennas are mounted to the goto telescope mount using standard Telescope dovetail plates together with some PVC pipe connectors. The iOptron Az Mount Pro I own is assembled the same as if I was going to mount a telescope. I just attach antennas instead.

2M and 73CM Phasing Cables

Initial attempts to consolidate cabling to the mount itself were ok but I felt to simplify, it was simpler for antenna cables to hang below the antennas. PVC is inexpensive so changes to mount configuration will likely be ongoing as I continue to tweak the configuration.

iOptron AZ Mount Pro, Icom IC-9700 Transceiver, and MacDoppler software

I am using the Icom IC-9700 as my portable rig and both radio and the iOptron telescope mount have their own Pelican cases making deployment fast. I power everything off an accessory battery in my van that has an Anderson Power Pole attached. Given the low Amp requirements of Satellite VHF/UHF operations, the van accessory battery has more than enough amp hours to cover extended sessions hunting satellites.

Price – I want to be clear that I was not build for the most inexpensive setup as I am reusing the goto telescope mount I own for astronomy. The iOptron Az Mount Pro I own is a $1200 goto mount. Everything I have done can be reproduced on a less expensive mount and I will circle back around when I have everything dialed in and demonstrate on a ~$400 goto mount.
Setup process is:

  • Set up tripod and telescope mount.
  • Attach antennas with phasing cables and diplexer
  • Perform telescope mount alignment
  • Connect diplexer to radio
  • Connect radio to USB computer
  • Start MacDoppler Software
  • Start Python Script

Success? Yes!! Surprisingly good reception with only 10-15+ degree elevation as satellites come inbound over the ocean. I am extremely happy with progress to date as I continue to focus on operational techniques. The setup is not “clunky” and deploys quickly. I live in a dense neighborhood and will operate from a parking lot with open vistas down by my local beach. 

Unfortunately this “bird” was in safe mode.


There are going to be issues and this is my list on ongoing challenges…

  • Cabling is an issue. Sometimes the mount will slew in an unexpected direction. I continue to research this with iOptron.
  • Hamlib. I believe Hamlib is expecting the mount to be connected via serial port and not TCP/IP. Working on this.
  • Cat control between MacDoppler and FLDIGI. I would like to use CW macros. I am working on the config for this.

Next steps – 

  • I am continuing to tweak the configuration of cabling, cable routing, phasing, and circular polarization switching.
  • I continue to improve the Python script for telescope mount control.
  • Look at updating the Arrows to the larger Alaskian Arrows.
  • Review other program control including Hamlib together with gPredict. I don’t use Windows portable, but I will confirm functionality via a VM with some of the Windows programs available.
  • Adding 23CM as there are a few satellites which switch modes on a regular basis.
  • Review the need for preamps at the antenna.
  • Building a single antenna solution on the most inexpensive goto mount I can find.
  • Adapt the Meade LX65 mount. Upcoming passes identified by MacDoppler will be used to set the Meade to follow the next object. The Meade mount will operate independently of macDoppler during passes. I will need a wifi serial interface.
Playback at 2x to see antenna mount tracking satellite.
A pic of current phasing. I will get to circular polarization eventually, but today linear polarization is working ok for me.

A big thank you to following individuals/organizations –

  • Don at https://www.dogparksoftware.com/MacDoppler.html for making some tweaks to MacDoppler. Don added a nice “advance” feature which moves the calculated position of the satellite forward in time.
  • Bruce at http://www.heavenscape.com SkyTrack software and a simple goto mount will have you up and running in tens of minutes. Bruce has done an outstanding job fixing bugs with the ASCOM API.
  • The team at https://directivesystems.com for phasing cables and a nice 23cm portable antenna!
  • Arrow Antennas http://www.arrowantennas.com/ The portability of the two piece boom can’t be beat.
  • Jason for calling out my operating mistakes.
  • AMSAT… More birds please 😉

Latest Updates –

  • Rewrote the python script to be multi threaded. 1st thread manages UDP receives from MacDoppler. 2nd thread manages telescope commands. 3rd thread waits for keyboard inputs… Q for quit or Ctrl-C.
  • Updated script to store current and desired position of mount in decimal degrees. I was using arc seconds that the telescope mount understands but that will make it difficult later if I change the mount to a different manufacturer.
  • Another pass at the python script. I close the Telescope TCP session after a period of inactivity and reopen when new activity starts. I was also experiencing some brief 5 second hangs from the telescope and closing/opening the TCP session appears to mitigate this issue. I will close and open the telescope session after 30 command loops and I will confirm if I have to adjust that down. One option is just to close and open the TCP session for every set of commands. Easy to implement. Logged a support ticket with iOptron.
  • Update to reflect Meade capabilities and my plans to adapt the Meade LX65 mount.

73 de NA6US Dwayne Sinclair