APRSSwift
APRS tracking & messaging
Free · In-App Purchases
APRSSwift brings the Automatic Packet Reporting System (APRS) to your Apple devices — a native, universal amateur-radio app for iPhone, iPad, Mac, and Apple Watch.
Report your position to the APRS network, watch nearby stations move on a live map, read a real-time packet log, and exchange APRS text messages — all with your own callsign.
FEATURES
• Live map with APRS symbols, station tracks, and your own location
• Connect via APRS-IS (Internet), a TCP KISS TNC, a Bluetooth TNC (Mobilinkd), or the built-in AFSK sound modem (1200 baud — no extra hardware)
• Full packet decoding: position, Mic-E, compressed, objects, items, status, weather, messages, and telemetry
• SmartBeaconing — adaptive beacon rate based on speed and turns
• Two-way APRS messaging with acknowledgements
• Station list with distance, favorites, and proximity alerts
• Maidenhead grid locator, metric or imperial units, and dead reckoning
• Post APRS objects, send status reports, and view weather & telemetry charts
• Apple Watch app: beacon, grid, and nearby stations on your wrist
APRSSwift is designed for licensed amateur radio operators. A valid callsign is required; your APRS-IS passcode is generated automatically from it.
73!
more - Apple Watch: the watch app now connects through your iPhone. It previously stopped with "Error" on a real watch; it now shows nearby stations and beacons over whatever link your iPhone uses, APRS-IS or radio.
- Apple Watch: the watch beacons with its own SSID (-7 by default), so it no longer overwrites your phone's position.
- Receive-only mode (N0CALL) connects to APRS-IS again.
1.9 4d ago
You can now beacon without giving away exactly where you are. Settings ▸ Beaconing has a new Position precision option: exact, or within roughly 200 m, 2 km, 20 km or 110 km (600 ft, 1 mi, 12 mi or 70 mi with imperial units). It uses standard APRS position ambiguity, so other apps and aprs.fi show you as an area rather than a point.
The real position is cut down, never rounded, so it always sits inside the area that goes out. Compressed positions are switched off while this is on, because that format has no way to carry reduced precision. Objects you place on the map still go out exactly where you put them.
1.8 Oct 1
If your callsign has an SSID — TA3HX-4, N0CALL-9, anything with a dash — the app never acknowledged messages sent to you. The check compared the addressee against your callsign with the SSID stripped off, so it never matched, and the sender kept retrying into silence. This has been broken in every release so far. Found by TA3HX, who noticed the handheld sitting next to his phone acked the same message in six seconds.
Acks now leave by the way the message arrived. Something heard on the radio is answered on the radio; something that came in over APRS-IS is answered there. Previously every ack went out over the air, so a station that only exists on the Internet never heard it.
Messages in the APRS 1.2 reply-ack form are read correctly now. When the sender closed the message number with a brace — hello{AB}CD, where AB is the number and CD acknowledges something of yours — the brace and everything after it were taken as part of the number, so the ack went back carrying a number the sender did not recognise.
New option: acknowledge messages addressed to your callsign without the SSID. Off by default, because an ack goes on the air under your callsign and strictly that message was meant for a different station — but bots routinely drop the SSID when they reply, so if you run a single station you can opt in.
The igate switch is easier to find. It used to appear only once "Also use APRS-IS" was already on, which meant most people never saw it existed. It is visible whenever you are on radio now, and turning it on switches on what it needs.
1.7 Sep 28
Conversations can be deleted. Swipe one in the list, or use the menu inside the thread. Reported by KE4PIC, who pointed out I had added the messaging screen and forgotten the delete button entirely.
Opening a thread now lands on the newest message instead of the oldest. Long conversations used to need a scroll all the way down to see what had just arrived, which was a plain bug rather than a preference. While fixing it I found the thread list was sorted alphabetically, so an active conversation sat below every station that had ever said anything. It is ordered by most recent now.
New: the app can work as a receive-only igate. With "Also use APRS-IS" on, a second switch appears that passes packets heard on your radio into APRS-IS. It is off by default, and off for the N0CALL placeholder, because gating puts traffic on a global network under your own callsign and that should be your decision. Packets marked NOGATE or RFONLY are left alone, as are ones that already came from the Internet.
1.6 Sep 6
Message threads now survive a restart. Conversations were only ever held in memory, so leaving the app to take a call and coming back meant starting the thread again from scratch. They are saved to disk now, along with any message still being retried, which used to vanish mid-flight if the app was closed. Asked for by KJ5IMV, who tests his coverage by messaging WXBOT and kept losing the thread.
APRS-IS can now run alongside the radio. Turn on "Also use APRS-IS" under Connection and you get the wider network on the map as well as whatever your antenna hears, instead of choosing one or the other. A station heard both ways is only shown once, and the copy that arrived over the air is the one kept, so "heard direct" still means what it says. The connection status keeps reporting the radio, which is the link you are actually responsible for.
Support the Developer now also appears in the About section, because someone went looking for it and could not find it where it was.
1.5 Aug 31
Fixed: the sound modem could invent stations out of static. Callsigns made of nonsense characters were appearing in the log and on the map, most noticeably on a quiet channel with the squelch open. Two things were wrong, and both are fixed: a bit-repair step was being applied to noise as freely as to real packets, and nothing afterwards checked that the result was a callsign at all. Reported by KJ5IMV, whose log became the test for it.
Messages are now retried until the other station acknowledges them, backing off from 30 seconds and giving up after about half an hour. Each message shows whether it is still going, arrived, or never got there.
The Stations tab has an On air view: operators heard in the last hour, with digipeaters, gateways and weather stations left out. Swipe a station to start a conversation without going through its detail screen.
Settings now names the audio interface it is using and says whether it can key your radio. A Digirig Lite can. A Digirig Mobile keys over a serial port, which iOS cannot reach, so the radio's own VOX has to do it. Knowing which one you have saves a lot of guessing.
On Mac, the window title no longer changes to whichever station you last tapped.
1.4 Aug 28
1.3.1 fixes two bugs reported from the field.
• Messages addressed to a callsign with an SSID — N0CALL-9 rather than N0CALL — never reached the Messages tab. They showed up in the log and nowhere else, and no acknowledgement went back, so the sender kept retrying. Anyone running an SSID, which is most mobile operators, had messaging silently broken in both directions. Messages sent to any of your own SSIDs now appear, and the one addressed to your exact station is acknowledged.
• Transmitting over a Bluetooth TNC could stall for a whole session while receiving carried on working normally, so stations kept arriving on the map while nothing went out.
• The sound modem gains a guide to keying the radio, at Settings → Connection → Keying the radio. The app cannot key a radio itself, and which route your cable takes — keying itself, relying on the radio's VOX, or a button under your thumb — decides whether anything transmits at all.
Also: "Beacon now" now says why it cannot transmit instead of doing nothing at all, a missing position points at location access rather than satellites, and the AX.25 command bits match what the rest of the network sends.
1.3.1 Aug 25
Version 1.3 rebuilds Bluetooth TNC support.
• Handhelds with a built-in TNC now work — BTECH UV-PRO, Vero VR-N76 and Radioddity GA-5WB — alongside standalone TNCs: Mobilinkd TNC3 and TNC4, PicoAPRS v4, and the B.B. Link adapter for Kenwood TH-D74/D75. Homebrew TNCs built on Nordic UART, HM-10 or Microchip serial modules are covered too, and a TNC matching none of these can still be picked by hand.
• A live device list replaces typing in a device name. Choose your radio from the list, with its signal strength shown; the app remembers it and reconnects on its own when the radio comes back into range.
• Fixed: packets longer than a single Bluetooth transfer could be truncated when transmitting, and status frames sent by some TNCs are no longer passed to the packet decoder.
Remember to switch on the radio's own KISS mode — on a UV-PRO or VR-N76 that is Menu > General Settings > KISS TNC.
1.3 Aug 17
Version 1.2 adds three new ways to connect to a radio, so APRSSwift is no longer limited to the Internet:
• AFSK sound modem — a built-in 1200-baud Bell 202 modem. Connect your device to a transceiver with an audio cable and work packet over RF with no TNC hardware at all.
• TCP KISS TNC — connect to Direwolf or a networked hardware TNC on your LAN.
• Bluetooth TNC — works with Bluetooth LE KISS TNCs such as the Mobilinkd.
• A live audio input-level meter and an adjustable VOX lead to help you set levels.
Station details now also show whether a packet reached you directly over RF or through the Internet.
1.2 Aug 16
Support the developer: you can now make an optional contribution to support APRSSwift. It's completely voluntary — the app stays free and ad-free, and no features are locked behind it. Thank you, and 73!
Also: fixed a bug when entering a new message recipient, plus clearer messaging when sending isn't available.
1.1 Jul 22
- Apple Watch: the watch app now connects through your iPhone. It previously stopped with "Error" on a real watch; it now shows nearby stations and beacons over whatever link your iPhone uses, APRS-IS or radio.
- Apple Watch: the watch beacons with its own SSID (-7 by default), so it no longer overwrites your phone's position.
- Receive-only mode (N0CALL) connects to APRS-IS again.
more Version 1.9 4d ago
Data Linked to You The following data may be collected and linked to your identity: