For technical support, bug reports, feature requests, or general inquiries:
Email: unixeer@gmail.com
Website: https://unixeer.com
Callsign: A41UX
We typically respond within 24โ48 hours. For urgent issues, please include "URGENT" in your email subject line.
A: Ham Logging is a full-featured electronic logbook for licensed amateur radio operators. It captures every ADIF field a modern logger needs, auto-enriches worked-station identity from QRZ.com, syncs bidirectionally with 10+ online services, visualizes your worked grids on a map, forecasts propagation, and includes Rover Mode for safe mobile logging.
A: Yes โ Ham Logging is designed for licensed amateur radio operators. You need a callsign and a grid square to log meaningful QSOs.
A: Yes โ core QSO entry, editing, viewing, and ADIF / CSV / JSON export all work entirely offline. Network is only used for optional features: QRZ lookup, sync with external services, APRS, map tiles, propagation forecasts, and spot monitoring.
A: Open the app โ Settings โ set your callsign and grid โ New QSO tab โ type a worked callsign, band, mode, frequency, RST โ tap Save. If you configured QRZ credentials in Settings, the worked station's name, country, grid, and zones auto-fill as you type.
A: Locally on your device in a file called qso_log.json. It's human-readable JSON you can inspect, back up, or copy out. Ham Logging has no cloud of its own โ your data stays on your device unless you explicitly sync with an external service.
A: Sync tab โ tap "Share Backup" at the bottom. That single action exports CSV + JSON + ADIF together into your device's share sheet โ email them to yourself, save to Files / iCloud / Google Drive / Dropbox, or AirDrop to your desktop.
A: Yes. Ham Logging stores everything locally, uses no analytics or telemetry SDKs, and has no backend of its own. Your data only leaves your device when you initiate a sync or export. See our Privacy Policy for full details.
A: QSO Logs tab โ menu โ Import โ pick ADIF, CSV, or JSON. Duplicates are detected automatically (by callsign+band+mode+date+time or by identical timestamp) and merged rather than re-added, so importing twice is safe. A contact that a service sends back without its submode โ DMR as DIGITALVOICE, USB as SSB, FT4 as MFSK โ is recognised as the same contact.
A: QSO Logs tab โ tap any QSO โ Edit. All fields are editable. Changes are saved with the original creation timestamp preserved so deduplication still works.
A: The default callsign is stamped into every QSO you log. The APRS callsign is a separate identity used only for the APRS map layer โ typically with an SSID suffix (e.g., W5XYZ-9 for mobile, W5XYZ-13 for weather) that you would not want inside your amateur radio logbook.
A: Settings โ QRZ.com credentials panel โ enter your QRZ username and password โ tap Test Lookup. A free QRZ account works for XML lookups; a QRZ XML Logbook Subscription or paid account unlocks more fields.
A: It debounces at 600 ms and requires at least 3 characters. If QRZ credentials aren't configured, it stays silent. If the network or QRZ is down, you'll see a friendly snackbar only after you type โฅ 4 characters so partial typing doesn't spam you.
A: Name, country, grid, CQ Zone, ITU Zone, continent, state, county, DXCC, QTH (city). Web-scraping adds QSL preferences, license class, LoTW / eQSL status, email, and profile photo when available.
A: Sync page action that scans every QSO with at least one missing enrichable field and fills it via a batched QRZ XML-only lookup. Ideal after importing an older log that lacks grid / zones / country.
A: Eleven services with live API integration โ QRZ.com Logbook, eQSL.cc, ClubLog, HRDLog.net, HamQTH, CloudLog, Wavelog, Ham365.net, N1MM Logger+ (UDP), LoTW (download only; uploads via TQSL desktop) and cqGMA (new in 1.3.0; upload only, and only the contacts that carry a GMA reference). Plus 9 services with export-only integration: QRZ-CQ, QSO360, AwardWatch, POTA, SOTA, WWFF, TCL-QSO, ARRL Contest, Log4OM Cloud. Since 1.3.0 the POTA, SOTA, WWFF and ARRL Contest cards count and share only their own contacts โ see the next question.
That second list is about uploading your log. Three of those names do more than that, in ways worth separating: Ham Logging reads live POTA and SOTA spot feeds on the Extra tab, and it can publish a spot of you to POTA, WWFF, GMA and a DX cluster node from Extra โ Spots. Since 1.3.0 GMA takes live spots only and needs no login โ GMA recognises the app itself. SOTA is read-only โ the app shows SOTA spots but cannot post to SOTA, and never asks for a SOTA login.
A: Since 1.3.0 each of those cards counts and shares only the contacts that belong to it; they used to share the whole log. POTA and WWFF take the activator's log, so their file holds the contacts you made from a park or a WWFF reference (My POTA, My WWFF). SOTA takes both sides, so its file holds every contact with a SOTA reference, yours or the other station's. ARRL Contest holds the contacts that carry a Contest ID. The general logbooks โ LoTW, eQSL, QRZ, Club Log and the others โ still receive every contact.
A: cqGMA can be corrected, and Ham Logging does it. A contact you edit after uploading is corrected at cqGMA at your next cqGMA upload โ the Sync card counts it as waiting again. A contact you delete, or from which you remove the GMA reference, is removed at cqGMA at the next upload: the delete window tells you so before you confirm, and the Sync card counts the removal as waiting. A correction or a removal is sent only under the cqGMA login the contact was uploaded with. Clear List removes nothing at cqGMA.
A: The name of that summit or park, looked up as you type โ in the Announce window, and under the reference boxes on the New QSO page. A GMA reference shows what GMA's register knows: the name, how often it has been activated and when last. A POTA reference shows the park's name and location from POTA's register. Under a SOTA reference the name comes from GMA's register, which lists the same summits, and is marked "GMA data"; it never warns, and a few names are spelled a little differently from SOTA's. A reference the register does not know is shown in amber, so a typing mistake is seen before the spot goes out. It is a hint and never a block, and with no network the line simply stays empty.
A: Ham Logging remembers the last successful sync time per service. Only QSOs created or modified since that timestamp are uploaded โ so you don't re-send the same contacts every time. Each successful upload adds the service's name to the QSO's internal "uploadedTo" list.
A: LoTW download requires your LoTW web-site password (not a TQSL certificate). Settings โ LoTW service โ enter callsign + web password. Ham Logging fires two sequential requests (confirmed QSLs first, then all uploads) to avoid the server-side cursor race on a first-ever download.
A: Ham Logging's ADIF writer is spec-correct โ it uses UTF-8 byte-count length prefixes and sanitizes any invisible characters before writing, so TQSL accepts the output cleanly. If you still see errors, email us the rejected .adi file and we'll diagnose.
A: On the same LAN, open N1MM โ Config โ Configure Ports โ Network โ enable "Allow Networked Computer QSOs" for upload, and Broadcast Data โ "Contact" for download. In Ham Logging Settings, enter the N1MM PC's IP + send port (default 12060) + listen port (default 12060). Syncs are UDP XML datagrams โ no internet needed.
A: Ham Logging now verifies eQSL responses by parsing the body for the exact "records added" count rather than trusting HTTP 200. If the body indicates an error (auth, malformed ADIF, etc.), you'll get a precise message. If you still see a discrepancy, the QSOs may have been rejected by eQSL's own validators โ check your eQSL caution message on their site.
A: eQSL InBox cards return the partner's logged time, not the time you uploaded. When the partner's clock is more than a minute off yours, the standard duplicate detection (callsign+band+mode+date+HHMM) misses, and the card lands as a phantom new row. Ham Logging now runs a clock-skew tolerant fallback for eQSL specifically: ยฑ60 minutes for satellite QSOs (orbital physics rules out a repeat sat pass within an hour) and ยฑ2 minutes for HF/terrestrial QSOs (tight enough to only catch typical NTP-synced clock skew without colliding with legitimate quick repeats). The merge only fires when exactly one local QSO sits in the window with matching callsign/date/band/mode; SAT_NAME and partner-grid mismatches drop candidates. Every fuzzy merge appears in the sync report dialog so you can audit it โ e.g. "eQSL.cc: 23 received โ 0 new, 22 exact match, 1 via clock-skew (DG7RO 20260423 +9min)".
A: ClubLog's real-time API is one-QSO-per-request. Ham Logging sends one QSO at a time with a small delay between requests. If a single QSO is rejected (e.g., malformed field), the sync report tells you which one. Note: the old "insufficient activity" gate applied to Club Log's API key request form, not to uploading — and it no longer affects you at all, because the app now carries its own application key.
A: No — not any more. Ham Logging now carries its own application key, issued by Club Log on 14 September 2026. That key identifies the app to Club Log; it is nothing to do with your own account, and there is no longer an API Key field to fill in.
You need three things and no more: your Club Log email, your application password (from your Club Log account settings — not your main login password), and your callsign.
If you previously entered your own API key, it is simply ignored. Nothing to undo.
This also retires the old "insufficient activity" problem. Club Log's key form refuses accounts with too few QSOs in their cloud, so a new operator used to follow this app's own instruction straight into a door that would not open. Asking every operator to register as the developer of software they did not write was the wrong question all along.
A: Those four toggles use a deferred-save pattern โ the change reflects inside the app immediately via GlobalData, but only persists to SharedPreferences when you tap the "Save All" button at the bottom of Settings. If you toggle and close the app without tapping Save All, the change is lost. This avoids accidental mid-edit commits. Other settings (Default Callsign, Grid, Mode, service credentials) save as-you-edit-then-focus-away as before.
A: Not anymore — this was a real bug fixed in the Apr 2026 updates. Batch enrichment (Sync page โ Re-enrich) used to exhaust the shared QRZ web-scraping session, breaking interactive lookups in Settings afterward. The fix: batch enrichment now uses XML-only lookups (`lookupQRZXmlOnly`), leaving the web session intact for Settings-page interactive lookups. If you still see QRZ failures after a batch, restart the app and re-enter QRZ credentials.
A: Sync downloads pull your full log history from each selected service, which can be anywhere from 100 KB (small log) to 50 MB (decades of LoTW history ร multiple services). To prevent surprise data charges, the app shows a themed warning dialog before each sync if you're on cellular instead of Wi-Fi. Two choices: Cancel (abort sync) or I understand (proceed). The warning fires every cellular sync so you always have the chance to opt out โ there's no persistent toggle to forget about and no per-session bypass that might silently consume data later in the same session.
A: The May 10 2026 update fixes a long-standing silent-failure pattern. Previously, a network blip, expired LoTW password, or temporary ARRL outage all surfaced as the gaslight "No QSOs found" โ same root cause as the QRZ.com fix from May 6. Now you get a clear "Download failed" error in the sync report with the specific reason (timeout, network error, auth failure, etc.). If you see a real "No QSOs" with a green checkmark, your log is genuinely empty on LoTW.
A: Fixed in the May 11 2026 update. Clearing the local log (QSO Logs โ โฎ menu โ Clear List) now also clears the per-service sync-history counters + timestamps shown on each Sync card. Credentials and per-service enable toggles are preserved. Previously a card could still claim "Last download: 2,666 new" after the log was empty, which was confusing and also caused the next "Sync To" to incorrectly skip QSOs (because the stale upload timestamp made them look already-synced).
A: CloudLog and Wavelog both require a Station Profile ID in addition to the API URL and API Key โ without it the upstream service silently rejects every upload at the HTTP layer. The May 11 2026 update adds a Station Profile ID field to both services in Settings โ Services. Find the value in your CloudLog / Wavelog web interface under Station Logbook โ Edit (the numeric ID next to your station entry). Once you paste it in and save, uploads will start succeeding.
A: The DX sub-tab on the Extra โ Spots tab now has a search field below the Band and Continent dropdowns. It matches case-insensitively across the spotted callsign, spotter, comment, country, and grid square in a single query. The text search is AND-combined with the existing dropdowns โ so e.g. "EU + 20m + JA" narrows to JA-spotted contacts on 20m from European spotters.
A: Yes โ the QSO Log popup menu (โฎ) now has a "Re-enrich Missing Fields" entry. Tap it to walk every QSO in your log, look up any record missing country / name / grid / CQ zone / ITU zone / continent / state / county / QTH / DXCC via QRZ.com XML, and write the results back. The same flow is also available from Settings โ Callsign Lookup โ Re-enrich Missing Fields. Requires QRZ.com credentials configured.
A: Fixed end-to-end in the May 11 2026 update โ verified live against a paid subscriber's 2,666-QSO logbook. QRZ's FETCH response encodes the < and > characters inside ADIF records as HTML entities (< / >) instead of the URL-encoded %3C / %3E their docs imply. The standard form-encoding parser was destroying the entity boundaries while splitting on &, leaving the ADIF section empty even when records were present. The new extractor reads the ADIF section directly from the raw body and decodes the entities back to literal characters before parsing. Paging is preserved (250 records per page, 50,000 QSO ceiling) and mid-paging failures still return partial results.
A: Yes. The ADIF parser now streams the file from disk in chunks instead of loading the whole thing into memory at once, so multi-decade LoTW exports (80–200 MB) import cleanly even on Android devices with limited RAM. You'll see a progress percentage during the import. CSV and JSON imports get a 50 MB safety check — bigger files are blocked with a clear suggestion to split or use ADIF instead.
A: Fixed in the May 10 2026 update. The ADIF spec says the <FIELD:N> length prefix is a UTF-8 byte count, but Ham Logging's import parser was mistakenly using UTF-16 character count. Records with accented characters silently desynced — the next field's tag bytes got eaten into the previous field's value. The parser now correctly walks the byte stream. Records from third-party software with European, Spanish, or any non-ASCII operator/QTH names import cleanly.
A: A new diagnostic capture mechanism (May 10 2026). When the app catches an unexpected error during your session, it stores the last 50 events in an in-memory ring buffer and shows that one-shot snackbar. Tap EMAIL to open your mail app pre-filled with a plain-text report (callsign, app version, error trace) addressed to support. Nothing is sent automatically — you control whether the report goes anywhere. If the same underlying error fires repeatedly, the snackbar stays silent for 5 minutes after the first surface so you don't get spammed.
A: Once you enter an APRS callsign in Settings and tap the purple APRS FAB on the Map tab, Ham Logging connects to public APRS-IS and filters for your own beacons and for messages to your callsign. Any of your beacons that reach an iGate show as pulsing purple markers on the map โ proof-of-transmission testing. Your radio does the beaconing; the app only listens, unless you add your APRS-IS passcode to send APRS messages (see below).
A: Ham Logging itself never sends your position. Your radio beacons your callsign + GPS position over RF; that data is public on the APRS network (aprs.fi, aprsdigi.net, and archive sites) by design โ this has been true of APRS since 1992. The only things the app can send to APRS-IS are messages you write and the acknowledgements for messages you receive — and only once you add your APRS-IS passcode. See our Privacy Policy Section 4.3.
A: With the APRS layer on, messages addressed to your APRS callsign (any SSID) arrive in the app; the teal message button on the map shows how many are unread. To send — and to acknowledge what you receive — enter your APRS-IS passcode in Settings, right under the APRS Call. Your passcode is a number made from your callsign, the same for every SSID; you can get yours at apps.magicbug.co.uk/passcode. The APRS-IS server decides whether the passcode is valid: while it is checking, the message screen says so, and if it refuses it, sending is switched off and the message screen says why, naming the callsign the passcode was checked against. Ham Logging acknowledges messages sent to its own APRS callsign, or to your callsign with no SSID; a message to another of your SSIDs is shown too, but that station acknowledges it itself. Messages are up to 67 characters, and the characters | ~ { cannot be sent over APRS. A message is sent up to five times, 30 seconds apart, until it is acknowledged; it then shows delivered, rejected or no reply.
A: A passcode is made from one callsign, and the message names the callsign it was checked against — the APRS Call in Settings. A passcode made for a different callsign, or mistyped, is refused. The field hides what you type and takes five digits at most, so clear it completely before typing the passcode again, then tap Save All. You can get the right passcode at apps.magicbug.co.uk/passcode.
A: The aprs.fi API key is optional and enables the "heard by" feature โ showing which digipeaters and iGates received your beacon, with bearing lines and a themed popup. Without the key, APRS still works; you just won't see heard-by attribution. Get a free key at aprs.fi/account.
A: Your rig must beacon on an APRS frequency (typically 144.39 MHz in the Americas, 144.800 in Europe) and an iGate must be in RF range to forward your packet to APRS-IS. If your rig isn't beaconing or no iGates are nearby, there's nothing for the app to show. Check aprs.fi on the web and search your callsign to see if APRS-IS has seen you recently.
A: By design โ a different callsign is a different identity. The old TCP session is disposed, all visible stations are cleared, and the new session re-opens with the new callsign's filter. Think of it as logging out and logging back in.
A: So SSIDs like -13 (weather station) or -9 (mobile) can be used for APRS without stamping them into your QSO logbook. Keep your QSO log clean and your APRS identity flexible.
A: They narrow what kinds of APRS stations you see: All, -9 (mobile), -13 (weather), -11 (aircraft / balloon), or Other. The strip docks above the bottom navigation bar, and reflows above the station-details panel when you tap a station. Your selection persists across restarts.
A: That's intentional. When the station you're tracking is within roughly 24 pixels on screen of your live GPS position (occluding it), the YOU marker is hidden so the two pins don't overlap. Zoom out and YOU reappears the moment the markers are visually distinguishable. Tap the station again to deselect.
A: The station you're tracking is rendered about 30% smaller for precision โ its smaller pin gives a more accurate position fix and reduces occlusion of nearby markers you're comparing against. The thicker outline still distinguishes it from inactive stations.
A: A large-target, low-distraction logging screen designed for mobile operating. One big Callsign field, tap-grid RST buttons pre-selected at 59, and a "Next QSO" button that saves and clears the callsign so you can keep rolling. Everything else (mode, TX/RX freq, your callsign + grid) persists for the session.
A: Tap the amber car icon in the top-right of the app bar. It's visible on the QSO Logs tab and the New QSO tab.
A: As you type or dictate a callsign you've worked before, a quick heads-up appears showing when you last worked that station (day/month/year) and on which band, plus how many times and on which bands across all your contacts โ for example "A41UK last worked 24/06/2026 on 2m. Worked 6 times on 2m and 10m." A small blue history button also appears at the left edge of the Callsign field showing the contact count (for example "6 QSO's"); tap it to open a scrollable list of every past QSO with that station โ date, time, frequency and band on each line, titled with the callsign. Tap outside to close it, then save to move on to the next entry. It all comes from your saved log, so it needs no internet and never changes anything you've entered.
A: No. The first time you launch Rover Mode you'll see a safety reminder โ please respect it. Wait until you're safely stopped, or have a passenger operate the log. The mode is called Rover because it's optimized for mobile operating during breaks, not active driving.
A: Yes โ each saved QSO fires a background QRZ lookup (if you have QRZ credentials configured). The record is saved immediately with the callsign + RST + mode + freq you entered, and QRZ fills in the rest moments later without blocking you from logging the next QSO.
A: If the Callsign field has content, Rover Mode saves that QSO first (same validation + enrichment) then exits. If the field is empty, it just exits. No modal prompts, no lost work.
A: Rover Mode deliberately doesn't block duplicates โ a modal during driving-adjacent operating is worse than a duplicate in the log. You'll see a themed warning snackbar instead, and the QSO still saves. Clean up duplicates from the QSO Logs tab afterward.
A: Hold the mic button to the right of the Worked Callsign field, speak the call in NATO phonetics ("alpha four six uniform november x-ray"), then release. Ham Logging's parser recognises every NATO word plus military variants (niner = 9, fower = 4, fife = 5) and common alternate spellings. The recognised text is filled into the field โ review it and tap Save when you're ready. The OS handles speech recognition (Apple Siri / Google) entirely on-device when possible; no audio is recorded or transmitted.
A: Press-and-hold the mic button again. A snackbar will appear that reads "Microphone is blocked. Tap Open Settings to enable it, then try again." Tap the Open Settings button on the right of the snackbar โ it deep-links straight to the app's permission screen. Toggle Microphone on, return to Ham Logging, and try the mic again. No restart needed.
A: Voice dictation relies on a system speech recognition service. Most Android phones ship with Google Speech Services pre-installed, but devices without Google Mobile Services (some Huawei, some AOSP-based ROMs, certain regional builds) do not. If the service is missing, Ham Logging shows: "Speech recognition isn't available โ install Google Speech Services or use manual callsign entry." The text-input field at the top of Rover Mode always works as a fallback โ voice is an optional accelerator, never required. If you want voice on a Huawei device, install a compatible speech recogniser from your device's app store (Huawei AppGallery may offer HMS ML Kit; some users sideload Google Speech Services).
A: If microphone access is blocked at the device-management level (iOS Screen Time, parental controls, MDM profile, etc.), Ham Logging shows: "Microphone access is restricted by device management or parental controls." The restriction can only be lifted by your administrator or the parent account that set it โ the app cannot bypass it. Manual callsign entry remains fully available.
A: Tap the tune icon (top right, left of the info icon) to pick which Modes appear. By default your global Default Mode (set in Settings) is pre-checked. Add the modes you operate while roving (e.g. SSB + FM + FT8). Your selection persists across sessions, so the next time you enter Rover Mode the dropdown is already filtered.
A: Rover Mode auto-pads frequency entries to 3 decimals on blur. This matches the format the band-detection map and every sync service expects, so you don't have to type the trailing zeros every time. "144" becomes "144.000". The matching TX / RX bands are then set in the background when you save the QSO.
A: Rover Mode live-mirrors TX โ RX as you type. Every keystroke in TX is reflected into RX in real time, so simplex satellite ops and APRS digipeaters (where TX equals RX) save a typing step. The mirror tracks its own writes โ the moment you tap RX and type your own value, the mirror notices the divergence and stops fighting you for the rest of the session. For cross-band ops (e.g. ISS V/U: TX 145.x, RX 437.x), just tap RX after TX is set and type the receive frequency. When both fields are empty (fresh entry into Rover Mode, or you cleared both), the mirror resumes on the next TX keystroke.
A: The worked-grids layer needs your home grid set in Settings. Also confirm your QSOs have a gridsquare field populated. You can bulk-fill grids via Sync โ Re-enrich Missing Fields.
A: A station-centric propagation heatmap showing predicted HF signal strength from your QTH to every point on Earth, using Inverse Distance Weighted MUF interpolation + a band-frequency model. The night polygon is a separate layer โ propagation colors dim on the night side. Tweak the band filter to see per-band openings.
A: Real-time aurora oval from NOAA SWPC OVATION data, rendered as a feathered theme-aware glow on the Gray-Line map. Useful for planning AU / NVIS / polar-path contacts.
A: Seven modes in one segmented control โ DX (DX cluster), POTA (Parks on the Air activator spots), SOTA (summit spots and planned activations, read-only), GMA (Global Mountain Activity's own list of spots and planned activations), WWFF (Flora & Fauna activators, as GMA lists them), Contests (the contest calendar) and RBN (recent spots of your own callsign, with a HamQTH login). DX, POTA and SOTA filter by band and mode and sort by distance, and every card can be shared as an image or opened on the Map. GMA and WWFF, new in 1.3.0, are read from gma.rocks: they load with the other lists when the app opens and refresh at most once a minute while the Extra tab is on screen. Contests filters by band and mode and, since 1.3.0, has a third box, Show: All, Active (running right now) or Upcoming (not started yet) โ your choice is remembered.
Found a bug? Help us improve Ham Logging by reporting it! When reporting bugs, please include:
Email bug reports to: unixeer@gmail.com with subject "Bug Report: Ham Logging"
Have an idea for a new feature? We'd love to hear from you! Please email your suggestions to unixeer@gmail.com with subject "Feature Request: Ham Logging"
Ham Logging is available on multiple platforms:
If you couldn't find an answer to your question, please don't hesitate to contact us:
๐ง Email: unixeer@gmail.com
๐ Website: https://unixeer.com
๐ป Callsign: A41UX
73 de A41UX โ Happy logging! ๐