Skip to content

PyTNC Pro v0.1.4-beta

Choose a tag to compare

@smashingwaffle smashingwaffle released this 30 Mar 05:38
· 17 commits to main since this release

PyTNC Pro — Release Notes


v0.1.4-beta

PTT Improvements

CI-V CAT PTT (Icom radios)

  • New PTT method: CI-V CAT for Icom radios (IC-7100, IC-7300, IC-9700, IC-705, etc.)
  • Configurable: COM port, baud rate, data bits, parity, stop bits, CI-V address (hex)
  • PTT ON/OFF via standard Icom CI-V protocol (FE FE addr E0 1C 00 01/00 FD)
  • Default CI-V address 88 (IC-7100) — tooltip lists common addresses for other models

CM108 GPIO PTT (DigiRig Lite / USB audio-only adapters)

  • New PTT method: CM108 GPIO for devices with no COM port
  • Auto-detects CM108/CM119 family chips via HID scan button
  • GPIO1 toggle via HID output report — Direwolf-compatible
  • Requires: pip install hidapi

PTT Method Selector

  • Settings → PTT Control now has a Method dropdown: RTS/DTR / CI-V CAT / CM108 GPIO
  • Switching methods shows/hides the relevant config widgets automatically
  • Auto-scans CM108 devices on first selection of CM108 mode

Map Improvements

Auto-center on startup

  • Map now centers on your saved location on startup (2 second delay for WebView init)
  • Also centers immediately when manual location is applied or GPS fix arrives

APRS object parser fix

  • Object packets (; type) now try compressed position format first, falling back to uncompressed
  • Fixes objects from some IGates that were silently dropped due to compressed encoding

IGate Improvements

Duplicate suppression

  • Same packet arriving via multiple digi paths is gated only once (30-second dedup window)

Callsign-exact skip rule

  • Fixed: same-base-callsign stations (e.g. KO6IKR-2 on handheld) were incorrectly skipped by the IGate's own-TX filter — now matches full callsign including SSID

UI Improvements

Save Settings confirmation

  • Both save buttons flash green with ✅ Saved! for 1.5 seconds on success

STOP IS darker shade

  • ■ STOP IS button darkens when APRS-IS is connected, making toggle state visually clear

Clickable links in tooltips

  • Popup tooltips now linkify https://, http://, and www. URLs in both comment and status fields
  • Links open in system browser via console message handler

APRS-IS

Filter uses saved location

  • _build_aprs_filter now correctly reads from saved lat/lon instead of falling back to hardcoded default coordinates

Version string

  • APRS-IS login now identifies as PyTNC-Pro 0.1.3

Bug Fixes

  • Fixed AttributeError: igate_rf_heard crashing on_packet silently after IGate deployment
  • Fixed _build_vara_tab method eaten by bad str_replace during IGate insertion
  • Fixed numpy/Python version mismatch on Windows (cp312 wheels vs Python 3.14)
  • Fixed PowerShell execution policy blocking venv activation

Known Limitations / Next Release

  • TX IGate _queue_rf_packet wiring pending
  • IGate auto-beacon fires once on enable — repeat timer not yet implemented
  • Digipeater support not yet implemented
  • AIS vessel data requires a separate AISHub feed (not available via APRS-IS)


v0.1.3-beta

New Features

🌐 IGate Tab

  • Full RX IGate implementation (RF → Internet)
  • TX IGate implementation (Internet → RF) — disabled by default
  • RX IGate checkbox with green status indicator, packets-gated counter, uptime timer
  • TX IGate checkbox (locked until RX is enabled), heard-window spinner, messages-only toggle
  • Gated packets log with live search/filter bar, entry count, and clear button
  • APRS-IS connection/disconnection events shown in IGate log on startup
  • Tab order: 🗺️ MAP | 📻 APRS | 📡 VARA FM | 🌐 IGate | ℹ️ Info | ⚙️ Settings

IGate Logic

  • RX gate formats packets as SRC>DST,PATH,qAR,MYCALL:info per APRS-IS spec
  • No-regate rules enforced: TCPIP, qA paths, NOGATE, RFONLY, third-party frames all skipped
  • TX gate checks message-only rule and RF-heard window before gating IS packets to RF
  • Auto-beacon on IGate enable: sends I& (IGate diamond) symbol to APRS-IS

Symbol Overlay Support

  • Overlay character field (A–Z, 0–9) added to APRS tab symbol picker
  • Supports overlaid symbols: I& = IGate diamond, D# = digi with D, W& = Winlink
  • Symbol preview updates live to show overlay letter rendered on icon
  • RF and IS beacons both respect the overlay character

Map Layer Switcher (Qt toolbar)

  • Street / Topo / Satellite / Dark layer selector moved to Qt toolbar
  • Floating HTML #layer-selector removed from map
  • setMapLayer() JS function called from Python on combo change

Map Improvements

24-hour Station Expiry

  • Stations not heard in 24 hours automatically removed from map
  • Cleanup runs every 5 minutes; trail history cleaned up with marker
  • 500 marker hard cap retained as safety net

Bug Fixes

  • Fixed OSM/OSM-DE/Carto Leaflet layer control appearing alongside Qt layer combo
  • Fixed map layer combo position (right: 60px → right: 10px) after removing Leaflet control
  • Fixed font sizes in IGate tab (10–11px labels bumped to 12px for readability)
  • Fixed callsign skip rule matching base callsign prefix instead of full SSID

73 de KO6IKR