Skip to content

Releases

Aether Term 1.2.0

Choose a tag to compare

@github-actions github-actions released this 27 Oct 15:14
bf7afb0

Added

  • KISS TNC mode: connect straight to a radio's built-in TNC, like
    EasyTerm or VARA Terminal. Choose KISS TNC in the toolbar. The TNC can
    be on a COM port (a Kenwood TH-D74/D75 paired over Bluetooth, or USB),
    on Bluetooth LE (VR-N76, VR-N7600, Mobilinkd and similar; press Scan),
    or on TCP (Direwolf, port 8001). Aether Term runs the AX.25 connection
    itself (calls, acknowledgements, retries, digipeater paths) and can set
    the TNC's TXDELAY, persistence and slot time. Settings are in
    Settings → Modem Configuration → KISS TNC; profiles can use the mode.
    Bluetooth LE has been tested only against a simulated radio so far.

Aether Term 1.1.11

Choose a tag to compare

@github-actions github-actions released this 27 Oct 13:21
2cb5818

Fixed

  • Connect can't start a second call during a session. File → Connect
    (Ctrl+Shift+C) stayed available while connected and opened a second
    connection on top of the live one. It is now greyed out like the
    Connect button.
  • The mode can't be changed in Settings during a call. The toolbar
    already refused, but Settings did not, and pressing OK closed the modem
    program mid-session. The mode buttons in Settings are greyed out while
    a call is under way.
  • Hamlib's Dummy rig no longer passes for a radio. With the default
    rig model (Hamlib Dummy), Aether Term reported "PTT connected" but
    never keyed the radio. Connect now stops and asks you to choose your
    radio's model.
  • A saved password is used for any SSID of your callsign. A password
    saved for operator KK4ODA-7 was not used when you connected as KK4ODA
    or KK4ODA-2. An entry for your exact callsign still comes first.
  • Automatic login turned off no longer says "No saved password". With
    a password saved and Auto-respond to HMAC challenges off, the
    terminal now says automatic login is off, and shows the BBS's password
    prompt (it was hidden).
  • FM Bandwidth says what it does. VARA FM has no command for the
    narrow/wide setting, so Aether Term only shows it in the status bar;
    its tooltip now says to set the real bandwidth in VARA FM's setup.
  • Local test help: the BBS instance form has no Host field, so the
    help no longer tells you to set one.
  • Tooltips: the VARA HF bandwidth default is 500 Hz, Soundmodem
    auto-launch starts it with Aether Term and on switching modes, and
    profile digipeaters work with Soundmodem too.

Aether Term 1.1.10

Choose a tag to compare

@github-actions github-actions released this 17 Oct 00:47
9665b7d

Fixed

  • > ;TRANSPORT VARA_FM no longer shows at the login prompt in local
    test mode.
    With no radio in between, the BBS's > and its answer to
    ;TRANSPORT? arrived together and slipped past the filter. The same
    applies to ;AUTH OK arriving on the prompt's line.
  • "No saved password" says what it looked for: the station and the
    operator callsign, so a mismatch with Settings → Security / Passwords is
    easy to see.
  • A password typed by hand at the BBS's login prompt is masked. It was
    echoed on screen and in the session log in clear; it shows as
    ******** now.

Aether Term 1.1.9

Choose a tag to compare

@github-actions github-actions released this 16 Oct 02:28
673623f

Added

  • Local test mode: talk to a BBS on this PC with no radio. Choose
    Local test in the toolbar. Aether Term listens on 127.0.0.1 (ports
    8500/8501 by default) as a VARA FM modem, and a BBS instance set up for
    local test attaches to it; Connect then reports an inbound call to the
    BBS and the session runs through the same code as on the air. The
    callsign to connect as can be chosen (Settings → Modem Configuration →
    Local test, which also says how to set the BBS up). The title bar and
    status bar say it is local test.

