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.
| Signal | Frequency, MHz | Level | Details |
|---|---|---|---|
| Noise | the whole band | −90 dBFS | Gaussian; −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. |
| Tone | 2254.600 | −20 dBFS | An unmodulated carrier. |
| Tone | 2255.300 | −45 dBFS | An unmodulated carrier. |
| Sweeping carrier | 2255.000 ± 0.150 | −35 dBFS | The frequency runs in a sawtooth across 2254.85–2255.15 MHz in 0.5 s and starts again. |
| Pulses | 2255.700 | −25 dBFS | Repetition rate 71.2 Hz, duty cycle 42 %: a pulse of ≈5.9 ms, a period of ≈14 ms. |
| Carrier | 2212.500 | −40 dBFS | Unmodulated. |
| Two carriers | 2231.000 and 2231.025 | −50 dBFS each | 25 kHz apart. |
| Noise-like band of 200 kHz | 2241.300 | +15 dB over the noise | Above the visible floor: +14.5 dB. |
| Noise-like band of 8 MHz | 2272.000 | +10 dB over the noise | Above the visible floor: +9.8 dB. |
| Burst band of 1 MHz | 2290.000 | +20 dB over the noise | Above the visible floor: +19.4 dB; bursts 20 % of the time, period 50 ms. |
| Carrier | 433.920 | −45 dBFS | Unmodulated. |
| Burst band of 20 MHz | 5220.000 | +8 dB over the noise | Above 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:
| Signal | Where it is on screen |
|---|---|
| The −20 dBFS tone | 400 kHz below the centre. |
| The −45 dBFS tone | 300 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 pulses | 700 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.
- Start the app and press Continue without a device.
- In the Choose an IQ recording window find the file. The window opens in the recordings folder
C:\sdrsa-recif it already exists, otherwise in your home folder. - 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
| Kind | How it is recognised | Sample formats | Sample rate | Centre frequency |
|---|---|---|---|---|
| SigMF | Next 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_le | core:sample_rate | core:frequency in the captures |
| WAV | The .wav extension, exactly two channels — I and Q. | 8-bit unsigned, 16-bit signed, 32-bit floating point | From the header | From the auxi chunk if present; otherwise from the file name |
| Raw file | By extension: .cs8 or .c8, .cu8, .cs16 or .c16, .cf32. | cs8, cu8, cs16, cf32 | From the file name | From 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.
| What | How to write it | Example name |
|---|---|---|
| Sample rate | A 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 rate | A number immediately followed by k or M. | fm_100MHz_2.4M.cu8 |
| Frequency | A number and Hz, optionally with a k, M or G prefix. | test_433.92MHz_2048ksps.cu8 |
| Frequency and rate | The 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
filefor a recording andsimfor 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.