Skip to content

SatMe PC Polarisation

Olivier Gouyen (F4IOZ) edited this page Oct 26, 2026 · 1 revision

🇫🇷 Version française

SatMe-PC — antenna polarisation

← SatMe-PC guide · October 2026

A satellite's signal does not always arrive in the polarisation of your antenna: a tumbling cubesat, Faraday rotation, a pass low on the horizon. With a WiMo remote polarisation switch on the yagi and a small ESP32 box on USB, SatMe-PC chooses the polarisation for you — vertical, horizontal, right-hand or left-hand circular — at AOS, and learns pass after pass which one works best for each satellite.

Where: Réglages › Poste et rotor › Polarisation d'antenne (the box), and the Polarisation panel of the Suivi tab (the buttons, the state, the profiles, the probes). The module can be unticked in Réglages › Modules.

Suivi tab following SO-50 (demonstration): the Polarisation panel in AUTO with the virtual box, UHF RX on H after a probe (H 28.5 dB, V 24.4 dB), the profile at AOS « la meilleure connue (sondages) », Sonder H/V ticked, the table of what the probes learnt by elevation, and the virtual ESP32's front panel (selector, SEND, simulated pass)

Status (October 2026): the SatMe-PC side is written and tried against the virtual ESP32. The firmware in materiel/esp32-polarisation has not yet been compiled and run on a real board, nor tried on a real WiMo switch. Check the box on the bench, with a voltmeter on the WiMo socket, before connecting the antenna.

The hardware

  • WiMo switches: UHF 18082 / 18083 (four positions: V, H, right, left), VHF 18080 / 18081; or, in VHF, a single H / V relay.
  • The WiMo's 6-pin socket: pin 1 right-hand circular, pin 2 left-hand circular, pin 5 horizontal, pin 4 ground. No voltage = vertical. +12 V goes on one pin only at a time.
  • The box: an ESP32 DevKit (WROOM module) on USB, a TBD62083A (or ULN2803A) driver, three 12 V relays, a five-position rotary selector (V, H, D, G, AUTO) on the front, and the rig's SEND line.

The principle

Three relays in a tree, KA → KB → KC, take the +12 V to one pin of the WiMo. Each relay can only pass it on to the next one or to one output: whatever the software does, two pins can never be fed together.

          +12 V (from the selector, on AUTO only)
            │
           KA ── at rest ──────────────────────────── (nothing)  → V  vertical
            │ worked
           KB ── at rest ─────────────────────────── pin 5      → H  horizontal
            │ worked
           KC ── at rest ─────────────────────────── pin 1      → D  right-hand circular
            │ worked
            └─────────────────────────────────────── pin 2      → G  left-hand circular
Polarisation WiMo pin at 12 V KA KB KC
V (vertical) none 0 – –
H (horizontal) 5 1 0 –
D (right-hand circular) 1 1 1 0
G (left-hand circular) 2 1 1 1

The front selector has two circuits. On V, H, D or G, its circuit A feeds the right WiMo pin directly and the relay tree gets no power: SatMe can do nothing, the box says so. On AUTO, it powers the tree and SatMe chooses. Its circuit B tells the ESP32 where it stands.

A change always goes through "no voltage": KA is released first, KB and KC set behind it, KA last. At power-up every relay is at rest (vertical). While the rig's SEND line is active, the box refuses every change.

The full wiring (ESP32 pins, driver, relays, selector, SEND through 1 kΩ), the firmware's rules and its USB dialogue (POL U H, ETAT?, ID?, 115200 baud) are in materiel/esp32-polarisation. Compile with the Arduino IDE 2 or arduino-cli (ESP32 package, board « ESP32 Dev Module »).

Setting it up

Réglages › Poste et rotor, the Polarisation d'antenne card (demonstration): connected (virtual), the box ESP32 virtuel, Tester la liaison, UHF WiMo 4 positions, VHF rien à commuter, Inverser droite et gauche, the profile at AOS, Sonder H/V every 30 s with a 2.5 dB hysteresis measured by the S-meter then the SDR, and the table of the best polarisation per satellite

Réglages › Poste et rotor › Polarisation d'antenne:

  1. Boîtier (box): its USB port. Nothing is opened until a port is chosen; the rig's, the rotator's or the KISS radio's port is never taken. The box is found again by its serial number if its name changes; lost, it is looked for every 5 s. On Linux, your user must be in the dialout group.
  2. Tester la liaison (test the link): who answers, the selector's position, the answer time.
  3. UHF: WiMo 4 positions or nothing. VHF: rien à commuter (circulaire fixe) (nothing), WiMo, or an H / V relay.
  4. Inverser droite et gauche (swap right and left): the sense of rotation depends on the wiring and on which way the antenna looks. Check once on a satellite whose polarisation you know.
  5. À l'AOS, mettre la polarisation du profil du satellite (at AOS, set the satellite's profile) and the Sonder H/V settings (below).

The virtual ESP32 (in the list of ports, ESP32 virtuel (essai, démonstration)) follows exactly the firmware's rules, with the box's front panel on screen (selector, SEND) and a simulated pass: to try everything before soldering. Its made-up measurements are marked as such and never feed a real box's predictions (Oublier les mesures simulées, forget the simulated measurements).

In Suivi: the Polarisation panel

  • The buttons V / H / D / G for each fitted band (UHF, VHF), RX on the receiving antenna of the followed satellite.
  • The real state: what the antenna is on, « manuel (sélecteur) » when the front selector is not on AUTO, « bloqué : émission » (blocked: transmitting) when a change is refused.
  • The satellite's profile at AOS, per band: la meilleure connue (sondages) (the best known, from the probes), ne rien changer (change nothing), or a fixed polarisation. Kept per satellite, applied at AOS (or when the satellite is chosen during a pass) if the selector is on AUTO.

Probing H / V and learning

Sonder H/V (probe H/V; ticked apart, in AUTO): on the receiving antenna only, SatMe tries H then V (the one in place first), lets the relays and the rig's AGC settle, and measures each with the rig's S-meter (IC-9700, IC-9100, IC-910H, TS-2000) or the SDR's level when it listens to the followed satellite. The better one is kept if it beats the other by at least the hysteresis (1.5 to 3 dB). Again every 20 to 60 s, and at once if the signal falls by 6 dB. Never while an SSTV picture is being decoded; cut short by a transmission, the previous polarisation comes back as soon as allowed. Sonder maintenant (probe now) starts one by hand.

Statistics: every probe is kept (polarisation/mesures.jsonl in the data folder): satellite, mode, band, elevation, azimuth, moment of the pass (rising, culmination, setting), H and V levels, winner, gap. Per satellite and elevation band (0–10°, 10–20°, 20–35°, 35–60°, 60–90°), SatMe draws the best polarisation and its confidence (at least 3 probes and 60 % of the wins; full from 5). That is what starts the next pass. The table is in Suivi (this satellite) and in Réglages (all of them).

Safety: the transmit lock

  • Never a switch on the antenna that transmits. Not while SatMe transmits on that band (the IC-9700's PTT: the uplink's band; SSTV and DATV: their frequency; an unknown frequency: both antennas), nor while the rig's SEND line is active — the box refuses too (ERR TX). The panel says « bloqué : émission » and the change waits.
  • The front selector has the last word: off AUTO, every order is refused (ERR MANUEL).
  • No radio transmission ever comes from this module.

For other programs

GET /api/polar (full state), GET /api/polar/stats; as POST pol?b=U&p=H, profil, reglage, test. Like the rest of the page, reachable from another machine with the station's password.

See also: Settings · Passes and tracking · Hardware safety

Clone this wiki locally