Rotor / Antenna Control
HAM-Tools turns your antenna rotator via Hamlib (rotctld). 22 models come preconfigured: SPID, Yaesu GS-232, Hy-Gain, Idiom Press, Green Heron, EA4TX, Prosistel, M2, and for satellite work Easycomm/LVB/Fodtrack (the Hamlib backend knows more beyond that — the 22 are the curated profiles with verified factory defaults).
New in 1.29.0
Rotator control is new. You set it up under Settings → Rotor (⌘,). Like SSTV it's still young — feedback from users with a rotator connected is welcome.
Connection Types
Pick it in the "Connection" picker at the top of Settings → Rotor — selectable per configuration:
| Connection | What's behind it |
|---|---|
| USB (Serial) | The standard: HAM-Tools starts its own rotctld on the USB serial port. A separate Hamlib is not needed — the binary ships with the app |
| Network (rotctld) | Dock onto an already running rotctld — e.g. a remote rotator on another machine on the LAN |
Loopback-only on the USB path
The rotctld started by HAM-Tools deliberately listens on 127.0.0.1 only — so the rotator is not reachable over the LAN. For a rotator you deliberately expose on the network, use the Network path against your own rotctld.
Network (rotctld) — External Hamlib Server
If a rotctld is already running on another machine (or started locally by hand), HAM-Tools just docks onto it:
- Host:
127.0.0.1for the same machine, otherwise the LAN IP of the shack PC - Port: the standard rotctld port is
4533
First Setup (USB)
This is how to set up the standard path via a USB-serial adapter:
- Connect the rotator controller to the Mac via a USB-serial adapter, power it on
- ⌘, → Rotor tab
- Pick the manufacturer (SPID / Yaesu / Hy-Gain / … / Hamlib Dummy for testing without hardware)
- Pick the model — the factory defaults (baud, data bits, parity, handshake) and the azimuth / az-el capability load automatically
- Leave the connection on USB (Serial)
- Pick the USB port — the dropdown lists the available
/dev/cu.*(the 🔄 button refreshes the list) - Click "Connect" — the status light at the top goes from grey (Not connected) to orange (Connecting…) to green (Connected), and the live azimuth appears
→ Step by step with driver check and troubleshooting: Tutorial: Rotor Setup
Rotator Models
The model picker (manufacturer → model) covers the common controllers. Each profile brings the matching Hamlib rotor number, verified serial defaults and the azimuth / az-el capability:
| Manufacturer | Models | Az/El |
|---|---|---|
| SPID | Rot1Prog (e.g. RAU), Rot2Prog (e.g. RAS), MD-01/02 | Rot1Prog: az only · others az/el |
| Yaesu | GS-232A (G-800/1000/2800DXA, G-5500), GS-232B, GS-232 Generic (clones) | az/el |
| Hy-Gain | DCU-1/DCU-1X (Ham-IV, T2X), DCU2/DCU3/YRC-1 | az only |
| Idiom Press | Rotor-EZ, RotorCard | az only |
| Green Heron | RT-21 (DCU-1) | az only |
| DF9GR | ERC (Easy Rotor Control) | az only |
| EA4TX | ARS RCI (Az/El), ARS RCI (azimuth only) | depends on variant |
| Prosistel | D (azimuth), Combi-Track (Az/El) | depends on variant |
| M2 | RC2800 | az/el |
| Easycomm | Easycomm II (SatPC32/Gpredict), Easycomm III | az/el |
| AMSAT | LVB Tracker | az/el |
| XQ2FOD | Fodtrack | az/el |
| Hamlib | Dummy rotator (test without hardware) | az/el |
Below the picker you see the Hamlib rotor no. and whether the model does az/el or azimuth only. "Reset to factory defaults" brings the verified defaults back if you have changed the serial parameters.
Serial defaults are editable
The preset values (baud rate, data bits, stop bits, parity, handshake) come from Hamlib. If your controller differs — say a different baud rate on the device — adjust them under Serial Interface. Example: SPID runs at 600 Bd, Hy-Gain DCU-1 at 4800 Bd, Yaesu GS-232 at 9600 Bd.
Calibration & Rotation Range
In the Calibration & Rotation Range section:
| Field | Description |
|---|---|
| North offset | Correction in degrees if the rotator isn't exactly on north. Applied to every target |
| Rotation range | From–to in degrees. Default 0–360; for rotators with overlap e.g. 0–450, so the app picks the shortest/allowed path |
| Use elevation (Az/El) | Only visible on az/el models — leave off for azimuth-only beams (hexbeam) |
In the Polling section you set the poll interval (default 1000 ms) — how often the live azimuth is read from the rotator.
Spot Click → Turn to the DX Bearing
Like a CAT QSY
Just as a spot click turns the radio to the frequency, it optionally turns the antenna to the bearing.
In the DX Spots section, enable "Turn to the bearing automatically on spot click". After that, a click on a DX cluster spot turns the rotator to the great-circle bearing to the DX station:
- The bearing is computed from your QTH locator (station settings) and the DXCC location of the spot.
- Works only with a connected rotator.
- The north offset and the rotation range (see above) are taken into account.
Turning Manually & Status
The Status section at the very top shows a compass rose with the actual needle (red) and a target marker, plus the current azimuth in degrees:
- Connect / Disconnect — starts or ends the rotctld connection
- Manual target — slider 0–360°, "Turn" drives the rotator there
- Stop — halts a running rotation immediately
Multi-Config
You can save several configurations — e.g. one per rotator:
- Make the settings for rotator A (model + port + calibration)
- "Save as…" → enter a name (e.g.
SPID Big-Yagi) → Save - Configure rotator B (switch model/port)
- "Save as…" again →
Green Heron VHF - Switch between configs: in the "Active config" picker at the top
WARNING
Changes apply to the currently active config. If you switch rotator in the picker, the other config stays untouched — it's saved.
Hamlib Under the Hood
HAM-Tools ships with its own rotctld binary (Universal2, static, in Contents/Helpers/rotctld in the app bundle, Developer-ID signed). You don't need to install a separate Hamlib.
On the USB path, rotctld is started as a subprocess:
rotctld -m <hamlibRotNumber> -r <port> -s <baud> -C data_bits=8,stop_bits=1,… -T 127.0.0.1 -t 4533HAM-Tools then talks to rotctld via TCP on 127.0.0.1:4533 (Hamlib text protocol p = read position, P <az> <el> = set, S = stop). On the network path there's no own subprocess — the app connects directly to your rotctld on the configured host/port.
Troubleshooting
| Symptom | Possible cause |
|---|---|
| Light stays grey on "Not connected" | No model chosen, or no USB port selected |
| Light turns red "Error" | Port busy (another app/old rotctld instance), wrong baud rate, cable unplugged, or wrong model number |
| Connected, but azimuth stays on "—°" | The baud rate doesn't match the controller, or the model doesn't answer position queries — check the device's factory baud |
| Antenna turns to the wrong angle | Calibrate the north offset; for overlap rotators set the rotation range correctly (e.g. 0–450) |
| Elevation missing / ignored | The model is "azimuth only", or the "Use elevation" toggle is off |
| Spot click doesn't turn | Toggle in DX Spots off, rotator not connected, or no own QTH locator in the station settings |
| Port doesn't appear in the dropdown | Press the 🔄 button; the USB-serial driver may be missing (FTDI / Silicon Labs CP210x) |
For reproducible problems → Report a bug (⌘⇧B) with the diagnostics attachment enabled.
Tips
- Test without hardware: pick the model
Hamlib Dummy rotator (test without hardware)— the app connects to a simulated rotator, good for UI and spot-click tests. - Several rotators: one config per rotator, switch via the picker.
- Remote rotator: start rotctld on the shack PC and use the Network path in HAM-Tools with its LAN IP.
→ Related: DX Cluster (spot source), CAT / Radio Control (same Hamlib foundation), Settings → Rotor