Apply .gitattributes normalization to convert all CRLF line endings inherited from Windows-origin source files to Unix LF. 175 files, zero content changes.
16 KiB
DVB-S2 Incompatibility Investigation: Genpix SkyWalker-1
Definitive Conclusion
The SkyWalker-1's inability to receive DVB-S2 is a fundamental hardware limitation of the Broadcom BCM4500 demodulator silicon, not a firmware limitation. The BCM4500 was designed and fabricated before the DVB-S2 standard was ratified (2005) and contains no LDPC or BCH decoder hardware. DVB-S2 requires LDPC (Low-Density Parity-Check) and BCH (Bose-Chaudhuri-Hocquenghem) forward error correction -- entirely different decoder architectures from the Viterbi/turbo/Reed-Solomon decoders present in the BCM4500. No firmware update could add DVB-S2 support to this hardware.
Genpix eventually addressed this by releasing the SkyWalker-3, which replaced the entire demodulator subsystem (likely switching from Broadcom BCM4500 to STMicroelectronics STV0903), trading turbo-FEC support for DVB-S2 LDPC/BCH capability.
1. Does the BCM4500 Silicon Support DVB-S2?
No. The BCM4500 has no LDPC or BCH decoder hardware.
BCM4500 FEC Architecture (from datasheet)
The BCM4500 contains exactly two FEC decoder paths:
-
Advanced Modulation Turbo FEC Decoder -- an iterative turbo code decoder supporting:
- QPSK: rates 1/4, 1/2, 3/4
- 8PSK: rates 2/3, 3/4, 5/6, 8/9
- 16QAM: rate 3/4
- Reed-Solomon outer code (t=10) after turbo decoding
-
Legacy DVB/DIRECTV/DCII-Compliant FEC Decoder -- a concatenated coding chain:
- Inner: Viterbi decoder (convolutional code, rates 1/2 through 7/8)
- Outer: Reed-Solomon decoder
The datasheet describes the signal path 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 paths. There is no third path for LDPC/BCH.
DVB-S2 FEC Architecture (for comparison)
DVB-S2 (EN 302 307, ratified March 2005) mandates:
- Inner code: LDPC (Low-Density Parity-Check) -- block lengths of 64,800 or 16,200 bits
- Outer code: BCH (Bose-Chaudhuri-Hocquenghem)
- Code rates: 1/4, 1/3, 2/5, 1/2, 3/5, 2/3, 3/4, 4/5, 5/6, 8/9, 9/10
LDPC decoding requires dedicated hardware: large block RAM for message passing (the LDPC block size is 64,800 bits, requiring significant on-chip storage), iterative belief propagation logic, and a fundamentally different decoder architecture from both Viterbi and turbo decoders. This cannot be emulated in firmware on the BCM4500's simple 8-bit on-chip microcontroller (used only for configuration, acquisition, and monitoring -- not data-path processing).
Evidence from the BCM4500 Datasheet
Source: BCM4500 Datasheet (DatasheetQ), BCM4500 Datasheet (Elcodis)
Key specifications confirming no DVB-S2 capability:
- Modulation: BPSK, QPSK, 8PSK, 16QAM (no mention of DVB-S2-specific constellations)
- FEC: "advanced modulation turbo FEC decoder" and "DVB/DIRECTV/DCII-compliant FEC decoder"
- Symbol rate: 256 Ksps to 30 Msps
- Package: 128-pin MQFP
- Supply: 3.3V I/O, 1.8V digital
- No mention of LDPC, BCH, or DVB-S2 anywhere in the datasheet
2. What FEC Types Does the BCM4500 Actually Support?
The BCM4500 supports three distinct FEC coding families, none of which are DVB-S2 compatible:
2.1 Viterbi + Reed-Solomon (Legacy DVB-S / DSS / DCII)
Used for standard DVB-S QPSK, DSS QPSK, DVB-S BPSK, and Digicipher II modes.
Firmware evidence (from skywalker1-hardware-reference.md, Section 6.3):
- FEC lookup table at XRAM 0xE0F9, maximum index 7
- Modulation dispatch sets XRAM 0xE0F6 = 0x00 (turbo flag OFF)
- XRAM 0xE0F5 = 0x10 (standard demod mode)
- The firmware FEC table supports rates: 1/2, 2/3, 3/4, 5/6, 7/8, auto, none
Windows driver evidence (SkyWalker1Control.h, line 59):
m_CurResource.ulInnerFecType = BDA_FEC_VITERBI;
Windows driver evidence (SkyWalker1TunerFilter.cpp, lines 1069-1070):
//Only supported FEC VITERBI Type Error Correction
else if(ulNewInnerFecType == BDA_FEC_VITERBI)
The Windows BDA driver explicitly rejects any FEC type other than BDA_FEC_VITERBI and restricts code rates to 1/2, 2/3, 3/4, 5/6, 7/8 (lines 1112-1116). There is no BDA_FEC_LDPC handling.
2.2 Turbo Codes (Proprietary 8PSK/QPSK/16QAM)
Used for Turbo QPSK, Turbo 8PSK, and Turbo 16QAM -- the proprietary "advanced modulation" modes developed by Broadcom for EchoStar/Dish Network.
Firmware evidence (from tuning-protocol-analysis.md, Section 3):
- Turbo QPSK: FEC table at XRAM 0xE0B7, max index 5
- Turbo 8PSK: FEC table at XRAM 0xE0B1, max index 5
- Turbo 16QAM: FEC table at XRAM 0xE0BC, max index 1
- All turbo modes set XRAM 0xE0F6 = 0x01 (turbo flag ON)
These turbo codes are proprietary to EchoStar/Broadcom. They are NOT the same as DVB-S2's LDPC codes, despite both being "advanced" coding schemes. The turbo decoder uses a fundamentally different iterative decoding algorithm (parallel concatenated convolutional codes) compared to LDPC (sparse parity-check matrix belief propagation).
2.3 Digicipher II (Motorola/GI Proprietary)
Used for DCII combo, split I/Q, and offset QPSK modes.
Firmware evidence: FEC table at XRAM 0xE0BD, max index 9, with a fixed FEC code of 0xFC written to XRAM 0xE0EB.
Summary: FEC Architecture Comparison
| Feature | BCM4500 (SkyWalker-1) | DVB-S2 Requirement |
|---|---|---|
| Inner FEC | Viterbi (DVB-S) or Turbo (proprietary) | LDPC |
| Outer FEC | Reed-Solomon (t=10) | BCH |
| Block size | Convolutional (streaming) / Turbo (short blocks) | 64,800 or 16,200 bits |
| Decoder type | Trellis-based (Viterbi) or iterative turbo | Iterative belief propagation |
| Hardware IP | Hardwired Viterbi + turbo silicon | Requires dedicated LDPC engine |
| Standardization | DVB-S (ETSI EN 300 421) + proprietary turbo | DVB-S2 (ETSI EN 302 307) |
3. What Would a DVB-S2-Capable Replacement Look Like?
Broadcom's Own DVB-S2 Chip Timeline
Broadcom addressed DVB-S2 by designing entirely new silicon:
| Chip | Year | DVB-S2? | Key Feature | Source |
|---|---|---|---|---|
| BCM4500 | ~2003 | No | Turbo FEC + legacy Viterbi/RS | Datasheet |
| BCM4501 | 2006 | Yes | First dual-tuner DVB-S2 receiver; LDPC/BCH decoder | Broadcom, EDN |
| BCM4505 | 2007 | Yes | Single-channel, 65nm, LDPC/BCH + legacy | Broadcom |
| BCM4506 | 2007 | Yes | Dual-channel, 65nm, LDPC/BCH + legacy | Broadcom |
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." The addition of LDPC/BCH required new silicon -- it was not a firmware upgrade to the BCM4500.
However, Broadcom restricted sales of these chips to set-top box manufacturers (EchoStar, DIRECTV) and did not sell to PC peripheral makers. This is why Genpix could not simply drop in a BCM4501.
What Genpix Actually Did: The SkyWalker-3
Genpix released the SkyWalker-3 as a DVB-S2-capable successor, using a completely different demodulator:
| Feature | SkyWalker-1 (BCM4500) | SkyWalker-3 (likely STV0903) |
|---|---|---|
| DVB-S QPSK | Yes | Yes |
| DVB-S2 QPSK | No | Yes (rates 1/2 through 9/10) |
| DVB-S2 8PSK | No | Yes (rates 3/5 through 9/10) |
| 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 |
| Demodulator | Broadcom BCM4500 | STMicroelectronics STV0903 (probable) |
| Tuner | Broadcom BCM3440 | STMicroelectronics STV6110 (probable) |
Source: Genpix SkyWalker-3 specifications
The trade-off is visible: the SkyWalker-3 gained DVB-S2 but lost turbo-FEC support entirely. The turbo codes were proprietary to Broadcom/EchoStar, and the STMicroelectronics STV0903 demodulator does not implement them. This means the SkyWalker-3 cannot receive Dish Network's legacy turbo-coded 8PSK transmissions.
4. Are There Any Hints of DVB-S2 Awareness in the Firmware?
No. There are zero references to DVB-S2, LDPC, or BCH in any firmware version or in the Windows driver source.
Firmware Search Results
Searched all three firmware versions (v2.06, Rev.2 v2.10, v2.13) via Ghidra disassembly and the following source files:
SkyWalker1Control.h-- defines modulation constants 0-9, none related to DVB-S2SkyWalker1CommonDef.h-- device parameter structure usesBDA_FEC_VITERBIonlySkyWalker1TunerFilter.cpp-- explicitly rejects non-QPSK modulation types and non-Viterbi FECSkyWalker1Control.cpp-- hardcodesADV_MOD_DVB_QPSK(value 0) in tune command byte 8
Specific evidence of no DVB-S2 awareness:
-
Modulation enum caps at 9 (
SkyWalker1Control.h, lines 64-74): The modulation constants areADV_MOD_DVB_QPSK(0) throughADV_MOD_DVB_BPSK(9). No value 10+ exists for DVB-S2 modes. -
Firmware dispatch table has exactly 10 entries (
tuning-protocol-analysis.md, Section 3.1): The jump table at CODE:0873 contains 20 bytes (10 entries x 2 bytes). Modulation values >= 10 are rejected by the bounds check at CODE:0866. -
FEC type is hardcoded to Viterbi (
SkyWalker1TunerFilter.cpp, line 1070):else if(ulNewInnerFecType == BDA_FEC_VITERBI)-- only Viterbi is accepted; any other FEC type returnsSTATUS_INVALID_PARAMETER. -
Tune command hardcodes DVB-S QPSK (
SkyWalker1Control.cpp, line 292):ucCommand[8] = ADV_MOD_DVB_QPSK;-- the Windows driver always sends modulation type 0 (DVB-S QPSK) regardless of what the application requests. -
No LDPC/BCH code rate values exist in any FEC lookup table. The firmware's XRAM tables at 0xE0B1, 0xE0B7, 0xE0BC, 0xE0BD, and 0xE0F9 contain only Viterbi rates (1/2 through 7/8), turbo rates, and DCII combined codes.
-
No DVB-S2-specific register addresses appear in the I2C traffic. The BCM4500 is programmed exclusively through indirect registers 0xA6/0xA7/0xA8 with page 0x00 -- a protocol specific to the BCM4500. DVB-S2 demodulators like the STV0903 use entirely different register maps.
5. Could the GPIF Streaming Path Handle DVB-S2 Data Rates?
Yes -- the USB data path is not the bottleneck. The GPIF/USB 2.0 streaming architecture could handle DVB-S2 data rates if the demodulator supported them.
Data Rate Analysis
DVB-S2 maximum useful bit rate (from ETSI EN 302 307):
- Highest configuration: 8PSK, rate 9/10, 30 Msps = ~72 Mbps raw, ~58 Mbps net after FEC
- Typical HD transponder: 8PSK, rate 3/4, 27.5 Msps = ~44 Mbps net
GPIF/USB 2.0 throughput capacity:
- USB 2.0 High Speed bulk: 480 Mbps theoretical, ~35 MB/s (~280 Mbps) practical
- GPIF engine: 48 MHz clock, 8-bit data path = 48 MB/s (384 Mbps) theoretical
- EP2 FIFO: 4x buffer with AUTOIN, 7 URBs x 8KB on host side
Current DVB-S usage (from gpif-streaming-analysis.md, Section 15):
- "Transport stream rate: BCM4500 outputs at the satellite symbol rate (up to 30 Msps), but the effective byte rate depends on modulation and coding. USB 2.0 High Speed bulk bandwidth (480 Mbps theoretical, ~35 MB/s practical) is more than sufficient for DVB-S transport streams (typically 1-5 MB/s)."
Assessment: Even at the theoretical maximum DVB-S2 data rate of ~58 Mbps (~7.25 MB/s), the USB 2.0 bulk streaming path has approximately 5x headroom. The GPIF engine configuration (IFCONFIG=0xEE, EP2FIFOCFG=0x0C, FLOWSTATEA with FSEN enabled) is identical across all firmware versions and provides a fully hardware-managed pipeline that would not require modification.
The 8-bit parallel transport stream interface between the demodulator and FX2 is also sufficient -- DVB-S2 uses the same MPEG-TS output format (188-byte packets) as DVB-S. The GPIF waveform and AUTOIN configuration would work unchanged.
However, this is a moot point. The bottleneck is the demodulator silicon, not the data path. Even if you physically replaced the BCM4500 with a DVB-S2-capable chip, you would need to rewrite the entire FX2 firmware (I2C register protocol, tuning sequence, modulation dispatch, FEC configuration) since every DVB-S2 demodulator uses a completely different register interface.
Summary
| Question | Answer |
|---|---|
| Is DVB-S2 a hardware or firmware limitation? | Hardware -- the BCM4500 has no LDPC/BCH decoder logic |
| Could a firmware update add DVB-S2? | No -- LDPC decoding requires dedicated silicon |
| Which Broadcom chip first added LDPC? | BCM4501 (2006), followed by BCM4505/BCM4506 (2007) |
| Any DVB-S2 hints in firmware/driver? | None -- zero references to LDPC, BCH, or DVB-S2 |
| Is the USB data path a bottleneck? | No -- USB 2.0 bulk has ~5x headroom for DVB-S2 rates |
| What did Genpix do for DVB-S2? | Released SkyWalker-3 with a different demodulator (likely STV0903) |
| What was lost in the transition? | Turbo-FEC support (proprietary to Broadcom/EchoStar) |
Sources
Datasheets and Product Pages
- BCM4500 Datasheet (DatasheetQ)
- BCM4500 Datasheet (Elcodis)
- BCM4500 Datasheet (AllDatasheet)
- BCM4501 Product Page (Broadcom)
- BCM4501 (EDN)
- BCM4505 Product Page (Broadcom)
- BCM4506 Product Page (Broadcom)
- BCM4505/BCM4506 Announcement (RTTNews)
Genpix Products
Community and Technical Discussions
- LinuxTV mailing list: BCM4500 and DVB-S2 distinction
- SatelliteGuys: Turbo 8PSK card reverse engineering
- SatelliteGuys: Genpix SkyWalker-1 discussion
Reverse Engineering Analysis (This Project)
skywalker1-hardware-reference.md-- Sections 1, 6, 7: Overview, tuning protocol, BCM4500 interfacetuning-protocol-analysis.md-- Section 3: Modulation dispatch table, FEC lookup tablesgpif-streaming-analysis.md-- Sections 13-15: GPIF throughput and data path analysisrev2-deep-analysis.md-- Complete Rev.2 function inventorySkyWalker1Control.h-- Modulation mode constants (lines 63-74), FEC/command definitionsSkyWalker1TunerFilter.cpp-- SetInnerFecType() Viterbi-only restriction (lines 1058-1086)SkyWalker1Control.cpp-- TuneDevice() hardcoded ADV_MOD_DVB_QPSK (line 292)