Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Phones

An iPhone or Android phone is a remote head for field work. It runs missions from the active workspace and sends its position and heading to the server. It does not edit the graph.

Get the app

Neither app is in a store. Build it from source.

PhoneNeedsInstall
iPhoneiOS 27Build with Xcode, see Phone apps
AndroidAndroid 10Build the APK, see Phone apps, then adb install it or open the file on the phone

To look around without a server, pick Try without a server under Demo.

Allow phones

Phones need a direct HTTPS endpoint whose key they pin at pairing.

  • Open Library → Phones and turn on Allow phones. This opens a phone Port, 8443 by default, with the server's own self-signed certificate.
  • A server on a LAN address with its own self-signed certificate, the default, also takes phones on its main port.

The status line reads Ready on 8443 when phones can reach the server, and Discovery on when nearby phones can find it. Your firewall must let the port in.

Reach the phone port over your LAN or a Tailscale IP. Tunnels that end HTTPS, such as Tailscale Serve or a Cloudflare Tunnel, carry only the browser.

Pair

  1. Press Pair phone. A QR code, an 8-digit Code and a Key appear for five minutes.
  2. On the phone, Scan QR. Or pick the server under Nearby and type the code, or type host:port and the code under Manual.
  3. Check the phone shows the same Key, then Trust.

Allow local network access when the phone asks, or Nearby stays empty. On a server without a browser, sdrmm phone prints the QR code in the terminal, see Configuration.

Five wrong codes end the offer with Too many tries. Each phone gets its own token: rename or revoke the phone in the list. Revoking disconnects it at once.

Missions

The phone lists what the active workspace offers. Its top bar shows the link: Online, Connecting, Offline or Refused.

MissionNeedsShowsControls
HuntA Signal hunt wired to a channelLevel, Listening, Warmer, Colder or On topStart, Tune, Sweep, Mark, Clicks, Haptics
DF driveA Direction finder, a Triangulation, or bothBearing rose, guidance, map with rays, heat, ellipseNavigate, Auto or Direct, Calibrate, Clear, Tune, Fit
RadarA Passive radarRange Doppler image and tracks
SurveyA Signal survey with a GPS on positionA trail coloured by levelRecord, Stop, Clear, Fit

A mission that cannot run is dimmed and says why, such as Not running. The phone can also switch the active workspace, for every client.

Navigate routes to the target and follows it when it moves, with a New target alert. The iPhone guides turn by turn itself; Android hands the target to Google Maps or another map app. Direct guides straight to the fix instead of crossing the bearings first.

Position and heading

Add a GPS position node, pick the Phone tab and the phone. Wire it where it is needed:

Wire toFor
Array positionWhere the array stands and which way it points
Signal hunt positionSweep bearings with a handheld antenna
Signal survey positionWhere each level was measured
Triangulation positionGuidance to the target
Passive radar txWhere the transmitter stands

The phone sends its pose only while a GPS node uses it. Set it up under Settings → Heading:

SettingDoes
SourceAuto fuses compass, gyro and GPS course. Compass or GPS course force one.
MountFlat on a seat or dash, Upright in a holder
OffsetA fixed angle between phone and car
Align with carDrive straight when asked; the app learns the Offset

During a mission the app keeps sending its position with the screen off. On iPhone, press Allow always in Settings → Location. On Android, a Background off chip means Android refused: keep the app on screen.

In the car

CarPlay and Android Auto show the DF drive map, a Missions list, and a DF panel with the bearing, guidance, Calibrate and Clear. Navigate starts navigation.

Android Auto hides sideloaded apps: in Android Auto, tap Version ten times, then turn on Unknown sources in Developer settings.

Android chips

ChipMeans
Online, Connecting, OfflineLink to the server, or why it refused
Sharing positionThe server uses this phone's position
Fused ±4°Heading source and accuracy
No GPS fixNo position yet
Approx. locationPrecise location is off
Location offLocation permission or service is off
No heading, No compassNo usable heading
Calibrate compassWave the phone in a figure eight
Background offAndroid refused to run in the background
Alerts offNotifications are off
No map tilesThe map is offline