Skip to content

DIFI-Consortium/DIFI-Certification

Repository files navigation

DIFI Certification

Welcome to the Digital Intermediate Frequency Interoperability (DIFI) Certification GitHub Repo! This repository is used by the DIFI Consortium Working Group to share resources and tooling with DIFI Consortium members and the user community to enable verification, validation and testing of DIFI streams and devices in accordance with the DIFI standards.

DIFI Certification Working Group Projects

DIFI Self-Certification Tooling

Installation and Test on Ubuntu 24

Note, you can install Ubuntu 24 on Windows using WSL, simply open the Microsoft Store and search for Ubuntu 24 and install it, then there should be a new app called Ubuntu 24 that will open a terminal, think of it like a VM without a graphical desktop.

sudo apt update
sudo apt install -y python3 python3-pip python3-venv python-is-python3
python -m venv difi-venv
. difi-venv/bin/activate
pip install -r requirements.txt
python certify_source.py --pcap DIFI_Validator/examples/Example1_1Msps_8bits.pcapng

Certify Source (Parse DIFI)

A PCAP or live UDP stream can be parsed with:

  • PCAP: python certify_source.py --pcap DIFI_Validator/examples/Example1_1Msps_8bits.pcapng
  • UDP: python certify_source.py --udp-port 50003 (e.g. using python certify_sink.py --port 50003 to send it packets)

Use python certify_source.py --help to see all available arguments

You can supply arguments via command line, or as a yaml file, eg python certify_source.py --config certify_source_example_config.yml

The results are printed out to console, as well as saved to files certify_source_summary_.yaml and error_log.txt, which can be copy/pasted into a Word or PowerPoint.

An alternative option is to use the gr-difi example pn11_over_difi_tx.grc to test the UDP mode.

Certify Sink (Generate DIFI)

The following example generates a live UDP stream of DIFI, for 10 seconds, with 10 context packets per second, 2 version packets per second, and data packets corresponding to the requested sample rate and samples-per-packet. The samples sent are a QPSK signal with 4 samples-per-symbol and a rolloff of 0.35, with bits corresponding to the standard PN11 sequence cropped to 2046 due to QPSK being two bits per symbol, more details can be found here.

python certify_sink.py --duration 10 --port 50003 --sample-rate 100e3 --packet-size small --bit-depth 8

There is no command line option for capturing to a pcap because you can simply run tcpdump, e.g., sudo tcpdump -i lo udp port 50003 -w output.pcap, to create a pcap out of the UDP stream being generated live.

DIFI Python Packet Validator

The Packet validator is a collection of Python scripts that generate Standard Context' packets, 'Version Context' packets and 'Data' packets (dcs.py, dvs.py & dds.py) for consumption by a DIFI packet receiver (drx.py). The collection of scripts were released as open source by Kratos Defense to the DIFI Consortium.

DIFI GNU Radio Out of Tree blocks (gr-difi)

The GNU Radio out of tree blocks consist of a "Data" packet Source and Sink blocks and can be found in gr-difi. The collection of GNU Radio blocks were part of gr-azure and released as open source by Microsoft to the DIFI Consortium.

DIFI Wireshark Dissector

The DIFI Wireshark Dissector is a LUA plugin created for Wireshark that allows for packet inspection of DIFI Standard Context, Standard Data and Version Context packets. The plug-in was created by Johanna Rivera. The dissector supports DIFI 1.2 (2024).

DIFI Tutorial (DIFI 101)

The tutorial section is a collection of educational material that describe DIFI packets and include hands on examples to familiarize the reader with DIFI.

Using Git and GitHub

GitHub is a code hosting platform, great for version control and collaboration. It uses Git under the hood, but you don't have to be an expert in Git to make changes to a page.

Downloading the Code

From the browser, you can download the code by clicking the green Code button in the top right, and then clicking Download Zip, as shown below.

Those familiar with Git commands may choose to do the process with a git clone instead. For a tutorial on using Git and GitHub via the command line, including creating your own repo, refer to this series of tutorials.

Making Changes to Text Using Your Browser

To view code on a public GitHub repository (a.k.a. repo) like this one, you don't need a GitHub account. You will need a GitHub account to suggest edits to a page. For making documentation or other text changes, you can do everything from the browser.

In the portion of the page shown below, you can browse the files and directories/folders within this repo (you may see a slightly different set of files and folders). Note that the Readme you see when you go to the repo's main page, is the README.md file. Try browsing through some of the files and folders.

To edit a file, click it, then click the pencil icon circled below:

You will be brought to an in-browser text editor, where you can make your edit. Note the Preview tab at the top, to preview your changes.

When you're done making the edits, scroll to the bottom and under Propose Changes you need to fill out the first bar, with a summary of the change. You can leave the large box empty. Click Propose Changes.

Click the Create Pull Request button as shown below

This will bring you to the Open a Pull Request window, which might seem confusing, but all you have to do is click the green Create Pull Request button at the bottom.

At this point the maintainers of the code will likely receive an email that there is a new change request, known as a "pull request", and they will review it. You might receive emails related to the review process on the email you used to create your GitHub account.

About

DIFI Certification Working Group

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors