Skip to content

GPIO Pin Map

The Cypress FX2 uses three GPIO ports for hardware control on the SkyWalker-1: Port 0 (IOA), Port 3 (IOD), and Port B (XRAM-mapped IOB). Pin assignments differ significantly between firmware versions due to PCB revisions and design changes.

Pinv2.06Rev.2 v2.10v2.13Notes
P0.0LNB control (0x97)DiSEqC dataDiSEqC data pin moved across versions
P0.1Power enablePower enablePower enableBCM4500 power supply enable
P0.2Power disablePower disable (init=0x84)Power disableBCM4500 power supply disable
P0.322 kHz tone22 kHz tone22 kHz toneGates external 22 kHz oscillator (all versions)
P0.4LNB 13V/18VLNB 13V/18V + DiSEqC dataLNB 13V/18VAlso SET_DN_SWITCH bit-bang (all versions)
P0.5BCM4500 RESETGPIO status input (0x98)BCM4500 RESETReset and feedback pin
P0.6GPIO control (0x97)LNB control on Rev.2 only
P0.7DiSEqC dataStreaming indicatorStreaming indicatorDiSEqC data on v2.06 only

These pins are consistent across all firmware versions:

PinFunctionActive StateNotes
P3.0Init HIGHSet during initialization
P3.4GPIO controlUsed by Rev.2 FUN_CODE_1fcf
P3.5TS_ENLOWTransport stream enable: LOW = active, HIGH = idle
P3.6DVB modeBCM4500 mode select; DiSEqC port direction (Rev.2)
P3.7BCM4500 controlHIGH (idle)De-asserted (HIGH) when streaming stops

Port B is used exclusively by the internal debug commands 0x96—0x98. These commands are not used by the Linux or Windows drivers.

PinFunctionCommand
IOB.0GPIO status inputGET_GPIO_STATUS (0x98)
IOB.1LNB control line 1SET_GPIO_PINS (0x97)
IOB.2LNB control line 2SET_GPIO_PINS (0x97)
IOB.3LNB GPIO modeSET_LNB_GPIO_MODE (0x96)
IOB.4Unused

The DiSEqC data pin assignment is the most significant change between firmware versions. The carrier pin (P0.3) remains constant.

Firmware VersionData PinCarrier Pin
v2.06P0.7P0.3
Rev.2 v2.10P0.4P0.3
v2.13P0.0P0.3
Custom v3.01.0P0.7P0.3

The data pin is used only internally by the firmware’s Manchester encoding logic. It controls whether the 22 kHz carrier gate signal (on P0.3) is cut short or held for the full bit period during DiSEqC transmission. See DiSEqC Protocol for the encoding details.

On power-up, the FX2 initialization code sets:

RegisterValueDecode
IOA (P0)0x84P0.7=1 (idle), P0.2=1 (power disable active)
IOD (P3)0xE1P3.7:5=1 (all control lines idle), P3.0=1
OEA0xBEP0.1-5,7 configured as outputs

These initial states ensure:

  • The BCM4500 is held in reset (P0.5 driven by output enable, but P0 init has it low after OEA is set)
  • The transport stream bus is idle (P3.5 = HIGH)
  • The streaming indicator is off (P0.7 = HIGH)
  • All BCM4500 control lines are de-asserted (P3.7:5 = 1)
PinSFRDirectionDuring StreamingStreaming StoppedFunction
P0.20x80OutputSet during initBCM4500 config
P0.70x80OutputLOWHIGHStreaming status indicator
P3.50xB0OutputPulsed LOWHIGHBCM4500 TS_EN (transport stream enable)
P3.60xB0OutputControlledHIGHBCM4500 DVB mode control
P3.70xB0OutputControlledHIGHBCM4500 control line