DVB-S2 Incompatibility
The Core Problem
Section titled “The Core Problem”DVB-S2 (ETSI EN 302 307) requires two forward error correction technologies that do not exist in the BCM4500:
| FEC Component | BCM4500 Has | DVB-S2 Requires |
|---|---|---|
| Inner code | Viterbi (convolutional) + Turbo | LDPC (Low-Density Parity-Check) |
| Outer code | Reed-Solomon (t=10) | BCH (Bose-Chaudhuri-Hocquenghem) |
| Block size | Streaming (Viterbi) or short turbo blocks | 64,800 or 16,200 bits |
| Decoder type | Trellis-based / iterative turbo | Iterative belief propagation |
LDPC decoding requires dedicated silicon: large block RAM for message passing (the LDPC block is 64,800 bits), iterative belief propagation logic, and a fundamentally different decoder architecture. This cannot be emulated in firmware on the BCM4500’s simple 8-bit on-chip microcontroller, which handles only configuration, acquisition, and monitoring — not data-path processing.
BCM4500 FEC Architecture
Section titled “BCM4500 FEC Architecture”The BCM4500 contains exactly two FEC decoder paths (from the BCM4500 datasheet):
Viterbi + Reed-Solomon (Legacy)
Section titled “Viterbi + Reed-Solomon (Legacy)”Used for DVB-S QPSK, DSS QPSK, DVB-S BPSK, and Digicipher II modes.
| Parameter | Value |
|---|---|
| Inner decoder | Viterbi (convolutional) |
| Code rates | 1/2, 2/3, 3/4, 5/6, 7/8 |
| Outer decoder | Reed-Solomon |
| Signal path | Soft decisions fed to Viterbi, then RS outer code |
| Modulations | BPSK, QPSK |
Firmware evidence (XRAM 0xE0F9): FEC lookup table with max index 7. Modulation dispatch sets XRAM 0xE0F6 = 0x00 (turbo flag OFF), XRAM 0xE0F5 = 0x10 (standard demod mode).
Windows driver: m_CurResource.ulInnerFecType = BDA_FEC_VITERBI — explicitly rejects any FEC type other than Viterbi.
Turbo Code Decoder (Proprietary)
Section titled “Turbo Code Decoder (Proprietary)”Used for Turbo QPSK, Turbo 8PSK, and Turbo 16QAM — proprietary “advanced modulation” modes developed by Broadcom for EchoStar/Dish Network.
| Parameter | Value |
|---|---|
| Inner decoder | Iterative turbo code |
| QPSK rates | 1/4, 1/2, 3/4 |
| 8PSK rates | 2/3, 3/4, 5/6, 8/9 |
| 16QAM rates | 3/4 |
| Outer decoder | Reed-Solomon (t=10) |
| Modulations | QPSK, 8PSK, 16QAM |
Firmware evidence (XRAM 0xE0B7, 0xE0B1, 0xE0BC): Turbo FEC lookup tables. All turbo modes set XRAM 0xE0F6 = 0x01 (turbo flag ON).
These turbo codes are NOT the same as DVB-S2’s LDPC codes. The turbo decoder uses parallel concatenated convolutional codes, while LDPC uses sparse parity-check matrix belief propagation. Different algorithms, different silicon.
DCII Decoder
Section titled “DCII Decoder”Used for DCII combo, split I/Q, and offset QPSK modes.
| Parameter | Value |
|---|---|
| FEC table | XRAM 0xE0BD, max index 9 |
| Fixed FEC code | 0xFC written to XRAM 0xE0EB |
| Modulations | QPSK variants (combo, split, offset) |
The BCM4500 datasheet states explicitly: “Optimized soft decisions are then fed into either a DVB/DIRECTV/DCII-compliant FEC decoder, or an advanced modulation turbo decoder.” These are the only two FEC paths. There is no third path for LDPC/BCH.
Zero DVB-S2 Evidence in Firmware or Driver
Section titled “Zero DVB-S2 Evidence in Firmware or Driver”Exhaustive search across all firmware versions and Windows driver source:
| What Was Searched | Result |
|---|---|
| All firmware binaries (v2.06, Rev.2, v2.13) via Ghidra | No LDPC/BCH/DVB-S2 references |
Windows driver SkyWalker1Control.h | Modulation constants 0—9 only, none for DVB-S2 |
Windows driver SkyWalker1TunerFilter.cpp | Rejects non-Viterbi FEC types |
Windows driver SkyWalker1Control.cpp | Hardcodes ADV_MOD_DVB_QPSK (value 0) |
| Firmware dispatch table (CODE:0873) | 10 entries max, values >= 10 rejected |
| All FEC lookup tables in XRAM | Only Viterbi rates and turbo rates, no LDPC rates |
| I2C register addresses | BCM4500-specific protocol only (page 0x00, regs 0xA6/A7/A8) |
Specific proof points:
SkyWalker1TunerFilter.cpp, line 1070:if(ulNewInnerFecType == BDA_FEC_VITERBI)— only Viterbi accepted; any other FEC type returnsSTATUS_INVALID_PARAMETERSkyWalker1Control.cpp, line 292:ucCommand[8] = ADV_MOD_DVB_QPSK;— always sends modulation type 0- Firmware jump table at CODE:0866: bounds check rejects modulation values >= 10
Is the USB Data Path a Bottleneck?
Section titled “Is the USB Data Path a Bottleneck?”No. The GPIF/USB 2.0 streaming architecture has roughly 5x headroom for DVB-S2 data rates. The bottleneck is the demodulator silicon, not the transport path.
| Metric | Value |
|---|---|
| DVB-S2 max net rate (8PSK 9/10, 30 Msps) | ~58 Mbps (~7.25 MB/s) |
| Typical HD transponder (8PSK 3/4, 27.5 Msps) | ~44 Mbps |
| USB 2.0 practical bulk throughput | ~280 Mbps (~35 MB/s) |
| GPIF engine theoretical throughput (48 MHz, 8-bit) | 384 Mbps (48 MB/s) |
| Current DVB-S typical TS rate | 1—5 MB/s |
DVB-S2 uses the same MPEG-TS output format (188-byte packets) as DVB-S, so the GPIF waveform and AUTOIN configuration would work unchanged.
However, this is a moot point: even if the BCM4500 were physically replaced with a DVB-S2-capable chip, the entire FX2 firmware would need rewriting (I2C register protocol, tuning sequence, modulation dispatch, FEC configuration), since every DVB-S2 demodulator uses a completely different register interface.
Broadcom’s DVB-S2 Silicon Timeline
Section titled “Broadcom’s DVB-S2 Silicon Timeline”Broadcom addressed DVB-S2 by designing entirely new chips — they did not add LDPC to the BCM4500:
| Chip | Year | DVB-S2 | Key Addition |
|---|---|---|---|
| BCM4500 | ~2003 | No | Turbo FEC + Viterbi/RS |
| BCM4501 | 2006 | Yes | First dual-tuner DVB-S2; LDPC/BCH decoder |
| BCM4505 | 2007 | Yes | Single-channel, 65nm, LDPC/BCH + legacy |
| BCM4506 | 2007 | Yes | Dual-channel, 65nm, LDPC/BCH + legacy |
The BCM4501 datasheet explicitly states it includes “four 8-bit ADCs, all-digital variable rate QPSK/8PSK receivers, advanced modulation LDPC/BCH, and DVB-S-compliant forward error correction decoder.” Adding LDPC/BCH required new silicon.
What Genpix Did: The SkyWalker-3
Section titled “What Genpix Did: The SkyWalker-3”Genpix released the SkyWalker-3 as a DVB-S2-capable successor using a completely different demodulator (likely STMicroelectronics STV0903):
| Feature | SkyWalker-1 (BCM4500) | SkyWalker-3 (likely STV0903) |
|---|---|---|
| DVB-S QPSK | Yes | Yes |
| DVB-S2 QPSK | No | Yes |
| DVB-S2 8PSK | No | Yes |
| Turbo QPSK | Yes | No |
| Turbo 8PSK | Yes | No |
| Turbo 16QAM | Yes | No |
| DCII | Yes | Yes |
| DSS | Yes | Yes |
| Symbol rate (DVB-S) | 256 Ksps — 30 Msps | 1 — 45 Msps |
| Symbol rate (DVB-S2) | N/A | 5 — 33 Msps |
| FEC inner (DVB-S) | Viterbi | Viterbi |
| FEC inner (DVB-S2) | N/A | LDPC |
| FEC outer (DVB-S2) | N/A | BCH |
The trade-off is clear: the SkyWalker-3 gained DVB-S2 but lost turbo-FEC support entirely. The turbo codes were proprietary to Broadcom/EchoStar, and the STV0903 does not implement them. This means the SkyWalker-3 cannot receive Dish Network’s legacy turbo-coded 8PSK transmissions.
Summary
Section titled “Summary”| Question | Answer |
|---|---|
| Is DVB-S2 a hardware or firmware limitation? | Hardware — BCM4500 has no LDPC/BCH decoder |
| Could a firmware update add DVB-S2? | No — LDPC requires dedicated silicon |
| Which Broadcom chip first added LDPC? | BCM4501 (2006) |
| Any DVB-S2 hints in firmware/driver? | None — zero references anywhere |
| Is the USB data path a bottleneck? | No — ~5x headroom for DVB-S2 rates |
| What did Genpix do for DVB-S2? | Released SkyWalker-3 with STV0903 demodulator |
| What was lost in the SkyWalker-3? | Turbo-FEC support (Broadcom/EchoStar proprietary) |