Skip to content

PentHertz/lotus_budc_controler

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BUDC Controller for Lotus Communication Systems devices

A cross-platform C application to control Lotus Communication Systems Block Up/Down Converters (BUDC) via serial port.

This project provides two interfaces:

  1. budc_cli: A command-line tool for scripting and direct command execution.
  2. budc_gui: A graphical user interface built with ImGui for interactive control.

Features

  • SCPI command communication for BUDC devices
  • CLI for automation and scripting
  • GUI with Dear ImGui for interactive control
  • Cross-platform support: Windows and Linux (soon macOS)
  • Build automation and Docker support
  • Precompiled binaries released on GitHub for Windows and Linux
  • Licensed under LGPL

Prerequisites

  • A C Compiler (GCC, Clang, MSVC)
  • CMake (version 3.15 or newer)
  • Git

Dependencies

The project uses CMake's FetchContent to automatically download and build:


How to Build

🧬 Clone the repository

git clone https://github.com/PentHertz/lotus_budc_controler.git
cd lotus_budc_controller

🛠️ Build the project

mkdir build && cd build
cmake ..
make 

And you can install it running the following command:

make install

On Windows with Visual Studio:

cmake --build build --config Release

The executables budc_cli (or budc_cli.exe) and budc_gui (or budc_gui.exe) will be located in the build/src/ directory.


How to Run

CLI (budc_cli)

The CLI is used for sending single or scripted commands over a specified serial port.

List available serial ports:

./build/src/budc_cli --list

If you have installed it through make, you can directly use the budc_gui command line.

Show help and available commands:

./build/src/budc_cli --help

Example output:

BUDC Command Line Interface
Usage:
  budc_cli --list                           List available serial ports
  budc_cli --port <name> [COMMANDS]

Commands:
  --status              Get a full status report
  --cmd "<cmd>"           Send raw SCPI command
  --freq <ghz>          Set frequency in GHz
  --freq-hz <hz>        Set frequency in Hz
  --freq-mhz <mhz>      Set frequency in MHz
  --power <level>       Set power level
  --get-freq            Get current frequency
  --get-power           Get current power level
  --get-temp            Get temperature
  --get-lock            Get lock status
  --preset              Reset to preset values
  --save                Save settings to flash
  --wait-lock           Wait for PLL to lock (5s timeout) after a set command

Examples:
  budc_cli --port /dev/ttyACM0 --status
  budc_cli --port COM3 --freq 5.5
  budc_cli --port COM3 --freq 2.4 --wait-lock

Example execution:

budc_cli --port /dev/ttyACM0 --status

Output:

--- BUDC Status Report ---
  Identity:      LOTUS,BUDC3G20GE,244003,v21.11.16
  Serial Number: 244003
  Firmware:      v21.11.16
  Frequency:     2.2000 GHz
  Lock Status:   UNLOCKED
  Temperature:   51.0 C
  Power Level:   32

GUI (budc_gui)

BUDC GUI Screenshot

The GUI launches directly into an interactive window built with Dear ImGui:

./build/src/budc_gui

No command-line arguments are needed.


Build Script

Instead of using Docker, this project includes a pre-configured build script for Linux environments.

🧪 Using build_script.sh

chmod +x build_script.sh
./build_script.sh

This script handles:

  • Dependency checks
  • Fetching sources
  • Building both CLI and GUI
  • Storing binaries under build/

Precompiled Binaries

Tagged GitHub releases include precompiled binaries for:

  • Linux (x86_64)
  • Windows (x86_64)

👉 Download from the Releases page.


License

This project is licensed under the GNU Lesser General Public License (LGPL). See the LICENSE file for details.


About

BUDC Controller for Lotus Communications Systems up/down converters

Resources

Stars

Watchers

Forks

Packages

No packages published