Overview
Rotator control aims your antenna at the selected satellite for the whole pass. OrbitDeck computes the live azimuth and elevation from the orbit and your station — the same look angles the Home and Sky Radar screens show — and sends them to the rotator on a steady loop. Before acquisition it can pre-position to the AOS bearing; after loss of signal, or when you disconnect, it parks the antenna at a bearing you choose.
Rotator control works only while OrbitDeck is in the foreground — iOS suspends Bluetooth and networking for backgrounded apps. Turn on Keep screen awake on Home (Settings → Display) to leave it running during a pass.
Protocols
OrbitDeck speaks the rotator protocols in the CardSat reference set that are usable on iOS, byte-for-byte:
- Yaesu GS-232A/B — the ubiquitous ASCII protocol (
W aaa eee to point) used by Yaesu GS-232 controllers and the many clones and Arduino projects that emulate it. Serial.
- Easycomm I / II / III — the open ASCII standard used by many home-built and open-source controllers (
AZ… EL…). Easycomm III is accepted with the same grammar as II (velocity fields are not used). Serial.
- SPID Rot2Prog — the binary frame protocol of SPID Elektronik controllers (Rot2Prog, MD-01/02). Serial.
- SAEBRTrack — the compact whole-degree ASCII format (
AZnnnELnnn) used by SAEBRTrack and SatPC32-style Arduino controllers. Fire-and-forget (no position read-back). Serial.
- rotctld (Hamlib NET rotctl) — the Hamlib network rotator daemon over TCP (default port 4533). Because
rotctld can drive virtually every rotator Hamlib supports, this is the most flexible option — run rotctld on a computer near the rotator and point OrbitDeck at it. Network.
- PstRotator — the popular Windows rotator program's UDP control input (default port 12000). OrbitDeck pushes the tracking bearing to PstRotator, which drives your actual rotator. Network.
- OZ9AAR URC — the OZ9AAR Universal Rotator Controller over TCP with a JSON command format (
{"GOTO":[az,el]}, default port 1111). Network.
rotctld is the recommended path for a rotator that OrbitDeck doesn't speak natively: Hamlib's driver list covers Yaesu, SPID, Green Heron, Prosistel, M2, EA4TX and dozens more, and OrbitDeck only needs the TCP address. (The Green Heron RT-21 Az/El, in particular, uses two independent serial links — one per axis — so it can't be driven directly from a single BLE adapter; reach it through rotctld on a nearby computer instead.)
Connections & adapters
How OrbitDeck reaches the rotator depends on the protocol:
- BLE serial adapter (GS-232, Easycomm, SPID, SAEBRTrack) — a Bluetooth Low Energy UART adapter (Nordic UART Service or a generic write+notify pair) wired to the rotator controller's serial port. This is the same class of adapter used for wired rig control; see the adapters that work on the Rig Control page.
- Network (rotctld, PstRotator, OZ9AAR URC) — a plain TCP or UDP connection over your local Wi-Fi to the computer or controller running the daemon. Enter its IP address and port.
Bluetooth Classic (SPP) adapters are not supported on iOS. Apple restricts Bluetooth Classic to MFi-certified accessories, so HC-05/HC-06-style serial adapters cannot be opened by a normal app. Use a BLE UART adapter for serial rotators, or reach the rotator over the network with rotctld.
Setting it up
- Open Settings → Rotator control and turn on Enable rotator control.
- Choose the protocol. Network protocols reveal a Host and Port; serial protocols reveal the BLE adapter picker and serial rate.
- For a network rotator, enter the daemon's host (IP) and port — the default fills in automatically (4533 for rotctld, 12000 for PstRotator, 1111 for OZ9AAR URC). For a serial rotator, tap BLE adapter and pick your adapter from the scan.
- Set the pointing, alignment and park options as needed, then tap Done.
Controlling on Home
With a rotator configured, a Rotator card appears on Home. Tap Connect; the status dot turns green and the card shows the commanded azimuth (with compass point) and elevation, plus the current mode — Tracking, Pre-positioning or Parked. A small transmit line confirms each command was sent. The rotator follows whichever satellite is selected on Home. Tap Disconnect to stop; OrbitDeck sends the antenna to its park position on the way out.
Pointing options
- Minimum elevation — only track above this elevation; below it the antenna waits or parks. Set to 0 to track the whole visible pass.
- Pre-position lead — how many seconds before AOS to aim at the rise bearing so the antenna is already there when the satellite appears (0 disables pre-positioning).
- Slew lead — optionally aim a few seconds ahead of the satellite while tracking, to compensate for a rotator's mechanical lag on fast, high passes (0 disables).
- Deadband — the smallest change in commanded bearing that triggers a new move, so the rotator isn't nudged needlessly during slow stretches.
- Update rate — how often the pointing loop recomputes and sends the target.
On the network UDP path (PstRotator) OrbitDeck also refreshes the target on a short keep-alive so a dropped datagram self-heals. On reliable transports (rotctld over TCP, and BLE serial) it sends only when the target actually moves past the deadband, so an unchanged position is never re-issued.
Alignment & park
- Azimuth / elevation offset — a fixed correction added to every command to compensate for a mast or controller that isn't perfectly aligned.
- Magnetic correction — if your controller is set up to magnetic north rather than true north, OrbitDeck subtracts the local magnetic declination so the antenna still points at the true bearing.
- Park azimuth / elevation — where the antenna goes on loss of signal, between passes, and when you disconnect.
Flip & azimuth ranges
OrbitDeck matches the axis convention of your rotator and handles high, near-overhead passes cleanly:
- Azimuth range — 0–360° (0 = North, the usual case), −180…+180° (centered on North), or 0–450° with a 90° overlap to avoid a cable-wrap at North. In 450° mode OrbitDeck looks a few seconds ahead and pre-commits to the upper turn when a North crossing is imminent, so it doesn't spin all the way around mid-pass.
- Flip mode — for an el rotator that reaches past 90°, OrbitDeck can flip an overhead pass (azimuth +180°, elevation 180−el) so the antenna tips over the top instead of whipping 180° in azimuth as the satellite transits the zenith. It samples each pass and only flips the ones that would otherwise cross the azimuth seam.
Permissions & privacy
The first time you connect, iOS asks for Bluetooth (serial rotators) and/or Local Network (network rotators) permission. These connections go directly from your device to your rotator or its host computer over Bluetooth LE or your local Wi-Fi; nothing is sent to the developer. See the privacy policy.
Troubleshooting
- Adapter not found — make sure the BLE adapter is powered, in range, and not already connected to another app; confirm Bluetooth permission was granted. Unnamed adapters still appear in the list (sorted by signal strength).
- Network connects but nothing moves — confirm the host IP and port, that the daemon is running and reachable on your subnet, and that iOS Local Network permission was granted (if denied, the connection can look ready while packets are silently dropped). For PstRotator, match the UDP Control Port (Communication → UDP Control Port, default 12000).
- Antenna points the wrong way by a fixed amount — set the azimuth/elevation offset, or enable magnetic correction if your controller is referenced to magnetic north.
- Rotator spins around at North — choose the 0–450° overlap range if your rotator supports it, or the −180…+180° range, to match its axis.
- It waits instead of tracking a low pass — lower the minimum-elevation setting.
- Verifying without hardware — run
rotctld -m 1 -T 0.0.0.0 -t 4533 -vvvvv (Hamlib's dummy rotator) on a Mac/PC and point OrbitDeck at it; the verbose log shows each P <az> <el> command arriving.