Wiki sections

Wiki Devices

Demo signal and IQ files

Without a receiver the app runs on two sources: the built-in demo signal with levels known in advance, and IQ recordings — SigMF, WAV or raw cs8, cu8, cs16 and cf32 files. Both are chosen in the start window. This page explains what the demo signal consists of and what of it is really visible on screen, how to open a recording, where the app takes its sample rate and frequency from, and how playback behaves.

The demo signal

In the Select a receiver start window press Demo signal. The app synthesises an IQ stream by itself: twelve signals at fixed frequencies above noise. It is not an imitation of the air but a signal about which everything is known — a convenient way to get to know the window and to watch how different detectors, traces and windows show one and the same thing.

What it consists of

All signals of the demo sit at absolute frequencies 0.9.38, like transmitters on the air: each is visible only when the receive band covers it, and exactly where it is. The app lists the composition itself — in the small description at the bottom of the Source group on the Device tab.

SignalFrequency, MHzLevelDetails
Noisethe whole band−90 dBFSGaussian; −90 dBFS is the power over the whole band, so the floor on the spectrum lies lower and depends on the RBW. In the demo's 16-bit stream quantisation adds 0.6 dB to the noise: it reads −89.4 dBFS.
Tone2254.600−20 dBFSAn unmodulated carrier.
Tone2255.300−45 dBFSAn unmodulated carrier.
Sweeping carrier2255.000 ± 0.150−35 dBFSThe frequency runs in a sawtooth across 2254.85–2255.15 MHz in 0.5 s and starts again.
Pulses2255.700−25 dBFSRepetition rate 71.2 Hz, duty cycle 42 %: a pulse of ≈5.9 ms, a period of ≈14 ms.
Carrier2212.500−40 dBFSUnmodulated.
Two carriers2231.000 and 2231.025−50 dBFS each25 kHz apart.
Noise-like band of 200 kHz2241.300+15 dB over the noiseAbove the visible floor: +14.5 dB.
Noise-like band of 8 MHz2272.000+10 dB over the noiseAbove the visible floor: +9.8 dB.
Burst band of 1 MHz2290.000+20 dB over the noiseAbove the visible floor: +19.4 dB; bursts 20 % of the time, period 50 ms.
Carrier433.920−45 dBFSUnmodulated.
Burst band of 20 MHz5220.000+8 dB over the noiseAbove the visible floor: +8.1 dB; bursts 30 % of the time, period 100 ms.

A band's level is set not in dBFS but by how many dB its density lies above the source noise: that way it is the same at any sample rate. The level of a burst signal is the level within a burst; the average is lower by the share of time.

The description in the “Source” group 0.9.39

The description names the ordered levels and, where quantisation shifts what is visible, the visible number too: “noise −90 dBFS, in the 16-bit stream −89.4: quantisation adds 0.6 dB”, and for the bands “+14.5 dB over the floor (ordered +15 over the noise)”. The folded description takes three lines; the link show the whole description under it unfolds it completely, and then all twelve signals are named (fold the description folds it back). In 0.9.38 the description did not fit into its three lines and named only 5–7 of the 12 signals, and it gave the floor as −90 dBFS.

What of this is visible on screen

The demo stream runs at 2 MS/s; on the author's machine the synthesis keeps up with real time at this rate without losses. The default centre is 2255 MHz, so the screen shows 2254–2256 MHz. Four signals are in it:

SignalWhere it is on screen
The −20 dBFS tone400 kHz below the centre.
The −45 dBFS tone300 kHz above the centre.
The −35 dBFS sweeping carrier±150 kHz around the centre. On the waterfall it is a slanted line repeating twice a second.
The −25 dBFS pulses700 kHz above the centre.

The other eight signals sit elsewhere and appear when you tune there or pass over them with a sweep. Six of them lie in 2200–2300 MHz: set this span with the range fields — for the demo that is already a sweep. The carrier at 433.92 MHz and the band at 5220 MHz are seen when you tune to them. A signal outside the receive band does not fold into it: the synthesis adds only the signals the band covers.

Before 0.9.38 the demo's composition was given as an offset from the centre and moved together with the tuning: the picture was the same at any frequency, in a sweep it repeated from segment to segment, and three components folded into the 2 MS/s band — the main tone fell exactly on zero frequency, under the DC mark.

What to check on it

  • The level of a carrier. The tone at 2254.6 MHz is set to −20 dBFS, the tone at 2255.3 MHz to −45 dBFS: compare the displayed number with them. How the window affects the top of a tone is covered on the page RBW, windows and VBW.
  • The difference between detectors. The pulses are present 42 % of the time. The peak detector and max hold show the level of the pulse itself; the averaging ones show a noticeably lower level. Detectors are covered on the Detectors page.
  • Traces. The sweeping carrier is at each point of its path only part of the time: max hold draws the whole path, and averaging shows it noticeably lower. See Traces.
  • Resolution. The two carriers at 2231.000 and 2231.025 MHz are 25 kHz apart: see at which RBW they show up separately.
  • RBW and windows. The noise floor moves when the RBW changes, and a carrier does not; see RBW, windows and VBW.
  • Sweep. Over 2200–2300 MHz every signal sits where it is, rather than repeating in every segment. See Sweep.

The demo can be “retuned” with the range fields in the side panel header and the overview ruler between 0 and 6 GHz; 0 may be entered in the lower field 0.9.41. The demo has no gains, no choice of sample rates and no transmitter. If the computer cannot synthesise the stream in time, the skipped samples are counted by Ring buffer (drops) — just as with a real receiver.

How to open a recording

A recording is opened in the start window with the Continue without a device button.

  1. Start the app and press Continue without a device.
  2. In the Choose an IQ recording window find the file. The window opens in the recordings folder C:\sdrsa-rec if it already exists, otherwise in your home folder.
  3. The filter shows *.sigmf-data, *.wav, *.cs16, *.cs8, *.cu8, *.cf32, *.c8, *.c16; other extensions are visible in the All files (*) mode.

If you cancel the choice, the app does not quit but returns to the start window. If the file does not open, it shows the cause and returns there as well.

If the app's data folder contains a REC subfolder with recordings, the button asks nothing and takes the first file by name from it. In the installed package this subfolder does not exist by default; the data folder is described on the Settings, files and language page.

In version 0.9.49 the File → Open recording… menu item (Ctrl+O) only shows the file dialog and answers Not implemented: switching the source on the fly does not exist yet. To open another recording or to move to a device, restart the app.

Which files are read

KindHow it is recognisedSample formatsSample rateCentre frequency
SigMFNext to the data file lies a file with the same name and the .sigmf-meta extension. This is how the app itself writes recordings.cu8, ci8, ci16_le, cf32_lecore:sample_ratecore:frequency in the captures
WAVThe .wav extension, exactly two channels — I and Q.8-bit unsigned, 16-bit signed, 32-bit floating pointFrom the headerFrom the auxi chunk if present; otherwise from the file name
Raw fileBy extension: .cs8 or .c8, .cu8, .cs16 or .c16, .cf32.cs8, cu8, cs16, cf32From the file nameFrom the file name

If the SigMF sidecar has the field sdrsa:full_scale, the app reads the samples with that full scale, and the levels are the same as during the recording: ci16_le with a full scale of 2048 (12-bit samples) 0.9.33 and cf32_le with a full scale of 0.25 0.9.43. This is how SDR SA PRO PRO writes the samples of some of its receivers; without this field such a recording would read 24 and 12 dB too low.

In all cases the samples are interleaved I and Q. A WAV over 4 GiB with an RF64 header opens when its data block is the last one in the file, as it usually is; the app has no separate parsing of the RF64 service chunk. Other depths — 24-bit and 32-bit integer WAV, 64-bit floating point, 16-bit big-endian SigMF — are not read yet: the app refuses and names the format.

Where the sample rate and the frequency were taken from is written in the same small line at the bottom of the Source group: next to each number stands its origin — the header, SigMF or the file name.

Sample rate and frequency from the file name

A raw file has no header, so the sample rate has to be in the name. Without it the file will not open — the app says that the sample rate is neither in the header nor in the file name. The frequency is optional: without it the centre is taken as zero and the frequency axis is built around 0 Hz.

WhatHow to write itExample name
Sample rateA number and sps, optionally with a k, M or G prefix; before the number an underscore, a space or a hyphen.capture_8000000sps.cs16
Sample rateA number immediately followed by k or M.fm_100MHz_2.4M.cu8
FrequencyA number and Hz, optionally with a k, M or G prefix.test_433.92MHz_2048ksps.cu8
Frequency and rateThe way SDR Console writes it: F, a space, the frequency.band F 2255000000Hz_8000000sps.cs8

For a WAV only the frequency is taken from the name — the sample rate is in its header. SDR# names such as SDRSharp_20250604_220354Z_2229334898Hz_IQ.wav and GQRX names of the form gqrx_date_time_frequency_rate_fc are recognised too.

The app determines the sample format of a raw file from the extension alone, and it cannot be chosen in the dialog. It reads the .raw, .bin and .dat extensions as cu8, and .iq as cs16. If the file really holds another format, change the extension to the right one first.

Playback

  • In real time. A recording plays at its own sample rate, by the clock: a second of the recording lasts a second. An app that has fallen behind the clock gets more samples at a time and catches up 0.9.30.
  • In a loop. On reaching the end, playback starts over. The joint between the end and the beginning is a break in time, and the app treats it like a retune: the DC estimate and the state of the weighted detectors start afresh.
  • Pause. The Pause button in the Source group, the Space key, or the ▶ and ⏹ buttons in the header of the side panel. After a pause the recording continues from the same place.
  • Position. The Position row in the Source group shows where playback currently is in the file, in per cent.
  • No seeking. You cannot jump to an arbitrary place in the recording, change the speed or switch the loop off.
  • If the computer cannot keep up. A lag of up to half a second the app catches up without losses. Beyond that it does not drag old samples behind it; it skips them and counts them honestly in the Ring buffer (drops) row 0.9.30; the place of the skip is marked, and no spectrum frame is glued across it.
  • Recordings with retunes 0.9.25. If a SigMF holds several captures at different frequencies — which is what the app itself writes when the frequency was changed during a recording — every stretch is played back with its own frequency: the centre on screen switches at the capture boundary.

While a recording is open, Windows keeps the file busy: it can be renamed or deleted after the app is closed.

What differs without a receiver

  • A recording does not retune: in the panel header The source does not retune stands in place of the range fields, and there is no sweep. The band on screen is the band the file was recorded with.
  • The Source group has no Instrument section: no choice of sample rate, no gains, no Reconnect button. The Type row reads file for a recording and sim for the demo.
  • The Transmitter tab says that this source only receives.
  • Levels are in dBFS relative to the full scale of the file's own format. The app does not know what the gain was during the recording.
  • The spectrum analyzer, the traces, the receiver and zero span work with a recording and with the demo just as with a live IQ receiver — within the band of the source.

Limits

  • The source is chosen only at start-up. Open recording… in the menu is not implemented.
  • Playback is always looped and has no seeking.
  • A raw file without the sample rate in its name cannot be opened; rename it.
  • Only cu8, cs8, cs16 and cf32 are read.
  • RF64 is supported only in its typical form, with the data block at the end of the file.
  • The demo signal has a single sample rate, 2 MS/s; most of its signals lie outside the default band, and to see them you have to tune there or pass over them with a sweep.
  • The demo is a synthetic signal with known parameters, not a model of the air: there is no interference, no fading and no neighbouring stations in it.

The common list of the app's limits is on the Limits and roadmap page.

The wiki describes version 0.9.49. Your app's version is shown in the Help menu, under About. Found a mistake? Write to us.