Wiki sections

Wiki Receiver and transmitter

FPV video

The FPV-video mode shows analogue FM video from FPV cameras: PAL and NTSC in black and white from 8 MS/s, PAL in colour from 12.5 MS/s. The picture lives in its own FPV-video window next to the spectrum, and the status line below it says what has been decoded and what is missing. There are almost no manual settings: the decoder works out the standard, the polarity and the colour by itself.

Getting a picture

  1. Connect a HackRF One and, on the Device tab, set the Instrument sample rate to at least 8 MS/s. Of the HackRF One rates, 8, 10, 12.5, 16 and 20 MS/s are suitable; PAL colour needs at least 12.5 MS/s.
  2. Tune the device so that the video transmitter's channel sits in the centre of the captured band (how to move the band is described in The main window and controls).
  3. In the Frequency group (it is on both the Spectrum analyzer and Receiver tabs) set Mode to fpv-video.
  4. The FPV-video window appears between the spectrum and the side panel.
  5. Click the centre of the signal on the spectrum so that the VFO sits on it. The Offset field shows how far the VFO is from the centre of the capture.

There is no need to press Listen: video is decoded as soon as the mode is selected. This mode has no audio.

The FPV-video window

  • The window takes its place between the spectrum and the side panel: the spectrum gets narrower, the panel keeps its width.
  • Drag the window by its title to detach it from the main window and watch it separately.
  • It has no close button: the window exists while the fpv-video mode is selected and disappears as soon as you switch to another mode. The decoder stops with it.
  • The picture is drawn at 4:3 on a black background, with the status line below.
  • A frame is one field: 288 lines in PAL or 243 in NTSC, 512 points per line. Interlaced fields are not woven together — each is shown as a separate picture. No more than 25 pictures per second go to the screen.
  • Without sync there is no picture: the window is black, and the status line says what is missing. The app does not leave an old picture on screen, so that it cannot pass for a live one.

What is detected automatically

The app has no switches for the standard, the polarity or the colour — the decoder measures all of that by itself and shows the result in the status line.

Standard
Determined from the measured line period: 64.0 µs is PAL, 63.56 µs is NTSC. If the period is more than 0.5 µs away from both, the standard is treated as unknown.
Polarity
FPV transmitters put the sync pulses either at the bottom or at the top. The decoder picks the polarity by itself and shows it: sync at the bottom or sync at the top.
Colour
Taken only when a PAL colour burst is found in the signal — see Colour.
Bandwidth
The slider in the Frequency group is disabled: there is no separate adjustable filter here, and the VFO band equals the whole captured band. A fixed ±5 MHz channel filter around the VFO frequency sits in front of the frequency detector — without it, noise from the whole receiver bandwidth would pour into the picture. At 8 and 10 MS/s the captured band is no wider than this filter anyway, and it is not switched in.
Frequency
The decoder takes the video from the VFO frequency. Because the VFO band here is the whole captured band, an offset from the centre usually pushes its edge past the capture at once, and the Offset field turns red. It is therefore easier to keep the channel itself in the centre of the capture and the VFO on it.

The status line

The line is refreshed twice a second. With sync it looks like this: "PAL · line 64.0 µs · 288 lines per field · … fields/s decoded · sync at the bottom · no colour · … % of blocks dropped".

What it saysWhat it means
The sample rate is too low for video: at least 8 MS/s is needed.The source is slower than 8 MS/s. The decoder does not run until the rate is raised.
No data: a sweep is running or the stream is paused.No samples reach the decoder. Stop the sweep or resume the stream.
"No sync: … line pulses per window, at least 100 are needed."Too few line sync pulses: the signal is weak, the VFO is not on the channel, or this is not analogue video.
"Lines are there (…), but no field block — the picture cannot be assembled."Lines are caught, but the start of the field is not found. The brackets give the pulse count, the line period and the standard.
"… fields/s decoded"How many fields the decoder really decoded per second. The on-screen rate is limited separately.
colour, subcarrier … MHzColour is taken; the number is the measured frequency of the colour subcarrier.
no colourThe conditions for colour were not met; the picture is black and white.
sample rate too low for colourThe sample rate is below 10.5 MS/s.
NTSC colour is not decodedThe standard is NTSC: the app does not take the colour of this standard.
"… % of blocks dropped"The share of blocks the decoder skipped because it could not keep up.

Colour

Colour is decoded for PAL only, and only at a sample rate of at least 10.5 MS/s — on a HackRF One that means 12.5 MS/s and above. Below that limit the luminance folds onto the band of the colour signal, and the two can no longer be told apart.

The decoder shows colour only when all checks of the colour burst agree: the burst is present and steady, its phase alternates from line to line as it must in PAL, its level is above the black level, and the reference phase is clean enough across the whole field. If any of them fails, the picture stays black and white and the status line names the reason. The subcarrier frequency is not taken from a table but measured.

Without colour, a fine mesh from the colour subcarrier remains on saturated areas. NTSC colour is not decoded at all.

What the picture quality depends on

  • Receiver bandwidth. The receiver takes only its instantaneous bandwidth out of the FPV channel, so the picture is softer and noisier than in a real video receiver.
  • Gain. What matters is how much of the device's ADC the signal fills: colour needs more of it than a black-and-white picture. Gain is set on the Device tab. On a weak signal the input amplifier (AMP) is worth trying — it is off by default.
  • Decoder speed. The decoder runs in its own thread and does not slow the spectrum down. When it cannot keep up, surplus blocks are dropped and their share is shown in the status line. The higher the sample rate, the harder it gets: the app's own hint quotes a measurement — 6.4 fields per second at 16 MS/s and 5.1 at 20. With colour the decoder is slower, and colour does not come out on every field.
  • The ±5 MHz channel filter is designed for analogue FPV video. FM video with a noticeably larger deviation will be cut by it, and the picture will be worse than it could be.
  • Sweep and pause. During a sweep and while paused there are no samples, and so no picture.

The app's transmitter can build a signal of the same kind — see the test card.

Which sources it works with

  • HackRF One — yes, at sample rates from 8 to 20 MS/s.
  • RTL-SDR 0.9.25 — no: its highest sample rate is 2.56 MS/s, and the status line says the rate is too low.
  • tinySA and tinySA Ultra 0.9.25 — no: the instrument returns levels, not samples.
  • IQ recordings. The decoder takes samples from any IQ source, so a recording made at 8 MS/s or more is decoded in the same way as the live signal (see Demo signal and IQ files).

Limits

  • There is no audio: the sound subcarrier is not decoded.
  • Colour is PAL only and only from 10.5 MS/s; NTSC colour is not decoded.
  • A frame is one field; interlace is not woven.
  • The standard, polarity and colour cannot be set by hand.
  • A sample rate below 8 MS/s is unusable, and at high sample rates the decoder gets through only part of the fields.
  • It is a tool for seeing and judging a signal on the air, not a replacement for a video receiver.

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.