Electronics, Linux system development, Radio & antennas, Radioastronomy, Software

Satellite LNB controller with GUI interface

Satellite LNB are quite cheap and easy to get devices. There are different models for different bands (C, Ku, and Ka) with different characteristics like SNR, noise figure, etc. Typically those devices are used with TV Set-top boxes.
More interesting is that LNB can be easily connected to an SDR receiver. LNB is a simple frequency down-converter with an output band in 950-1750 MHz (typically), which is great for all known SDR. This gives the ability to discover higher frequency ranges (10-12 GHz and even 18-21 GHz): receive and analyze satellite signals. Additionally, you can use such a setup in amateur radio astronomy.

LNB operation

Of course, there are professional LNB models for the telecommunication systems. Those LNB have excellent characteristics and can provide different connection options. But they are expensive and not interesting for HAM usage. The operation principle of the “home” LNB and professional systems are the same.

To operate correctly, satellite LNB requires different voltages to select signal polarization (Vertical/Right or Horizontal/Left). Additionally, some LNB can switch to the secondary LO (higher band) when an injected 22 kHz tone signal is directed on the power supply line.

You can find all Polarization/Band parameters in the tables down below.

C-band LNB

LNB Supply voltagePolarizationLO frequencyFrequency bandIF range
13 VVertical5.15 GHz 3.40–4.20 GHz 950–1750 MHz
18 VHorizontal5.15 GHz 3.40–4.20 GHz 950–1750 MHz

Ku-band LNB, North America

LNB Supply voltagePolarizationLO frequencyFrequency bandIF range
13 VVertical10.75 GHz11.70–12.20 GHz 950–1450 MHz
18 VHorizontal10.75 GHz11.70–12.20 GHz 950–1450 MHz

Universal Ku-band LNB, Europe

LNB Supply voltageTone signalPolarizationLO frequencyFrequency bandIF range
13 V0Vertical9.75 GHz10.70–11.70 GHz950–1950 MHz
18 V0Horizontal9.75 GHz10.70–11.70 GHz950–1950 MHz
13 V22 kHzVertical10.60 GHz 11.70–12.75 GHz1100–2150 MHz
18 V22 kHzHorizontal10.60 GHz 11.70–12.75 GHz1100–2150 MHz

North America DBS LNB

LNB Supply voltagePolarizationLO frequencyFrequency bandIF range
13 VRight-hand11.25 GHz12.20–12.70 GHz950–1450 MHz
18 VLeft-hand11.25 GHz12.20–12.70 GHz950–1450 MHz

Europe DTH LNB

LNB Supply voltagePolarizationLO frequencyFrequency bandIF range
13 VRight-hand 10.75 GHz 11.7 GHz–12.75 GHz 1100–2150 MHz
18 VLeft-hand 10.75 GHz 11.7 GHz–12.75 GHz 1100–2150 MHz

Ka-band LNB

LNB Supply voltageTone signalPolarizationLO frequencyFrequency bandIF range
13 V0Vertical19.25 GHz20.2–21.2 GHz950–1950 MHz
18 V0Horizontal19.25 GHz20.2–21.2 GHz950–1950 MHz
13 V22 kHzVertical20.25 GHz 21.2–22.2 GHz950–1950 MHz
18 V22 kHzHorizontal20.25 GHz 21.2–22.2 GHz950–1950 MHz

Ka-band LNB (Saorsat)

LNB Supply voltagePolarizationLO frequencyFrequency bandIF range
13 VRight-hand21.20 GHz 19.7 GHz–20.20 GHz 1000–1500 MHz
18 VLeft-hand21.20 GHz 19.7 GHz–20.20 GHz 1000–1500 MHz

LNB controller

I decided to build and share this simple LNB controller. The controller is controlled with PC software (GUI and CLI) over the USB.
There are two independent channels, so it’s possible to run and tune two independent LNBs.

The controller produces a stable 13/18 v and 22kHz signal. It’s required to use an external Bias-T circuit. I’m using this popular bias-T model (it also can be found on Aliexpress).
The Bias-T box requires a tiny rework. It’s important to remove one big capacitor. This helps to save the injected 22 kHz signal.

Here is an example of the hardware setup. HackRF One SDR + Bias-T + LNB controller. Receiving satellite signals from the satellite antenna.

