Grid Path Mobile is a browser-based tool designed for microwave rover operators to quickly compute great-circle headings, evaluate terrain line-of-sight, and log QSOs in the field during the ARRL 10 GHz & Up Contest — all from a smartphone, with no app installation required.
grid-path-mobile.html in any modern smartphone or desktop browser.The page is organized top-to-bottom in a single scrolling column optimized for portrait smartphone use:
| Section | Location | Description |
|---|---|---|
| Header bar | Top, sticky | App title, font-size buttons (A− / A+), theme toggle (☀/☾) |
| Endpoints card | §3 | Point A, Point B, antenna heights, band, earth model, units |
| Terrain spinner | Below inputs | Visible while fetching elevation data |
| Path Results | §4 | Compass rose, heading values, path statistics (hidden until first calculation) |
| Terrain Profile | §5 | Elevation cross-section with LOS and Fresnel zone (hidden until calculation) |
| QSO Log card | §6 | Contest score bar, callsign entry, band/mode, LOG button, QSO list |
Point A represents your transmit location. It is used for heading calculations, terrain profiling, and as the source grid for logged QSOs. Enter one of the following formats:
| Format | Example | Notes |
|---|---|---|
| 2-char grid | DM | Field-level, center of 20° × 10° square |
| 4-char grid | DM43 | Square-level, center of 2° × 1° square |
| 6-char grid | DM43CG | Subsquare — standard for contest exchange |
| 8-char grid | DM43CG44 | Extended precision |
| Lat, Lon | 33.27,-111.79 | Decimal degrees, comma-separated |
Point B is the remote station or target location. Accepts the same formats as Point A. For contest use, enter the 6-character grid square received in the exchange. You can also tap any row in the beacon map to auto-fill Point B with a beacon's grid.
Ant A and Ant B set the effective antenna height above ground at each end of the path. These values affect only the terrain profile and Fresnel zone calculation — they have no effect on heading or QSO scoring.
| Setting | Typical Use |
|---|---|
| 1.0 m | Dish or horn on a car roof rack (default) |
| 1.5 m | Elevated tripod or portable mast |
| 2.0 – 3.0 m | Fixed tower or elevated installation |
The Band selector determines which frequency is used for Fresnel zone calculation in the terrain profile and which contest multiplier is applied to QSO scores. All eight ARRL 10 GHz & Up contest bands are available:
| Selection | Frequency (MHz) | Wavelength | Score Multiplier |
|---|---|---|---|
| 10 GHz ×1 | 10,368.1 | 3 cm | ×1 |
| 24 GHz ×2 | 24,048.1 | 1.2 cm | ×2 |
| 47 GHz ×4 | 47,088.1 | 6 mm | ×4 |
| 76 GHz ×8 | 76,032 | 4 mm | ×8 |
| 119 GHz ×16 | 119,000 | 2.5 mm | ×16 |
| 142 GHz ×32 | 142,000 | 2.1 mm | ×32 |
| 241 GHz ×64 | 241,000 | 1.2 mm | ×64 |
| >241 GHz ×128 | 300,000 | <1 mm | ×128 |
After tapping CALCULATE PATH, results appear automatically below the calculator card. Scroll down to view them.
The compass rose displays the great-circle bearing between Point A and Point B using a classic kite-needle design:
Below the compass, a statistics grid shows:
| Statistic | Description |
|---|---|
| DISTANCE | Great-circle distance between Point A and Point B |
| AZIMUTH A→B | Forward bearing in degrees with compass direction abbreviation |
| REVERSE B→A | Bearing back from Point B to Point A |
| MIDPOINT | 6-character grid square at the geographic midpoint of the path |
| GRID A | Resolved grid and decimal lat/lon for Point A |
| GRID B | Resolved grid and decimal lat/lon for Point B |
| ELEV MIN | Minimum terrain elevation along the path (requires elevation data) |
| ELEV MAX | Maximum terrain elevation along the path (requires elevation data) |
The terrain profile is a cross-sectional elevation chart drawn along the great-circle path from A to B. Elevation data is fetched in real time from the Open-Meteo Elevation API using up to 200 sample points spaced along the path.
| Element | Color | Meaning |
|---|---|---|
| Terrain fill | Blue-grey gradient | Earth surface elevation corrected for atmospheric curvature using the selected k-factor |
| LOS line | Green | Straight line-of-sight between the two antenna tips (A and B at their specified heights) |
| Fresnel zone | Cyan dashed band | First Fresnel zone (F1) radius around the LOS line at the selected frequency. Microwave links perform best when this zone is 60% clear. |
| Obstruction | Red highlight | Any terrain segment rising above the LOS line — link is blocked here |
| Antenna markers | Cyan dots | A and B antenna positions with mast height above terrain |
Below the profile chart, a single-line verdict summarises the path quality:
| Verdict | Meaning |
|---|---|
| ✓ PATH CLEAR | LOS is unobstructed and at least 60% of the F1 Fresnel zone is clear. Link should be solid. |
| △ LOS CLEAR, F1 INTRUDED | Direct LOS is clear but terrain intrudes into the Fresnel zone. Expect some diffraction loss but the link should still work. |
| ✕ PATH OBSTRUCTED | Terrain is above the LOS line. The link is blocked at the reported distance from A. A higher vantage point or different route is needed. |
The verdict also reports the worst-case clearance margin and location, frequency used, and k-factor applied.
If the elevation API is unreachable (offline, poor signal), the terrain profile is skipped and a ⚠ ELEVATION UNAVAILABLE message is shown in its place. Heading calculation and QSO logging are not affected — they work completely offline.
The built-in QSO log is designed for field use during the ARRL 10 GHz & Up Contest. It stores all contacts locally on the device, computes ARRL contest scores automatically, detects duplicates, and exports to ADIF for submission.
K6VHF/R format for rover operation). Saved automatically after first entry.| Field | Description |
|---|---|
| Date / Time | UTC date and time at moment of logging (auto-captured) |
| My Call | Your callsign as entered in the My Call field |
| Worked Call | The remote station's callsign |
| My Grid | 6-character grid from Point A at time of logging |
| Their Grid | 6-character grid from Point B at time of logging |
| Distance | Computed haversine distance between the two 6-char grid centers (km) |
| Band | Selected band label (e.g., 10G, 24G, 47G…) |
| Multiplier | ARRL band multiplier (1, 2, 4, 8… 128) |
| Score | Points awarded: distance × multiplier (0 for dupes) |
| Dupe flag | True if same callsign + same band was already logged |
| Mode | CW / SSB / FT8 / Q65 |
Scoring follows the official ARRL 10 GHz & Up Contest rules:
| Band | Multiplier | Example: 250 km QSO |
|---|---|---|
| 10 GHz | ×1 | 250 pts |
| 24 GHz | ×2 | 500 pts |
| 47 GHz | ×4 | 1,000 pts |
| 76 GHz | ×8 | 2,000 pts |
| 119 GHz | ×16 | 4,000 pts |
| 142 GHz | ×32 | 8,000 pts |
| 241 GHz | ×64 | 16,000 pts |
| >241 GHz | ×128 | 32,000 pts |
The same contact on multiple bands counts as a separate valid QSO on each band, provided the exchange is genuinely made on that band. Only true dupes (same call, same band, logged more than once) are zeroed.
Every time you tap LOG, the app checks whether the same callsign has already been logged on the same band in the current session. If it has:
The compact log list shows the most recent QSOs directly below the entry form. Each row contains:
| Element | Description |
|---|---|
| Date / Time | UTC in MM/DD HH:MMz format |
| Callsign | Worked station's callsign in cyan |
| Grid path | MyGrid → TheirGrid (6-char) |
| Score | Points in large bold green (1,234) or DUPE in red |
| Band × Mult | Band label with multiplier (e.g., 10G ×1, 24G ×2) |
| Delete button | ✕ — removes the QSO from the log immediately |
The log header shows a running summary: N QSOs · TOTAL PTS · ND dupes
Tap ⛶ FULL LOG to open a full-screen overlay showing all QSOs with expanded details. On Android, the device Back button closes this view. On iOS, use the ← BACK button. From within the full log view you can also access Map and ADIF Export.
Tap the ✕ button at the right of any log row to permanently delete that entry. Deletion is immediate — there is no undo. If you accidentally delete a QSO, you must re-enter it manually.
Tap ✕ CLEAR LOG at the bottom of the log card (or in the full log footer). A confirmation dialog appears stating the number of QSOs to be deleted. This action is irreversible — export ADIF first if you need to preserve the data.
At the top of the QSO Log card, a Contest Score Bar displays a real-time summary of your overall performance. It reads from the shared contest log key and updates automatically when you switch back to this browser tab or when the log is updated in another tab.
| Cell | Shows |
|---|---|
| Total Score | Sum of all valid (non-dupe) QSO scores |
| QSOs / Dupes | Valid QSO count, with dupe count in red if any |
| Active Bands | Number of different bands with at least one valid QSO |
| Best ODX | Longest single QSO distance in km |
| Open Contest Log | Link to the dedicated 10ghz-log.html contest logger |
gp_qsolog) for path-calculation purposes.
The Contest Score Bar reads from the shared contest log key (crf_10ghz_log_v1)
written by the dedicated 10ghz-log.html page. If you log only in Grid Path Mobile,
the score bar will show "No contest QSOs" until you also use the contest logger.
The 🗺 MAP button opens an interactive Leaflet map in a new browser tab showing all known SoCal / NorCal / AZ microwave beacons plus your logged QSO paths. The map can be opened even when the QSO log is empty — it will still show all beacons.
| Symbol | Color | Meaning |
|---|---|---|
| ● Large circle | Green | My station — one marker per unique My Grid / callsign combination. Popup shows callsign, grid, QSO count, and total points from that site. |
| ● Small circle | Red | Worked station — one marker per QSO. Popup shows callsign, grid, band × multiplier, mode, UTC time, distance, and score. |
| ◇ Diamond | Orange | Microwave beacon — all 10 known regional beacons. Popup shows name, location, grid, frequencies, and heading/distance from Point A (or from each logged op site). |
| ─── Line | Cyan solid | Valid QSO path (great-circle line A → B) |
| - - - Line | Faint red dashed | Duplicate QSO path |
Tapping an orange beacon diamond opens a popup containing:
WA6MEM/B: 10368.300G)| Name | Grid | Location | Callsign(s) | Frequencies (MHz) |
|---|---|---|---|---|
| Palos Verdes | DM03tr | SoCal | WA6MEM/B | 10368.300 |
| Mt Frazier | DM04ms | SoCal | N6CA/B | 10368.310 |
| Heaps Pk ⚠ | DM14kf | SoCal | AF6HP/B | 10368.330 |
| San Diego | DM12jv | SoCal | K6QPV/B | 10368.360 |
| Mt. Leeson | CM97ae | NorCal | KF6KVG | 10367.990 / 24191.975 / 47087.990 / 79919.920 |
| Mt Vaca | CM88wj | NorCal | W6ASL | 10368.325 |
| Mt Allison | CM97bl | NorCal | K6MG / N6NU / KF6KVG / AD6IW | 10369 / 24192 / 47088 / 80832 |
| Bear Mtn ⚠ | DM06ir | NorCal | W6BY/B | 24191.990 |
| Stanford | CM87wj | NorCal | K6ML | 122400 |
| White Tanks | DM33rn | AZ | W7ATN | 10368.375 |
⚠ = beacon reported down at time of writing. Verify current status before operating.
When the app is in dark mode (default), the map uses CartoDB dark tiles for readability in low-light conditions. In light mode, it switches to standard OpenStreetMap tiles. The map auto-fits all markers and beacons into view on opening.
Tap ⬇ EXPORT ADIF (in the log card or full log view) to download your QSO log
as an ADIF 3.1.4 file (.adi) for submission to the ARRL or import into
logging software such as WSJT-X, N1MM+, or Log4OM.
| ADIF Field | Content |
|---|---|
| STATION_CALLSIGN | Your callsign (My Call) |
| OPERATOR | Base callsign without /R suffix |
| CALL | Worked station callsign |
| QSO_DATE | UTC date (YYYYMMDD) |
| TIME_ON | UTC time (HHMMSS) |
| BAND | Band label (e.g., 10G) |
| FREQ | Frequency in MHz (e.g., 10368.1000) |
| MODE | CW / SSB / FT8 / Q65 |
| GRIDSQUARE | Worked station's 6-char grid |
| MY_GRIDSQUARE | Your 6-char grid at time of QSO |
| DISTANCE | Distance in km between grid centers |
gridpath_YYYY-MM-DD.adi using the current local date.
Save it immediately after export — the download link expires when the page is refreshed.
For ARRL 10 GHz & Up Contest submission, export the ADIF file after the contest period ends and upload it through the ARRL contest submission portal. Verify that your callsign, grid squares, and operating times are correct before submitting. Dupe QSOs are included in the ADIF export for completeness — the ARRL adjudication software handles dupe removal on their end.
All QSO log data is stored exclusively in your browser's localStorage on your own device. No data is transmitted to any server. The application itself is served as a static HTML file — after the page loads, it operates completely independently of the server.
| Key | Content | Where Used |
|---|---|---|
gp_qsolog | Full QSO log array (JSON) | Grid Path Mobile only |
gp_mycall | Your saved callsign | Auto-fills My Call on next visit |
gp_font | Font size index (0–3) | Display preference |
gp_theme | "dark" or "light" | Display preference |
Each physical device and each browser app maintains a completely separate localStorage. Multiple operators using the same URL from their own smartphones will each have their own independent log. There is no synchronization, no shared database, and no way for one device to see another device's data. This is the correct behavior for rover contest operation where each operator maintains their own log.
| Action | Effect on Log |
|---|---|
| Close the browser tab | Data preserved |
| Restart the browser | Data preserved |
| Restart the phone | Data preserved |
| Use Private / Incognito mode | Data lost when tab closes |
| Browser "Clear Site Data" | Data permanently deleted |
| Uninstall the browser | Data permanently deleted |
Three display controls appear in the sticky header bar:
| Control | Function |
|---|---|
| A− | Decrease base font size. Cycles through 4 steps: 100% → 112% → 125% → 140% |
| A+ | Increase base font size. Useful when operating in bright sunlight or gloves. |
| ☀ / ☾ | Toggle between dark mode (default, blue-black theme) and light mode (white theme). Light mode is better for outdoor use in direct sunlight. |
All three settings are saved to localStorage and restored automatically on next visit.
| Band | Mult | Freq (MHz) | Score for 100 km | Score for 500 km |
|---|---|---|---|---|
| 10 GHz | ×1 | 10,368.1 | 100 pts | 500 pts |
| 24 GHz | ×2 | 24,048.1 | 200 pts | 1,000 pts |
| 47 GHz | ×4 | 47,088.1 | 400 pts | 2,000 pts |
| 76 GHz | ×8 | 76,032 | 800 pts | 4,000 pts |
| 119 GHz | ×16 | 119,000 | 1,600 pts | 8,000 pts |
| 142 GHz | ×32 | 142,000 | 3,200 pts | 16,000 pts |
| 241 GHz | ×64 | 241,000 | 6,400 pts | 32,000 pts |
| >241 GHz | ×128 | 300,000 | 12,800 pts | 64,000 pts |
| Format | Length | Example | Precision (center) |
|---|---|---|---|
| Field | 2 chars | DM | ~1,100 km × 550 km |
| Square | 4 chars | DM43 | ~110 km × 55 km |
| Subsquare (contest standard) | 6 chars | DM43CG | ~4.6 km × 2.3 km |
| Extended subsquare | 8 chars | DM43CG44 | ~460 m × 230 m |
| GPS / decimal | lat,lon | 33.27,-111.79 | Limited by input precision |
| Issue | Cause | Solution |
|---|---|---|
| LOG button shows error | Missing callsign, or Point A/B not set | Ensure My Call, Point A, and Point B all have valid entries |
| Terrain not loading | No internet connection | Heading and log still work offline; reconnect for terrain |
| Map popup blocked | Browser popup blocker | Allow popups for this site and tap MAP again |
| GPS not working | Location permission denied | Grant location permission in browser/phone settings; use Safari on iOS |
| Score bar shows "No QSOs" | Score bar reads 10ghz-log.html key, not Grid Path Mobile's own log | Use 10ghz-log.html to log contest QSOs, or ignore the score bar |
| Log lost after clear | CLEAR LOG was used or browser data cleared | No recovery — export ADIF regularly as backup |