Skip to main content

RF Network Analyzer based on the Pluto SDR

Project description

Charon VNA

Named after Pluto's moon, Charon uses the ADI Pluto SDR as a vector network analyzer. The basic usage is as a 1 port VNA but this can be extended to arbitrarily many ports with the addition of a couple RF switches.

Installation

  1. Install LibIIO. This is a dependency of PyADI-IIO. On Ubuntu 22.04 just run sudo apt-get install -y libiio-dev

  2. pip install charon-vna

Hardware Setup

You need a few things:

  • Analog Devices Pluto SDR
    • Any variant of the Pluto should work too such as the Pluto+ however I have only tested with the basic flavor
    • Note that you must have two receive ports which means revision C or later of the basic Pluto
  • Directional couplers (1 per port up to 4 ports)
  • Charon switch board - coming soon.
    • Optional. Without this you'll be limited to S11 and uncalibrated S21 measurements (with required re-cabling)
    • There's nothing special about this particular board, if you want more than 4 ports you can make your own pretty easily. You just need 3 SPxT switches. Note that these switches will see tons of cycles so avoid mechanical switches
  • SMA cables
  • Calibration standard
    • Ideally something with s-parameters measured on a better VNA
    • I have used a basic SMA load and two modified SMA jacks with decent results

Pluto Configuration

Most of my testing is with Pluto firmware v0.39 though this may work with other firmware versions. I had issues with the Pluto sometimes seeing no signal which resolved when I upgraded from v0.35. Instructions for upgrading firmware are on the Analog Devices wiki.

We need two receive channels on the SDR. If you have a Pluto+ that should already be configured and you can skip this step.

Analog devices has a guide for enabling the second channel. Ideally this should be set as ad9361 to enable a wider band of operation in addition to the second channel, however the critical setting is enabling 2r2t. SSH into the Pluto and run the following:

fw_setenv attr_name compatible
fw_setenv attr_val ad9361
fw_setenv mode 2r2t

Usage

There will be some sort of GUI because that sounds useful. It will also be accessible over a socket to enable test automation with external (including non-python) code.

Calibration

TBD

Power Calibration

I include a default output power lookup table. This is derived from two TX channels of two Pluto SDRs and does not include any of the loss of a coupler or Charon switch board.

Absolute output power is generally not well calibrated for VNAs anyway and has negligible impact on most measurements so this is probably sufficient for most users. If you're trying to run a power sweep this may be insufficient.

If you have an RF power meter you can generate your own power calibration.

Note that unlike the main calibration, power calibration frequencies do not need to match the measurement frequencies. Values are interpolated.

References

Pluto Default Connection Settings

user: root password: analog ip: 192.168.2.1

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

charon_vna-0.2.0.tar.gz (60.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

charon_vna-0.2.0-py3-none-any.whl (20.5 kB view details)

Uploaded Python 3

File details

Details for the file charon_vna-0.2.0.tar.gz.

File metadata

  • Download URL: charon_vna-0.2.0.tar.gz
  • Upload date:
  • Size: 60.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.6

File hashes

Hashes for charon_vna-0.2.0.tar.gz
Algorithm Hash digest
SHA256 da97d50e9d6c570d6009dbafd3da9d360d964afc0b7f185967ede2835c0e35bb
MD5 31a6fccfd589f0ab2bb05bff341e8ea4
BLAKE2b-256 2b81959c8f545fcb130b10ab97b5742e0b19abd333ae44064bf0294a44d4bc90

See more details on using hashes here.

File details

Details for the file charon_vna-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: charon_vna-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 20.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.6

File hashes

Hashes for charon_vna-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 bbbfbf3197647f996ef81881551a00694478a10bd1b82d4e43f80e6dbe51fd81
MD5 9d26c0eada83fdd1a24d49ba33201044
BLAKE2b-256 922e1b7dc59f1364572dba38eb1f8b73c8578f132c70eb41c5d420035539c420

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page