WHAT IS HELIOCLOCK?
Helioclock is a real-time Earth clock and situational awareness kiosk. It runs continuously on a dedicated device connected to a large display, showing a live picture of the Earth — day, night, weather, and space conditions updating automatically around the clock. Designed for ham radio operators, meteorologists, emergency managers, network operations centers, and anyone who needs to stay oriented to the planet at a glance.
WHAT IT DOES
Helioclock combines a real-time world map with a comprehensive suite of live data overlays and instrument panels. At its core it renders four map projections — Mercator, USA/CONUS, Globe, and Azimuthal — using NASA Blue Marble and Black Marble satellite imagery with a continuously updated solar terminator showing day and night across the planet. On top of that foundation it layers:
All data updates automatically with no user interaction required.
HOW TO DEPLOY
Helioclock runs on a small dedicated computer — a Raspberry Pi 4/5 or a mini PC (such as an N100/N150-class Intel or Ryzen 5600U or better) — connected to any display via HDMI. The software is served by a local Node.js server and accessed via Chrome browser pointed at the device's LAN address. There is no internet account, no subscription, and no cloud dependency. All data pulls directly from government and public data sources to your hardware. Once running, the display operates continuously and unattended — the watchdog timer automatically recovers from any software stall, and the remote update system keeps the software current without physical access to the device.
For multi-display installations such as NOCs, EOCs, trading floors, or broadcast operations centers, the Helioclock Server SKU runs on a mini PC and serves multiple displays simultaneously over the LAN.
Helioclock supports two display modes: kiosk mode on a dedicated HDMI-connected display device, and remote view mode — access the live display from any browser on your LAN — PCs, Macs, laptops, phones, and tablets — with no additional hardware or software required.
Helioclock runs on dedicated local hardware connected to a display via HDMI. The table below covers the two supported hardware paths — Raspberry Pi and mini PC — along with requirements for remote viewing from another device on your LAN.
| COMPONENT | MINIMUM | RECOMMENDED |
|---|---|---|
| Raspberry Pi | Raspberry Pi 4 — 2 GB RAM | Raspberry Pi 4 — 4 GB RAM, or Raspberry Pi 5 |
| Mini PC | N100/N150-class Intel or Ryzen 5600U, 4 GB RAM | 8 GB RAM, SSD storage |
| SD Card (Raspberry Pi) | 16 GB, Class 10 | 32 GB or larger — Samsung Pro Endurance or equivalent rated for 24/7 write cycles |
| Display | 1080p HDMI | 4K HDMI |
| Network | WiFi | Wired ethernet — more reliable for 24/7 operation |
| Operating System | Ubuntu 24.04 LTS | |
| Node.js | v22 LTS minimum | |
| Kiosk Browser | Chrome or Chromium — required. Other browsers are not supported for kiosk use. | |
REMOTE VIEWING (accessing the display from another device on your LAN)
Any modern browser on the same local network — Chrome, Firefox, Safari, or Edge on a phone, tablet, or laptop. No installation required. For smart TV browser compatibility, see section 14 — REMOTE VIEW.
ENTERPRISE USE — MULTIPLE LAN REMOTE SCREENS
For installations requiring simultaneous display across multiple screens — NOCs, EOCs, trading floors, broadcast operations centers, and similar environments — rack-mounted 1U server configurations are available. Contact support@helioclock.com for details.
Use the ⏻ POWER button in the bottom bar to safely shut down or restart the system. A confirmation dialog will appear — select your action or press Escape to cancel.
POWERING ON
The Raspberry Pi 5 has a built-in power button on the board — a short press initiates a clean shutdown; press again to power back on. The Raspberry Pi 4 has no power button and powers on automatically when connected to power. Allow 30–60 seconds for Helioclock to reach the display. Mini PCs typically have a power button; press it once. The Helioclock display starts automatically — no login is required.
SHUT DOWN
Press ⏻ POWER in the bottom bar and select SHUT DOWN. The screen will show a confirmation message, then go dark. Wait for the screen to go completely dark before removing power — especially important on Raspberry Pi, where pulling power while the system is running risks corrupting the SD card.
RESTART
Two types of restart are available:
POWER OUTAGE / UNEXPECTED POWER LOSS
Raspberry Pi SD cards are vulnerable to corruption if power is removed while the system is running. For 24/7 installations, a UPS (uninterruptible power supply) is strongly recommended — it gives the system time to shut down cleanly when mains power is lost. If a Pi fails to boot after an unexpected outage, the SD card may need to be reflashed.
MOUSE AND KEYBOARD
A mouse is required for navigating panels, overlays, and settings. A keyboard is needed for hotkeys (Ctrl+Shift+R, etc.) and performing a hard browser reload. Both can be wired or wireless USB.
All action hotkeys use the Alt modifier. Navigation keys require no modifier.
| KEY | ACTION |
|---|---|
| Alt+A | Jump to Azimuthal view |
| Alt+B | Show / hide the bottom control bar |
| Alt+H | Open Help file |
| Alt+I | Show / hide the Alaska and Hawaii insets on the USA view |
| Alt+L | Open Layers picker |
| Alt+M | Mute / unmute alert audio |
| Alt+P | Open power dialog — shut down or restart the system |
| Alt+N | Toggle news headline crawl on / off |
| Alt+R | Open Quick Reference overlay — band plan, formulas, Q-codes, CW/OPS, hardware, components. Tab/Shift+Tab cycles between the six tabs. ESC or ✕ closes. |
| Alt+T | Show / hide the day/night terminator, terminator glow, and night city lights |
| Alt+U | Dismiss post-update banner · or open Admin overlay if update is available |
| Alt+V | MY DX MAP — View Pins peek mode (Mercator view only currently). Hover a pin for details; click does nothing (look-but-don't-touch). Escape restores sidebars and exits. |
| Alt+X | Dismiss alert crawl bar |
| Alt+0 | Open Favorite Arrangements menu — save, recall, rename, or delete saved view/panel/layer presets |
| Alt+1 … Alt+8 | Instantly recall Favorite Arrangement slots 1–8 |
| Alt+C | Toggle Carousel Mode — auto-cycles through saved Favorite Arrangements every 10 seconds. Pauses on any interaction, resumes after 30s idle. Needs at least 2 saved favorites. |
| F9 | Cycle Big Clock: off → mini → full-screen → off. Mini shows a small stopwatch in the topbar without blocking the rest of the display; full-screen adds a giant glanceable UTC clock. Both: click (or Space) to start/stop the stopwatch, R to reset. Escape closes full-screen. |
| Alt+[ | Toggle left panel sidebar |
| Alt+] | Toggle right panel sidebar |
| ← → | Cycle map views |
| Enter | Button bar / remote SELECT |
| Escape | Close overlay |
| Ctrl+Shift+R | Hard reload — clears browser cache and fully refreshes the page. Use when the display looks wrong or stale after an update. Works in both the kiosk and any remote browser. |
| f | Toggle fullscreen — remote browser only; kiosk runs fullscreen natively via Chromium kiosk mode |
The ⌨ KEYS button in the bottom bar opens a compact quick-reference version of this table.
Cycle views with ← → or the PREV / NEXT buttons in the bottom control bar. Open the bottom control bar by clicking the ^^ chevron centered in the bottom status bar, or press Alt+B. The bar closes automatically after 8 seconds of inactivity.
| VIEW | DESCRIPTION |
|---|---|
| MERCATOR | Standard world map. Day/night terminator, solar terminator glow, all global layers. Default view. |
| USA | CONUS with Alaska and Hawaii insets — toggle insets on/off with Alt+I. NEXRAD radar, NWS alert polygons, timezone lines, WWV/WWVH markers. |
| GLOBE | 3D rotating Earth with real-time solar illumination. Lightning, earthquakes, and volcano icons rendered on the sphere. |
| AZIMUTHAL | Great-circle projection centered on your QTH. All radio paths are straight lines. Requires QTH to be set in Settings. Jump with Alt+A. |
Seven map styles are available, selectable from the MAP STYLE picker in the menu:
| DAY / NIGHT — OCEAN DETAIL | NASA Blue Marble with bathymetric ocean floor by day, Black Marble city lights by night. Full terminator blend. |
| DAY / NIGHT — PLAIN OCEAN | Blue Marble with flat plain ocean by day, Black Marble city lights by night. Full terminator blend. |
| SATELLITE — DAY ONLY | Ocean detail Blue Marble, day only. Simple terminator shading, no city lights blend. |
| SEASONAL — OCEAN DETAIL | Monthly NASA Blue Marble with bathymetric ocean. Auto-swaps to the correct month image on the 1st. Full day/night cycle. |
| SEASONAL — PLAIN OCEAN | Monthly Blue Marble with plain ocean. Auto-swaps on the 1st. Day only. |
| POLITICAL | Color-coded country map with borders. Day/night terminator shading. |
| OUTLINE | Minimal dark background with cyan country and state outlines only. |
Panels are data cards arranged in left and right sidebar columns. Each side holds up to the screen height budget — typically 4–6 half-size panels or 2–3 full-size panels.
Adding panels: Click the +/- PANELS hint at the bottom of either sidebar to open the panel picker. Select any panel to add it; select again to remove.
Panel sizes: Half-size panels show a key metric and sub-label. Full-size panels show additional detail. Click any panel to open the full detail view.
Detail view: Opens automatically when you click a panel. Auto-closes after 30 seconds. Moving the mouse inside the panel resets the timer. Press Escape to close manually. A countdown bar at the bottom of the panel shows time remaining.
📌 PIN button: Each detail panel has a 📌 pin button just below the ✕ close button. Click it to keep the panel open indefinitely — the countdown bar hides and the timer stops. While pinned, panel data refreshes every 30 seconds in the background. Click the pin again to unpin and resume the countdown. The pin resets automatically each time a new panel opens.
Hiding sidebars: Move the mouse to within 24px of the left or right screen edge — an arrow appears. Click it (or use Alt+[ / Alt+]) to slide the sidebar off-screen and reveal the map beneath. The arrow widens to 56px when the sidebar is hidden, making it easy to bring back. State is saved per browser.
Available panels — mini-panel (MP) and detail panel (DP):
| PANEL | MINI-PANEL SHOWS | DETAIL PANEL ADDS | |
|---|---|---|---|
| MOON PHASE | Rendered moon disk with correct terminator and earthshine, phase name, illumination % | 256px high-res moon with hemisphere flip for southern observers; right column: phase, illumination, moon age, distance (km), orbit status, next perigee/apogee dates, next new and full moon, azimuth/elevation from QTH, moonrise/moonset times | |
| SOLAR ACTIVITY | Live 128px NASA SDO thumbnail (HMIIC), SFI and Kp values | 512×512 SDO image with 6 wavelength buttons (VISIBLE, CORONA, EUV, CHROM, MAGNET, FLARES) plus ACE IMF solar wind plot; right column: all solar indices; full-width 30-day sunspot number trend chart with hover tooltips | |
| SUNRISE / SUNSET | Daylight arc progress bar with rise/set times, day length, solar elevation | SVG sky-dome arc showing sun position; analemma chart with solstice/equinox hover markers; day-length chart (365 days); solar elevation chart (24h); right column: sunrise, solar noon, sunset (local + UTC), day/night length, day-change tomorrow, elevation/azimuth/declination, civil/nautical/astro twilight times, tomorrow’s times | |
| GREY LINE | QTH greyline status (IN GREYLINE / APPROACHING / CLEAR DAY / NIGHT), next pass countdown, today’s rise/set GL window times | Mini Mercator pixel map with terminator zones (amber greyline core, civil/nautical twilight, night) and hover tooltips; GL pass quality gauge (SFI+Kp score, EXCELLENT–POOR); 7-day GL window calendar; right column: QTH status, solar elevation, GL windows, next pass time, terminator bearing, per-band propagation benefit | |
| SPACE WEATHER | Kp index, G-scale label | Left: G/S/R scale gauge bars; right column: Kp, G-scale, S-scale, R-scale with severity labels; IMF Bt and Bz (southward indicator); solar wind speed and density; 6-hour and 24-hour X-ray maxima | |
| DST INDEX | Current Dst value in nT, color-coded by storm severity, 1-hour trend arrow | Large current value with severity label (QUIET/MINOR/MODERATE/STRONG/SEVERE); storm classification threshold legend; full-width 48-hour trend chart with reference lines at 0/−50/−100/−200 nT and hover tooltips — 4-station ring current index, USGS Geomagnetism Program (not Kyoto WDC) | |
| BAND FORECAST | Color-coded band status tiles for 80/40/20/15/10m (OPEN/FAIR/CLOSED), day/night at QTH | Full band table (80–10m) with day and night status and propagation notes; right column: SFI and Kp with descriptive labels, QTH day/night status, 3-day Kp forecast bar chart. Uses a fixed SFI/Kp threshold table rather than the QTH-anchored live MUF calculation Best Band Now and MUF Matrix use — a deliberately simpler, location-independent reference, not a duplicate of those two. Can show a band as Closed here while those show it Open near a threshold; both are correct by their own model, just answering different questions. | |
| PROP FORECAST | 4-band (40/20/15/10m) color grid for today, tomorrow, day after | Full 9-band × 3-day propagation grid; azimuthal SVG showing propagation paths from QTH; right column: full band-by-band forecast | |
| SOLAR WIND | Speed (km/s) and Bz (nT) with southward indicator | Real-time ACE/DSCOVR solar wind speed, density, Bt, Bz gauges; speed/density/Bz values with direction indicator, G-scale, storm probability | |
| X-RAY FLUX | Current flare class (A/B/C/M/X) with log-scale bar, R-scale | Left: log-scale flux gauge; right column: current class, flux value, 6-hr and 24-hr peak flares, R-scale, HF blackout severity; full-width 3-day X-ray trend chart color-coded by flare class with hover tooltips | |
| DX CLUSTER | Scrolling live DX spots with callsign, frequency, and flag emoji; band filter tabs | Expanded spot list with full spot details including spotter callsign, comment, and frequency in MHz; band filter buttons | |
| POTA | Nearest park name, reference, and distance from QTH; live activator count on the air now | Nearby-parks table sorted by distance (reference, name, state, distance, grid square, lat/lon); live activator spot grid (callsign, park, frequency, mode, grid, lat/lon) — Parks on the Air, api.pota.app | |
| SOTA | Nearest summit name, code, distance, and elevation from QTH; live activator count on the air now | Nearby-summits table sorted by distance (code, name, elevation, distance, grid square, lat/lon); live activator spot grid (callsign, summit, frequency, mode, grid, lat/lon) — Summits on the Air, sotadata.org.uk | |
| DX PEDITIONS | Top active (or next upcoming) callsign and DXCC entity, with date range; active/upcoming counts | Two tables — active-now operations and upcoming operations, each showing dates, callsign (with NEW badge if newly announced), DXCC entity, QSL route, and operation info — NG3K Announced DX Operations, ng3k.com | |
| CONTEST CALENDAR | Next upcoming contest name and start time; upcoming count. Shows "NO FEED CONFIGURED" until you set one in Settings. | Full upcoming-contest table (start time, name) from your configured feed — no feed ships by default; see the FAQ for why. Click a contest (marked ↗) to view its rules/details page in a built-in viewer — not a separate browser tab. | |
| WWFF | Nearest (or most recent) active activator callsign and reference name, with distance from QTH; live activator count | Full activator spot table sorted by distance from QTH (activator, reference, frequency, name, mode, distance) — World Wide Flora & Fauna, wwff.co | |
| WWBOTA | Nearest (or most recent) active activator callsign and bunker name, with distance from QTH; live activator count | Full activator spot table sorted by distance from QTH (activator, reference(s), frequency, name, mode, distance) — a single spot can list multiple bunkers at once, all shown together — Worldwide Bunkers on the Air, wwbota.org | |
| WSJT-X | Most recent decoded message, mode, and SNR; live decode count (last 30 min); shows "NO WSJT-X CONNECTION" until a live UDP broadcast is received | Full scrollable decode table (time, SNR color-coded by strength, frequency offset, mode, low-confidence flag, full decoded message text), plus current radio status (dial frequency, mode, DX call) when WSJT-X reports it — direct local UDP listener, no cloud service involved | |
| PSK REPORTER | Furthest (or most recent) station currently hearing your signal, with band, mode, SNR, and distance; live report count. Shows "CALLSIGN REQUIRED IN PROFILE" if unset. | Full reception-report table for the last 30 minutes, sorted by distance (furthest first) when QTH is set — receiver callsign, frequency, band, SNR, DXCC, distance — PSK Reporter, pskreporter.info | |
| MUF MATRIX | Count of the 8 world regions currently showing at least one open band, plus the single best (highest-frequency) open band anywhere; current SSN/Kp | 8-region × 9-band grid (80m–6m), color-coded OPEN/MARGINAL/CLOSED per region with day/night indicator and computed MUF in MHz — simplified MINIMUF-85 secant-law model, not a VOACAP replacement | |
| BEST BAND NOW | The single band ranked best right now by a live score, plus LEADING or CONFIRMED status — requires QTH to be set | Every band predicted Open or Marginal ranked by score (evidence strength × frequency weight + MUF headroom), highest first — plus a "Band Scope" mini sparkline per band showing its own score over the last hour. Bands predicted Closed but showing real activity anyway appear in a separate Surprise Activity section below. See the FAQ for exactly how the score is calculated. | |
| COUNTDOWN TIMER | Label and remaining time for whichever configured event is soonest — e.g. "DAYTON HAMFEST · 47d 03h 12m" | Full list of up to 10 configured events (label + target date/time), each with its own countdown; add or delete events directly in the detail view. A passed event stays visible for 24 hours (marked STARTED) before it's automatically cleared. | |
| MY DX MAP | Total pin count — e.g. "12 PINS LOGGED" | Full list of your logged pins (Visited places or DX contacts worked), each showing name/callsign, country and flag, band and date where applicable. Click a pin to edit any field, move it, or delete it. + ADD PIN places a new pin by clicking the world map (Mercator view only currently); VIEW PINS (or Alt+V) shows all pins as real markers on the map for a look-only peek — green thumbtacks for DX Worked, cyan teardrops for Visited. Pin data is stored locally on this Helioclock, not in the cloud. | |
| FAA WEATHERCAMS | Site count and a prompt to open detail view | Searchable directory of 955 FAA aviation weather camera sites (by city, state, or ICAO code). Selecting a site opens FAA's own live camera page — images, METAR, and all camera angles — directly from weathercams.faa.gov; this app never fetches or hosts the images itself. NAV Canada sites (~225 of the 955) can be excluded with a toggle. See the FAQ for the full reasoning behind how this is built. | |
| LIGHTNING SCOPE | Strike count within range, rate per minute, nearest distance | Full Lightning Scope — see Section 08 | |
| NEXRAD RADAR | Current radar echo status (CLEAR/LIGHT/MODERATE/HEAVY), proximity alert indicator | Full Radar Scope — see Section 08 | |
| FIRE SCOPE | Nearest active fire count, top fire radiative power (MW), nearest hotspot distance | Full Fire Scope — circular scope display centered on QTH or custom location; hotspots color-coded by intensity (yellow=LOW, orange=MODERATE, red=HIGH, white=EXTREME); range selector (25/50/75/100 mi); geo reference layer with county boundaries, roads, and city labels; nudge controls to pan scope center; requires NASA FIRMS API key | |
| AURORA | Kp index, G-scale, aurora visibility indicator for QTH latitude | NOAA Ovation aurora oval map; right column: Kp, G-scale, geomagnetic latitude of QTH, equatorward boundary of aurora oval, QTH visibility status; Kp visibility table; aurora viewing tips; 3-day Kp forecast | |
| ISS | Current latitude, altitude, orbital period indicator | Left: live ISS ground track on mini Mercator; right column: latitude, altitude, orbital period (∼92 min); next visible pass time and max elevation from QTH — pulses when ISS is overhead | |
| AMSAT PASSES | Next amateur satellite pass — satellite name, AOS time, max elevation, duration | Next pass details: satellite name, AOS/LOS azimuth directions, duration; full 24-hour pass table with satellite name, AOS UTC, and mode; covers all tracked amateur satellites | |
| NCDXF BEACONS | Current active beacon callsigns per band (18.110/21.150/24.930/28.200/14.100 MHz) | Live beacon schedule showing which of the 18 beacons is transmitting on each band right now; full rotation table with callsign and location; power step note (100W→10W→1W→0.1W); 3-minute cycle schedule | |
| DRAP | Highest D-region absorption level currently active across monitored bands | Per-band absorption in dB for 80/40/30/20/17/15/10m with severity labels (CLEAR <1dB / MINOR 1–3dB / MODERATE 3–7dB / BLACKOUT >7dB); day/night status; cause and region altitude (70–90 km); band usability summary; color legend | |
| WEATHER | Current conditions from nearest METAR: temp, sky, wind, altimeter, station ID | Decoded METAR conditions plus four 24-hour history graphs — see Section 08 | |
| EARTHQUAKES | Most recent significant quake: magnitude, location, time ago | Full list of M4.0+ quakes from the past 24 hours with magnitude, location, depth, and time; sorted by magnitude | |
| VOLCANOES | Most active volcano: name, activity level, region | Global activity list: volcano name, country, activity level (MAJOR/ERUPTING/WARNING/UNREST), data source (VAAC/USGS/GVP), last update time | |
| TROPICAL STORMS | Active storm count, storm names and categories | Storm cards for all active basins (Atlantic, E/C/W Pacific, Indian Ocean, Southern Hemisphere) — NHC + JTWC data; each card shows storm name, category, basin, max winds, pressure, position, movement direction and speed, and data source | |
| PLANETS | Planets currently above horizon at QTH with altitude | Horizon sky chart (520px) showing all planets, the Sun, and Moon plotted by current altitude and azimuth; sky gradient reflects actual Sun altitude (day/night/twilight); altitude rings at 30° and 60°; compass points; data table with rise/transit/set times, altitude, azimuth, distance in AU, and elongation for all 7 planets | |
| EME | Moon bounce window status — QTH moon elevation, remote station moon elevation, next window countdown | Full EME planning tool: REMOTE STATION field accepts Maidenhead grid square (4 or 6 char) or decimal lat,lon; AZ/EL table for both QTH and remote; bearing and distance to remote; 24-hour window timeline (QTH/REM/OVL bars); upcoming window list with local times and durations; link budget calculator — bands: 50/144/222/432/1296 MHz; computes ERP, path loss, and margin vs JT65/Q65/CW thresholds; hover any label for tooltip — see Section 09 | |
| NEWS HEADLINES | Continuous news ticker crawl (Alt+N) across FOX · BBC · NPR · UPI · NASA with source label and description excerpt | Source tabs (FOX / BBC / NPR / UPI / NASA) with scrollable headline list per source; each item shows headline, age, and description excerpt; click headline to open full article; CRAWL ON/OFF toggle — see Section 07 | |
| HAM RADIO NEWS | Latest headline from selected ham radio RSS feed (ARRL / AMSAT / DX Zone / RSGB) | Scrollable list of recent ham radio news items with source tab selector and timestamp; QR code for mobile article access | |
| MARKETS | DOW and NASDAQ index values; top of your personal stock/crypto watchlist. Shows "SET API KEY" until an FMP key is configured in Settings → Data Sources. | Full watchlist (up to 5 stock tickers + 5 crypto coins) with price, change, and percent change; DOW/NASDAQ index row always shown at top once an FMP key is set — Financial Modeling Prep (stocks), CoinGecko (crypto, no key required) |
| LAYER | SOURCE · UPDATE RATE · NOTES |
|---|---|
| LIGHTNING | NOAA GOES-19 GLM · 20 sec poll · Western Hemisphere (~141°W–9°E, 54°N–54°S) · all views · dots color-coded by energy: yellow (WEAK <10J) · orange (MODERATE 10–100J) · red (STRONG 100–1000J) · red+glow (INTENSE >1000J) · control bar at top: SLOW / MED / FAST bolt animation speed · hover any dot for energy class, time, distance, and bearing · 5-minute rolling window |
| WILDFIRE HOTSPOTS | NASA FIRMS VIIRS · 10 min · requires free NASA FIRMS API key — enter in Settings → Data Sources · dots sized by fire radiative power · hover for tooltip with location and detection time |
| GOES CLOUD COVER | NOAA nowCOAST · CONUS: GOES-East IR ~10 min cadence · Global Mercator: hourly IR mosaic (GOES + Himawari + Meteosat) · Mercator and USA views only · up to 24 frames of history · SLOW / MED / FAST speeds · mutually exclusive with radar · loads paused on the most recent frame — press ▶ to animate, ⏸ to pause · while paused, the display always advances silently to the newest frame as it arrives · animation resumes from the beginning of the loop when ▶ is pressed |
| NEXRAD RADAR | NOAA RIDGE2 WMS · ~4 min update cadence · USA view only (CONUS + Alaska + Hawaii insets) · up to 30 frames (~2 hours of history) · four speeds: SLOW / MED / FAST / XFAST · color-coded dBZ scale: green (light) → red/pink (heavy) · server buffers frames across restarts · loads paused on the most recent frame — press ▶ to animate, ⏸ to pause · while paused, the display always advances silently to the newest frame as it arrives · NWS watches & warnings overlay above radar at all times |
| NWS WEATHER ALERTS | NOAA/NWS CAP feed · 2 min · USA view only · requires QTH set in Settings for local alerts · color-coded polygons: red = warning, orange = watch, yellow = advisory · drawn above radar and GOES layers at all times · hover polygon for alert text |
| TIMEZONE BOUNDARIES | Computed locally · approximate; USA view shows legal political lines |
| CITY CLOCKS | Computed locally · select up to 6 cities via the picker · to add: click a city slot, choose from the list · to remove: click the slot, then click the highlighted gold city to clear it · custom cities with manual timezone offset available via the ✏ CUSTOM tab |
| ISS TRACK | CelesTrak TLE · position updates every 15 sec · requires QTH set in Settings for pass prediction · ground track shows current position plus orbital path ahead and behind · click the ISS icon on the map for next pass time, elevation, azimuth, and a polar diagram |
| AMSAT SATELLITES | CelesTrak TLE · requires QTH set in Settings · to configure: enable the layer — a satellite picker opens automatically; search by name or NORAD ID, click to add, click again to remove · edit list anytime via the ✎ button in the Layers overlay · each satellite shows ground track and next pass prediction · click a satellite icon on the map for pass details and polar diagram |
| NCDXF BEACONS | Computed from static beacon schedule · 24 beacons on 18 frequencies (14.100–28.200 MHz) · each beacon transmits in a fixed 3-minute rotation · dot color indicates the active transmission window · hover a beacon for callsign, grid square, and current/next frequency · useful for real-time HF propagation assessment |
| AURORAL OVAL | NOAA OVATION model · 5 min · 30–90 min forecast · both hemispheres |
| POTA ACTIVATORS | Parks on the Air, api.pota.app · 60 sec poll · active-spot markers only, not the full static park list · Mercator, Globe, USA (CONUS only), and Azimuthal (antenna-steer bearing/distance from QTH) · pulsing green circular markers · hover for activator callsign, park, frequency, mode, and grid square |
| SOTA ACTIVATORS | Summits on the Air, sotadata.org.uk / api-db2.sota.org.uk · 60 sec poll · active-spot markers only, not the full static summit list · Mercator, Globe, USA (CONUS only), and Azimuthal (antenna-steer bearing/distance from QTH) · pulsing brown/tan circular markers · hover for activator callsign, summit, frequency, mode, and grid square |
| WWFF ACTIVATORS | World Wide Flora & Fauna, spots.wwff.co · 60 sec poll · active-spot markers only, no static reference directory (each spot carries its own name and coordinates) · Mercator, Globe, USA (CONUS only), and Azimuthal (antenna-steer bearing/distance from QTH) · pulsing light-blue circular markers · hover for activator callsign, reference, frequency, mode, and distance from QTH |
| WWBOTA ACTIVATORS | Worldwide Bunkers on the Air, api.wwbota.org · 60 sec poll · active-spot markers only, no static bunker directory (each spot carries its own bunker name and coordinates) · Mercator, Globe, USA (CONUS only), and Azimuthal (antenna-steer bearing/distance from QTH) · purple shield markers · hover for activator callsign, bunker name/reference(s), frequency, mode, and distance from QTH · a single spot listing multiple bunkers uses the first bunker's location for map placement |
| PSK REPORTER | PSK Reporter, pskreporter.info · 5-min poll (per PSK Reporter's own retrieval guidance) · reception reports for your Profile callsign only, last 30 minutes · Mercator, Globe, USA (CONUS only), and Azimuthal (antenna-steer bearing/distance from QTH) · small band-colored dot markers (same palette as DX Cluster) · hover for receiver callsign, frequency, band, mode, SNR, and distance · requires callsign in Profile |
| DRAP | NOAA D-Region Absorption Prediction, 4°lon × 2°lat grid · Mercator, Globe, and USA (CONUS) — no Azimuthal (absorption is spatial coverage, not a bearing-to-target quantity) · smoothed heatmap rendering on Mercator and USA (same technique as the MUF heatmap — a low-res grid upscaled with the browser's own high-quality image smoothing); Globe stays blocky per-cell, since that technique needs a linear lon/lat→pixel mapping that the Globe's 3D projection doesn't have · color-key legend (0–6 MHz absorbed) on all three views, sampled directly from the same color function used for the cells so it can never drift out of sync · hover a cell for the affected frequency cutoff |
| MUF MATRIX | Computed locally — no fetch, live SFI/SSN + Kp input already polled for Aurora/Band Forecast · 8 fixed world-region markers always render (Mercator, Globe, Azimuthal — no USA view for the markers, regions are too coarse for CONUS-only relevance); a continuous QTH-centered heatmap renders underneath them on Mercator and USA (CONUS) once a QTH is set, smoothed from a 5° grid (same rendering technique as DRAP), with a color-key legend (5–35 MHz) · hover a marker for the full 9-band breakdown, day/night, and computed MUF; hover anywhere else on the heatmap for a live point reading computed fresh at that exact lat/lon (not snapped to the render grid) · Globe and Azimuthal show markers only, no heatmap or point-hover (needs separate reprojection math the smoothing technique can't do — same limitation as DRAP's Globe view) |
| D-RAP ABSORPTION | NOAA SWPC D-Region Absorption Prediction · 10 min poll · global grid, highest HF frequency affected by 1 dB D-region absorption · Mercator, Globe, and USA (CONUS only — not Alaska/Hawaii insets) · color-coded green→yellow→orange→red by severity, transparent where no significant absorption · hover any colored cell for the exact MHz threshold — signals below that frequency are absorbed at that location right now |
| EARTHQUAKES | USGS M4.0+ past 24h · 5 min · global · dot size and color scale with magnitude: yellow (M4–5) → orange (M5–6) → red (M6–7) → bright red (M7+) · hover for magnitude, depth, location, and time |
| VOLCANOES | VAAC advisories (Washington/Tokyo/Toulouse/Wellington) + USGS HANS + Smithsonian GVP weekly · icon color indicates activity level: red = erupting / active ash, orange = warning / minor activity, yellow = unrest only, dark red = major/catastrophic · hover for volcano name, location, and advisory detail |
| MAIDENHEAD GRID | Field (2-char) and square (4-char) grid lines · Mercator, USA, Azimuthal views · USA view includes CONUS, Alaska, and Hawaii insets · hover anywhere for 6-char locator tooltip · square labels shown on USA and Azimuthal views |
The Crawl Bar
The crawl bar is a full-width ticker that appears at the bottom of the screen when an alert event fires. It displays scrolling text describing the event — event type, magnitude or severity, location, and time — in a color that reflects the alert category. An audio tone plays when the crawl first appears: a short Morse-style beep for minor events, a more prominent tone for severe ones. The crawl continues scrolling until dismissed or until the next event replaces it. Only one crawl is active at a time; a higher-severity incoming event will replace a lower-severity one already scrolling.
Dismiss the active crawl with Alt+X or the ✕ button on the right end of the crawl bar. Mute all alert audio with Alt+M — the crawl will still appear visually, only the tone is suppressed. The mute state persists until toggled off.
NEWS HEADLINE CRAWL
When no alert event is active, the crawl bar can display a continuous news ticker from a fully configurable set of RSS and ATOM feed sources. All headlines scroll as a single unbroken string — each item formatted as SOURCE: Headline · description excerpt, separated by a spaced pipe character ( | ). The ticker loops continuously until dismissed. Toggle the news crawl on and off with Alt+N, the 📰 NEWS button in the bottom control bar, or pressing Alt+X to dismiss. NWS alert crawls always pre-empt news headlines — when an alert fires, the news crawl stops immediately and the alert takes over. The news crawl resumes 3 seconds after the alert clears.
NEWS FEEDS PICKER
Configure crawl sources in the News Feeds Picker, accessible two ways: tap the ⚙ gear icon at the left end of the crawl bar (visible when the news crawl is active), or open Settings → NEWS FEEDS. The picker displays all available feeds grouped by category — HAM RADIO, WORLD NEWS, SPACE, WEATHER, GEOLOGY — each with an ON/OFF toggle, item count, last-fetched age, and a ↺ REFRESH button to force an immediate re-fetch for that feed.
Two controls at the top of the picker govern all feeds globally:
If the age filter removes all items from all enabled feeds, the crawl bar shows a static notice: NO ITEMS IN RANGE · ADJUST AGE FILTER OR ENABLE FEEDS IN ⚙ NEWS FEEDS SETTINGS — a reminder to widen the window or enable additional sources.
ADDING CUSTOM FEEDS
The ADD CUSTOM FEED section at the bottom of the picker lets you add any RSS or ATOM feed by URL. Enter a name, select or type a category (existing categories are suggested; typing a new name creates a new group), enter the feed URL, pick a color swatch, then press VERIFY to test the URL before saving. VERIFY shows the item count and first headline so you can confirm the feed is live. Press ADD FEED to save. Custom feeds are stored in custom-feeds.json on the server and are never overwritten by software updates. Built-in feeds (in feeds.json) are read-only in the UI but update automatically with each Helioclock release. Custom feed rows show a ✕ delete button; built-in rows do not.
For websites that do not publish a native RSS feed, rss.app (rss.app) can generate a custom feed from almost any web page. Free tier updates every hour — suitable for most news sources. Use the resulting rss.app/feeds/[ID].xml URL in the ADD CUSTOM FEED form.
X (Twitter) feeds: X does not provide native RSS. rss.app can generate feeds from X accounts — create one at rss.app and add the resulting URL as a custom feed. Note that X actively restricts third-party scrapers, so X-sourced feeds may be less reliable than native RSS sources and could stop working without notice. For official sources (NWS, NHC, USGS, ARRL, etc.) the native RSS feeds listed above are always preferable.
Step-Up Deduplication
Each alert rule tracks the highest level it has already announced. Once a crawl has fired for an event at a given threshold, it will not fire again for the same event at the same level — preventing the same earthquake or storm from re-crawling every time the data refreshes. The crawl fires again only if the event escalates to a higher threshold — for example, if a geomagnetic storm steps up from G1 to G2. The deduplication state resets automatically when the event clears or when Helioclock restarts.
Configuring Alert Rules
Open Settings → Alerts → Alert Rules. Each rule has an ON/OFF toggle and a threshold selector. Setting a rule to OFF disables both the crawl and the audio for that event type entirely. The threshold sets the minimum severity required to trigger — events below the threshold are silently ignored even if the rule is ON.
| RULE | THRESHOLD OPTIONS | CRAWL COLOR | NOTES |
|---|---|---|---|
| EARTHQUAKES | M5.0 / M6.0 / M7.0 / M8.0+ | Orange; dark red at M7+ | Global coverage via USGS. M7+ events get a full dark red bar to distinguish from moderate quakes. |
| VOLCANOES | Major / Erupting+ / All | Orange | VAAC aviation advisories (4×/day) + USGS HANS + GVP weekly report. “All” includes unrest and elevated activity; “Erupting+” requires confirmed eruption or aviation-level ash advisory; “Major” is significant eruptions with wide ash dispersal. |
| AURORA | Kp 5 (G1) / Kp 6 (G2) / Kp 7 (G3) / Kp 8 (G4) | Green | Fires when the current Kp index meets or exceeds the selected threshold. Resets automatically when Kp drops back below the threshold and then rises again — you will be notified each time a new storm begins. |
| BEST BAND NOW | 10–15m / 10–20m / All bands | Cyan | Fires only on a CLOSED→OPEN transition for the selected bands, using the same QTH-anchored MUF model Best Band Now itself uses (not the Band Forecast SFI table) — requires QTH to be set. Will not re-crawl while bands remain open — only fires again after a band closes and reopens. Useful for knowing when high bands come alive for a DX run at your own location. |
| SOLAR FLARES | C-class / M-class / X-class | Gold | Based on the 6-hour peak X-ray flux maximum reported by NOAA SWPC. C-class rarely affects HF; M-class can cause short-wave fadeout on the sunlit side; X-class causes significant HF blackout. Step-up deduplication applies — a storm that starts at M and escalates to X will fire twice. |
| GEOMAGNETIC STORM | G1 / G2 / G3+ | Purple | G1=Kp5, G2=Kp6, G3=Kp7, G4=Kp8, G5=Kp9. Higher G-scale storms degrade HF propagation at high latitudes and can affect power infrastructure at G4+. Fires on each scale step-up. |
| RADIO BLACKOUT | R1 / R2 / R3+ | Pink-red | R-scale measures HF radio blackout from solar X-ray flux. R1=C5-class flare, R2=M5, R3=X1, R4=X10, R5=X20+. R3 and above causes complete HF blackout on the sunlit hemisphere. Fires on each scale step-up. |
| ISS VISIBLE PASS | 5 / 10 / 15 / 30 min lead time | Teal | Requires QTH to be set in Settings. Fires when the ISS is approaching a visible pass over your location within the selected lead time. Magnitude and max elevation are included in the crawl text. Only passes with a maximum elevation above 20° are announced. |
| NWS WEATHER ALERTS | Per-event-type toggles | Red (warnings) / Yellow (watches) / Blue (advisories) | See NWS Alerts section below. CONUS only. |
NWS Weather Alerts
National Weather Service alerts are fetched every 5 minutes from the NWS API and displayed as color-coded polygon overlays on the USA and Mercator map views. The same alerts feed the crawl bar. Coverage is CONUS only — Alaska, Hawaii, and US territories are not covered by this feed.
Alert severity levels and crawl colors:
| COLOR | SEVERITY | WHAT IT MEANS | EXAMPLES |
|---|---|---|---|
| RED | Warning | Dangerous conditions are occurring or imminent. Take action now. | Tornado Warning, Severe Thunderstorm Warning, Flash Flood Warning, Blizzard Warning, Hurricane Warning |
| YELLOW | Watch | Conditions are favorable for dangerous weather. Be prepared to act. | Tornado Watch, Severe Thunderstorm Watch, Flash Flood Watch, Winter Storm Watch |
| BLUE | Advisory | Conditions will cause significant inconvenience but not immediate danger. | Wind Advisory, Dense Fog Advisory, Frost Advisory, Winter Weather Advisory |
| GRAY | Statement / Special | Informational — no immediate hazard but situational awareness value. | Special Weather Statement, Hazardous Weather Outlook, Short Term Forecast |
The per-event-type toggles in Alert Rules let you enable or disable crawl notifications for individual NWS event types. For example you can enable Tornado Warnings and disable Winter Weather Advisories if you live in a region where the latter are routine. The polygon overlays on the map are always shown for all active alerts regardless of which crawl toggles are enabled — the toggles only control whether a crawl bar and audio tone fires for that type.
NWS alert polygons on the map are hit-testable — hover any colored polygon to see a tooltip showing the event name, affected area description, and expiry time. Polygons are drawn above the radar animation layer so they are always visible during active weather.
Space weather data is fetched from NOAA SWPC every 15 minutes.
| INDICATOR | MEANING |
|---|---|
| SFI | Solar Flux Index — proxy for ionospheric F-layer ionization. Higher = better HF propagation on high bands. Typical range 65–300. |
| SSN | Smoothed Sunspot Number — longer-term solar cycle position. Tracks with SFI. |
| Kp | Planetary K-index — geomagnetic activity on a 0–9 scale. Kp ≥ 5 = geomagnetic storm. High Kp degrades HF propagation at high latitudes. |
| Dst | Disturbance storm time index (nT) — ring current strength from 4 low-latitude ground stations. Finer-grained and higher-resolution than Kp for tracking a storm's actual onset, main phase, and recovery. Quiet ≥−30 nT · Minor −30 to −50 · Moderate −50 to −100 · Strong −100 to −200 · Severe <−200. Source: USGS Geomagnetism Program (not Kyoto WDC). |
| G-SCALE | Geomagnetic storm scale G0–G5. G1=Kp5, G2=Kp6, G3=Kp7, G4=Kp8, G5=Kp9. G3+ can affect power grids and satellites. |
| S-SCALE | Solar radiation storm S0–S5. Affects HF radio at high latitudes and satellite electronics. |
| R-SCALE | Radio blackout scale R0–R5. R1=C-class flare. R3+ causes HF blackout on sunlit side. Check DRAP panel for affected bands. |
| X-RAY FLUX | Solar flare classes: A, B, C, M, X (each 10× stronger). M-class and above can cause HF disruption. |
| SOLAR WIND | Speed (km/s) and Bz (nT) from ACE/DSCOVR satellite. Southward Bz (negative) drives geomagnetic storms. |
SOLAR ACTIVITY — Detail Panel
Click the Solar Activity panel to open the full detail view. The left column shows a live 512×512 NASA SDO image with the image type labeled above it. Use the wavelength buttons below the image to switch views: VISIBLE (white light sunspots), CORONA (hot plasma loops), EUV (extreme ultraviolet), CHROM (chromosphere), MAGNET (magnetogram), and FLARES (flare-sensitive 131Å). The ACE IMF button switches to the ACE real-time solar wind plot served as a full-color PNG from the server. The right side shows all solar indices in two columns. The full-width chart at the bottom shows the 30-day sunspot number trend — hover for date and SSN value.
X-RAY FLUX & TREND — Detail Panel
Click the X-Ray Flux panel to open the trend view. The left side shows the current flux class, log-scale bar, and radio blackout R-scale. The right side shows peak flares and HF blackout severity. The full-width chart at the bottom shows the 3-day X-ray flux trend color-coded by flare class — hover for class, flux value, and timestamp.
LIGHTNING — Live Lightning Scope
Click the Lightning panel to open the Live Lightning Scope. A circular scope display shows all NOAA GOES-19 GLM strikes within range of your QTH or a custom center location. Range rings are drawn at 25%, 50%, 75%, and 100% of the selected radius. County boundaries, major roads, and nearby city labels are drawn as a geo reference layer inside the scope.
Strike display: Each strike is plotted as a color-coded dot scaled by flash energy. ● WEAK (<10 J) — yellow dot. ● MODERATE (10–100 J) — orange dot. ● STRONG (100–1000 J) — red dot. ● INTENSE (>1000 J) — red dot with glow halo. Dots fade over 2 minutes as strikes age. Hover any dot for a tooltip showing energy class, time ago, distance in miles, and bearing from scope center (e.g. 3.2 MI · NNE 024°).
Title bar stats: STRIKES (within range count), RATE (per minute), and NEAREST (closest strike distance) are shown in the title bar across the top of the scope — always visible regardless of scroll position.
Range buttons: 10 MI / 25 MI / 50 MI — select the scope radius. Located in the lower-left corner outside the scope ring. Default is 10 MI.
Nudge controls: Eight arrow buttons positioned around the outside of the scope ring (N, NE, E, SE, S, SW, W, NW) pan the scope center in that direction. Each nudge moves the center by 20% of the current range radius. Use nudging to explore a moving storm without typing a new location.
Scope center: Use the SCOPE CENTER input at the bottom to enter any US zip code or city/state (e.g. 33602 or Tampa, FL) to recenter the scope on that location. Hit Enter or SET to geocode; RESET TO QTH returns to your station location. The center is temporary and clears when the panel closes.
Proximity alert: An audible Morse/beep tone fires when any strike occurs within range of the scope center — 5-minute cooldown between alerts. Data source: NOAA GOES-19 GLM, Western Hemisphere coverage (~141°W–9°E, 54°N–54°S), 5-minute rolling window, updates every 20 seconds.
NEXRAD RADAR — Radar Scope
Click the NEXRAD Radar panel to open the Radar Scope. A circular scope display shows current radar reflectivity data centered on your QTH or a custom center, sourced from RainViewer and remapped to the Helioclock TV palette (green → yellow → orange → red). County boundaries, major roads, and nearby city labels are drawn as a geo reference layer inside the scope — the same layer used by the Lightning Scope.
Range buttons: 10 MI / 25 MI / 50 MI / 100 MI — select the scope radius. Located in the lower-left corner of the scope. At 100 MI zoom level 6 tiles are used; at 50 MI and below, zoom level 7 tiles provide higher resolution. Default is 10 MI.
Nudge controls: Eight arrow buttons around the outside of the scope ring pan the center in any compass direction, identical to the Lightning Scope. Use nudging to track a storm cell moving through your area.
NWS polygon overlays: Active National Weather Service watches, warnings, and advisories are drawn as semi-transparent color polygons on top of the radar data — the same polygons shown on the main map. Hover any polygon to see the event type, affected area, and expiry time. Alert colors follow NWS standards: ■ Tornado Warning, ■ Severe Thunderstorm Warning, ■ Watch, etc.
Scope center: Use the SCOPE CENTER input to enter any US zip code or city/state to recenter on that location. RESET TO QTH returns to your station. The center is temporary.
Updated timestamp: The UPDATED label in the lower-right shows how old the current radar tile is. The scope refreshes automatically every 30 seconds while open. Data source: RainViewer public API, free for personal use, ~2-minute latency behind real-time.
Ham radio features are available on all tiers. Some require QTH location to be set in Settings.
| FEATURE | DESCRIPTION |
|---|---|
| MAIDENHEAD GRID | Field and square grid overlay on Mercator, USA, and Azimuthal views. Hover anywhere on the map for a real-time 6-char locator readout. Toggle via Layers menu. |
| BAND FORECAST | Day/night status for 80m–6m using SFI and Kp. Status: OPEN / MARGINAL / CLOSED / NVIS. Uses a fixed threshold table, not the same live QTH-anchored MUF model as Best Band Now/MUF Matrix — see Section 09 for why they can disagree. |
| MUF MATRIX | Simplified secant-law MUF estimate across 8 world regions × 9 bands. Live SFI/SSN + Kp input, computed locally with no server fetch. Combines two real, cited pieces — the sunspot/solar-zenith dependence from Sailors et al. 1986 (MINIMUF-85), and the standard ITU M(3000)F2 obliquity factor for a representative single-hop path — rather than a byte-exact port of either MINIMUF-3.5 or MINIMUF-85. On Mercator and USA (CONUS), a continuous QTH-centered heatmap (smoothed from a 5° grid) supplements the 8 region markers once a QTH is set. Not a VOACAP replacement — deliberately so: genuine VOACAP-grade prediction requires either a compiled engine or a paid third-party service, either of which would make a Helioclock feature depend on infrastructure outside your own device. See the FAQ for more on why. |
| BEST BAND NOW | Ranks every viable band by a single live score instead of sorting bands into a small number of fixed categories. Each band's score combines: live evidence strength (DX Cluster spot count + Reverse Beacon Network beacon hits, log-scaled so a burst of 60 spots doesn't need to beat 6 spots by an absurd margin), a frequency weight (higher bands score somewhat higher when equally active, since they're generally quieter when genuinely open), and a small bonus for sitting comfortably below the QTH-anchored computed MUF (same secant-law model as MUF Matrix, computed at your own coordinates). Every band's score is always shown, in full, in ranked order — nothing is hidden or held back. The only thing that IS held back is the LEADING → CONFIRMED badge on whichever band currently ranks #1: a band must hold the top rank continuously for 20 minutes before it's marked CONFIRMED, to avoid flapping between two closely-matched bands on a momentary spike; until then it shows LEADING with a running "X/20 MIN" counter. Bands predicted Closed but showing real activity anyway (a sign the model missed something, often sporadic-E or an unusual opening) appear in a separate Surprise Activity section rather than competing in the main ranking. A "Band Scope" mini sparkline accompanies every band, showing that band's own score over the last 60 minutes scaled to its own range, with the actual min–max numbers printed underneath so the shape is never ambiguous about what it represents. Known limitation: DX Cluster and RBN spots don't yet distance-filter their spotting station against your QTH — a global opening elsewhere can currently contribute to a band's score here. Two data sources were tried here and removed: PSK Reporter (only populates while actively transmitting a digital mode, read zero for most operators most of the time) and POTA (distance-filtered to genuinely nearby parks, which sounds like an advantage but meant it correctly read zero most of the time too — verified against real data that the join was working fine, there just weren't enough nearby parks active simultaneously to register). Both were honest, working signals that simply looked broken to a user because of how rarely they had anything to show. |
| FAA WEATHERCAMS | Directory of 955 FAA aviation weather camera sites (public domain, US federal government works per 17 U.S.C. § 105 — designated by FAA as a supplementary situational-awareness product), searchable by city, state, or ICAO code. Site list bundled with the app (no public API available for it) and updated only between app releases, not live. Selecting a site opens FAA's own live camera page in the External Link Viewer, showing real-time images (FAA's own ~10-minute update cadence), METAR, and all camera angles — this app displays FAA's page as-is and never fetches, modifies, or re-hosts the imagery itself. Two real technical walls ruled out doing this any other way: no public API exists for the images (the natural endpoint returns "not authorized"), and each image URL embeds a server-validated timestamp that can't be guessed or constructed independently (confirmed directly: a guessed timestamp returns "Access Denied"). ~225 of the 955 sites are NAV Canada facilities shown on FAA's shared portal; these can be excluded with a toggle for anyone who'd rather rely solely on FAA-operated sites. |
| DX CLUSTER | Live spots from WA9PIE-2 DXSpider cluster. Scrolling ticker with flag emojis. Requires internet. Callsign must be set in Profile — the cluster will not connect without a valid callsign. If no callsign is configured, the panel shows "CALLSIGN REQUIRED IN PROFILE". |
| POTA | Parks on the Air — nearby park list sorted by distance from QTH, plus a live feed of activators currently on the air. Map layer shows active-spot markers on Mercator, Globe, USA, and Azimuthal (for antenna bearing). Requires QTH for distance sorting. |
| SOTA | Summits on the Air — nearby summit list sorted by distance from QTH (with elevation), plus a live feed of activators currently on the air. Map layer shows active-spot markers on Mercator, Globe, USA, and Azimuthal (for antenna bearing). Requires QTH for distance sorting. |
| DX PEDITIONS | NG3K Announced DX Operations — active and upcoming DXpeditions with dates, callsign, DXCC entity, QSL route, and operation details (bands/modes/operator). Panel/detail view only — no map layer, since NG3K's listing gives DXCC entity names rather than coordinates. |
| CONTEST CALENDAR | Upcoming contests from a feed you configure yourself in Settings → Data Sources — no feed ships by default. Accepts any standard public ICS/iCalendar feed URL. Panel/detail view only, no map layer. Clicking a contest opens its rules/details page in a built-in viewer (Escape or × to close) rather than a separate browser tab — deliberate, so the kiosk doesn't gain a general-purpose browsing surface. See the FAQ for why no default feed is bundled. |
| WWFF | World Wide Flora & Fauna — live feed of activators currently on the air from protected nature areas worldwide, sorted by distance from QTH when set. Map layer shows active-spot markers on Mercator, Globe, USA, and Azimuthal (for antenna bearing), same treatment as POTA/SOTA. |
| WWBOTA | Worldwide Bunkers on the Air — live feed of activators currently on the air from historic bunkers and defense sites worldwide, sorted by distance from QTH when set. A single activation can list multiple bunkers at once; all reference codes are shown together. Map layer shows active-spot markers on Mercator, Globe, USA, and Azimuthal (for antenna bearing), same treatment as POTA/SOTA/WWFF. |
| MY DX MAP | Your own pushpins — mark places you've physically visited, or DX contacts you've worked over radio, each with a name/callsign, date, band (for DX contacts), and up to three lines of notes. Click + ADD PIN in the panel's detail view, then click anywhere on the world map (Mercator view only in this version — Globe and USA support planned) to place it; country and flag are resolved automatically (reverse-geocoded from the map click for Visited pins, looked up from the callsign for DX Worked pins, same lookup DX Cluster uses) but can be corrected by hand if a lookup ever misses. VIEW PINS (or Alt+V) shows every pin as a real marker on the map for the current session — green thumbtacks for DX Worked, cyan teardrops for Visited — hover for details; this is a look-only peek, not a persistent map layer, in this version. All pin data is stored locally on this Helioclock, never in the cloud. A future version is planned to add ADIF log import/export and a persistent map layer. |
| WSJT-X | Live decodes from WSJT-X or JTDX running on your own network — Helioclock listens for the same UDP broadcast those programs already send to third-party logging tools, on port 2237. Shows every decode as it happens: callsign/message text, signal strength, mode, and frequency offset, plus the radio's current dial frequency and mode when reported. No map layer yet — most exchange-type decodes don't carry a grid square in the message, only some CQ calls do, so a map layer would only ever plot a partial picture. |
| PSK REPORTER | Digital-mode (FT8/FT4/CW/etc.) reception reports for your own callsign — see who's hearing you and from how far away, right now. Callsign must be set in Profile; the panel shows "CALLSIGN REQUIRED IN PROFILE" if unset. Map layer shows band-colored dot markers at each receiver's location on Mercator, Globe, USA, and Azimuthal. |
| NCDXF BEACONS | 18-frequency International Beacon Project schedule. Highlights current transmitting beacon on the map. No internet needed — schedule is computed locally. |
| GRAY LINE | Shown on Mercator and Globe views. The terminator boundary where propagation is enhanced, especially on 160–40m. |
| AZIMUTHAL VIEW | QTH-centered great-circle projection. Draw a straight line from center to any DX target to find the beam heading. Jump with Alt+A. |
| PTT MONITOR | USB serial adapter (RTS→relay→CTS), or direct Raspberry Pi GPIO (BCM GPIO 21 / physical pin 40 — same pinout as the original HamClock), drives an ON AIR banner with callsign, band, and TX timer. Radio PTT line grounds the pin. GPIO takes priority when running on a Pi; USB serial works on any hardware. Configure in Settings → Ham Radio. |
| ISS / AMSAT PASSES | TLE-based pass prediction for ISS and configurable AMSAT satellites. Requires QTH. Polar diagram in detail view. |
| WWV / WWVH | Station markers on Mercator and USA views with propagation rating based on path distance, SFI, and Kp. |
| AURORA PANEL | Kp-based equatorward visibility boundary + NOAA OVATION oval image in detail view. |
| EME (MOON BOUNCE) | Moon bounce planning tool. Enter the remote station's Maidenhead grid square or decimal lat,lon coordinates to see live moon AZ/EL for both stations, EME window timeline, upcoming window list, and a link budget calculator. Requires QTH set in Settings — see below for full detail. |
EME — Moon Bounce Planning
The EME panel provides a complete moon bounce planning tool for pre-arranged contacts. Your QTH coordinates come from Settings automatically. Open the detail panel and enter the remote station's location in the REMOTE STATION / GRID OR LAT,LON field — either a Maidenhead grid square (4 or 6 characters, e.g. DM79) or decimal lat,lon (e.g. 39.75,-104.9), then press SET. All settings persist between sessions. Hover any labeled element in the panel for a tooltip explaining it.
AZ/EL table — Moon azimuth and elevation for both your QTH and the remote station, with above/below horizon status. YOUR QTH uses your coordinates from Settings; REMOTE uses the entered location. Bearing and distance to the remote station are shown below the table in km and miles with compass direction.
24-hour window timeline — Three color-coded bars spanning the next 24 hours from when the panel was opened. QTH bar (cyan) shows when the moon is above your horizon; REM bar (green) shows when it is above the remote horizon; OVL bar (gold) shows the overlap — the only periods when an EME contact is possible. A dashed line marks the current time. The moon may have multiple above-horizon periods in a 24-hour window, appearing as separate bar segments. All upcoming overlap windows are listed below with local start and end times and duration.
Link budget calculator — Estimates contact viability from your station parameters. Available bands: 50 MHz (6m), 144 MHz (2m), 222 MHz (1.25m), 432 MHz (70cm), 1296 MHz (23cm). Enter TX power in watts and antenna gain in dBd. Results update automatically as you type. Default values (100W, 12 dBd) pre-load on first use so the calculation runs immediately on open.
| ELEMENT | DESCRIPTION |
|---|---|
| MOON AZ | Azimuth of the moon in degrees clockwise from North (0°=N · 90°=E · 180°=S · 270°=W). Points your beam toward the moon. |
| MOON EL | Elevation of the moon above the horizon. Negative = below horizon. EME requires elevation > 0° at both stations simultaneously. |
| BEARING TO REMOTE | Great-circle (shortest path) bearing and distance from your QTH to the remote station. |
| BAND | Operating frequency. Higher bands have greater path loss but support higher antenna gain per dish size. |
| TX POWER | Transmitter output power in watts. US legal limit is 1500W on most amateur bands. |
| ANT GAIN | Antenna gain in dBd (dB relative to a half-wave dipole). Reference: 9el Yagi ≈ 12 dBd · 4×9el stack ≈ 18 dBd · 3m dish at 1296 MHz ≈ 27 dBd. |
| MOON DISTANCE | Current Earth-Moon distance in km. Path loss varies ±1.6 dB between perigee (356,500 km) and apogee (406,700 km). |
| EME PATH LOSS | Total two-way signal loss: L = −14.44 + 40·log(dkm) + 20·log(fMHz) dB. Increases with frequency and moon distance. |
| YOUR ERP | Effective Radiated Power = TX power × antenna gain (linear). The key figure for EME — determines your signal strength at the moon. |
| MODE THRESHOLDS | Minimum ERP for a symmetric QSO (both stations equal) at current moon distance. Approximate community-accepted values. Assumes a competent receive station at the far end. |
| JT65 | 60-second T/R periods · ~25 dB more sensitive than CW hand copy · most common EME digital mode. |
| Q65 | ~6 dB more sensitive than JT65 · preferred for marginal stations · shorter decode time. |
| CW | Hand-copied CW · requires much stronger signals than digital modes · traditional EME method. |
| ▲ / ▼ margin | Your ERP relative to the mode minimum. Green ≥+6 dB (comfortable) · yellow 0–6 dB (marginal) · red (insufficient). |
Helioclock provides two complementary ways to view aviation weather (METAR) data — a personal station panel for your location, and a map overlay for monitoring multiple stations at a glance.
WEATHER MINI-PANEL (sidebar)
The Weather mini-panel shows current conditions at the METAR station nearest to your QTH, or at a station you specify manually via Settings → Weather Station Override. Click the mini-panel to open the full Detail Panel, which shows decoded current conditions and four scrollable history graphs covering the past 24 hours:
| GRAPH | DESCRIPTION |
|---|---|
| TEMPERATURE | Hourly temperature trend in °F and °C. Useful for spotting frontal passages and diurnal cycles. |
| WIND SPEED | Sustained wind speed in MPH. Calm periods plotted at baseline rather than as gaps. |
| HUMIDITY | Relative humidity % derived from temperature and dewpoint. 100% indicates saturated air or fog. |
| PRESSURE | Altimeter setting in inHg. A falling trend indicates approaching low pressure / storm system. |
METAR MAP LAYER
The METAR Stations layer plots up to 50 user-selected aviation weather stations directly on the Mercator and USA map views. Enable it via ≣ LAYERS → METAR STATIONS. When first enabled, the station picker opens automatically. Once the layer is on, tap the ✎ edit button next to the toggle at any time to add or remove stations.
Adding stations: Type an ICAO code (e.g. KRNO) or city/airport name (e.g. New Orleans, Chicago, London) into the search box. Each result shows two add buttons — ICAO to label the dot with the station code, or CITY to label it with the location name. Use ⇄ on any selected station tag to switch the label at any time. Tap ✕ on a tag to remove it. Selections are saved across sessions.
On the map: Each station appears as a cyan dot with a sky condition icon and current temperature. Hover over any dot to see the full observation.
| TOOLTIP FIELD | DESCRIPTION |
|---|---|
| HEADER | Sky condition icon + condition text. Station name or ICAO as title depending on label choice. |
| TIME | UTC observation time. |
| TEMP | Temperature in °F and °C. |
| HUMIDITY | Relative humidity % derived from temperature and dewpoint. |
| DEWPOINT | Dewpoint in °F and °C. |
| WIND | Direction, speed, and gusts in MPH with compass bearing. |
| VISIBILITY | Prevailing visibility in miles. |
| ALTIMETER | Altimeter setting in inHg. |
| WEATHER | Present weather string when reported (rain, snow, fog, etc.). |
Data source: NWS/NOAA tgftp decoded METAR (primary) · Aviation Weather Center fallback per station · 8,509-station global database bundled locally — no internet required for station search · Observations refresh every 5 minutes · Data updated every 20–60 minutes depending on station type.
Note: The Weather mini-panel and the METAR map layer share the same underlying NOAA METAR data. The mini-panel always shows your home station; the map layer lets you monitor any combination of stations worldwide simultaneously.
A Morse code training tool with two modes: Sending Practice (you key, Helioclock decodes and scores) and Receiving Practice (Helioclock generates CW audio, you copy). Access via ⋮ MENU → CW TRAINER.
| INPUT SOURCE | DESCRIPTION & WIRING |
|---|---|
| 🎤 AUDIO | Web Audio API envelope detection via microphone or USB audio adapter. Connect keyer sidetone or radio phones/monitor output to USB adapter mic-in with a 3.5mm cable. No divider circuit needed at headphone/sidetone levels. Works at any WPM up to ~30 reliably. |
| USB HID | USB keyboard-style keyer adapter. Plug into USB, connect key/paddle via 3.5mm cable. Click AUTO-DETECT then press each paddle to map keycodes. Mono cable = straight-key behavior (duration determines dit/dah). Stereo cable = true iambic mode. |
| WINKEYER | WinKeyer USB or compatible. Web Serial at 1200 baud. Outputs decoded ASCII directly. Click CONNECT PORT and select the device. |
| GPIO (Pi only) | Direct GPIO on Raspberry Pi 4 or 5. Key contact to GPIO 17 (Pin 11) and GND (Pin 9). Server polls at 10ms via gpioget. Pi 4 = gpiochip0, Pi 5 = gpiochip4 — auto-detected. For iambic dit/dah on separate pins, configure the second pin number in Settings. |
Sending Practice: Select card type (Callsigns / QSO / Q-Codes / Words / Numbers / Koch), key the displayed text. SENT row shows symbols live; DECODED row hides while keying and reveals 800ms after pause. Score = Levenshtein accuracy % vs target. Spacebar = manual key for testing without hardware.
Receiving Practice: Set WPM (5–40) + optional Farnsworth spacing, click PLAY. Type what you hear, click SCORE. REVEAL shows sent text without scoring. SKIP advances to next card.
Koch method: Starts with K and M. Use +/− to add one character at a time following the ITU Koch sequence.
Pi GPIO wiring: GPIO 17 = physical Pin 11. GND = Pin 9. Paddle tip between Pin 11 and Pin 9. For two-paddle iambic: dit to GPIO 17 (Pin 11), dah to GPIO 27 (Pin 13), shared GND to Pin 9.
Note: this is a separate pin from PTT Monitor's GPIO input (BCM GPIO 21 / physical pin 40 — see Section 09). The CW key and PTT are wired to different pins and can be used at the same time without conflict.
AIR QUALITY PANEL
The Air Quality panel shows the current AQI (Air Quality Index) for your QTH using the US EPA standard six-level color scale. The mini panel displays the numeric AQI, category badge, dominant pollutant, and reporting station name. The detail view adds a full pollutant breakdown (O3, PM2.5, PM10, CO, NO2, SO2), the AQI color scale reference, and a multi-day forecast when available.
Two API keys are required — both are free with registration:
airnow.gov → Developers/APIaqicn.org/data-platform/tokenEnter both keys in Settings → Profile. AirNow is used automatically when your QTH is within North America; WAQI covers the rest of the world. If neither key is configured the panel shows SET API KEY. Data refreshes every 30 minutes.
TIDES PANEL
The Tides panel shows NOAA CO-OPS tide predictions for a station of your choice. No API key is required. Enter a NOAA station ID in Settings → Profile → TIDE STATION to activate the panel. Find station IDs at tidesandcurrents.noaa.gov/tide_predictions.html — search by region, then note the 7-digit ID shown in the URL (e.g. 9414290 for San Francisco).
The mini panel shows the station name and the next predicted HIGH and LOW with times and heights in feet. The detail panel shows:
Chart tooltips: Hover anywhere on the tide chart to see a floating tooltip showing local time, UTC, and water height at that point. The chart covers 48 hours from midnight today.
Primary vs subordinate stations: NOAA primary (reference) stations provide continuous 6-minute prediction data which is used directly for the chart. Subordinate stations (which reference a nearby primary) only provide high/low predictions — Helioclock automatically generates a smooth chart curve from those points using cosine interpolation between H/L pairs. Both station types are fully supported; the chart looks the same either way.
Tide predictions refresh hourly. All times display in both local time and UTC.
UV INDEX PANEL
The Ultraviolet (UV) Index predicts the UV radiation levels on a 1–11+ scale. The UV Index provides a daily forecast of the expected intensity of UV radiation from the sun. Higher values increase the chance of sunburn.
The mini panel shows the current UVI, WHO category badge, and today's forecast maximum with time. The detail panel shows current reading, today and tomorrow maximums, the full WHO five-level scale, and a color-coded 48-hour bar chart — bars are colored green through violet by exposure level. Hover anywhere on the chart for time and UVI value. No API key is required. Data is fetched from Open-Meteo for your QTH location and refreshes hourly.
UV Index scale (WHO standard): Low 0–2 · Moderate 3–5 · High 6–7 · Very High 8–10 · Extreme 11+
The Quick Reference overlay provides a built-in ham radio desk reference. Press Alt+R from the main display to open it. Navigate between tabs with Tab (forward) or Shift+Tab (back). Close with ESC or the ✕ button.
| TAB | CONTENT |
|---|---|
| BAND PLAN | US amateur band allocations by license class (Technician / General / Extra) with frequency ranges and mode privileges. Common calling frequencies for CW, SSB, FM, and digital modes on 40m through 70cm. |
| FORMULAS | Antenna length formulas (½λ dipole, ¼λ vertical, full-wave loop, wavelength). Ohm's Law (V, I, R, P). Decibel to power and voltage ratios (+1 through +40 dB). Additional formulas for ERP, resonant frequency, and SWR. |
| Q-CODES | 28 common HF and DX operational Q-codes with plain-English meanings, in two columns for quick scanning. |
| CW / OPS | Full NATO/ITU phonetic alphabet. CW prosigns (AR, SK, BK, KN, K, DE, CQ, 73, 88). RST signal report scale (Readability 1–5, Signal 1–9, Tone 1–9). Common on-air abbreviations (OM, YL, XYL, FB, HI, PSE, TNX, etc.). |
| HARDWARE | Coax cable loss in dB per 100 feet for RG-58, RG-8X, RG-213, LMR-400, and LMR-600 at eight frequencies from 1.8 MHz to 1296 MHz. Standard repeater offsets for 6m through 23cm. |
| COMPONENTS | Resistor color code with 4-band and 5-band SVG body illustrations showing example values, plus a full color-to-digit reference table with colored swatches. Ceramic/film capacitor 3-digit marking decoder with common examples. RF connector reference (PL-259, BNC, SMA, Type N, Anderson Powerpole) with impedance, maximum frequency, and typical use. |
Remote View lets you access Helioclock from any other device on your local network — a laptop, desktop, tablet, or smart TV — without installing anything. If the remote browser shows stale content or a previous version of the page, press Ctrl+Shift+R (or ⌘+Shift+R on Mac) to hard reload and pick up the latest version from the server. Open ⋮ MENU → TOOLS → REMOTE VIEW to see your network addresses and QR codes.
Type the displayed URL into a browser on the other device and Helioclock will load fully live and interactive, just as it appears on the kiosk.
Remote browsers maintain their own independent settings profile stored on the server. The first time a new browser connects, it automatically receives the kiosk's saved settings as a starting point — QTH, callsign, timezone, active panels, and all preferences — so it comes up fully configured instead of blank. After that first load, the remote browser has its own profile; changes you make on a remote browser do not affect the kiosk or other remote browsers. To manually re-sync at any time, open ⚙ Settings → ⟳ SYNC FROM KIOSK.
| TOPIC | DETAIL |
|---|---|
| Easy address | http://helioclock.local/ — works on any device without knowing the IP address. Requires the Avahi mDNS service on the server (installed automatically). Supported on Windows 10+, macOS, iOS, and Android with Chrome 89+. Some corporate networks block mDNS — use the IP address shown in the overlay instead. |
| Requirements | The viewing device must be on the same local network as the Helioclock server. Works on laptops, desktops, tablets, smart TVs, and smartphones. A screen of 1920×1080 or larger is recommended. |
| Browser | Use Chrome, Edge, Firefox, or Safari. Web Serial (WinKeyer) requires Chrome or Edge on desktop only. |
| Wired vs WiFi | Two URLs may appear — one for wired LAN and one for WiFi. Use whichever matches your viewing device's network. |
| Smart TVs | Many smart TVs include a browser. Navigate to the URL using the TV remote. Performance varies by manufacturer. |
| Internet access | This does not work over the internet. Remote View is LAN-only. The server is not designed to be exposed to the public internet. |
| Multiple viewers | Several browsers can connect simultaneously. Each runs independently. |
| Settings sync | Remote browsers show a ⟳ SYNC FROM KIOSK button at the top of the ⚙ Settings panel. Pressing it copies the kiosk's current configuration to your remote browser in one step — QTH, callsign, panels, watchlists, API keys, and all preferences — then reloads to apply. Use this to bring a new remote browser into sync without re-entering settings manually. The button is not shown on the kiosk itself. |
BIG SCREEN TVs & SMART TV BROWSERS
Helioclock is designed to run on dedicated hardware — a Raspberry Pi 4/5 or a mini PC — connected to your TV via HDMI. The TV is just a display; all processing happens on the Helioclock device. This is the recommended path for every TV platform and gives the best performance, full feature support, and automatic updates.
As a secondary option, many smart TVs include a built-in browser that can access Helioclock directly over your LAN. Compatibility varies significantly by platform.
| PLATFORM | STATUS | NOTES |
|---|---|---|
| Samsung Tizen (The Frame, QLED, Neo QLED, etc.) |
✓ Works | Use the IP address directly — http://192.168.x.x. The hostname helioclock.local does not resolve in the Tizen browser. GOES cloud overlay takes 20–30 seconds to appear on first enable — this is normal, not a fault. All remote-control navigation uses the large on-screen buttons. |
| LG webOS | Untested | May work. Use the IP address. If you test it, please report results to support@helioclock.com. |
| Android TV / Google TV (Chromecast with Google TV, Sony, TCL, etc.) |
✗ No browser | Chrome is not available on the Android TV Play Store. Puffin TV Browser (available on Play Store) is a cloud-rendered Chromium-based workaround and may work, but is not officially supported. The recommended solution is dedicated hardware via HDMI — see below. |
| Amazon Fire TV | Untested | Silk browser available. May work. Use the IP address. Report results to support@helioclock.com. |
| Roku | ✗ No browser | No web browser available on Roku. Dedicated hardware via HDMI is the only option. |
NO BROWSER ON YOUR TV?
If your TV platform has no usable browser, the simplest solution is a small dedicated PC connected via HDMI. Any of the following will work:
Connect the device to your TV via HDMI, open Chrome, navigate to http://[your-helioclock-IP], and press F11 for fullscreen. The TV becomes a full kiosk display with no remote-control limitations.
TIPS FOR TV BROWSER USE
http:// and the IP address — do not use helioclock.local on TV browsershttps://, type the full URL including http:// to override it⚠ TV BROWSER DISCLAIMER
TV browser behavior is unpredictable and varies widely across manufacturers, models, and firmware versions. Helioclock cannot account for every TV browser implementation and does not offer support for TV browser issues. Use TV browsers at your own risk. For reliable, full-featured operation at native resolution, connect a dedicated hardware device to your TV's HDMI input — a Raspberry Pi 4/5 or mini PC running the Helioclock software is the supported and recommended configuration.
Helioclock renders at your display's native resolution and uses your operating system's scaling factor to determine text and element sizes. Getting this right is important for crisp, readable text — especially on 4K displays.
1080p DISPLAYS
No special configuration is required. Set your display to its native 1920×1080 resolution. Text and graphics will render crisply at 100% scale.
4K DISPLAYS (3840×2160)
A 4K display connected to a Helioclock appliance should be configured as follows for best results:
Running at native 4K resolution with 200% scale tells Helioclock to render every pixel at full 4K sharpness while keeping all UI elements at a comfortable viewing size. Setting the resolution to 1080p instead causes thin, broken-looking text because the browser renders at low resolution and the display upscales it.
WHY NOT JUST SET IT TO 1080p?
A 4K display set to 1080p resolution loses its native pixel mapping. The TV or monitor must electronically upscale the 1080p image to fill its 4K panel — this interpolation produces soft, slightly blurry rendering. Running at native 4K with OS-level scaling avoids this entirely.
ACCESSING DISPLAY SETTINGS
From within Helioclock, open Settings → ADMIN → ⚙ DISPLAY SETTINGS. The OS display configuration panel will appear on top of the kiosk — no need to exit. Make your changes, close the panel, and Helioclock continues running normally.
SETTINGS PERSIST ACROSS REBOOTS
Once you configure the correct resolution and scale, the settings are saved by the OS and restored automatically on every boot. You only need to set this once.
DISPLAY TEST PATTERNS
Open Settings → ▦ DISPLAY TEST PATTERNS for six built-in calibration patterns — useful when setting up a new display, checking an old monitor or TV before connecting it to a shack Pi, or verifying a signage installation. Pick a pattern, tap FULLSCREEN (hides all Helioclock UI, not just the settings box), then tap anywhere to cycle through: SMPTE Color Bars, Crosshatch, Grayscale, HD SMPTE RP 219:2002 Color Bars, five Solid Colors (red/green/blue/white/black), and Geometry. Tap the top-left corner or press Esc to exit back to Settings.
HOW TO USE EACH PATTERN
| DISPLAY TYPE | RESOLUTION | SCALE | RESULT |
|---|---|---|---|
| 1080p (native) | 1920×1080 | 100% | ✓ Crisp |
| 4K (native) | 3840×2160 | 200% | ✓ Crisp |
| 4K (wrong) | 1920×1080 | 100% | ✗ Blurry/thin text |
The kiosk display runs in a locked-down Chromium session with the print dialog suppressed — you cannot print directly from the screen in front of you. All printing and sharing is done from a second device (phone, tablet, laptop) on the same LAN.
Sharing a live view
Open http://helioclock.local/ on any device on your LAN. You get a fully live, interactive copy of the display in your browser. From there you can screen-share the browser tab in any video call (Zoom, Teams, Google Meet, FaceTime), cast it to a TV via Chromecast or AirPlay, or simply hand your phone to someone. The Remote View QR code shown in the lower-right corner of the kiosk display links directly to this URL — scan it with any phone to open a live view instantly. See Section 12 (Remote View) for full details.
Capturing a still image of the current kiosk screen
Open http://helioclock.local/api/kiosk-snapshot from any browser on your LAN. The server captures exactly what is showing on the kiosk display at that moment and delivers a full-resolution PNG to your browser. The image opens inline — right-click it to save, or use your browser’s share sheet to send it directly to a contact, post it to QRZ.com, or drop it into a club forum. The snapshot reflects the live display including all active panels, layers, and animations — frozen at the instant you loaded the URL.
Printing the current kiosk screen
Open http://helioclock.local/api/kiosk-snapshot on a device connected to your printer. The PNG loads in your browser. Press Ctrl+P (or ⌘+P on Mac) and print normally. For best results choose landscape orientation and “fit to page” in your print dialog. A color printer will produce a useful reference image showing current band conditions, solar data, active alerts, and greyline status at the time of capture.
Printing this help file
This help file is accessible at http://helioclock.local/help from any browser on your LAN. Open that URL and press Ctrl+P. The help file includes a print stylesheet that removes the dark background, switches to black text on white, and formats the tables cleanly for paper. All 21 sections print in order. Suggested print settings: portrait, all pages, default margins.
If the snapshot returns an error
The snapshot feature requires Chromium to be started with the --remote-debugging-port=9222 flag. This flag is included in the Helioclock kiosk autostart configuration. If you see an error message when loading the snapshot URL, contact support or reinstall Helioclock. The debugging port is bound to localhost only and is not accessible from other devices on your LAN — it is used exclusively by the Helioclock server to capture screenshots.
Helioclock updates itself automatically from a private GitHub repository. No manual steps are required for normal operation — updates download and apply overnight while the display is running.
AUTOMATIC UPDATES
The server checks for new releases once daily at a randomized time offset — the randomization prevents all units from hitting the repository simultaneously on a large deployment. If a newer version is available, it downloads the complete update to a temporary location first, verifies it, then replaces the running files in a single step. A partial or failed download can never corrupt your installation. After a successful update the service restarts automatically — the display goes briefly dark then returns on its own. No user action is required.
ADMIN PAGE
The Admin overlay (Settings → ADMIN) shows the current installed version, the time of the last update check, and a CHECK NOW button to trigger an immediate check outside the daily schedule. Use this after a known release to pick it up right away rather than waiting for the overnight check.
WHAT GETS UPDATED
Updates replace the three application files: helioclock.html, server.js, and help.html. Your personal configuration — QTH location, callsign, settings, panel layout, and any custom data — is stored in server-config.json and is never touched by an update.
IF AN UPDATE FAILS
If the download fails or the integrity check does not pass, the running files are left untouched and the previous version continues operating normally. The Admin overlay records the failure reason. The next daily check will retry automatically.
GITHUB ACCESS TOKEN
The update system uses a read-only personal access token stored locally in server-config.json. This token has permission to read release assets only — it cannot write to or modify the repository in any way. The token is injected during installation and is never baked into the distributed image.
DAILY BROWSER RESTART — 3:00 AM
Helioclock automatically restarts the Chrome browser every night at 3:00 AM (±60 seconds). This is a normal and intentional maintenance window — the display goes dark for approximately 30 seconds then returns on its own. No user action is required. If any animated layers (GOES satellite clouds or radar) were active before the restart, they may need to be re-enabled manually after the display returns. All other settings and panels are unaffected.
UPDATE PREFERENCES
Update behavior is configured in Settings → ADMIN → UPDATE PREFERENCES. Three modes are available:
| MODE | BEHAVIOR |
|---|---|
| UNATTENDED MODE | For lobby kiosks and installations with no attached keyboard or mouse. Updates apply automatically at 3AM with no banners or notifications. One checkbox controls everything — set it and walk away. |
| AUTO-UPDATE AT 3AM | Updates apply automatically overnight. An on-screen banner notifies the operator that an update was applied (unless NOTIFY ON-SCREEN is off). |
| NOTIFY ON-SCREEN | Shows banners on the main display when an update is available or has been applied. Forced on when AUTO-UPDATE is off — if the system won't update itself, you need to know an update exists. |
UPDATE BANNERS
When NOTIFY ON-SCREEN is enabled, two banners may appear in the upper-left corner of the display:
In UNATTENDED MODE, no banners appear regardless of NOTIFY ON-SCREEN setting.
| SETTING | DESCRIPTION |
|---|---|
| QTH LOCATION | Your station latitude/longitude. Required for azimuthal view, ISS/AMSAT pass prediction, WWV propagation ratings, aurora visibility boundary, and ISS pass crawl. |
| CALLSIGN | Your amateur radio callsign. Displayed in the header and ON AIR banner. |
| FIRMS API KEY | Free key from firms.modaps.eosdis.nasa.gov required for the Wildfire Hotspots layer. |
| AIRNOW API KEY | Free key from airnowapi.org required for the Air Quality panel (US, Canada, Mexico). Register at airnow.gov → Developers/API. |
| WAQI API KEY | Free token from aqicn.org required for the Air Quality panel outside US/CA/MX (global fallback). Register at aqicn.org/data-platform/token. |
| FMP API KEY | Free key from site.financialmodelingprep.com required for the Markets panel's stock quotes and DOW/NASDAQ indices. Crypto watchlist works without a key (CoinGecko). |
| TIDE STATION | NOAA CO-OPS station ID for the Tides panel (e.g. 9414290 for San Francisco). No API key required. Find station IDs at tidesandcurrents.noaa.gov/tide_predictions.html. See section 12 — AIR QUALITY & TIDES for details. |
| NEWS FEEDS | Opens the News Feeds Picker — configure which RSS/ATOM sources appear in the crawl bar, set the fetch interval and item age gate, and add or remove custom feeds. Also accessible via the ⚙ gear icon on the crawl bar itself. See section 07 — ALERT RULES & CRAWL BAR for full details. |
| MAP STYLE | Seven styles: DAY/NIGHT — OCEAN DETAIL, DAY/NIGHT — PLAIN OCEAN, SATELLITE — DAY ONLY, SEASONAL — OCEAN DETAIL, SEASONAL — PLAIN OCEAN, POLITICAL, OUTLINE. Seasonal styles auto-swap to the current month image on the 1st. |
| DISPLAY UNITS | Panel capacity budget. Set automatically on first load from screen height. |
| CW MORSE TONE | Plays a CQ callsign in Morse at boot. Configurable WPM. |
| NTP SERVER | Custom NTP server for clock synchronization status display. Default: pool.ntp.org. |
| PTT MONITOR | Enable USB serial or Raspberry Pi GPIO PTT detection for ON AIR banner. See Ham Radio section. |
| ALERT POLYGONS | Show NWS alert areas on map: Off / Warnings only / All alerts. |
| TIER / LICENSE | Basic or Amateur tier. Controls availability of ham radio features. |
STATUS BAR INDICATORS
The bottom bar displays four live status indicators on the right side. Each has a colored dot and a label — green indicates normal operation, amber indicates a degraded or recent-restart condition, red indicates a fault or offline state.
| INDICATOR | GREEN | AMBER | RED |
|---|---|---|---|
| NTP | Clock synchronized to NTP server — time is accurate | Sync degraded or stale — time may drift slightly | No NTP sync — clock running on local oscillator only |
| HC-SERVER | Node.js server responding normally | Server responding but slowly (>500 ms) | Server offline or unreachable |
| UP | Server has been running continuously — stable system | Server restarted less than 5 minutes ago — data feeds may still be initializing | n/a — if the server is offline, HC-SERVER shows red. The UP indicator dims to grey and shows UP --. |
The Helioclock admin panel is accessible via the ⚙ ADMIN button at the bottom of the Settings panel (⚙ button in the bottom bar). It opens as an overlay and is also available to any device on the same LAN at http://helioclock.local/admin.
Health Report — The top section of the admin panel shows a live system health snapshot. It loads automatically each time the admin panel opens, and a 🩺 REFRESH button re-polls on demand. All values are color-coded: green = normal, amber = warning, red = critical.
GitHub Configuration — Enter your GitHub repository name (format: Owner/reponame) and a Personal Access Token with Contents read-only permission. Press SAVE. These are stored in settings/server-config.json on the server and persist across restarts.
Software Update — Press CHECK NOW to query GitHub Releases for the latest release tag. If the tag differs from the running server version, STATUS shows UPDATE AVAILABLE and an APPLY UPDATE button appears. Pressing APPLY UPDATE downloads only the files attached as assets to that release, verifies each file, performs an atomic swap, then restarts the server. The page reloads automatically after 8 seconds.
Partial updates — A release does not need to include all four files. If only help.html changed, only help.html needs to be attached to the release. Only files present as release assets are downloaded and updated.
Auto-check — The server automatically checks for updates once daily at 3AM local time (plus a random 0–60 minute offset to avoid simultaneous checks from multiple units).
| ITEM | DESCRIPTION |
|---|---|
| DISK USAGE | Storage used and free on the root partition (GB), with percentage. Amber above 70%, red above 90%. Critical on SD card appliances — a full card will crash the server. |
| MEMORY | RAM used and total (MB). Amber above 80%, red above 90%. |
| CPU TEMP | Processor temperature in °C. Raspberry Pi only — shows N/A on x86 hardware. Amber above 75°C, red above 85°C. Sustained red indicates inadequate cooling or ventilation. |
| SYSTEM UPTIME | Time since the last OS boot. Unexpected short values may indicate a crash or power event. |
| NODE UPTIME | Time the Helioclock server process has been running. Shorter than system uptime indicates a server restart (e.g. after a software update). |
| LOAD AVG (1/5/15) | CPU load averages over the last 1, 5, and 15 minutes. Amber if the 1-minute average exceeds the number of CPU cores — sustained high load may indicate a runaway process. |
| NODE HEAP / RSS | Node.js memory usage: heap is JavaScript object memory; RSS is total process memory including native buffers. Useful for diagnosing gradual memory leaks. |
| GITHUB REPO | Your GitHub repository in Owner/reponame format. Case-sensitive. |
| PAT | Personal Access Token — fine-grained, Contents read-only scope. Regenerate on GitHub if expired. |
| CHECK NOW | Immediately queries the GitHub Releases API for the latest release tag. |
| APPLY UPDATE | Downloads verified release assets, swaps files atomically, restarts server. Page reloads in 8s. |
| Auto-check | Daily at 3AM + random offset. No action taken automatically — operator must press APPLY UPDATE. |
UPDATE PREFERENCES — Three checkboxes appear in a single row:
| CHECKBOX | BEHAVIOR |
|---|---|
| UNATTENDED | Silent mode for lobby kiosks and unattended installations. When checked, AUTO-UPDATE and NOTIFY are dimmed and overridden — updates apply silently at 3AM with no on-screen banner. |
| AUTO-UPDATE | Automatically applies updates at 3AM without any operator action. If unchecked, updates are downloaded and flagged but not applied until the operator presses APPLY UPDATE. |
| NOTIFY | Shows an on-screen banner when an update is available. Always on when AUTO-UPDATE is off (and UNATTENDED is off). |
First-Run Network Setup — On first boot, a NETWORK SETUP screen appears before the main display loads. Choose how this Helioclock will connect to the network:
| OPTION | DESCRIPTION |
|---|---|
| WIRED LAN | Select this if your Helioclock is connected via Ethernet cable. Confirm your cable is plugged in, then press CONTINUE. The screen polls for a LAN connection every 2 seconds — the status line turns cyan with your IP address when detected. Press CONTINUE at any time once connected. |
| WiFi | Select this to connect wirelessly. Press SCAN to list available networks sorted by signal strength — click any network name to fill in the SSID field automatically. Enter your password and press CONNECT. The LAN indicator in the bottom bar will turn green when connected. |
| BACK | Returns to the WIRED LAN / WiFi choice from either screen. |
This screen appears only once. After a successful connection it is dismissed permanently. To re-run network setup, open the WIFI section in the Admin panel at any time.
WiFi (Admin panel) — The WIFI section in the Admin panel lets you change or re-configure the wireless connection after first boot. Press SCAN to list available networks, click a name to select it, enter the password, and press CONNECT.
| ITEM | DESCRIPTION |
|---|---|
| SCAN | Scans for available WiFi networks sorted by signal strength. Click a network name to populate the SSID field. |
| SSID | The network name. Type it manually or click a scanned result. |
| Password | Leave blank for open (unsecured) networks. |
| CONNECT | Connects the server to the selected network. Takes up to 20 seconds. |
System Password — Press CHANGE PASSWORD to expire the current administrator password. You will be prompted to set a new one at the next SSH or console login. The default password set during installation is Helioclock#1 — change it before deploying in any shared environment.
Helioclock is a real-time living world clock and kiosk display for amateur radio operators, Earth systems enthusiasts, and weather professionals. Continuing the tradition established by HamClock (WB0OEW). Designed and developed by KA9NWM.
Website: helioclock.com
Current version shown in the header and the About screen (⋮ Menu → About).
© 2026 Helioclock. All rights reserved. Data from third-party sources is provided as-is. Do not rely on Helioclock as your sole source of severe weather or emergency information.
DATA SOURCES
| DATA | SOURCE |
|---|---|
| Day map | NASA Blue Marble / Visible Earth (public domain) |
| Night map | NASA Black Marble / Earth at Night (public domain) |
| Solar & lunar position | Astronomical algorithms (computed locally) |
| Lightning | NOAA GOES-19 Geostationary Lightning Mapper (GLM) |
| Wildfire hotspots | NASA FIRMS VIIRS Near Real-Time |
| Weather alerts | NOAA / National Weather Service CAP feed |
| Space weather | NOAA Space Weather Prediction Center (SWPC) |
| Dst index | USGS Geomagnetism Program (geomag.usgs.gov) — 4-station computed index, independent of Kyoto WDC |
| D-Region absorption (D-RAP) | NOAA Space Weather Prediction Center (SWPC) |
| POTA | Parks on the Air (api.pota.app) |
| SOTA | Summits on the Air (sotadata.org.uk / api-db2.sota.org.uk) |
| DX Peditions | NG3K Announced DX Operations, Bill Feidt/NG3K (ng3k.com) |
| Contest calendar | User-configured ICS/iCalendar feed — no default shipped. See the FAQ below for why, and Settings → Data Sources to set one. |
| WWFF | World Wide Flora & Fauna in Amateur Radio (wwff.co / spots.wwff.co) |
| WWBOTA | Worldwide Bunkers on the Air (wwbota.org / api.wwbota.org) |
| WSJT-X | Joe Taylor, K1JT, and the WSJT-X Development Group (wsjt.sourceforge.io) |
| PSK Reporter | PSK Automatic Propagation Reporter, Philip Gladstone (pskreporter.info) |
| MUF Matrix | Sunspot/zenith model: Sailors et al. 1986 (MINIMUF-85), as reproduced in Daehler, "EINMUF" NRL Memorandum Report 6645 (1990). Obliquity factor: ITU-R P.1240 M(3000)F2 secant-law relationship. |
| SDO solar imagery | NASA Solar Dynamics Observatory |
| Cloud cover | NOAA nowCOAST WMS |
| NEXRAD radar | NOAA Ridge II |
| ISS / satellite TLE | CelesTrak |
| DX Cluster | WA9PIE-2 / DXSpider network — requires callsign in Profile |
| Earthquakes | USGS Earthquake Hazards Program |
| Volcanoes | Smithsonian GVP / USGS Weekly Volcanic Activity Report |
| Air quality | EPA AirNow (US / Canada / Mexico) · WAQI aqicn.org (global fallback) — requires API keys in Settings |
| Tides | NOAA CO-OPS Tide Predictions API — free, no key required. User selects station ID. |
| Markets — stocks & indices | Financial Modeling Prep (financialmodelingprep.com) — requires free API key in Settings |
| Markets — crypto | CoinGecko (coingecko.com) — free, no key required |
| News crawl — Ham Radio | ARRL · AMSAT · DX Zone · RSGB |
| News crawl — World News | FOX News · BBC World · NPR · UPI · Associated Press (US & World via rss.app) |
| News crawl — Space | NASA · Universe Today · Spaceflight Now · Space.com |
| News crawl — Weather | National Weather Service · NHC Atlantic · NHC Eastern Pacific · NOAA Storm Prediction Center |
| News crawl — Geology | USGS Earthquakes M4.5+ hourly (ATOM feed) |
| Custom news feeds | Any RSS or ATOM feed URL — stored in custom-feeds.json, never overwritten by updates. rss.app can generate feeds for sites without native RSS. |
| IP geolocation | ip-api.com / ipapi.co (cached locally) |
| Fonts | Orbitron & Share Tech Mono — Google Fonts (OFL) |
Common fixes for display, data, and server issues.
| PROBLEM | FIX |
|---|---|
| Stale data or wrong display in any browser | Ctrl+Shift+R — hard reload. Forces the browser to discard its cached copy of the page and re-fetch everything from the server. Use this first whenever something looks wrong: stale map imagery, outdated data, missing panels, or a layout that looks off after an update. Works on the kiosk display, remote browsers, phones, and tablets. On Mac use ⌘+Shift+R. |
| ⏻ POWER button — shut down or restart has no effect | The server may have crashed or lost contact with the OS. On a Raspberry Pi 5, press the small power button on the board to initiate a clean shutdown. On a Raspberry Pi 4 or mini PC, hold the power button for 5–10 seconds to force a hard power off — note this risks SD card corruption on a Pi 4, so use it only as a last resort. Once powered off, disconnect and reconnect power to restart. Power users can check the service status using the button in the SERVER ACTIONS section below. |
| All display settings reset after hardware troubleshooting | If display preferences (panel layout, toggles, sidebar state) have been lost, use the ↺ RESET DISPLAY PREFERENCES button — available in ⚙ Settings (scroll to the bottom) or in the SERVER ACTIONS section below. This restores all display defaults in one click. Your callsign, timezone, and license tier are not affected. |
| Display resolution dropped to 1920×1080 or image appears offset / cropped on a 4K monitor | This is usually caused by the TV or monitor not completing its HDMI handshake before Helioclock launches, or a browser window position being cached from a previous session. Press ⏻ POWER → RESTART in the bottom bar and wait for the full reboot. On most displays this restores 4K automatically. If it persists after two restarts, power off the display first, then power it back on before restarting Helioclock — this forces a fresh HDMI handshake. If the problem recurs regularly, contact support@helioclock.com. |
| Stale HTML after deploy | Navigate to /reload on any browser — clears server HTML cache and redirects to /. No restart needed. |
| Panel layout wrong / not saving | Try Ctrl+Shift+R first. If panels are still missing or misarranged, open the panel picker and re-configure them manually. If the problem persists, contact support@helioclock.com. |
| Sidebar state stuck | Press Ctrl+Shift+R to hard reload. If the sidebar remains stuck, use Alt+[ or Alt+] to toggle it manually. |
| Wildfire layer shows no data | FIRMS API key not set or expired. Go to Settings → FIRMS Key and enter a valid key from firms.modaps.eosdis.nasa.gov/api/map_key/. |
| Air Quality panel shows SET API KEY | AirNow key (US/CA/MX) or WAQI token (global) not configured. Go to Settings → Profile and enter the appropriate key. Both are free — see Section 18 for registration links. |
| Markets panel shows SET API KEY | No FMP key configured. Go to Settings → Data Sources and enter a free key from site.financialmodelingprep.com/register. Crypto watchlist works without a key; only stock quotes and the DOW/NASDAQ indices require one. |
| News crawl shows NO ITEMS IN RANGE | The age filter is excluding all available items. Open News Feeds Settings (⚙ on crawl bar or Settings → NEWS FEEDS) and widen the SHOW ITEMS FROM LAST window. Weather, geology, and low-frequency feeds (ARRL, RSGB) may need 12H–24H to show content reliably. |
| Custom news feed added but not showing in crawl | Check the age gate — the feed may have items but they are older than your current SHOW ITEMS FROM LAST window. Also confirm the feed toggle is ON in the picker. Use the ↺ REFRESH button on that feed row to force an immediate fetch. |
| Custom feed VERIFY fails | The URL may not return valid RSS or ATOM content, may require authentication, or may be temporarily unavailable. Try the URL directly in a browser to confirm it is accessible. If the site has no native feed, use rss.app to generate one. |
| Tides panel shows SET STATION IN PROFILE | No NOAA station ID is configured. Go to Settings → Profile → TIDE STATION and enter a 7-digit NOAA station ID. Find IDs at tidesandcurrents.noaa.gov/tide_predictions.html. |
| Tides panel shows INVALID STATION ID | The station ID entered does not exist or is not a tide prediction station. Verify the ID at the NOAA station finder. Station IDs are 7 digits (e.g. 9414290). |
| Tide chart is missing or shows no curve | The station may be a subordinate station with no continuous prediction data — Helioclock uses cosine interpolation in this case and should still display a chart. If the chart is missing, try a primary (reference) station. The station detail page on tidesandcurrents.noaa.gov shows whether a station is Primary or Subordinate. |
| Panels not updating overnight | Chromium timer throttling. Ensure kiosk launch flags include --disable-background-timer-throttling and --disable-renderer-backgrounding. |
| Volcano layer wrong location | GVP data format may have changed. Try restarting Helioclock. If the problem persists, contact support@helioclock.com. |
| Help file does not display | The help file was not deployed with your installation. Reinstall using the latest package or contact support@helioclock.com. |
| About screen shows "—" for help version | help.html is missing from /opt/helioclock/. Deploy all application files. |
SERVER ACTIONS
These buttons act on the Helioclock server. Use with care on the primary kiosk display — the screen will go blank briefly on restart.
Is there a central Helioclock server? What happens if it goes offline?
No. Helioclock runs entirely on your local hardware — the Pi 4/5 or mini PC sitting on your desk. There is no cloud dependency, no subscription server, and no single point of failure outside your own LAN. All data feeds (NOAA, RainViewer, NASA, NWS) are fetched directly from their public APIs by your local server. If any individual data source goes down, that layer shows stale or no data — but the rest of the display keeps running. The display itself will continue operating indefinitely on your LAN even if your internet connection drops entirely. This is a deliberate architectural choice, directly addressing the HamClock situation where the author's personal server going EOL ended the product for every user simultaneously.
Why doesn't the MUF Matrix use real VOACAP? Is it a cheaper substitute?
It's a deliberate tradeoff, not a shortcut. Genuine VOACAP-grade prediction is real, expensive computation — commercial services that offer it as an API run it centrally, on their own servers, and require an ongoing subscription to reach it. That's precisely the dependency Helioclock's whole architecture exists to avoid: no Helioclock feature should stop working because a company's server, pricing, or licensing terms changed. So the MUF Matrix computes an honest, simplified secant-law estimate entirely on your own device — live sunspot number and Kp feed a real, cited ionospheric relationship (see Credits & Data Sources), rendered locally with no ongoing cost and no external dependency beyond the solar data feed itself. It won't match a real VOACAP engine's regional accuracy — it doesn't have decades of ionosonde measurement data behind it — but it will never go offline because someone else's server did, and it will never come with a bill.
Why does the Contest Calendar not come with any events pre-loaded?
Because the best available contest calendar data — the WA7BNM Contest Calendar — is a licensed resource, and its own published Terms of Use draw a clear line: loading its ICS feed into a calendar application for your own personal use is already freely permitted, but a product bundling and redistributing that data to every customer by default would need a separate written agreement with its owner. Helioclock's Contest Calendar panel is built to match the use that's already permitted — you point it at a feed of your own choosing in Settings → Data Sources, the same way you'd add any external calendar to Outlook or Google Calendar, and your unit fetches that feed directly. Nothing is bundled or redistributed centrally. Any public ICS/iCalendar feed works, not just WA7BNM's — it's your choice, not a Helioclock default.
What makes Best Band Now different from other propagation dashboards?
Most tools show one number per band — a model's prediction, or a count of live spots — but not both compared against each other. Best Band Now shows a QTH-anchored MUF prediction alongside live evidence for every band at once, ranked by a single score rather than sorted into a few fixed categories — and it shows its work: every band's evidence, MUF headroom, and resulting score is visible in the leaderboard, not just the winner. A band the model predicts Closed but that's showing real activity anyway appears in a separate Surprise Activity section — a sign the model missed something, often sporadic-E or an unusual opening, and often a more useful signal than the main ranking alone. Each band also gets its own "Band Scope" — a small sparkline of that band's score over the last hour, so you can see whether it's a fluke spike or a sustained trend at a glance, something no other propagation tool currently offers. Confirmation evidence comes from Reverse Beacon Network CW skimmer spots of any beacon station and DX Cluster spot counts. Neither carries real coordinates for the spotting station, so a band opening on the other side of the world can currently contribute to that band's score here too — an honest limitation worth knowing. Two other sources were tried and removed: PSK Reporter (digital-mode-only, only shows anything while you're actively transmitting, read zero most of the time) and POTA (distance-filtered to genuinely nearby parks — technically correct, but with so few nearby parks active at any given moment it also read zero most of the time, which looks exactly like "broken" to anyone glancing at the panel even though the number was honest).
Exactly how is each band's score and the overall "best band" pick calculated?
Prediction: the same simplified secant-law MUF model as MUF Matrix, but evaluated at your own QTH coordinates instead of one of MUF Matrix's 8 fixed world regions. A band is Open if its frequency is at or below 88% of the computed MUF, Marginal between 88% and 105% of MUF, and Closed above 105% — the same thresholds MUF Matrix itself uses, so the two panels stay consistent with each other. The Δ MUF column shows the plain MHz difference (computed MUF minus the band's frequency) so you can see the actual margin behind the number, not just the predicted category.
Evidence: the same two sources as before, but now feeding a score directly rather than clearing a pass/fail bar. RBN (Reverse Beacon Network) counts any CW skimmer spot of any beacon station in the last 15 minutes. This originally only counted the 18 official NCDXF/IARU network beacons specifically, but that was checked against real RBN traffic and found to read zero almost as often as POTA did, for a real structural reason: those 18 beacons share a rotating schedule (each transmits only 10 seconds out of every 180), while the RBN feed is otherwise dominated by many independent, always-on personal beacon stations. Counting any beacon spot trades some precision for actually having data most of the time. DX Cluster counts spots in the last 15 minutes, anywhere in the world (a known limitation shared by both sources: spotting-station location isn't yet cross-referenced against your own QTH, so a global opening elsewhere can currently contribute here too). The EVIDENCE column shows the raw DX and RBN counts side by side so you can see exactly what's feeding the score. PSK Reporter and POTA were both tried as additional sources and removed — see the FAQ above for why.
Score: every band predicted Open or Marginal gets one number: log(DX + RBN spots + 1) × frequency weight × 10 + MUF headroom bonus. The evidence count is log-scaled so a burst of 60 spots doesn't need to beat 6 spots by an absurd margin — going from 1 to 10 spots matters more than going from 60 to 70. The frequency weight runs from 1.0× (80m) to 2.0× (6m), reflecting that higher bands are generally quieter and more valuable when they're genuinely open, not that they're intrinsically "better" propagation. The MUF headroom bonus is small and capped, rewarding a band that sits comfortably below the computed MUF over one right at the edge, without ever letting headroom alone decide the outcome. Whichever band has the highest score is ranked #1 — the leaderboard always shows every band's real score in ranked order, nothing hidden or pre-filtered.
LEADING vs. CONFIRMED — why is the #1 band sometimes not "confirmed" yet? A band sitting right at the top of the ranking can genuinely swap places with a close second every few minutes as individual spots age in and out of their 15-minute windows, even though nothing real is changing. Rather than let the "best band" flip back and forth on every such wobble, whichever band currently ranks #1 must hold that rank continuously for 20 minutes before it's marked CONFIRMED (green); until then it shows LEADING (amber) with a running "X/20 MIN" counter. This 20-minute hold was arrived at by testing several variants directly against a real multi-day decision log before picking one. Importantly, this hold applies only to that one badge — the ranking and every band's score are never delayed or hidden, so nothing on screen contradicts what the "best" verdict is quietly waiting to confirm.
Band Scope: a small sparkline shown for every band (not just the leader — leaving one out reads as a bug, not a deliberate omission), plotting that band's own score over the last 60 minutes. Each sparkline is scaled to that band's own range, not a shared scale across all 9 bands, since the point is showing shape and trend at a glance, not absolute magnitude — but the actual min–max range behind that shape is always printed directly underneath it, so a small wiggle and a dramatic swing can never look visually identical without the real numbers to tell them apart. It's seeded from the existing decision log on page load so a kiosk reboot doesn't start with a blank chart, then fills in live at high resolution from there.
How fresh is this, exactly? Different pieces update at different speeds, since each comes from a different source polled on its own schedule. The panel display itself re-evaluates roughly every second, but that's just recalculating with whatever data is already cached — the actual freshness ceiling is set by the slowest contributing source for whatever changed. DX Cluster and RBN spots are both live (always-open connections — a new spot appears within about a second of arriving). The SSN/Kp numbers feeding the MUF prediction itself refresh at most every 14 minutes, matching NOAA SWPC's own update cadence — though the computed MUF still drifts continuously between those refreshes, since it also depends on solar elevation at your QTH, which changes every second regardless of when SSN/Kp last updated.
Decision log, for checking whether this is actually reliable. Every time the "best band" pick changes, a full snapshot of that moment — every band's predicted status, computed MUF, per-source evidence counts, and resulting score — is written to a log file on the device, so the decisions themselves can be reviewed later rather than just trusted in the moment. A heartbeat entry is also logged every 5 minutes even when nothing changed, so a quiet, stable stretch is still visible in the record rather than just an absence of entries. The log is plain JSONL (one JSON object per line) at a fixed path on the device, and is also available over HTTP at /api/bestband-log (GET) if you'd rather pull it that way than over SSH/SCP.
Why does FAA WeatherCams open FAA's own page instead of showing images directly in Helioclock?
Two real technical walls, not a design preference. First, there's no public API for this data — the obvious endpoint (api.weathercams.faa.gov) returns "not authorized," and the live image URLs are only computable by a real browser running FAA's own React application; a plain server-side fetch of any page on the site returns just "JavaScript is required to use this application," with no usable data in it. Second, each camera image's URL embeds a server-validated timestamp — guessing or constructing one returns "Access Denied," so there's no way to reliably build "today's image" ourselves even knowing the general URL pattern. Given that, embedding FAA's own live page is both the only reliable option and, arguably, the more defensible one: this app is acting as a browser showing FAA's unmodified page, not fetching and re-hosting their imagery itself. The site list itself (955 sites) doesn't come from a public API either — no API to source it from — so it was extracted once from a real saved page; it's static reference data bundled with the app, not something polled live. NAV Canada operates roughly 225 of the 955 sites shown on FAA's shared portal; those can be excluded with a toggle in the detail view for anyone who'd rather not rely on a second country's aviation authority's content even via embedding.
Will it run on wired or wireless? Does it matter if I switch, or have both connected at the same time?
Helioclock runs on either wired Ethernet or WiFi without any configuration change. The server binds to all network interfaces by default, so it is reachable on whatever IP address your router assigns — whether that is the wired port, the wireless adapter, or both simultaneously. Switching from wired to wireless (or vice versa) while running is fine; there may be a brief pause in data fetches while the network reconnects, but the server will resume on its own. If both are connected at the same time both will work. For kiosk installations wired Ethernet is recommended for stability — WiFi is adequate for casual use but can introduce intermittent fetch delays on a busy 2.4GHz network.
I'm running this on a Raspberry Pi 4. Do I need a heatsink and fan?
Yes to a heatsink, recommended but not required for a fan. The Pi 4 runs a full-resolution canvas at 1080p or 4K continuously, which is a sustained CPU and GPU workload. Without any cooling, the Pi 4 will thermal-throttle after 20–30 minutes — you will see the display stutter and frame rates drop. A passive heatsink case (aluminum shell with no moving parts) is sufficient for most indoor ambient temperatures and eliminates throttling entirely. An active fan is only necessary in a warm equipment rack or enclosure with poor airflow. The Helioclock SD card SKU is tested with a passive heatsink case. If you are using the bare board in a standard plastic case, add at minimum the stick-on copper heatsinks that come with most Pi 4 accessory kits.
My Raspberry Pi 4 has two HDMI outputs. Can Helioclock drive both displays at the same time?
Helioclock drives one display per Pi — the kiosk session uses whichever HDMI port it launches on, and the second port is not used. For additional screens, use the Remote View feature: any TV, monitor, laptop, tablet, or phone on your LAN can open http://helioclock.local/ in a browser for a fully live, independent view — no limit on simultaneous connections. If you specifically need two or more HDMI-connected screens driven from the same Pi, an HDMI splitter/amplifier will mirror the kiosk display to as many screens as the splitter supports, with no additional configuration required.
How many remote browser connections can I make at the same time?
There is no hard-coded connection limit. In practice the bottleneck is the Pi 4's CPU and network bandwidth. Each connected browser receives its own stream of API responses — radar frames, lightning data, NWS alerts, and so on. A Pi 4 comfortably handles 3–5 simultaneous browser connections without noticeable degradation. Beyond that, radar frame fetches and GLM polling from multiple clients can saturate upstream API rate limits before the Pi itself becomes the bottleneck. The SKU4 multi-display server is designed for higher connection counts and includes server-side API fan-out caching so all clients share a single upstream fetch regardless of how many browsers are connected.
Why is there no lightning data for my area?
NOAA GOES-19 GLM covers the Western Hemisphere only — roughly 141°W to 9°E, 54°N to 54°S. If you are outside this footprint (Alaska, Hawaii, Europe, Asia, Africa) the lightning layer will show no data. This is a limitation of the GOES-19 satellite position, not a bug. GLM data also has a ~2-minute latency from the time of a strike to when it appears in the feed.
Why does the radar scope show "LOADING RADAR" or stale data?
On first open the server needs to fetch the current RainViewer tile for your location, which takes 2–4 seconds. If the data appears stuck, check the UPDATED timestamp in the lower-right corner of the scope — it shows how old the current tile is. The scope refreshes every 30 seconds automatically. RainViewer data is typically 2–3 minutes behind real-time. If the timestamp is very old, your server may have lost internet connectivity.
Why is the map completely black at night in some areas?
That is correct behavior. The night side of the map uses NASA Black Marble imagery — actual satellite photography of Earth at night, showing city lights, gas flares, and fishing fleets. Dark areas are genuinely dark: open ocean, wilderness, and sparsely populated regions. It is not a rendering error.
My city clock shows the wrong time, or DST seems off.
Make sure your QTH location is set correctly in Settings — the local time display and DST calculations depend on it. For city clocks added via the city picker, DST is handled automatically using the IANA timezone database. If a clock is one hour off, the most likely cause is a DST transition that occurred after the page loaded — reload the page to pick up the new offset. EU and Southern Hemisphere DST transition dates differ from the US; full EU/SH DST support is on the roadmap.
The display froze and the clocks stopped advancing. What happened?
As of v1.1.810 Helioclock includes an automatic watchdog: if the clock has not ticked for 90 seconds, the page reloads itself. This recovers from any JavaScript stall without requiring manual intervention. If you see the display briefly go dark and reload overnight, that is the watchdog doing its job. If you notice a freeze before the watchdog fires, press Ctrl+Shift+R on the kiosk keyboard to force an immediate hard reload. The most common cause of freezing is memory pressure in the browser after many hours of continuous operation.
Can Helioclock run without an internet connection?
Partially. The base map, solar terminator, city clocks, and all static overlays work entirely offline. Live data feeds — radar, lightning, NWS alerts, DX Cluster, space weather, GOES clouds, satellite passes — require internet access to update. On an offline LAN the display will show the last cached data for each layer until connectivity is restored, then resume updating automatically. The server does not require a persistent connection; intermittent connectivity is handled gracefully.
Is my location data sent to anyone?
No. Your QTH coordinates are stored only in the server's local configuration file on your hardware and are never transmitted to Helioclock servers or any third party. Data source requests (NWS alerts, weather, radar tiles) include your approximate coordinates as query parameters to the respective government and public data sources — the same information any weather app sends — but those requests go directly from your hardware to the data provider, not through any Helioclock intermediary. The optional Operator Honor Roll registration transmits only your callsign, 4-character Maidenhead grid square, software version, and tier — never your name, email, or precise coordinates.