Milestone: mobile TETRA-uplink direction-finding is working end-to-end and being field-tested across the city (2026-08-26). This note captures only the deltas that made it work — the full rig config lives in 2026-08-12-krakensdr-doa-rig and the fault runbook in krakensdr-df.

For Agents

Two facts here correct earlier assumptions: (1) the Kraken Pro app HAS an iOS version and uses the phone’s own GPS, so the whole USB-tether + gpsd + GPS-puck plan is UNNECESSARY for the DF map. (2) The Pi 5 + DAQ browns out on 5V/3A (incl. generic PD-30W) — it needs 5V/5A; earlier “OOM crashes” were largely power brownouts.

What made it work end-to-end

  • The official KrakenSDR “Kraken Pro” app has an iOS build (earlier notes assumed Android-only — that was wrong).
  • Recommended workflow — no tether, no gpsd, no GPS puck:
    1. iPhone joins the Pi’s AP: SSID hunter-ap / pass huntme123, Pi at 10.42.0.1.
    2. In the app, set server IP = 10.42.0.1, mode = LOCAL.
    3. The app uses the iPhone’s own GPS for the map.
  • Config was already correct for this path: doa_data_format = "Kraken App", krakenpro_key = 0ae4ca6b3. Verified connected.

The whole GPS-puck / USB-tether / gpsd effort is NOT needed for the DF map

Because the Kraken Pro app supplies GPS from the phone itself, Apple’s NMEA lockdown is irrelevant to the DF workflow. gpsd / USB-tether / u-blox puck are only needed if you separately want the Pi itself online in the field (optional, unrelated to the map).

Diagnostic before blaming the app

From iPhone Safari, load http://10.42.0.1:8080/doa. If the DoA UI renders, the network path (AP + server) is good — the problem is elsewhere, not the app connection.

2. Power — 5V/5A required, 5V/3A browns out (confirmed root cause of today’s reboots)

The Pi 5 + KrakenSDR DAQ browns out and resets on 5V/3A

A generic PD-30W supply does NOT help — the Pi only takes 5V, so PD-30W still delivers only 5V/3A. Needs a real 5V/5A source. On an official/5A adapter the Pi runs stable (throttled=0x0 under load; usb_max_current_enable auto-flipped to 1). The earlier “OOM crashes” were largely these power brownouts, not memory.

  • Car power: 12V→5V/5A (or 8A) buck + usb_max_current_enable=1.
  • Give the Kraken and the phone their OWN feeds — the Kraken is self-powered via its own USB-C, not off the Pi.

3. Field-DF technique

  • ANT-0 must point in the direction of travel — the app references bearings off the GPS heading.
  • Signal is bursty / trunked: bearings appear only while a handset is transmitting. Collect many samples; drive across / around the area, not straight at the source.
  • array_offset = 0 → bearings are still uncalibrated (relative).
  • Overdrive = ADC clipping — keep gain (currently 19.7 dB) just under the overdrive flag.

Final working config (for the record)

SettingValue
Center freq382.114 MHz (TETRA mobile uplink)
RF gain19.7 dB
VFO bandwidth25 kHz
ArrayUCA, 0.20 m (200 mm spacer hole)
Whipsext-3
AlgorithmMUSIC
DecorrelationOff
Optimize short burstsOn
doa_data_format”Kraken App”
location_sourcegpsd (unused by the app path)
zramreboot-safe
APhunter-ap up on wlan0