Fixed

  • The BBS's answer to ;TRANSPORT? is no longer shown. The screen
    showed > ;TRANSPORT VARA_FM, a blank line and a second > . The
    answer is now hidden (its link type is in the status bar) and the
    prompt shows once. A ;TRANSPORT line at any other time still shows.
  • Login is noted when ;AUTH OK follows the hidden password prompt.
    It arrived as > ;AUTH OK and was shown raw; the "Authentication
    successful" message and the tactical address that follows it were lost.

Aether Term 1.1.8

Choose a tag to compare

@github-actions github-actions released this 14 Oct 10:58
419379e

A cleanup release: dead code removed, duplicated code merged, and the bugs
found along the way fixed. See CODEBASE_AUDIT.md for the full findings.

Fixed

  • Settings and saved passwords are never overwritten after a read error.
    A settings.json that failed to parse, or a passwords.enc that failed
    to decrypt, used to be replaced at the next save, losing every profile or
    password. The unreadable file is now kept as *.unreadable-<time>, startup
    says so, and both files are written safely (temporary file, then rename).
  • VARA HF Disconnect keys the radio for the disconnect frames. PTT was
    released before the DISCONNECT went to VARA, so the other station never
    heard the link end.
  • Connecting from the Profiles window uses the profile. Closing the
    window reset the profile just connected, so the call went out under the
    global callsign, with the wrong saved password and no tactical address.
  • Soundmodem:
    • If Soundmodem quits or crashes, the session now ends instead of showing as
      connected.
    • An unanswered call is cancelled on the air after 60 s (it was 30 s, and
      Soundmodem kept calling).
    • Disconnect while calling cancels the call.
    • A timeout from an earlier call no longer fails the next one.
  • Radio PTT (OmniRig, Hamlib, FLrig):
    • A rig that answers too slowly is reported as not connected instead of
      "PTT connected".
    • Keying still queued when PTT stops can no longer key the radio afterwards.
    • Hamlib: rigctld can no longer stall on its own messages, a late reply is
      not taken as the answer to the next command, and a rigctld that fails to
      start says why.
    • FLrig calls have their own timeout.
  • Git installs:
    • "Update & Restart" restarts again (it relaunched a relative path and
      never came back).
    • A failed update gives local changes back.
    • A clone ahead of GitHub is no longer told there is an update.
  • Installed builds:
    • A failed installer download leaves no files behind.
    • The update dialog can't be closed mid-download.
    • A startup failure is shown in a dialog.
  • Text and settings:
    • "Enter password:" no longer shows during automatic login on slow links.
    • Accented characters split between two radio frames display correctly.
    • Settings → Max Retries now takes effect.
    • A modem path you clear stays cleared.
  • Hamlib download:
    • Archive entries that point outside the install folder are refused.
    • The download no longer falls back to unverified TLS.
    • The rigctld path is filled in after an install.

Removed

  • The "plaintext fallback" setting and auth mode. They said a password would
    be sent in plaintext if HMAC failed; nothing ever did, and nothing should.
  • Unused code: the radio clients' frequency/mode API, unused signals,
    methods and settings defaults, and the pyserial dependency.

Aether Term 1.1.7

Choose a tag to compare

@github-actions github-actions released this 14 Oct 01:33
0853842

Fixed

  • Profiles in another mode swap the modem program. Choosing a
    connection profile whose mode differs from the current one (say a
    VARA FM profile while in Soundmodem) changed the mode but left the old
    modem program running and didn't start the new one. It now does what the
    mode dropdown does: closes the old modem's link and program, then starts
    the new one, if that mode's auto-launch setting is on. Connect from the Profiles
    window waits 5 seconds for a freshly started modem before calling.
    (gui/main_window.py)
  • No mode or profile change mid-call. The profile dropdown is now locked
    during a call, like the mode dropdown. Switching modes is refused with a
    note until you disconnect. (gui/main_window.py)
  • A mode switch in the first half-second after startup could start the
    new modem program twice. (gui/main_window.py)

