CNCTRK – A LinuxCNC Based Satellite Tracking System
by Bob Freeman, KI4SBL
Hello, and thank you for visiting my CNCTRK project site. This site
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.
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-18.104.22.168_cnctrk.patch
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.
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.
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
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
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
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
To date, development of the system has been done on the B+ version of
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,