LNB Control
The SkyWalker-1 controls LNB power and band selection through dedicated GPIO pins on the FX2 microcontroller. No I2C transactions are involved in basic LNB control — voltage and tone are driven directly by port pins.
LNB Voltage (13V / 18V)
Section titled “LNB Voltage (13V / 18V)”LNB voltage selects the polarization of the received signal. It is controlled via GPIO P0.4 using vendor command 0x8B (SET_LNB_VOLTAGE).
| wValue | Voltage | GPIO P0.4 | Polarization |
|---|---|---|---|
0x00 | 13V | LOW | Vertical / Circular-Right |
0x01 | 18V | HIGH | Horizontal / Circular-Left |
The Linux kernel driver sets the voltage during the tuning sequence based on the requested polarization:
// From gp8psk-fe.c set_voltage callbackcase SEC_VOLTAGE_13: // Vertical / Circular-R gp8psk_usb_out_op(d, SET_LNB_VOLTAGE, 0, 0, NULL, 0); break;case SEC_VOLTAGE_18: // Horizontal / Circular-L gp8psk_usb_out_op(d, SET_LNB_VOLTAGE, 1, 0, NULL, 0); break;The configuration status byte (returned by GET_8PSK_CONFIG, command 0x80) reflects the current voltage selection in bit 5 (0x20, bmSEL18V).
Extra Volt Mode (+1V Boost)
Section titled “Extra Volt Mode (+1V Boost)”For long cable runs where voltage drop is significant, the SkyWalker-1 supports a +1V boost mode (13V becomes 14V, 18V becomes 19V). This is controlled via vendor command 0x94 (USE_EXTRA_VOLT).
| wValue | XRAM 0xE0B6 | Result |
|---|---|---|
0x00 | 0x62 | Normal voltage (13V / 18V) |
0x01 | 0x6A | Boosted voltage (14V / 19V) |
The difference between the two XRAM values is bit 3 (0x08), which enables the boost on the LNB power regulator circuitry.
The kernel driver exposes extra volt mode through the enable_high_lnb_voltage callback in the DVB frontend properties.
22 kHz Tone Generation
Section titled “22 kHz Tone Generation”The 22 kHz tone selects the high or low band on a universal LNB. It is controlled via GPIO P0.3 using vendor command 0x8C (SET_22KHZ_TONE).
| wValue | State | GPIO P0.3 | LNB Band |
|---|---|---|---|
0x00 | OFF | LOW | Low band (9.75 GHz LO on universal LNB) |
0x01 | ON | HIGH | High band (10.6 GHz LO on universal LNB) |
The configuration status byte tracks the tone state in bit 4 (0x10, bm22kHz).
LNB Power Supply Enable
Section titled “LNB Power Supply Enable”Before any LNB control is possible, the LNB power supply itself must be enabled via vendor command 0x8A (START_INTERSIL). The kernel driver does this during the boot sequence if bit 2 (bmIntersilOn) of the configuration status byte is not already set.
| wValue | Action | Config Bit |
|---|---|---|
0x01 | Enable LNB power supply | Sets bmIntersilOn (bit 2) |
0x00 | Disable LNB power supply | Clears bmIntersilOn (bit 2) |
In the custom v3.01.0 firmware, enabling the LNB supply also configures the output enable masks for the LNB control GPIO pins:
case START_INTERSIL: if (wval) { OEA |= (PIN_22KHZ | PIN_LNB_VOLT | PIN_DISEQC); config_status |= BM_INTERSIL; } else { config_status &= ~BM_INTERSIL; }GPIO Pin Assignments
Section titled “GPIO Pin Assignments”The LNB control pins are consistent across firmware versions, though their exact initialization differs:
| GPIO Pin | Function | Direction | Init State |
|---|---|---|---|
| P0.1 | Power supply enable | Output | LOW (off) |
| P0.2 | Power supply disable | Output | HIGH (active disable) |
| P0.3 | 22 kHz tone gate | Output | LOW (tone off) |
| P0.4 | LNB voltage select | Output | LOW (13V) |
| P0.5 | BCM4500 hardware reset | Output | LOW (reset asserted) |
The initial GPIO state after power-on is IOA = 0x84 (P0.7 and P0.2 HIGH, all others LOW), with the output enable mask OEA = 0xBE (P0.1 through P0.5 and P0.7 as outputs).
LNB GPIO Debug Commands
Section titled “LNB GPIO Debug Commands”Three vendor commands provide low-level GPIO access for LNB debugging:
| Command | Name | Purpose |
|---|---|---|
0x96 | SET_LNB_GPIO_MODE | Configure LNB GPIO output enables |
0x97 | SET_GPIO_PINS | Direct write to LNB GPIO pins via wValue bitmap |
0x98 | GET_GPIO_STATUS | Read LNB feedback GPIO pin (1 byte) |
These commands access Port B (XRAM-mapped IOB) rather than Port A. In v2.06 and v2.13, 0x97 controls IOB bits 1 and 2 for LNB, while 0x96 configures IOB bit 3 as the GPIO mode select. Rev.2 uses IOB bit 4 instead.
Complete LNB Configuration Sequence
Section titled “Complete LNB Configuration Sequence”During a typical tune operation, the kernel driver configures the LNB in this order:
1. SET_LNB_VOLTAGE (0x8B) -- Select 13V or 18V based on polarization2. SET_22KHZ_TONE (0x8C) -- Select low or high band3. SEND_DISEQC (0x8D) -- Switch multi-port switch if needed4. TUNE_8PSK (0x86) -- Send tuning parametersThe voltage and tone are set before any DiSEqC commands because the LNB must be powered and in the correct band before the switch can respond. See the DiSEqC Protocol page for details on switch control, and the Tuning Protocol for the complete tune flow.