Aether Term 1.1.6

Choose a tag to compare

@github-actions github-actions released this 14 Oct 01:09
b370b40

Added

  • FLrig and Hamlib PTT. Settings → Modem Configuration → HF PTT Control
    now offers Hamlib (rigctld) and FLrig next to OmniRig and VOX, for
    VARA HF and host-keyed Aether HF. Each method shows only its own
    settings: OmniRig's rig number, FLrig's host and port, or the Hamlib
    panel (rig model, serial port, rigctld address, auto-launch, and the
    Hamlib download). The drivers were already in Aether Term but couldn't be
    selected. (gui/settings_dialog.py, vara/ptt.py, config.py)

Changed

  • Connect stops when PTT can't reach the radio. It used to go ahead with
    a warning, and the call went out with the radio never keyed. Now, unless
    the PTT method is None (VOX), Aether Term starts PTT before opening the
    modem link. If that fails, the modem is never called, and a dialog says
    why (for example "Cannot connect to FLrig … Is FLrig running?") and how
    to fix it. VARA FM and Soundmodem are unaffected: they key the radio
    themselves. (gui/main_window.py)
  • The startup "OmniRig not running" notice appears only when OmniRig is
    the PTT method. (gui/main_window.py)
  • Soundmodem (AGWPE) traffic is logged. Every frame Aether Term sends to
    or receives from Soundmodem goes into aether-term.log (kind, port,
    calls, PID, length, the first 80 bytes). Heard-traffic monitor frames are
    logged at debug level only. This is for a Soundmodem session through a
    digipeater that connected but passed no data: the log will show whether
    the typed lines reached Soundmodem. (vara/agwpe.py, vara/agwpe_modem.py)

Aether Term 1.1.5

Choose a tag to compare

@github-actions github-actions released this 14 Oct 00:36
b11731a

Fixed

  • The radio can no longer be left keyed by PTT commands running out of
    order.
    Each VARA HF PTT ON / PTT OFF was handed to its own
    background thread. When keying the rig was slow (OmniRig, CAT), a
    PTT OFF could run before the PTT ON ahead of it and leave the
    transmitter keyed until the 90-second watchdog fired. Keying now runs on
    one worker thread, in the order VARA asked, and the watchdog's forced
    release queues behind it. (vara/ptt.py)

  • PTT is released whenever the modem link closes. If VARA crashed or
    its TCP link dropped mid-transmission, the radio stayed keyed until the
    watchdog fired. A call that failed with WRONG or CANCELPENDING also
    left the rig link open. Now any end of the modem link unkeys the radio
    and closes the rig link at once. (gui/main_window.py)

  • Via boxes show the whole callsign. In 1.1.4 the Via 1 / Via 2
    dropdowns had only a maximum width, and the toolbar squeezed them to about
    35 px: "None" read "one" and only two letters of a callsign were visible.
    They now always have room for a full call with SSID (WD5EMA-15).
    (gui/main_window.py)

Added

  • VARA HF sends P2P SESSION. VARA's command reference says
    P2P SESSION "must be used for P2P connections, not for Gateways", and
    VARA HF defaults to WINLINK SESSION, a 4-second retry cycle meant for
    Winlink gateways. Calls to a BBS or station now use P2P. A new
    Settings → Session Type option switches to Winlink gateway for RMS
    calls. VARA FM, Aether HF and Soundmodem are unchanged.
    (config.py, vara/modem.py, gui/settings_dialog.py)
  • Digipeaters with Soundmodem (AGWPE). Via 1 / Via 2 now work in
    Soundmodem mode. The call goes out as AGWPE's "connect via" frame (v:
    the digipeater count, then each call), so the path is set per call from
    Aether Term. Soundmodem's own Digi settings are for Soundmodem acting as
    a digipeater, and do not route outgoing calls. VARA HF and Aether HF still
    refuse a Via path. (vara/agwpe.py, vara/agwpe_modem.py, gui/main_window.py)
  • VARA HF end-to-end tests. A full session against the fake modem
    covers the init commands, CONNECTED … 2300, PTT keying and unkeying
    through a fake rig, release on disconnect, a refused call, a rejected
    CONNECT, and a modem crash while keyed. The PTT controller has its own
    tests for ordering, the watchdog and stop. Both modem drivers now ignore
    initialization arguments they don't use, so a new argument can't crash
    one of them again. (tests/test_vara_hf.py, vara/modem.py,
    vara/agwpe_modem.py)

