Over the years, we've received many questions from customers concerned and confused about why a vessel within VHF Over the Air (OTA) range might appear on their chartplotter as a DataHub target.
This article has been written to walk you through why the AIS target behaviour appears the way it does.
This comes down to the timing interplay between over-the-air (VHF) AIS position updates and Offshore Hub AIS (OHA) metadata updates from the DataHub.
Firstly, the most recent position data is always used, so VHF OTA position data will always be preferred when it is available. For metadata, while both sources are valid, the system always uses the most recent metadata available, applying a smart filtering mechanism to prevent duplicates while ensuring smooth handover when a vessel exits VHF range.
But because VHF AIS and DataHub AIS don’t update at the same time intervals, and the metadata TTL (time-to-live) is 2 minutes, this can sometimes result in what looks like the call sign "flipping" between WDN5158
and DATAHUB
, particularly for vessels at anchor or on slow update intervals.
Let’s look at three common scenarios:
⚓ 1. Anchored Vessel – Class B – OTA every 3 min, OHA every 6 min
OTA AIS updates come in infrequently (every 3 minutes).
OHA metadata updates come every 6 minutes from the PredictWind servers.
The DataHub filter table uses a 3-minute TTL to determine when OTA data is considered stale, at which point OHA can take over to update the position and metadata.
Time | Source | Call Sign | Lat / Lon | Notes |
13:00:00 | OHA |
| 14°44.076' / 61°10.758' | DataHub update arrives |
13:01:20 | OTA |
| 14°44.075' / 61°10.759' | VHF AIS update received |
13:01:21 | OTA |
| 14°44.075' / 61°10.759' | Display switches to OTA |
13:03:21 | TTL Expired | — | — | No OTA received for 3 mins |
13:03:22 | OHA |
| 14°44.076' / 61°10.758' | Reverts to OHA data |
13:07:20 | OTA |
| 14°44.075' / 61°10.759' | Next VHF AIS update received |
13:07:21 | OTA |
| 14°44.075' / 61°10.759' | Display switches to OTA again |
👉 Why it looks odd: Because the vessel isn’t moving much, the position doesn’t change significantly between updates, but the source toggles based on which data is freshest. This can give the appearance of “flipping” between OHA and OTA.
🚤 2. Moving Vessel – Class B – OTA every 30s, OHA every 6 min
For a vessel in motion transmitting AIS over VHF every 30 seconds:
Time | Source | Call Sign | Lat / Lon | Notes |
13:00:00 | OHA |
| 14°44.000' / 61°10.000' | Initial meta update |
13:00:25 | OTA |
| 14°44.020' / 61°10.015' | OTA takes over |
13:01:55 | OTA |
| 14°44.040' / 61°10.030' | Continuously updating |
13:06:00 | OHA |
| 14°44.100' / 61°10.075' | New OHA meta update arrives |
13:06:25 | OTA |
| 14°44.120' / 61°10.090' | OTA is now preferred due to freshness |
👉 Why it works perfectly: With regular OTA updates, the DataHub metadata never takes over updating the position data. For the metadata, there’s “flickering” or switching because sometimes the OHA data is newer than the VHF.
🔄 3. Moving Vessel – OTA every 30s, but metadata stale
Similar to the example above, even when a vessel is within range and updating its position over VHF every 30 seconds, the metadata (name, call sign, MMSI) is transmitted far less frequently — typically every 6 minutes for Class B transponders.
If the DataHub provides fresher metadata than what’s received over VHF, it may temporarily override the local call sign, even though you’re still getting regular position updates from the local AIS receiver.
Time | Source | Call Sign | Lat / Lon | Notes |
13:00:00 | OTA |
| 14°44.000' / 61°10.000' | Full VHF AIS update with metadata |
13:00:30 | OTA | (no metadata) | 14°44.020' / 61°10.015' | VHF AIS position only |
13:01:00 | OTA | (no metadata) | 14°44.040' / 61°10.030' | VHF AIS position only |
13:02:00 | TTL Expired | — | — | Metadata from 13:00 now stale |
13:02:01 | OHA |
| 14°44.060' / 61°10.045' | DataHub metadata used |
13:06:00 | OTA |
| 14°44.120' / 61°10.090' | Next VHF update with fresh metadata |
13:08:00 | TTL Expired | — | — | Metadata from 13:00 now stale |
13:08:01 | OHA |
| 14°44.125' / 61°10.095' | DataHub metadata used |
👉 Why this happens: The position messages keep flowing every 30 seconds, but the name/call sign metadata is only broadcast in specific AIS message types that occur less often. Once the metadata TTL expires (3 minutes), the system may fall back to the more current DataHub version, even while the position continues to update from local VHF.
📡 4. Vessel Leaves VHF Range – Seamless Handoff to OHA
This is the primary use case the filtering logic is designed to handle gracefully:
Time | Source | Call Sign | Lat / Lon | Notes |
13:00:00 | OTA |
| 14°44.000' / 61°10.000' | Within VHF range |
13:01:30 | OTA |
| 14°44.060' / 61°10.045' | Last OTA message before losing range |
13:03:31 | TTL Expired | — | — | OTA data no longer valid |
13:03:32 | OHA |
| 14°44.090' / 61°10.060' | DataHub metadata takes over |
13:09:32 | OHA |
| 14°44.130' / 61°10.090' | Metadata updated again |
👉 Why this is necessary: Without the 2-minute TTL fallback, you’d lose all target visibility when a boat leaves VHF range. The goal is to avoid a dead zone between VHF and OHA coverage.
Summary
Everything you’re seeing is the result of smart fallback logic that’s deliberately tuned to prevent target dropouts while minimising stale data. The occasional switching between call signs isn't a bug — it’s a side effect of trying to do something quite elegant: maintain consistent visibility across the transition from local to offshore AIS.
That said, we really value your feedback, and your testing has been incredibly helpful in confirming that the system behaves as designed. If you’re seeing behaviour outside of this (e.g., a five-minute delay in switching sources), we’d be happy to investigate further; just let us know.