Wiki Receiver and transmitter
Transmitter
The Transmitter tab is a test-signal generator for HackRF One: a carrier, two tones, a sweep across the band, noise, an analogue video test card and playback of an IQ recording from a file. The transmitter is deliberately inconvenient in two places: it does not switch on without a confirmation, and after the app starts the gain is at zero.
The HackRF One output is unfiltered: its harmonics go on the air together with the set frequency. Transmit into an antenna only if you are authorised to use that frequency. For bench tests, connect a dummy load or work in a shielded path. Responsibility for what goes on the air rests with whoever presses the button.
Safeguards
- Confirmation. The Transmit button stays inactive until the I understand that this transmits on the air checkbox is ticked. The checkbox is cleared every time the app starts.
- Zero gain. Every time the app starts, TX VGA is at 0 dB and Amplifier +14 dB is off. They are not reset before each transmission: what you set stays until the app is closed.
- Auto stop. By default a transmission stops by itself after 1 minute (60 s) and shows the Transmission stopped by time limit window.
- Indicator. While the signal is going out, a red dot and the caption ON AIR · … s are shown next to the button; otherwise it reads not transmitting or no instrument.
Sending a signal
- Connect a dummy load or the path under test to the HackRF One output.
- Tune the device to the required frequency and choose the sample rate (for the carrier, two tones, sweep and noise — 8 MS/s or less, see the limits).
- On the Transmitter tab choose the Signal and set its parameters.
- Check Amplitude, TX VGA, the amplifier and Auto stop.
- Tick I understand that this transmits on the air and press Transmit. To stop, press Stop in the same place.
Which frequency the signal goes out on
The transmission goes out on the frequency the device is tuned to — the centre of the captured band, the Center field in the Source group on the Device tab. The Frequency group on the transmitter tab is the same VFO as on the other tabs; it does not affect the transmit frequency.
The device's own local-oscillator leakage sits exactly on the tuned frequency. That is why the tone is offset from it by 100 kHz by default: otherwise it could not be told apart from that leakage.
Signals
| Signal | What goes on the air |
|---|---|
| Carrier (CW) | a single tone offset from the tuned frequency |
| Two tones | a pair of tones around the offset; each gets half the amplitude, so together they do not exceed full scale |
| Band sweep | a linear frequency sweep around the tuned frequency, repeated in a loop |
| Noise | Gaussian noise over the whole band with the same RMS level as a carrier of the same amplitude |
| Silence (zero) | zero samples: the transmitter is on, there is no signal |
| Test card (video) | analogue FM video, PAL or NTSC — see below |
| Recording from a file | an IQ recording, verbatim — see below |
The carrier, two tones, sweep and noise are waveforms for measuring your own chain: an amplifier, a filter, an antenna. Two tones are the classic linearity test: third-order products land next to their tones and are visible on the spectrum. The sweep traces the frequency response of a filter or a path. The test card checks a video receiver, and playback of a file puts on the air exactly what was once received.
For the carrier, two tones and the sweep their own sliders appear below the list; noise and silence have none:
- Tone offset
- For the carrier and two tones. From −2 to +2 MHz, 100 kHz by default.
- Tone spacing
- For two tones: the distance between them. From 1 to 500 kHz, 20 kHz by default. The tones stand symmetrically around the Tone offset.
- Sweep width
- The width of the sweep. From 10 kHz to 10 MHz, 1 MHz by default.
- Sweep period
- How many milliseconds the sweep takes to cross its width. From 1 to 1000 ms, 10 ms by default.
These four parameters can be turned while transmitting; the Description field then says in words what exactly is going on the air, for example "carrier at a 100.0 kHz offset". Change the signal itself with the transmission stopped: stop it, choose another one and start again. While the device transmits, the panel shows the controls of the signal the transmission started with. If you pick another generator waveform in the list meanwhile (carrier, two tones, sweep, noise, silence), that one goes on the air — the Description field shows it — but the controls stay the previous ones. The test card and a recording from a file cannot be switched in while transmitting.
Test card (video)
The card is analogue FM video of the kind FPV cameras transmit. The signal is built ahead and played in a loop; the loop seam is stitched in phase, so it produces no splash in the spectrum.
- Card
- SMPTE card (the default), EBU bars 100/0/75/0 or Measurement: grid, staircase, bursts. Bars check colours and levels; the measurement card shows geometry, linearity and the frequency response of the video path.
- Standard
- PAL (the default; a 64.0 µs line, 312 lines per field) or NTSC (63.56 µs, 262 lines). The colour subcarrier is put in for PAL only.
- Sound subcarrier at 6.5 MHz
- On by default. Adds the subcarrier real FPV transmitters have; it carries no sound programme. Needs a sample rate of at least 15.2 MS/s.
- Carrier offset
- The offset of the video carrier from the tuned frequency: from −2 to +2 MHz, 0 by default. An offset raises the sample rate needed for colour and for the sound subcarrier.
- Loop
- The length of the built loop in milliseconds. Shown while transmitting.
- Out of band
- The share of power, in decibels, that does not fit the device's band and folds back — that is, goes on the air where it was not asked to. Above −30 dB the value turns yellow.
What fits into the signal is decided by the device's sample rate, and the panel says so in a yellow line before the button is pressed:
| HackRF One sample rate | What is transmitted (carrier offset 0) |
|---|---|
| 2 and 4 MS/s | nothing: below 8 MS/s the card does not start |
| 8 and 10 MS/s | a black-and-white picture, without the colour subcarrier and without the sound subcarrier |
| 12.5 MS/s | PAL colour (at least 10.5 MS/s is needed), no sound subcarrier |
| 16 and 20 MS/s | PAL colour and the sound subcarrier |
A subcarrier that does not fit below half the sample rate is not put in at all: otherwise it would fold back into the picture band. The card has no interlace and no NTSC colour. How the app's receiver decodes such a signal is described in FPV video.
Recording from a file
The Choose a recording… button opens a file dialog: .wav, .cs16, .cs8, .cu8, .cf32, .c8, .c16, .sigmf-data. The file is read at once, and the panel shows what is in it before anything is transmitted.
- Recording
- The format, sample rate and length of the file.
- Recording level
- The measured peak of the recording in dBFS and the gain in decibels that brings it up to the DAC's full scale. Real recordings rarely sit at full scale, and without this the signal would go out that much quieter.
- Recorded at
- The frequency the recording was made at (if the file states it). It goes on the air at whatever the device is tuned to.
- Loop
- Off by default: when the file ends, the transmission stops and the The recording has finished window appears; 0.9.37 it stops only once the last block has gone on the air. If you turn it on, every lap carries a phase jump — a splash in the spectrum — because the end of a recording does not meet its beginning.
- Played
- Position and length in seconds — while transmitting.
- Clipped
- How many samples did not fit full scale after the level was raised. Zero means exactly what is in the recording went on the air.
- A recording is played only at its own sample rate, within 2 to 20 MS/s. While transmitting, the device switches to the recording's sample rate and returns to its own after the stop. The app does not resample a recording — that would be a different signal.
- If a raw file does not say what sample rate it was recorded at, the app refuses and suggests putting the rate into the file name, for example
…_8000000sps.cs16. - Recordings from the SDR SA PRO receivers have a full scale smaller than the scale of their type: 12-bit samples in
ci16_le0.9.33 and float32 with a scale of ±0.25 incf32_le0.9.43. The SigMF sidecar names it in thesdrsa:full_scalefield, and the transmitter reads that field: Recording level is computed from the true full scale rather than 24 or 12 dB lower.
Power and time
- Amplitude
- DAC loading, not volume: from 0 to 1, 0.50 by default; one means full scale. It applies to all signals and can be changed while transmitting.
- TX VGA
- Transmitter gain: from 0 to 47 dB in 1 dB steps, 0 by default. It can be changed while transmitting.
- Amplifier +14 dB
- The device's output amplifier, off by default. The state of the checkbox is read at the moment the transmission starts.
- Auto stop
- 10 s, 30 s, 1 min (the default), 5 min or no limit. Without a limit the transmission continues until it is stopped by hand — even with the window minimised; the panel reminds you of this in a yellow line.
- Sent on air
- How many seconds of signal the device has already transmitted.
- Underruns
- Blocks the generator or the file reader did not manage to fill: instead of the signal — for the whole block or the rest of it — silence went on the air. Zero means exactly what was set went on the air. 0.9.37 The number counts both the generator and the file reader, and it stays on the panel after the transmission stops, next to Sent on air. The end of a file is not counted as an underrun, nor is the silence between pressing Stop and the device's answer.
The app does not measure the power at the connector and does not show it in dBm. Start from zero and add gain while watching your own measuring instrument.
What happens to reception
- HackRF One is half-duplex: while it transmits, reception is stopped. The spectrum and waterfall hold the last frame — this is not a hang, and the panel says so.
- Listening is switched off the moment a transmission starts; switch it on again afterwards.
- If an IQ recording is running, the break for the transmission is marked in its metadata as a gap rather than hidden. A recording cannot be started while transmitting (see IQ recording).
- The device's sample rate cannot be changed while transmitting: the app refuses with the Sample rate unchanged: transmission in progress window.
When a transmission does not start 0.9.25
If the start fails, the app gives the reason in the Transmission did not start window and in a red line under the button, and brings reception back.
- A sweep is running. The device retunes segment by segment, and the signal would go out on the current segment's frequency. Stop the sweep, then transmit.
- The frequency after a sweep is unknown. If a sweep broke off and the local oscillator did not return to the centre, the transmission will not start until you press Reconnect on the Device tab.
- The device did not accept the gain. The Transmitter gain not changed window names the requested and the last confirmed value, and the slider returns to the confirmed one.
- Leaving transmit is not confirmed. If the device did not confirm that it left transmit mode, the Not confirmed that transmission stopped window appears: the transmitter may still be on. Unplug the HackRF from USB and plug it in again; unplugging does not switch off a PortaPack with a battery — turn its power off. The advice stays in the panel until the exit is confirmed.
- Reception did not come back. The Transmission stopped, reception did not come back window means the transmitter is off, but the receive stream has to be restarted with the Reconnect button.
Limits
- HackRF One only. With an RTL-SDR 0.9.25, the demo signal or a recording, the tab shows an explanation that this source only receives. For a tinySA 0.9.25 it says that the tinySA Ultra generator is not connected yet. The SDR SA PRO receivers PRO — Pluto, Fobos SDR and bladeRF — only receive as well.
- The carrier, two tones, sweep and noise cannot keep up at 20 MS/s: part of the signal goes out with gaps — silence instead of the signal. Two tones and the sweep are at their limit already at 10 MS/s. Use 8 MS/s or less for these signals. The test card is not affected: it is built ahead. A recording from a file is read ahead by a separate thread; whatever the reader could not take from the disk in time shows in Underruns.
- The test card has no interlace and no NTSC colour.
- A recording with a sample rate outside 2–20 MS/s is not played, and a looped recording has a phase jump at the seam.
- The output power is not calibrated and not displayed.