CNCTRK – A LinuxCNC Based Satellite Tracking System
by Bob Freeman, KI4SBL

Hello, and thank you for visiting my CNCTRK project site. This site contains information on the CNCTRK satellite tracking system.  Included here are the AZ/EL Antenna Positioning System (APS) assembly instructions and any updated information that may have come available since the CNCTRK article was published in the
May/June 2015 issue of the AMSAT Journal.


A new approach to antenna positioner control has been introduced that employs the sophisticated motion control capabilities provided by the LinuxCNC project.  In addition to the controller concept a new Azimuth (AZ) and Elevation (EL) Positioner has been designed, developed, and tested. Further, the prototype positioning units have been integrated for use with the well known open source satellite tracking programs, Predict and GPredict, to enable tracking of LEO satellites.

A complete ground station with tracking system, called CNCTRK, is shown in the photograph below; this version employs a dual band antenna and a laptop computer as the controller for tracking.

CNCTRK photo

Reference Information

Copy of May/June 2015 AMSAT Journal article on CNCTRK is available here:  CNCTRK Article in pdf form
Assembly instructions for the
AZ/EL Antenna Positioning System (APS):  APS Assembly Instructions
Source code for cnctrk.c, a PREDICT client program for Satellite/Sun/Moon tracking:  cnctrk.c
Executable or binary for cnctrk.c to enable tracking:  cnctrk
Sample PREDICT database containing active amateur radio satellites as of June 2015:  predict.tle
Sample update script for updating two line elements in PREDICT database via network: update.script
Sample LinuxCNC
.ini setup file for the AZ/EL APS:  stepper_inch.ini
Patch file for adding the
AZ/EL APS unit to hamlib (for use with GPredict):  hamlib-

All of the above files in a tarball (~5MB): CNCTRK_files_2015-06-29.tgz

CNCTRK on the Raspberry Pi

The CNCTRK system was developed for use with a laptop computer, thus enabling portable operation.  The viability of this approach depends on the availability of laptop computers equipped with a parellel port and a good battery.  Since laptops are scarsely delivered with parallel ports these days and the older machines with parallel ports are likely equipped with old batteries, an alternatative approach was desired that employed currently available hardware.  Additional goals for the system would include reduced power requirements, reduced size and weight, and compatibility with the APS hardware -- all of these with portability in mind.  In order to accomplish all of the above the CNCTRK system has been implemented using the Raspberry Pi (PRi) as the base platform.  Initial details of the RPi implementation of the CNCTRK system follow below.

The photograph below shows an implementation of the CNCTRK system using the Raspberry Pi as the sytem controller.  In this case two circularly polarized antennas are used on the APS, one for 70 cm and one for 2 meters.

RPi-based Tracking system

PRi-Based Tracking System Using PREDICT and CNCTRK

In short, the LinuxCNC has been forked into a system called Machinekit.  Installation of the
Machinekit system on the RPi is described here.  Of course, you could also use this system to control your CNC machine, router, and etc.!

In order to remain compatible with the AZ/EL unit a PIC-based hardware interface is required; documentation on this interface is found here.  Modification of the hardware.h definitions were required for Sherline compatibility of the parallel port; look for posts from user bfree and the modified hardware.h file in the forum, here.

A block diagram of the CNCTRK system on the Raspberry Pi is shown below.

CNCTRK on RPi Block Diagram

The Machinekit is a real time Linux system, similar to the LinuxCNC distribution images; the PREDICT and cnctrk programs listed above can be compiled and run natively on the RPi.  Operation of the system on the RPi platform is done in the same manner as was done on a properly equipped laptop computer.  The big difference is the reduced size, weight, and, power needed to run the system.  The prototype positioner, RPi (with PICnc-v2) and 7" LCD monitor has been successfully tested.  Measured  current demand for the RPi-based CNCTRK system in different modes of operation are tabulated below, for reference.


Recall the position update rate is 1 Hz in the prototype system and updates take only a few milliseconds to complete.  As a result, the motor driver duty cycle is quite low and the system is typically sitting at the steady state current draw of about 0.76 amperes.  Adding this current to the average current demand of the operator's radio(s) will yield an estimated run time for portable operation for a given battery capacity. 

The RPi-based version of CNCTRK is currently being refined.  One recent refinement is the addition of a (hardware) real time clock.  Once a somewhat thoroughly debugged version is obtained, an image file for the complete system will be made available.  This image file, coupled with the PICnc-v2 interface and the APS, will make a complete tracking system suitable for copying onto a microSD card that can be booted on the RPi.  To date, development of the system has been done on the B+ version of the Raspberry Pi.

More updates on the CNCTRK system are forthcoming.  Feedback, questions, and corrections are welcomed.

Finally, I will appreciate hearing from anyone who may be interested in purchasing a kit for the AZ/EL positioning hardware, or for a kit that includes the Raspberry Pi controller and PICnc interface (no monitor, mouse, or keyboard).  I am considering a new run of parts later this year.  Pricing is estimated to be $400 for the AZ/EL APS kit and this would include antenna mounting hardware for two antennas.  Pricing for the RPi add-on is TBD. 

Finally, please note that this CNCTRK project is a fun hobby, not a business, and use this information to manage expectations. 

Thanks and 73,

bob e-mail

Revised 2015-06-30