Presto QO-100 Transverter (Work in progress)
Top side of the motherboard
Description
Presto is a transverter that allows you to use a standard 10 m capable transceiver to communicate via the QO-100 satellite. It provides an S-band uplink (2.4 GHz), while the downlink can be received directly on your HF radio, since Presto also processes the signal from the Ku-band LNB.
It's all about signal quality
Presto employs several techniques to achieve a clean uplink signal. This is challenging with the low input frequency of the 10 m band compared to the desired 2.4 GHz. Directly mixing 30 MHz with a ~2.4 GHz local oscillator would result in spurious signals very close to the desired carrier.
To solve this, Presto first generates an intermediate frequency at 433 MHz. At this frequency, it is easier to implement sharp band-pass filters that remove unwanted mixing products. Additional separation is achieved by following the first mixer with a triplexer. This circuit has passband characteristics for the IF and its input is well matched to 50 Ohms across a wide spectrum. As a result, the IF port of the first mixer does not experience impedance mismatches at frequencies where spurious products occur. Instead, these spurious emissions are dissipated in resistive loads connected to the other two ports of the triplexer. This approach reduces intermodulation in the mixer.
The choice of mixers was also critical. Both mixers feature low LO leakage and high intercept points. To drive the mixers with a high IP3, a local oscillator with substantial output power is required, about 13 dBm in this case. For maximum flexibility and upgradability, Presto’s local oscillators are mounted on separate modules.
Control head withouth LCD attached
Modular construction
Presto uses a modular construction, with the motherboard (MB) PCB serving as the foundation of the entire system. Each functional section of the schematic is implemented in a physically distinct area of the PCB. To improve isolation between RF stages, shielding is used extensively. The power supplies are located at the bottom of the motherboard.
The local oscillators are designed as swappable modules, allowing future upgrades for improved phase noise performance or operation with different frequency plans. The control head serves as the device’s front panel and is also replaceable.
LNB front end
The advantages go beyond downconversion, as the signal is preconditioned before reaching the downconverter. The LNB front end includes two band pass filters to remove out of band signals, an attenuator to reduce signal levels and minimize distortion, and a 13 dB LNA with bypass functionality. The signal from the LNB is then split between the built in downconverter and an output for an external SDR. This allows continuous monitoring of the downlink even while transmitting an essential capability for microwave operation.
Presto includes a bias-Tee and a programmable power supply, allowing two selectable DC voltage levels to be applied to the LNB coaxial connector. This feature enables polarization control in most LNBs, where the applied voltage determines vertical or horizontal polarization.
Back of motherboard
HF to IF (and LNB to HF) section
Presto - current state of project
Software
Presto uses STM32F411 as the main microcontroller, running C code with FreeRTOS. This offers good responsiveness of the graphical interface while maintaining the possibility to serve the interrupts in predictable time. For optimal use of mcu resources most demanding peripherals are also using DMA (LCD SPI which sends a lot of data, ADC which continuously samples many channels, UART which may receive or send a long string). The control head is the PCB that holds the actual microcontroller, LCD module attaches to it. In the receive mode the screen displays the down link frequency (DW), this is what LNB is actually tuned to. The up link (UP) is the transmit frequency that will be output in TX mode. Transceiver frequency (TRX) is a frequency to which an external transceiver should be tuned to. Tuning transceiver to the TRX ensures that the displayed uplink and downlink frequencies match the actual frequencies. Using the select button (second from the bottom) the user can select which frequency to change on the transverter. Transverter keeps track (top button) of the frequency offset from the TRX, therefore retuning of TRX is not necessary. In track mode no matter whether DW or UP is chosen, change of one will cause the same change in other. Disabling the tracking option allows for split operation where DW and UP can be changed individually. Choosing TRX as a selected frequency will change the transceiver frequency that the transverter is tuned to. Each change of frequency is saved to on board EEPROM.
The menu button displays a scrollable list of options, using encoder it is possible to turn on LNA, set polarization of LNB, LNB LO, and similar settings. The final page of the menu shows diagnostics information like SW version, PCB revisions, voltage readings and such. The transverter runs a built-in self test on each startup and monitors power good lines and inner voltages for abnormalities.
Each PCB of transvert has its own EEPROM that stores serial number, project ID number, revision, configuration, last used settings etc... The control head also stores information such as power on times and last error codes. For reliability of reading proper configuration settings, CRC mechanism is used.
Main board exposes UART port thru optoisolators. Unfortunately optoisolators have proven to be too slow for this kind of application, next revision will use proper digital isolators. The serial interface can be used to remotely manage the transverter. Embedded software implements my simple interpreter that I called B.A.S.I.C. (Basic Automated SCPI Interpreter for Controllers). BASIC triggers on UART interrupt and processes SCPI like commands. SCPI commands are common in automation of test measurement instruments, they are very handy and natural in this type of systems since interface can be split into subsystems. Beside controlling the basic (no pun intended) settings such as frequency or polarization of LNB, BASIC also includes a service mode where access to EEPROM (POKE and PEEK) is implemented. Service mode can be used during production allowing for automated alignment and saving of calibration data.
Main screen in receive mode
Diagnostic menu
Settings menu
Project in Progress
October 2026 Update:
As of October 2026, I have brought the embedded software to a satisfactory state. Some of its features include:
- B.A.S.I.C. (Basic Automated SCPI Interpreter for Controllers) allows for remote operation using SCPI like commands. For example, remote readout and setting of frequency, AGC state, LNB voltage, and many other parameters can be performed over a serial interface.
- Service mode, activated via BASIC, allows for superuser commands. In this mode, it is possible to write directly to all EEPROM ICs, allowing for automated calibration of the entire device using Python scripts and programmable test and measurement equipment. Wrappers for setting calibration values are also avaliable.
- BITE (Built In Test Equipment): The device performs an extensive self test on power up and regular self tests during operation. Error codes and their descriptions are displayed on the screen. A list of recent error codes is stored in memory.
- Advanced memory handling: The software checks the state of memory upon startup. If the CRC check fails, only default values will be loaded.
- An option menu with several pages of settings and a special diagnostic screen.
- Automatic gain control, protecting the signal path from excessively strong signals.
- The user can set and save options such as transmit power and brightness using the graphical interface.
I have also prepared Python scripts that program default values into the EEPROM ICs according to predefined memory maps. Memory clearing and the conversion of floating point numbers into calibration values for the ADCs and DACs are also ready.
This project was on hold for some time because I did not have a spectrum analyzer capable of reaching 2.4 GHz. Now that I can measure the entire signal path, I have noticed lower than expected output power and spurious signals from the second LO.
From the pictures below, you can also see that I have switched to the TCA9554 GPIO expander. The library and evaluation board documentation can be found on my GitHub. In addition, I have added an amplifier for the first LO, since this mixer has proved to work better with a local oscillator signal stronger than the 13 dBm used previously.
Assembled prototype
SAssembled prototype
Upgraded home lab
GitHub:
Motherboard
Control Head and SW (coming soon)
LO Module (coming soon)
Schematic