OpenATS: Build your own satellite earth station

Category: Tag:

Previous article: DIY antenna automatic tracking system OpenATS

In fact, OpenATS has too many shortcomings, open loop, no feedback. If you want to continue improving, you almost need to refactor. The article was published in the hope of relying on everyone’s efforts to improve it. As a result, few people can make it according to my article. One is that there are not many people who need it, and the other is more complicated, and the hardware is enough to stump many people. . But now I want to use OpenATS to build my own satellite earth station. We often see satellite earth stations built by the country to control and receive satellites above the earth, so that the satellite data can be transmitted back to the ground for computers to decode the data we want.

Here I focus on experimenting with meteorological satellites, because we can intuitively get some things that excite us. Meteorological satellites are divided into polar orbit and geostationary orbit satellites. Polar-orbiting meteorological satellites generally have an orbital height of 650-1500km, and each satellite passes twice a day. FY-3 and NOAA, METOP, NPOESS, Meteor and other typical polar-orbiting meteorological satellite configurations include imaging remote sensors, atmospheric vertical sounders, microwave remote sensors, ozone detectors, earth radiation budget meters, UPS detectors, and space environment detectors and many more.

The geostationary satellite is a satellite about 35786km above the equator. The time for one revolution of the earth is exactly the same as the earth’s rotation time. It is stationary relative to the earth’s ground and is also a relatively scarce orbital resource. Due to the high altitude and wide coverage, the entire earth can be covered by deploying three. Like our common satellite TV, our satellite antennas are stationary, and the pointed satellite is a stationary satellite. The technology of geostationary meteorological satellites is also very complicated. Because they are far away from us, they have very high requirements on the resolution and accuracy of the satellites. After all, if the angle is a little bit, the deviation will be large. Therefore, the current three-axis stabilized platform used by geostationary satellites can have an accuracy of several hundred meters. One can imagine how powerful the technology is. Only some countries can master some key technologies of geostationary satellites.

The GOES-R launched by the United States at the end of last year was renamed GOES-16 after it entered orbit. GOES-S will be launched at the end of next year. It transmits data of GRB, HRIT, LRIT and other protocols. We can receive CMOS-1, 2F/2G/4A and other satellites with HRIT/LRIT downlink. Fengyun 4A is currently the world’s most advanced geostationary weather satellite, and its performance, along with GOES-R and Japan’s Himawari-8/9, is among the best in the world.

Now let us build our own satellite earth station.

The several important components of the earth station we built are: antenna system, control system, receiving system, decoding system, and timing system

Antenna system
The antenna system is a very important part of the entire receiving system. Friends who play radio may have heard of it. The radio is actually an antenna, which shows the importance of the antenna.

If you want to receive data from a geostationary satellite, you need a parabolic antenna with a larger area. An antenna with a diameter of more than 1.8m and a high-gain LNA can receive HRIT and ABI mode data well in most places through experiments. LRIT only needs more than 1 meter to receive successfully.

If you want to receive polar-orbiting satellites, just use OpenATS as the control system. The antenna diameter is at least 0.9 meters, and an L-band LNA is needed to amplify the signal.

My antenna here is entirely a shipboard satellite communication antenna. If you want to make your own, you can make your own antenna feed according to the picture.

The polarization mode of general meteorological satellites is circular polarization, divided into left-handed and right-handed. Please refer to the calculator on this website ( to make your own design for the production of the helical antenna. The materials can be made of copper wire and aluminum plate. For the reflecting surface, it can be transformed with a large pot of satellite TV. It is best to use a large-caliber pot, that is, the sixth antenna, because the sixth is the C-band forward feed, and the effect of receiving the L-band is better than the Ku-band mid-nine offset feed antenna Better.

Antenna related photos:

Control System
This system is a prerequisite for receiving HRPT, otherwise it cannot continue. In this system, the most important is the automatic tracking system.

OpenATS V2.0
OpenATS was originally developed to allow radio enthusiasts to make an open source tracking antenna, and the important part of the tracking antenna, the control part is the core of OpenATS.

After doing it at that time, I did not test the function of correcting the angle, and the understanding of the function library was wrong. Therefore, in the previous code, the correction was not the angle but the pulse number, which was improved in the new version. In the new system, if you send: X 30.6, you will redefine the azimuth of 30.6 degrees to 0 degrees of the azimuth, so you don’t need to manually adjust the outdoor antenna. Correspondingly, input: Y -20 to reset the elevation angle of -20 degrees to 0 degrees of elevation angle.

The new OpenATS has a lot of changes, adding S (sleep/stop), W (wake up), L (lock) and U (unlock) functions. In the new system, after sending the L command, the antenna maintains the current angle and directly cuts off the power of the stepper motor, while the power of the LNA continues to be turned on. In this way, when the operator wants to receive a geostationary satellite (such as 2F/2G, COMS-1, etc.), the stepper motor is turned off to save power. Send the U command to unlock the antenna. If the S command is sent, the antenna will return to zero. After a delay, the relay will be closed and the relay can be connected to the antenna’s 24V power supply. In other words, after inputting S, the antenna returns to 0 o’clock, and after a certain period of time (tens of seconds), the power supply of the stepping motor will be automatically cut off, thus achieving the purpose of power saving. Send the W command to wake up the antenna in the S command.

The transit time of each polar-orbiting meteorological satellite is only a few minutes to ten minutes, and the antenna remains stationary most of the time. Since the stepper motor will have a large power loss when it is stationary, this aspect was not thought of at the beginning of the design of OpenATS. The stationary stepper motor still maintains a static torque. At this time, although the current is not as large as the current in operation, the power consumption is several times higher than that in the operation of the antenna due to the long static time, so a dual relay module is added. When the Arduino receives the sleep command, the control relay is turned off, cutting off the power of the antenna motor and LNA (if you wish). In this way, in the entire antenna system, the standby current is only a tiny device like Arduino (the antenna computer is controlled by the Internet of Things to save power). This design can monitor the satellite for a long time. When the wake-up command is sent, the Arduino will control the relay module to turn on the antenna power supply, and then track the satellite. The detailed design is very careful, and it will delay a part of the time when waking up, so that the whole system is stable and then tracked. Before turning off the power, the antenna will be reset to zero and then turned off. Since the Arduino is executed sequentially, you cannot add a simple delay to the program, otherwise the entire system will lose its meaning.

How to give the antenna enough time to return to zero and then cut off the power? I found a lot of information, found the Arduino multi-threading library ProtoThreads, studied it, and then planned to use it on OpenATS. But I don’t want to refactor, so the program contains some unused ProtoThreads code, so that more functions are reserved for future OpenATS development. When the command to turn off the power is received, it starts counting, and the program loops once to get +1 until we set the value (the value can also be modified according to the antenna running speed, but sufficient time must be reserved for the antenna to return to zero), activate The relay turns off the power. This will not delay the return of the antenna to zero or the delay of cutting off the power supply.

The improvement is the switching of the tracking angle. There is a loophole in the previous OpenATS code. Under certain conditions, the antenna will be reversed when the satellite passes the 0 degree line (north direction). The new version fixes this problem.

The new version also changed the stepper motor control pins, using pins 5, 6, 9, and 10 to control the stepper motor (because the Arduino digital interface 3, 5, 6, 9, 10, 11 supports native pwn), and the mega The external interrupt interface has 2, 3. Therefore, 3 interfaces are reserved, and an external interrupt interface is reserved for future antenna improvements.

If it is manually controlled, the control feedback interface has also changed a lot and become more practical. After sending the angle, the new angle will be displayed so that you can see the history of the previous sending. If the S command cuts off the power, the software will tell you that the antenna is cut off, and no new control commands are accepted, and there will be a prompt to send W to wake up. Turn on the antenna until you send the W command to wake up (the same applies to the L command and U command).

There is a bigger change, the control software change. This part needs to be explained in detail, if you are not interested, you can skip this part.

The new OpenATS is divided into two versions. One version is the original Easycomm protocol that uses WXtrack software to track. It is mature and stable, but the disadvantage is that the author of WXtrack sets time limits on the software output. The fastest is to send angle data every 1 second. , Which causes the shortcomings of the antenna automatic tracking, the running smoothness is not good, although it does not affect the signal reception, it is not good-looking. The author of WXtrack David tylor designed a simple application called FastWXtrack. The function of this software is to read the parameters of WXtrack in the registry, including your coordinates and satellite orbit and frequency parameters, to quickly calculate the satellite’s downlink frequency. He also designed the DDE server so that the DDE tracking plug-in of the famous SDRsharp software can be connected to this software to perform faster frequency tracking and keep the frequency in the middle.

However, I found that the angle value output by this program is an integer and no decimal is output. After contacting the author and chatting a lot with the author, the author updated the software to a new version. The new version is, which was updated on September 29. It updated the higher-precision DDE parameters, allowing FastWXtrack to output faster angle information. I use it in my OpenATS system as the new OpenATS control software. Then a DDE-to-serial output software was used to transmit the FastWXtrack angle information to OpenATS. The transmission speed is 20 times per second, which is very fast. Arduino often occasionally drops packets on the serial port due to faster communication, but it does not affect the use. .Then what I did was to change the original 16 subdivision setting to 8 subdivision, so that the output frequency of pwm would be lowered and the tracking speed would be faster, but the solution of WXtrack as the control software was not mature. Satellites whose tracking speed exceeds 1°/S at present will cause the antenna tracking to fail to keep up with the satellite, but this is rare. It is more common in the faster-flying satellites of the International Space Station, or the antenna passing over the sky at a high elevation angle. The azimuth angle changes rapidly, but although the satellite cannot be tracked, the importance of the azimuth angle of high elevation angle will be weakened, so the impact is not big. Maybe many people don’t understand it, and they will understand it later when they study.

No matter which version, it has its own advantages and disadvantages.

If you use WXtrack’s Easycomm protocol as the control software, please upload the WXtrack version of OpenATS to Arduino.

Advantages: The software is mature, can be fully automated, set satellite priority and other advanced settings;

Disadvantages: The tracking frequency is once every second, which is relatively low. As the HRPT decoding software currently needs to use the DDE protocol, only one WXtrack can control the antenna and one can be used to control the decoder.

If you use WXtrack+FastWXtrack+DDE client as the control software, please upload the FastWXtrack version of the program.

Advantages: Both HRPT decoder and control antenna use one software. The tracking frequency is fast and the antenna runs smoothly;

Disadvantages: Because the serial data frequency is too fast, the sending pulse frequency is too fast, the antenna runs slowly, and tracking fast satellites will be tragedy. And can not automatically track multiple satellites.

It is recommended to use the WXtrack version. No matter which control software, OpenATS supports the protocol very well, and all have automatic power-off and automatic wake-up functions.

Regarding OpenATS, there are still many complicated points. These words are not enough to summarize everything. If you are interested in making it, you can leave a message. I will try my best to provide you with explanations and help, and I need your strength to get better.


The control box has been modified, and the semi-finished photos used.

The antenna control computer uses the Atom D525 low-power platform. With VNC turned on, plus router port forwarding, you can use a computer or mobile phone to connect to the antenna for control anywhere.


Receiving system
This system is also very important.

The front end of the receiving system is a low-noise amplifier LNA. The L-band LNA is not randomly selected, and it needs to have a good amplification ability for weak signals. At present, the downlink frequencies of international meteorological satellites such as HRPT, HRIT, and LRIT are mostly around 1.7Ghz. No down-conversion is required, and the common SDR can be used for demodulation. I noticed that in the GSM network, there is a frequency band of 1800Mhz, also known as DCS. I bought a few low-noise amplifiers for DCS repeaters and used them as LNAs for the receiving system. The measured gain is high, the noise is low, and the workmanship is stable. It is a very good thing. After all, the equipment purchased by operators is long-running and the price is very high. Generally, there is an LNA in the uplink of the repeater. But DCS1800 frequency band equipment is rare, the 1800 frequency band was originally developed because 900Mhz was not enough. The frequency bandwidth of operators is relatively high, generally above 30Mhz, so the frequency range of equipment research and development is also relatively wide.

Among them, the mobile GSM1800Mhz frequency range is: uplink 1710-1725MHz/downlink 1805-1820MHz; China Unicom’s uplink: 1745-1755MHz/downlink 1840-1850MHz. The LNA in the Unicom DCS I use works normally at around 1745Mhz. Since there is no high-end equipment such as a network analyzer, the specific gain and other parameters are not clear. According to the label, the gain in the normal operating frequency range is 55dB and the noise figure is 0.7dB. Uplink is the direction from the mobile phone to the base station. It can be understood that because the base station is higher and the user’s mobile phone is lower, the data sent from the mobile phone to the base station is called uplink. Since the power of the mobile phone is low, and after the base station antenna receives the signal, it needs to amplify the weak signal with high gain before it can be recognized by the system, so the role of LNA is very important. The important parameters of LNA are noise figure and gain. Because in the entire receiving circuit, at the front end of the receiving system, the noise of the LNA affects the entire system, and low noise becomes particularly important. The LNA should be as close as possible to the antenna end, which is common sense in radio.

We can use Hackrf to receive SDR, as well as Airspy, sdrplay, USRP and so on.

Airspy performs well. Of course sdrplay is also very good, covering shortwave, is a product that radio enthusiasts prefer. But everyone tested, the receiving sensitivity is not as good as Airspy. The airspy mini is very cost-effective. If you don’t particularly need a large bandwidth and other complex functional interfaces, you can buy this. I have an airspy mini here, as well as an imitation sdrplay product-SDR3CS from BH3CS. Because it is a counterfeit product, there is no large-scale promotion, and it is only circulated among some players. But after testing, it is also very good. It has almost the same performance as the original Sdrplay SP1, and the design is better than the original version.

Airspy is a product developed by a well-known SDR# software developer and an upgraded product of rtl-sdr. The sampling rate of 12bit is several orders of magnitude better than that of Hackrf and 8bit of rtl-sdr. The software support is very good, and the official also released spyserver and other servers that are transmitted through the network. Just like rtl_tcp, data can be transmitted through the network without worrying about the loss caused by the feeder. Sdrplay is also supported. The rspstreamer developed by American enthusiasts under the windows platform is free and publicly available. It can be downloaded via GitHub. There are instructions in the specific usage document. After installing the official software of SDRPLAY, copy the mir_sdr_api.dll and mir_sdr_api.lib under SDRplay/API/x86 to the same directory of rspstreamer. Run spyserver or rspstreamer to transmit data to the decoding software through the network cable. You can use small computers such as Raspberry Pi, Banana Pi (recommended because it has a Gigabit Ethernet port) for network IQ data transmission. In actual use, the airspy mini has a complete IQ transmission network speed of more than 20 in 6MSPS mode. M/s, so please use a gigabit network environment for IQ data transmission.

If someone wants to use Hackrf, they can only use GNU Radio for now.

Photos of the receiving part:

Decoding system
Of course it is very important.

Let’s first use a computer to decode the HRPT high-definition cloud image of the weather satellite.

If you want to play software radio, you can’t do without the famous GNU Radio, which integrates many radio modules for us to study and use. Friends who want to know more about this content can search and learn. GNU Radio is more complicated and requires a computer programming foundation and a radio foundation. And GNU Radio integrates gr-noaa’s HRPT decoding module, so if you want to decode NOAA satellite data, you can use GNU Radio to decode the original radio data file in RAW16 format, and then use David tylor’s HRPT Reader. Decode the high-definition HRPT cloud image (NASA actually also uses this software). However, the process is complicated and not suitable for the general public.

Fortunately, radio enthusiasts (twitter: @usa-satcom) wrote the HRPT decoding software xhrpt-decoder, which can decode and output RAW16 files for HRPT Reader to decode. Simple and practical, it costs $100. Contact the author for the software, the trial period is 30 days (it has been cracked by me). The xhrpt-decoder running on the Windows platform needs a .Net environment, and some computers run into errors. The method given by the author is to install a complete VC++ 5.0 requirement control.

Lucas in Brazil also has a good HRIT/LRIT open source decoding software—OpenSatelliteProject (OSP). The OSP written by him can decode GOES satellite HRIT, LRIT and other high-definition cloud images. And the author is constantly improving. If you are interested in OpenSatelliteProject, please follow it on Github. European satellites use the AHRPT format, using the common QPSK demodulation. For the time being, we can only use GNU Radio to decode. The decoding software of usa-satcom has been able to support AHRPT and CHRPT very well. Since I didn’t buy it, I want the software to be used for demodulation. Wait for the update. The sub-satellite point resolution of HRPT is 1.1km.

GNURadio project picture:

Screenshot of HRPT decoding software:

LRIT works in the L-band, with a frequency of around 1691Mhz, a larger diameter parabolic antenna (above 1.2m) and a good LNA can be successfully received. Since the satellite is stationary, the antenna does not need to be tracked, and a full picture can be produced every ten minutes, covering 1/3 of the earth. It is also a very important observation method in the meteorological industry.

HRIT also works in the L-band, and has a little requirement for the processing power of the computer. Here we have to mention OpenSatelliteProject (OSP). OSP is a very good open source project. Currently, OpenCL is updated for image rendering, as well as GOES. GRB mode decoding program. The author Lucas is a very friendly person, and I am also good friends with the author. Because OSP was developed in the HRIT/LRIT format of the American GOES satellite when writing OSP. We are in the eastern hemisphere and cannot receive the American GOES satellites. There are several HRIT/LRIT satellites in the eastern hemisphere, but the format is not exactly the same as GOES. Lucas and Sam from eastern Australia have already begun to study the South Korean COMS-1 satellite. Format, I will also cooperate with them to participate in research and development and testing. In the future, I will gradually study the data of Fengyun 4A satellite (the polarization method is linear polarization), which will bring more shocking effects. However, the sunflower No. 8 in Japan needs to be down-converted, and the receiving cost is high. We will not study it for the time being.

LRIT signal of COMS-1:

HRIT signal of COMS-1:

OpenSatelliteProject can work very stably under Windows system and Linux (preferably Ubuntu). Currently, HRPT decoding is not supported. Lucas told me that HRPT will be supported immediately. Thanks to those who contributed to the radio field.

Lucas and several fans in the United States are already using TV cards that support DVB-S2 decoding (testing the TBS-6903 satellite TV card) and successfully decoded the GRB HD satellite cloud image, which is more advantageous than HRIT. I really thank them for their efforts. .

Let me show you the local resolution of GRB and HRIT after zooming:

The current cutting-edge technology of meteorological satellites: MODIS (medium resolution imaging spectrometer) is the future direction of current AVHRR and other payloads. The highest resolution can achieve several levels of 250 meters, 500 meters and 1000 meters, and the data is divided into several levels. Since the downlink transmission is X-band, the bandwidth requirement is relatively large. Therefore, it is more complicated and costly for the entire receiving system. No in-depth research is currently being done.


Timing system

The computer can adjust the time through the network time service. But for those who are pursuing perfection, some optimizations can be made on the timing system, which can lay a good foundation for more in-depth research in the future. We use GPS to provide time, and a GPS module is needed at this time. Many friends will say, I have this, but I guess most people’s modules cannot be used for time service. What GPS timing needs is a dedicated timing chip that supports 1PPS output, which is different from ordinary GPS positioning chips. GPS timing chip can accurately time to about 30 nanoseconds, 1 nanosecond is one billionth of a second. The built-in timing algorithm in the GPS timing module can minimize the error with the GPS satellite clock. Most of our common mobile phone base stations use GPS timing. The newly developed 1588 timing service is also good, reducing the cost and maintenance cost in this regard.

What I use here is the LEA-6T module of ublox, a dedicated GPS timing chip. I also bought the clock box of the base station, and then I found the TTL interface and then connected it to the computer via TTL to USB to perform 1PPS timing. Due to the USB interface, the inquiry speed of the USB2.0 interface is slow, so the time service cannot reach the level of tens of nanoseconds. You can use TTL to serial port for low-latency timing. So I bought a TTL to RS232 module.


The timing system uses Linux, I use Debian

First install the required software:

apt-get install gpsd gpsd-clients python-gps ntp

After the installation is complete, we map the usb port to gpsd.sock through the F command of gpsd

killall gpsd

gpsd /dev/ttyUSB0 -F /var/run/gpsd.sock


Then we restart the ntpd service

service ntp restart

At this time, we enter cgps -s to see if we can read the data of the GPS device.

Next, modify the ntp configuration file so that the clock source of ntpd is set to GPS.

vim /etc/ntp.conf

Find the ntp server address behind the pool below, and comment out all the network servers.

Plus our GPS clock

server minpoll 4

fudge time1 0.0 refid NMEA


After saving killall gpsd and re-run gpsd /dev/ttyUSB0 -F /var/run/gpsd.sock

Then restart the ntp service. If the connection is normal at this time, we can enter cgps -s to see the various information received by GPS.

We can also enter ntpdc -p to view the source of the ntp service, and we can see the input of the GPS clock source. The PPS source must be available to guarantee the timing accuracy.

Since there are too many GPS timing knowledge points, and the time service system is complicated to build, I won’t talk about many things here. Here is an article explaining how to build a GPS time service system. The knowledge covered in it is more comprehensive. Please study and research if you are interested. Address:

Screenshot of the timing system built by myself:

HRPT HD cloud map. Affected by the file size, those who need high-definition images, please see the network disk:

From the last picture, we can clearly see that the water temperature in Bohai Bay is higher than that in the Korean Peninsula.

Since the test antenna is not placed on the top of the building and is located in the city, there is no filter, so the interference is severe. The cloud image quality is not very good.

In fact, manual tracking is also possible. Although it is tired, it can be successfully received. Interested friends can try it.

HRIT/LRIT decoding cloud map:

(The full HD HRIT image file is about 30M, and the GRB is larger, so the resolution can be very high)


GRB mode full image:

My earth station uses solar power to supply power, which enhances the ability to handle abnormal power outages such as power outages. Currently, I use 80W solar power panels and 14AH batteries (only this is on hand for the time being), enough for the antenna to run for a few days.

Photo of the satellite earth station I built:



During the construction process, there are many things that need to be paid attention to, including grounding in electronics and various methods such as magnetic ring shielding to reduce pulse interference in the system, which can reduce the interference to the signal. Be very careful about the location, levelness and alignment of the antenna. Try to avoid high-voltage access to the antenna and keep safety first. It is very important that the antenna must be well-weighted, that is, when the antenna is powered off, the antenna should remain stationary instead of automatically sagging.

Github project address of OpenATS:

Github project address of OpenSatelliteProject:

And building a satellite earth station is not a small project, but a complicated project. The builder needs to have knowledge of computers, geography, mathematics, electronics, radio, etc., as well as good hands-on skills. And building a small earth station is just the beginning, laying a solid foundation for future research on satellite communications and more interesting radios.


There are no reviews yet.

Be the first to review “OpenATS: Build your own satellite earth station”

Your email address will not be published. Required fields are marked *