Hardware is quite simple. The controller is based on a popular STM32F103 MCU board, aka “Blue Pill.” In my case, it’s a black “STM32 MINI” from RobotDyn. I found this version of the “pill” is of better quality and more reliable. The rest of the LNB controller is built on a breadboard with SMD and through-hole components. Voltage regulators are based on LM317.

The board schematic is down below. All signals are just connected to the appropriate MCU board pins.

As a Step-up converter, I’m using the MT3608 board. This converter can be replaced with anything that can provide up to 20V and stable >=400 mA. A low noise converter is better. Sure, this converter can be removed and use just a good enough external power supply.
There are two power options for the converter:

  • USB from the MCU board. But it would be best if you had a really good USB connector, cable, and host that can provide enough current.
  • External PSU.

You can see here a power switch (Q1 MOSFET) that allows completely disable and enable the power. A voltage regulator is based on the popular LM317T and configurable resistor divider. The tone signal is injected into the voltage control line. It’s better to use a film capacitor here.

This voltage regulator produces a little bit higher voltages. This is required in case of possible long RF cable, but still in a valid range.
You can see oscillograms down below.
Clean 14V (Vertical/Right polarization) and with 22kHz signal injected.
The tone signal should be 50-60% duty cycle and ~650 mV peak to peak. I’m using a 55% duty cycle, and this is Ok for all my LNBs.







Controller software

You can find the full description, hardware schematics, MCU firmware, and desktop application sources on my GitHub here: https://github.com/olegkutkov/satellite-lnb-controller

STM32 controller firmware source code can be found here: mcu_firmware

To compile this project you will need gcc-arm-none-eabi package

Firmware compilation:

cd mcu_firmware

Also, there are already compiled binaries in mcu_firmware/precompiled

Please configure STM32 boot pins accordingly to the GitHub project page.
MCU firmware can be flashed with “upload” command.

make upload

There is a “Hello” blink pattern on the board LEDs if a successful firmware starts.

Desktop application

There are GUI and console applications that live here. Both programs can be run on Linux and macOS (Intel) systems.
GUI is written with the GTK-3 framework.
You will need gtk-3.0 library and development files to build and run the GUI application.

On the Linux system install libgtk-3-dev package and you ready to build the program.
On the Apple system (x86) you can install gtk+3 libraries with homebrew.

brew install epoxy
brew install gtk+3

Library installation may take some time.
It’s important to export PKG_CONFIG environment variable with a path to the installed library and header files.

export PKG_CONFIG_PATH=/usr/local/Cellar/libepoxy/1.5.4_1/lib/pkgconfig/:/usr/local/Cellar/gtk+3/3.24.24/lib/pkgconfig/

Probably you will need to change packages versions to your current version. Please verify the paths.

Now everything is ready to build the desktop software. You can type make to build both programs (GUI and console). Alternatively, you can type make gui or make cli to build only one of the programs.

The GUI program is quite straightforward. You can select your serial device (typically it’s /dev/ttyACMX on Linux and /dev/tty.cu.usb* on the Apple system). The list of the available devices is built automatically during the program start-up. Then you can switch On and Off the system power supply and configure both LNB channels (polarization and 22KHz tone signal). The program is constantly measured output voltages of the channels. The Refresh interval is 500 ms.
Additionally, this program reads the whole state of the hardware to be in sync GUI-hardware state.

Also, you can do everything with the console version. This is might be helpful for a custom and automatic satellite receiver or signal scanner.

You need to specify the serial device path and required command. For example, get the current state of the hardware:

lnb_controller-cli -p /dev/ttyACM0 -g

Enable and disable the power supply:

lnb_controller-cli -p /dev/ttyACM0 -w 1
lnb_controller-cli -p /dev/ttyACM0 -w 0

Switch channel one LNB to the Horizontal polarization and enable 22kHz signal:

lnb_controller-cli -p /dev/ttyACM0 -c 1 --horizontal_pol
lnb_controller-cli -p /dev/ttyACM0 -c 1 --tone_on

Console program on macOS:

Thanks for reading and happy RF hacking!

Tagged , , , , , ,

4 thoughts on “Satellite LNB controller with GUI interface

  1. Очень интересное решение!
    Попробую собрать.
    Можно вместо Bais-T вот такое поставить?


    Я через него сейчас разные LBNы на HackeRF слушаю ,правда пока без 22 кГц, просто 18 Вольт подаю.

  2. I am not good enough to make projects like that myself, but I love reading your side and your spirit! Keep going!

Leave a Reply

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.