Muxwright

Firmware & technology

Over USB the Pluto sustains only about 7 MS/s, while 8 MHz DVB-T needs 9.14 MS/s. So the modulator runs on the device itself.

  1. PC / WSLffmpeg + TSDuck: video, audio, SI tables, constant bitrate
  2. UDPTransport stream up to 32 Mbit/s over USB networking
  3. Pluto ARMCore 0: RS, interleaver, convolutional code, mapper · core 1: NEON IFFT
  4. DAC → HFAD9364, 70 MHz–6 GHz, attenuation 0–89.75 dB

Fixed point + NEON

Coder, interleaver, mapper and IFFT are fixed point. The Stockham radix-4 IFFT uses NEON and is bit-identical to the C reference (same checksum on x86 and ARM).

Real time on 2 cores

8k/64-QAM/7/8 runs at real-time factor 1.00 with zero underruns at 55–67 % load per Cortex-A9 core. DVB-S at 22 MBd uses 42–63 % of one core; DVB-S2 QPSK reaches 27 MBd on one core.

Firmware based on v0.31

Buildroot 2019.02, Linux 4.14 and FPGA bitstream identical to stock, plus libiio/iiod 0.25, real-time and DMA tuning and a device agent with an HTTP API.

Checked against a reference

Pilots, TPS and data carriers match gr-dtv. Self-reception via the RX input decodes bit-exact. The firmware can be tested from RAM first without changing the flash.

DVB-T useful bit rates in Mbit/s (8 MHz, guard 1/32)
Constellation1/22/33/45/67/8
QPSK6,038,049,0510,0510,56
16-QAM12,0616,0918,1020,1121,11
64-QAM18,1024,1327,1430,1631,67

Inside

Monitoring, test record and media