• Stars
    star
    238
  • Rank 169,306 (Top 4 %)
  • Language
    Python
  • License
    Creative Commons ...
  • Created almost 8 years ago
  • Updated almost 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

The Signal Metadata Format Specification

Signal Metadata Format (SigMF)

Welcome to the SigMF project! The SigMF specification document is the sigmf-spec.md file in this repository. Below we discuss why and how you might use SigMF in your projects.

Introduction

Sharing sets of recorded signal data is an important part of science and engineering. It enables multiple parties to collaborate, is often a necessary part of reproducing scientific results (a requirement of scientific rigor), and enables sharing data with those who do not have direct access to the equipment required to capture it.

Unfortunately, these datasets have historically not been very portable, and there is not an agreed upon method of sharing metadata descriptions of the recorded data itself. This is the problem that SigMF solves.

By providing a standard way to describe data recordings, SigMF facilitates the sharing of data, prevents the "bitrot" of datasets wherein details of the capture are lost over time, and makes it possible for different tools to operate on the same dataset, thus enabling data portability between tools and workflows.

SigMF signal recordings typically involve a data file (e.g., a binary file of IQ or RF samples) and a metadata file containing plain text that describes the data. Together these files represent one recording, such as example.sigmf-data and example.sigmf-meta. Here is a minimal example of a SigMF .sigmf-meta file:

{
    "global": {
        "core:datatype": "cf32_le",
        "core:sample_rate": 1000000,
        "core:hw": "PlutoSDR with 915 MHz whip antenna",
        "core:author": "Art Vandelay",
        "core:version": "1.0.0"
    },
    "captures": [
        {
            "core:sample_start": 0,
            "core:frequency": 915000000
        }
    ],
    "annotations": []
}

Using SigMF

There are at least four ways you can use SigMF today, thanks to the community-supported projects:

  1. Within Python, using the official SigMF Python package sigmf available from pip: pip install sigmf
  2. Within C++ using the header-only C++ library libsigmf maintained by DeepSig
  3. Within GNU Radio using the out-of-tree module gr-sigmf maintained by SkySafe
  4. Manually, using our examples and the spec itself, even if it's simply editing a text file

Contributing

The SigMF standards effort is organized entirely within this Github repository. Questions, suggestions, bug reports, etc., are discussed in the issue tracker, feel free to create a new issue and provide your input, even if it's not a traditional issue. Changes to the specification only occur through Pull Requests. This ensures that the history and background of all discussions and changes are maintained for posterity.

There is also a SigMF chat room on GNU Radio's Matrix chat server where you can ask SigMF-related questions, or participate in various discussions. Lastly, there are monthly SigMF calls covering a variety of topics, on the third Monday of each month at 11:30AM Eastern/New York Time, please email [email protected] for an invite and Zoom link.

Anyone is welcome to get involved - indeed, the more people involved in the discussions, the more useful the standard is likely to be!

Extensions

The "Core" SigMF standard is intentionally kept limited in scope, additional metadata fields can be added through SigMF Extensions. For example, the signal extension provides a standard way to specify modulation schemes and other attributes of wireless comms signals. Several general purpose canonical extensions live within this repository directly in the extensions directory, while others are maintained by third parties. Below we include a listing of some popular, compliant SigMF extensions. To have your extension reviewed for inclusion on this list, please open a PR adding the repository to the list below:

Frequently Asked Questions

Is this a GNU Radio effort?

No, this is not a GNU Radio-specific effort. It is hosted under the GNU Radio Github account because this effort first emerged from a group of GNU Radio core developers, but the goal of the project to provide a standard that will be useful to anyone and everyone, regardless of tool or workflow.

Is this specific to wireless communications?

No, similar to the response, above, the goal is to create something that is generally applicable to signal processing, regardless of whether or not the application is communications related.

It seems like some issues take a long time to resolve?

Yes, and in most cases this is by design. Since the goal of this project is create a broadly useful standards document, it is in our best interest to make sure we gather and consider as many opinions as possible, and produce the clearest and most exact language possible. This necessarily requires extreme attention to detail and diligence.

More Repositories

1

gnuradio

GNU Radio – the Free and Open Software Radio Ecosystem
C++
4,965
star
2

volk

The Vector Optimized Library of Kernels
C++
532
star
3

pybombs

PyBOMBS (Python Build Overlay Managed Bundle System) is the GNU Radio install management system for resolving dependencies and pulling in out-of-tree projects.
Python
413
star
4

gr-inspector

Signal Analysis Toolbox for GNU Radio
C++
270
star
5

gr-recipes

Main GNU Radio recipe repository for use with PyBOMBS
121
star
6

gr-tutorial

A tutorial OOT module for GNU Radio
CMake
113
star
7

gr-etcetera

Additional PyBOMBS recipes that aren't in gr-recipes
83
star
8

gr-bokehgui

Web based display for GNU Radio applications
C++
82
star
9

gr-dpd

Digital Pre-Distortion implementation in GNU Radio
C++
36
star
10

greps

GNU Radio Enhancement Proposals
31
star
11

gnuradio-livesdr

Scripts for creating GNU Radio Live SDR Environment.
Shell
29
star
12

newsched

The GNU Radio 4.0 Runtime Proof Of Concept
C++
22
star
13

gnuradio-docker

Script automation for creating canonical GNU Radio docker images
Dockerfile
19
star
14

gr-verilog

C++
14
star
15

gnuradio-buildbot

Configuration for the GNU Radio CI system powered by Buildbot
Dockerfile
13
star
16

gr-cuda

CUDA Custom Buffers and example blocks
C++
13
star
17

hugo-website

Sources for the GNU Radio hugo website
CSS
12
star
18

pmt

pmt
C++
11
star
19

cgran

cgran.org Django website
Python
11
star
20

cusp

Library of CUDA Kernels for Signal Processing
C++
11
star
21

pybombs-docker

Dockerfiles for running PyBOMBS
Dockerfile
10
star
22

recipes_legacy

Repository containing a set of recipes for pybombs
9
star
23

gnuradio-companion

Python
5
star
24

gr-logo

The official GNU Radio logo
TeX
4
star
25

gr-website

4
star
26

gnuradio-ngsched

GNU Radio fork for capturing major changes to the scheduler before merging back into the main repo
C++
4
star
27

gr-governance

GNU Radio Rules of Association
3
star
28

pybombs_legacy

Original oldschool PyBOMBS1 code.
Python
2
star
29

gnuradio-metadata

Metadata associated with the GNU Radio Repository
Python
1
star
30

sigmf-python

Python
1
star
31

pkg-gnuradio

1
star
32

pkg-volk

1
star