This document defines the signal
extension namespace for the Signal Metadata
Format (SigMF) specification. This extension namespace defines how to describe
the attributes of wireless communications signals and their emitters.
signal
does not extend Global.
signal
does not extend Captures.
This extension adds the following optional field to the annotations
global SigMF object:
name | required | type | description |
---|---|---|---|
detail |
false | Detail | Emission details (standard, modulation, etc.) |
emitter |
false | Emitter | Emitter details (manufacturer, geo coordinates, etc.) |
The field of communications is vast, and there may be communications systems
that cannot be described using the names and fields described in this extension.
If you need additional or different fields to describe a system, create a new
extension that adds the necessary fields to the signal
namespace and/or submit
the new fields to be upstreamed into this canonical extension.
name | required | type | description |
---|---|---|---|
type |
false | string | type |
mod_class |
false | string | mod_class |
standard |
false | string | Communication standard (e.g., 802.11ac) |
carrier_variant |
false | string | carrier variant |
symbol_variant |
false | string | symbol variant |
order |
false | uint | order |
duplexing |
false | string | duplexing |
multiplexing |
false | string | multiplexing |
multiple_access |
false | string | multiple access |
spreading |
false | string | spreading |
channel_bw |
false | double | bandwidth |
channel |
false | uint | channel |
class_variant |
false | string | class variant |
The type
field can have the following values:
value | description |
---|---|
analog |
analog modulation scheme |
digital |
digital modulation scheme |
The mod_class
field can have the following values:
value | description |
---|---|
am |
(analog) amplitude modulation |
fm |
(analog) frequency modulation |
pm |
(analog) phase modulation |
ssb |
single side-band |
dsb |
dual side-band |
vsb |
vestigial side-band |
ask |
amplitude-shift keying |
fsk |
frequency-shift keying |
psk |
phase-shift keying |
qam |
quadrature-amplitude modulation |
ook |
on-off keying |
cpm |
continuous phase modulation |
msk |
minimum-shift keying |
The carrier_variant
field can have the following values:
value | description |
---|---|
with_carrier |
with-carrier modulation |
suppressed_carrier |
suppressed-carrier modulation |
reduced_carrier |
reduced-carrier modulation |
single_carrier |
single-carrier modulation |
multi_carrier |
multi-carrier modulation |
The symbol_variant
field can have the following values:
value | description |
---|---|
differential |
differential modulation |
offset |
offset modulation (sometimes called 'staggered') |
The order
field has an unsigned integer value that describes the modulation
order, which typically refers to the number of symbols or states in a digital
modulation (e.g., QAM64 has 64 symbols, QPSK has 4 symbols).
The duplexing
field can have the following values:
value | description |
---|---|
tdd |
time-division duplexing |
fdd |
frequency-division duplexing |
The multiplexing
field can have the following values:
value | description |
---|---|
tdm |
time-division multiplexing |
fdm |
frequency-division multiplexing |
cdm |
code-division multiplexing |
ofdm |
orthogonal frequency-division multiplexing |
sdm |
space-division multiplexing |
pdm |
polarization-division multiplexing |
The multiple_access
field can have the following values:
value | description |
---|---|
fdma |
frequency-division multiple access |
ofdma |
orthogonal frequency-division multiple access |
tdma |
time-division multiple access |
cdma |
code-division multiple access |
sdma |
space-division multiple access |
pdma |
power-division multiple access |
The spreading
field can have the following values:
value | description |
---|---|
fhss |
frequency-hopping spread spectrum |
thss |
time-hopping spread spectrum |
dsss |
direct-sequence spread spectrum |
css |
chirp spread spectrum |
The channel_bw
field has a numeric value describing the channel bandwidth of
the signal. Note that this is different from what may be reported in the core
namespace within an annotation which describes the occupied spectrum of a
signal, which may or may not be comparable to the actual channel bandwidth of
the communications system.
The channel
field has an unsigned integer value that describes the channel
number of the signal within the communication system.
The class_variant
field describes any modifier to the modulation class not
covered by any of the other fields. Examples include pi/4-DQPSK and GMSK.
name | required | type | description |
---|---|---|---|
seid |
false | uint | Unique ID of the emitter |
manufacturer |
false | string | Manufacturer of the hardware used to emit the signal |
power_tx |
false | double | Total transmitted power by the emitter (dBm) |
power_eirp |
false | double | Effective Isotropic Radiated Power in the direction of the receiver (dBm) |
geolocation |
false | GeoJSON | Location of the emitter hardware |
Here is an example of a relatively simple modulation label, which describes a 10 kHz FM signal using time-division duplexing:
{
...
"annotations": [{
"core:sample_start": 0,
"core:sample_count": 500000,
"core:label": "FM TDD",
"signal:detail": {
"type": "analog",
"mod_class": "fm",
"duplexing": "tdd",
"bandwidth": 10000.0
}
}]
}
Another simple example, this time with an emitter object:
{
...
"annotations": [{
"core:sample_start": 0,
"core:sample_count": 1000000,
"core:label": "WIFI",
"signal:detail": {
"type": "digital",
"standard": "802.11ac",
"channel": 8
},
"signal:emitter": {
"seid": 1,
"manufacturer": "linksys",
"power_tx": 27.0
}
}]
}
Here is a more complex example that describes an LTE 5 MHz SC-OFDMA downlink:
{
...
"annotations": [{
"core:sample_start": 0,
"core:sample_count": 2500000,
"core:label": "LTE 12",
"signal:detail": {
"type": "digital",
"mod_class": "qam",
"carrier_variant": "single_carrier",
"order": 16,
"multiple_access": "ofdma",
"bandwidth": 5000000.0,
"system": "LTE Release 12"
}
}]
}
A class variant example describing a pi/4-DQPSK signal:
{
...
"annotations": [{
"core:sample_start": 0,
"core:sample_count": 1000000,
"core:label": "pi/4-DQPSK",
"signal:detail": {
"type": "digital",
"mod_class": "psk",
"order": 4,
"symbol_variant": "differential",
"class_variant": "pi/4"
}
}]
}
An example describing just the ID, power, and location of an emitter:
{
...
"annotations": [{
"core:sample_start": 0,
"core:sample_count": 1000000,
"core:label": "5G-NR",
"signal:emitter": {
"seid": 5428604929,
"power_eirp": 43.0,
"geolocation": {
"type": "point",
"coordinates": [-77.071651, 38.897397]
}
}
}]
}