Aether Term 1.1.4

Choose a tag to compare

@github-actions github-actions released this 13 Oct 23:57
6c97904

Changed

  • Via 1 / Via 2 are dropdowns that remember. Both boxes offer None
    plus the digipeaters you have used before, most recent first, up to 10. You
    can still type a new one. Each call's choice, None included, is saved and
    comes back the next time Aether Term starts, so a digipeated route is not
    lost to an empty box. Picking a profile still fills both boxes.
    (gui/main_window.py, config.py)

Fixed

  • Soundmodem (AGWPE) connects no longer close the app. Since 1.1.0 the
    window called the modem's initialization with an argument the Soundmodem
    driver didn't accept, and the error inside a Qt event handler made PyQt6
    abort the program the moment the TNC link came up. The driver now takes the
    same arguments as the VARA one and reports its states, so the AX.25 connect
    actually goes out. (vara/agwpe_modem.py, gui/main_window.py)
  • AGWPE frames match the spec. The frame header was packed as 40 bytes
    instead of the AGWPE protocol's 36, which shifted the callsigns, the data
    length and the data by 4 bytes, so Soundmodem could not have understood
    any frame. (vara/agwpe.py)
  • Switching modes no longer kills the next call. When Connect replaced
    the modem (for example VARA FM → Soundmodem), the old modem's final
    "disconnected" reached the window after the new call had started, and the
    idle-link cleanup closed the new link. The old modem is now silenced before
    it is closed, and the Soundmodem driver no longer announces "disconnected"
    at the start of a connect. PTT messages are also no longer doubled after a
    mode switch. (gui/main_window.py, vara/agwpe_modem.py)
  • Unexpected errors are logged instead of closing the app. An error
    inside a Qt event handler is written to the log with its traceback and
    shown in a dialog, and Aether Term keeps running. Errors in background
    threads are logged too. (main.py)

Aether Term 1.1.3

Choose a tag to compare

@github-actions github-actions released this 13 Oct 22:51
580d601

Fixed

  • Commands to BPQ nodes work. Typed lines always ended in CR LF. A BPQ
    node ends a command at the CR and keeps the LF as the first character of
    the next one, so every command after the first arrived garbled. Aether Term
    now answers in the BBS's own convention, learned from what the BBS sends:
    a bare CR for BPQ and most packet nodes, CR LF for the Aether BBS. A BPQ
    node says nothing until spoken to, so the first line goes out with a bare
    CR. A BBS that greets first shows its CR LF before you type.
    (gui/main_window.py)
  • Prompts without a line end are shown. BPQ applications wait at prompts
    such as 1 Check in 2 Check out 3 Roster 4 Back: with no line end, and
    only short prompts ending in > or : used to appear. Now any unfinished
    line is shown once the BBS has been quiet for a second. When the rest of the
    line arrives, it continues on the same screen line, so a line VARA split
    across radio frames still reads as one line. (gui/main_window.py)
  • No ;TRANSPORT? to BBSes that don't know it. The Aether BBS transport
    query used to go out one second after every connect, and a BPQ node read it
    as a bad command. It is now sent only once the BBS has shown CR LF line
    ends, as the Aether BBS does. (gui/main_window.py)