Fingerprint Parameter Priors¶
Note
Layer 3 shipped, Pass-1. The Layer 3 implementation (emitters,
device-fingerprint, tx-impairments, propagation, rx-frontend) landed
on branch rfgen-impl-2026-06-25-105955 (PR #94). The class names,
Pydantic schemas, and Transformation enum members referenced below
match the shipped surface; Pass-1 stubs (GNU Radio OOT emitters,
cellular emitters, Sionna propagation backends) construct cleanly and
raise an EmitterError or ChannelError tagged with
stage="pass1_stub" until backend wiring lands. See
Reference / rfgen.emitters and
Reference / rfgen.channels for the shipped
class roster.
These are first-pass priors for synthetic device-fingerprint generation. They are intended as starting defaults, not final compliance claims. The math and implementation order are specified in Fingerprint Math; this page only collects practical numeric ranges and their verification status.
Most rows carry an accept with caveat note: the cited source exists and the value is in the expected range, but the exact line should be checked against offline copies of the primary source before publication.
Numeric Ranges¶
Impairment |
Consumer typical range |
Lab-grade range |
Primary source |
Confidence |
|---|---|---|---|---|
Carrier Frequency Offset (CFO) |
±2 to ±20 ppm (TCXO / XO-based SDRs and consumer transceivers) |
±0.02 to ±0.1 ppm (OCXO / GPSDO; 3GPP NR UE compliance around 20 to 100 ppb) |
Ettus B200/B210 spec sheet [1]; 3GPP TS 38.101-1 §6.4.1 [2] |
High |
Sample Frequency Offset (SFO) (accept with caveat) |
1 to 20 ppm (consumer SDR, WLAN OFDM symbol clock tolerance ±20 ppm) |
0.01 to 0.1 ppm (OCXO / GPSDO; cellular UE post-AFC) |
TorchSig v2 |
Medium |
IQ Gain Imbalance (accept with caveat) |
0.1 to 1.0 dB (TorchSig prior -1.0 to +1.0 dB) |
below 0.05 dB after digital calibration (AD9371-class) |
TorchSig v2 |
Low |
IQ Phase Imbalance (accept with caveat) |
approximately ±3 degrees uncalibrated (TorchSig default ±2 degrees) |
below 0.2 to 0.5 degrees after digital calibration |
TorchSig v2 |
Medium |
Phase Noise at 1 kHz offset (dBc/Hz, SSB) (accept with caveat) |
-95 to -75 dBc/Hz at 1 kHz (consumer SDR / integrated CMOS, sub-6 GHz to 30 GHz) |
-130 to -150 dBc/Hz at 1 kHz at 1 GHz carrier (OCXO-referenced lab generators) |
3GPP TR 38.803 §6.1.10 Table 6.1.10-1 [6]; Leeson 1966 [7] |
Medium |
Phase Noise at 1 MHz offset (dBc/Hz, SSB) (accept with caveat) |
-110 to -135 dBc/Hz at 1 MHz (AD9361-class, RTL-SDR 10 to 20 dB worse) |
-135 to -155 dBc/Hz at 1 MHz (Keysight E8267D, R&S SMA100B with low-noise option) |
3GPP TR 38.803 §6.1.10 [6]; Leeson 1966 [7] |
Medium |
Rapp PA smoothness factor \(p\) (accept with caveat) |
1 to 4 (most common \(p = 2\) or \(p = 3\)) |
2 to 3 (3GPP / 802.11ad/ax evaluation methodology) |
Rapp 1991 ECSC-2 [8]; MATLAB |
Medium |
Saleh PA model parameters \((\alpha_a, \beta_a, \alpha_\phi, \beta_\phi)\) (accept with caveat) |
canonical TWT fit |
same canonical fit; ±5 to 10 percent device-to-device variation in literature |
Saleh 1981 IEEE Trans. Comm. [10]; MATLAB |
Medium |
DAC Effective Number of Bits (ENOB) (accept with caveat) |
9 to 11 bits (12-bit nominal DACs, e.g. AD9361 in PlutoSDR / USRP B2x0) |
12 to 14 bits (14- to 16-bit DACs, e.g. AD9162-class on USRP X310) |
Ettus X310 spec sheet [11]; Kester MT-003 [12]; IEEE Std 1241-2010 [13] |
Medium |
Verification Follow-Ups¶
The rows marked accept with caveat need a second pass against offline copies of the primary sources.
SFO: Ettus B210 KB page, IEEE 802.11-2020 §17.3.9.5, and 3GPP TS 38.101-1 §6.4.1 were not directly fetched during the research pass. Only the TorchSig
ClockDriftdefault(1, 10) ppmwas verified verbatim.IQ gain imbalance: Consumer and lab-grade ranges rest on literature consensus and an inaccessible AD9371 datasheet. Re-verify against Schenk, Razavi, and AD9371 datasheet Rev. G.
IQ phase imbalance: TorchSig default was verified. AD9361 residual calibration and 802.11 EVM-derived values are interpretive.
Phase noise at 1 kHz: Lab-grade end depends on R&S, Keysight, and Crystek datasheets that were not directly retrieved. Re-verify exact 1 kHz / 1 GHz numbers against current datasheet revisions.
Phase noise at 1 MHz: Specific lab-grade numbers and AD9361 plot reads were not directly fetched. ETSI TR 38.803 Annex A also needs confirmation.
Rapp \(p\): Confirm whether the intended source uses the legacy single-\(p\) Rapp form or a modified Rapp variant.
Saleh parameters: Confirm the canonical parameters against the original Saleh 1981 PDF. Current values are reproduced from MathWorks documentation.
DAC ENOB: Lab-grade upper bound is a nominal-minus-2-to-4-bits rule of thumb. Re-verify against AD9162 or X310 DAC SINAD/ENOB at typical operating bandwidth.
Library Decision¶
Device fingerprinting is not a single off-the-shelf block in Sionna. Sionna provides channel, OFDM, NR, MIMO, coding, signal-processing, and ray-tracing modules, but its public module surface does not expose an SEI-style persistent transmitter identity model that maps device_id to stable CFO, SFO, IQ imbalance, phase noise, PA, and DAC realizations [14].
The researched libraries cover different slices:
TorchSig is the closest Python/PyTorch fit for ML-oriented RF augmentation. Use it directly when a transform matches the needed tensor contract and metadata semantics.
MATLAB Communications Toolbox is a strong validation oracle for CFO, I/Q imbalance, phase noise, and PA distortion [9, 15, 16, 17].
GNU Radio provides runtime blocks for channel offset, noise, timing, and a hierarchical HW Impairments block [18, 19]. It is appropriate as a reference flowgraph or validation backend, not as the default in-process PyTorch dependency.
HermesPy includes oscillator phase-noise models and broader simulation abstractions [20]. It may become a validation or backend option for phase-noise work.
The design consequence is that DeviceFingerprint remains rfgen-owned for orchestration, identity, persistence, and metadata. Individual impairment operators should reuse mature implementations when they can be called directly from the Python/PyTorch data path; otherwise they should be implemented as small, cited formulas and validated against MATLAB, GNU Radio, or HermesPy fixtures.
References¶
Ettus Research. USRP B200 / B210 Product Spec Sheet, 2019. https://www.ettus.com/wp-content/uploads/2019/01/b200-b210_spec_sheet.pdf
3GPP TS 38.101-1. NR; UE radio transmission and reception; Part 1: Range 1 Standalone, Clause 6.4.1. https://portal.3gpp.org/desktopmodules/Specifications/SpecificationDetails.aspx?specificationId=3283
TorchDSP. TorchSig v2 source,
torchsig/transforms/transforms.py, classesClockDriftandIQImbalance. https://github.com/TorchDSP/torchsig/blob/main/torchsig/transforms/transforms.pyIEEE Std 802.11-2020. Part 11: Wireless LAN MAC and PHY Specifications, Clause 17.3.9.5. https://standards.ieee.org/ieee/802.11/7028/
Razavi, B. RF Microelectronics, 2nd ed., Pearson, 2012.
3GPP TR 38.803 V14.4.0. Study on new radio access technology: RF and co-existence aspects, §6.1.10 and §6.1.11. https://www.3gpp.org/ftp/Specs/archive/38_series/38.803/
Leeson, D.B. A Simple Model of Feedback Oscillator Noise Spectrum. Proc. IEEE, 1966.
Rapp, C. Effects of HPA-Nonlinearity on a 4-DPSK/OFDM-Signal for a Digital Sound Broadcasting System. Proc. ECSC-2, ESA SP-332, 1991.
MathWorks.
comm.MemorylessNonlinearitySystem object, Communications Toolbox R2024b. https://www.mathworks.com/help/comm/ref/comm.memorylessnonlinearity-system-object.htmlSaleh, A.A.M. Frequency-Independent and Frequency-Dependent Nonlinear Models of TWT Amplifiers. IEEE Trans. Communications, 1981. https://ieeexplore.ieee.org/document/1094957
Ettus Research / NI. USRP X300 / X310 Specification Sheet, 2024-01-23. https://www.ettus.com/wp-content/uploads/2024/01/X300_X310_Spec_Sheet_2024-01-23.pdf
Kester, W. MT-003 Tutorial: Understand SINAD, ENOB, SNR, THD, THD+N, and SFDR, Analog Devices, 2009. https://www.analog.com/media/en/training-seminars/tutorials/MT-003.pdf
IEEE Std 1241-2010. IEEE Standard for Terminology and Test Methods for Analog-to-Digital Converters, Clause 4.5. https://standards.ieee.org/ieee/1241/4683/
NVIDIA Sionna. Module index. https://nvlabs.github.io/sionna/_modules/index.html
MathWorks.
comm.PhaseFrequencyOffsetSystem object. https://www.mathworks.com/help/comm/ref/comm.phasefrequencyoffset-system-object.htmlMathWorks. I/Q Imbalance block. https://www.mathworks.com/help/comm/ref/iqimbalance.html
MathWorks.
comm.PhaseNoiseSystem object. https://www.mathworks.com/help/comm/ref/comm.phasenoise-system-object.htmlGNU Radio. Channel Model Block. https://wiki.gnuradio.org/index.php/Channel_Model
GNU Radio. HW Impairments. https://wiki.gnuradio.org/index.php/HW_Impairments
HermesPy. Phase Noise. https://hermespy.org/api/simulation/rf/noise/phase_noise.html