Changelog

What's new in each build

The "What's new" part of every release. Full notes, downloads and older builds are on GitHub Releases, and every change with its tests is in the detailed changelog.

v1.0.0-beta.20Pre-release

SignalDeck 1.0.0-beta.20

27 Oct 2026 · SignalDeck-1.0.0-beta.20.apk

For testers of M17 receive on the firmware the phone shipped with — PKT → Digital voice → M17, or make a channel of type M17 (Channels → Add → M17, destination @ALL). The receiver listens on the channel's frequency as wide FM with the squelch open, shows the caller's callsign and destination, counts the frames it decoded and plays the voice. On stock module firmware it runs an adaptive equaliser that was calibrated on the Ulefone Armor 26 Ultra: on another phone model expect fewer clean frames than on the Armor, and some transmissions may not lock at all; that is what we want to learn. Send M17 at the standard ±2.4 kHz deviation (an M17 radio, a hotspot, or an SDR). Please report: the phone model, the Device → Device report, what the M17 page showed for each transmission (frames, callsign), and a REC recording of one transmission if you can. Talking back on M17 needs the bench module firmware and is not part of this test; the Talk button says so.

M17 as a channel type — a channel can be FM, DMR or M17. The editor (phone and SignalDeck Web) asks for a destination (@ALL or a callsign) and a channel access number. Selecting the channel starts the M17 receiver; the card says M17. Receive only on stock firmware.

A long M17 call stays one listing — a call longer than 20 seconds is one entry with all its frames, a one-second gap stays in the same listing, and the call ends on the end marker or two seconds of silence. One contact is kept for the whole transmission.

Contacts carry more — a contact holds a DMR ID or talkgroup, a callsign (with -SSID), pager RICs, notes, a home location you enter and the last position heard from APRS, kept apart. A contact needs only one of DMR ID, callsign or RIC, so APRS and M17 stations are contacts too. Every callsign, DMR ID or RIC the app shows is a tap to its contact.

Talkgroups from contacts — on a DMR channel the editor's Call number from row switches between a typed number and a contact; on the intercom a long-press on the CALL cell of a DMR channel lists the channel's programmed call first, then your group contacts, and switches the channel's call there.

Channel editor order — receive frequency first, then send, the way repeater lists are printed. Zones → Add a zone starts with Your own. Channel names take up to 32 characters in both editors, with a counter.

Intercom — more room above the Soft SQ slider, and the slider shows only while Soft SQ is on for an FM channel; the Soft SQ slider during a scan no longer switches that channel's gate off. Morse decoding pauses while packet audio is being received, so AFSK no longer prints as Morse.

Long SSTV modes — SSTV send gains Robot 36, Martin M1 and M2, Scottie S1 and S2 and PD 90 next to the short Robot modes, with a heat guard: after a transmission longer than 30 s the next long one waits until the phone has cooled, long sends do not start while the phone is already hot, and a send ends early if the phone heats too fast. The history says why when a send is held.

Firmware the catalogue does not list yet — on a phone SignalDeck has a profile for, once it owns the radio it compares the module's version and the stock app's firmware file with the signed firmware catalogue (at most once a day). A variant the catalogue lacks is offered once for submission: Open GitHub opens a pre-filled issue form in your browser; nothing is sent by the app itself. The Device page shows a notice until the catalogue lists it.

Module firmware page — Device → the firmware line shows the installed image, the factory backup and a pre-flight list. It loads only images from the signed catalogue for phones the catalogue knows, and keeps a verified factory backup to restore. Testers: do not load firmware unless you are asked to. Allow unlisted images under Advanced stays off until confirmed twice.

Device report — Radio firmware files (root, you choose) lists the radio images on the phone, the stock app's own firmware file included, with their hashes and version strings, and copies only what you tick. USB radios, vendor services and key layouts are in the report; DMR IDs are blanked from logged radio frames; the stock app's module answers are in the summary.

Bench module firmware only (the owner's test images, not the firmware your phone shipped with): M17 voice transmit from the M17 page, a POCSAG pager page (PKT → POCSAG page: 512/1200/2400 baud, several RICs in one transmission), promiscuous DMR receive with MON, Morse ID, RTTY and FT8 through the module's tone generator, and receive calibration from a clean M17 call. On stock firmware each of these says so and does nothing else.

Download check: SHA-256 of SignalDeck-1.0.0-beta.20.apk: 1125d3b854d04d8d8c1cd2fca248909238f08039e50b717edf3442769bc8f1f4

v1.0.0-beta.19Pre-release

SignalDeck 1.0.0-beta.19

24 Oct 2026 · SignalDeck-1.0.0-beta.19.apk

Custom ROMs and GSIs on the Ulefone Armor 26 Ultra: radio audio without Ulefone's audio service — a custom ROM or GSI usually removes Ulefone's radio audio service, which left SignalDeck with no receive or transmit audio. SignalDeck now notices that and moves the radio audio straight to and from the phone's sound card instead, with a small helper of its own that runs through root (Magisk). Nothing is installed in the system, and on the stock ROM nothing changes. Tested on a stock-ROM Armor with the new path forced on: the same receive level and the same transmit tone on air as the vendor service. Not yet tried on an actual GSI: reports welcome. The Radio audio check says which audio path is in use. Help: Device → Custom ROMs.

Ulefone Armor 20WT — its own profile. Earlier builds took it for an Armor 26 Ultra (both have the same radio node) and drove the wrong serial port. The 20WT profile uses its own port and serial library and is marked untested: SignalDeck will not take over its radio or transmit on its own. 20WT owners: please run Device → Device report → Run all checks and send the report.

Radio firmware on the Device page — the Device page shows the radio module's firmware. SignalDeck remembers the first version the module reports as the one the phone came with. If other firmware is loaded later, the line turns amber and shows both. Also in SignalDeck Web under Settings and in the device report summary. Help: Device → Radio firmware.

Device report fixes — the summary file is written with every report (not only when shared), the radio module's pin names are readable, the log section skips screen and window noise, SELinux is read with root on newer Android, and with root the report now lists the phone's sound devices and mixer settings.

Download check: SHA-256 of SignalDeck-1.0.0-beta.19.apk: f626b8c115f93d0307fbea01c77735c4aaa3c84288c191b5c08188968d0f00f8

v1.0.0-beta.18Pre-release

SignalDeck 1.0.0-beta.18

23 Oct 2026 · SignalDeck-1.0.0-beta.18.apk

Radio audio check waits for the radio — a check started while the radio is still starting up (or while SignalDeck restarts a module that stopped answering) now waits up to 30 seconds for it, and otherwise says the radio was still starting instead of giving a wrong verdict. On phones whose radio audio comes over a serial port (Blackview Xplore 1) it no longer mentions Ulefone's audio service.

SSTV picture sheet fits — tapping a picture in the SSTV gallery (and the Combine preview) showed a sheet that cut the picture off and hid its Share button; it now shows the whole picture with Share and Delete.

Download check: SHA-256 of SignalDeck-1.0.0-beta.18.apk: 9a61b1973404192abaad66894b9775ceb386013d91eca7222732a5880a17603b

v1.0.0-beta.17Pre-release

SignalDeck 1.0.0-beta.17

23 Oct 2026 · SignalDeck-1.0.0-beta.17.apk

A radio module that stops taking commands is restarted — found with a Blackview Xplore 1 tester: after an update the radio module can come up stuck, answering signal readings but ignoring channel changes, MON, squelch and tone settings for minutes (MON switching on minutes late, no reception, CTCSS not taking effect). SignalDeck now checks at start-up that the module answers and otherwise restarts it for real (power off, a pause, power on), twice at most. While running, a command left unanswered for 6 seconds gets one more check, then the module is restarted and the channel, MON and receive audio are put back (a few seconds without reception, at most once every two minutes, never while transmitting). Each restart is noted in the history. Help: When the radio module stops answering.

Download check: SHA-256 of SignalDeck-1.0.0-beta.17.apk: 0d496dd5e74c34135bc052c06b32b52611436bd66302bce8af91e19b38b5bbb1

v1.0.0-beta.16Pre-release

SignalDeck 1.0.0-beta.16

23 Oct 2026 · SignalDeck-1.0.0-beta.16.apk

Blackview Xplore 1: MON that the radio did not answer — a tester's radio audio check found that the radio sometimes never answers the MON command, so the squelch stays closed. SignalDeck now checks for the answer and sends MON again (up to three more times, then a warning in the history), for the MON button and everything that uses MON. The radio audio check waits for the answer before its 10 seconds, reports how quickly the radio answered, and says so plainly if it never did, instead of blaming the audio.

The intercom fits your screen — the new intercom look is now the default for new installs. The classic page keeps all six buttons and the talk button on screen when the mode bar shows (they scale down a little), and its info lines have their margin back.

Receive-only channels — Edit channel → Transmit: mark any channel receive-only, like the NOAA channels. The talk button, the side key, text and data modes all refuse to transmit there. Also in SignalDeck Web's channel editor and in backups.

Exit SignalDeck — Device → Exit SignalDeck, or Exit on the notification: switches the radio module off and stops SignalDeck, or hands the radio back to the stock app.

M17 receive — PKT → Digital voice → M17: listens for M17 digital voice on the channel and plays it, with the caller and the text message shown, also in SignalDeck Web. Receive only (this radio cannot send M17 that other radios decode). Calibrated for the Ulefone Armor 26 Ultra only so far; on other phones it will not decode yet.

PKT shows what is running — the PKT sheet starts with Running now (one tap back into a running mode) and has a Digital voice section.

Band scope — the sweep time shown is now measured (about a second per step), the frequency being measured shows on the page and on the intercom bar, and you can scan your own range.

SSTV: combine repeated pictures — the ISS repeats its slides, so receptions from different passes can be combined into one cleaner picture: in the gallery long-press a picture, tap the others, Combine (SignalDeck Web: Select, Combine). A preview shows the result first. Partial pictures are drawn at the bottom, so move a piece up or down with the arrows if it belongs higher, or leave it out; SignalDeck says when it is not sure of its own line-up. Save keeps it as a new picture.

SSTV fixes — SignalDeck Web's gallery shows a new picture as soon as it is saved (it needed a page reload during satellite passes); the web SSTV page fits a phone's width; a picture picked up late gets the lines just before the lock filled in.

Download check: SHA-256 of SignalDeck-1.0.0-beta.16.apk: 828fa4ed52c47ede86e37e5cfbcf0301915e8f883a2dd2a72f8873b0d086bbea

v1.0.0-beta.15Pre-release

SignalDeck 1.0.0-beta.15 (beta)

23 Oct 2026 · SignalDeck-1.0.0-beta.15.apk

FT8 over FM — PKT → FT8 over FM: the WSJT-X digital mode, on the FM channel you are on. 15-second slots, a waterfall (tap it to pick your transmit frequency), the decodes of every slot (tap a CQ to answer it), and contacts that run by themselves the way WSJT-X does them (grid, report, R-report, RR73, 73), logged in the Logbook as FT8. Call CQ, Halt TX, Send text, the transmit period, and your grid (from your location, typed, or none). It talks to stations sending FT8 audio on that FM channel: another SignalDeck, or WSJT-X through an FM radio. It cannot hear normal FT8, which is sent on SSB (144.174 / 432.174 MHz), and on FM only the strongest station of a slot gets through. Decoding matches WSJT-X's own recordings, and transmissions were checked on the air.

FT8 on SignalDeck Web — the same on the Packet page: slot clock, waterfall, decodes, answer a CQ with a click, Call CQ and send (these need Allow transmit from the web). Your own callsign is shown as "(you)" in the browser.

Download check: SHA-256 of SignalDeck-1.0.0-beta.15.apk: e368c4c5c6a56f29dd20ce281cab01fe6d7e9c184f2c3906fd81806a5ea591c8

v1.0.0-beta.14Pre-release

SignalDeck 1.0.0-beta.14 (beta)

22 Oct 2026 · SignalDeck-1.0.0-beta.14.apk

Packet finder — PKT → Packet finder, SignalDeck Web's Packet page, or a scheduled run at night. It only listens: one packet frequency after another (the 2 m packet frequencies by default, or your own list), and it lists every Winlink gateway, BBS and node it hears, with frequency, signal and when it was last heard. Tap one to tune it and open the packet terminal or Winlink.

Winlink gateways near you — Winlink → Gateways: open winlink.org (RMS List → Packet → CSV File; turn on the browser's Desktop site if the buttons are cut off), then Import the CSV from the file picker's Recent files. SignalDeck keeps the 1200-baud packet gateways this radio can use and lists them nearest first (distance worked out on the phone, never sent). One tap tunes and connects, or sets the packet finder to the nearest ten.

Help test Winlink: detailed log — Winlink is still untested with the real Winlink system. At your first connection SignalDeck offers a detailed diagnostic log (timing, protocol, every radio frame; never your password). Whether it works or not, please send it to us: Session log → Share log (SignalDeck Web: Download log).

Winlink extras — send an ICS-213 or a radiogram by Winlink (SignalDeck rebuilds it as a form on the other end), and schedule a Winlink mail check by radio gateway or over the internet.

DMR texts: talkgroup threads and names — talkgroup texts were filed as private messages from each sender; they now stay together in the talkgroup's conversation, with the sender's name on every message. Conversations with radios that aren't in your contacts show the RadioID name and callsign.

Packet fixes — packet frames reach the terminal and Winlink in the order they were sent (a burst could arrive shuffled and had to be resent), and a Winlink session now lets its final goodbye be acknowledged before hanging up.

Soft SQ on SignalDeck Web — the slider now uses the phone's 1–9 scale (it ran 0–100, and everything above 9 acted as 9).

Download check: SHA-256 of SignalDeck-1.0.0-beta.14.apk: ff3c6cdd630cb7cf1d839b7e131430edb7bc72f5bea26d903c3e8bf506da6c38

v1.0.0-beta.13Pre-release

SignalDeck 1.0.0-beta.13 (beta)

22 Oct 2026 · SignalDeck-1.0.0-beta.13.apk

Winlink e-mail — PKT → Winlink, and a Winlink panel on SignalDeck Web's Messages page. E-mail by radio: write to callsigns or to any e-mail address, then connect to send your outbox and collect your mail, either over the radio through a Winlink packet gateway (RMS) on the current channel, or over the internet. Inbox, outbox and sent; reply, forward, attachments; a session log. You need an amateur licence and your callsign set in PKT → Settings; your Winlink password stays in SignalDeck's private settings (never shown, logged or backed up).

New and not yet tested with the real Winlink system. It was tested with a test gateway over the radio (a full session: connect, login, send, receive) and a test server over the internet. If you use it, please tell us whether it works — the notice at the top of the Winlink screen opens the issue page.

Packet terminal fix — connections to a BBS or node without digipeaters could never complete: the radio's short acknowledgement frames were thrown away by the decoder. They now get through.

Device report: a summary and a guided second radio test — every shared report now starts with a one-page summary (phone, profile, radio module, audio path, the latest checks, and which radio commands were refused or answered slowly). Device → Device report → Second radio test: with any other FM radio (VHF or UHF), SignalDeck measures reception, the squelch, MON and tone squelch itself, step by step. This phone only listens.

Blackview Xplore 1 — a refused MON is now retried and reported; the scan waits longer on each channel on the Xplore; its "no reading" signal value is ignored; channel changes are spaced the way the stock app does it. Xplore owners: please run Device → Device report → Second radio test and send the report.

Satellites and the ISS — more FM satellites from AMSAT's list, with live status reports. ISS passes refresh day-old orbits before a pass and can record the whole pass.

Decode a recording — SSTV pictures (every mode) and APRS packets from pass recordings, REC files or any audio file you upload, on the phone and in SignalDeck Web. Several pictures in one recording come out as separate pictures.

SSTV pictures — SignalDeck Web shows pictures in a card with arrows, Download, Share and Delete; select several to share or delete (phone and web).

Scheduled operations — listen and record, scan, APRS, SSTV or a beacon at set times; the radio goes back to where it was afterwards.

VHF/UHF conditions — a tropospheric ducting forecast, Kp and aurora, meteor showers and the next satellite passes.

Band scope — receive-only sweeps with a graph, peak hold and a waterfall (phone and SignalDeck Web).

POTA / SOTA — activator spots (the ones you can work first), parks near you, and activations with a duplicate check and ADIF export with the park or summit references.

DMR roaming — optionally moves to the nearest repeater in the zone carrying the same talkgroup as you travel (never during a call).

Message forms — ICS-213 and ARRL radiogram: read them on the air, or send them as APRS messages or DMR texts and have them put back together at the other end.

SignalDeck Web: Phone panel — on the Intercom page: battery level, charge current and time left, cell and Wi-Fi signal.

Download check: SHA-256 of SignalDeck-1.0.0-beta.13.apk: 743a41144dda54dac4d595385f08f814ab2cdce72a48813febcd2072eae0e7a3

v1.0.0-beta.12Pre-release

SignalDeck 1.0.0-beta.12 (beta)

22 Oct 2026 · SignalDeck-1.0.0-beta.12.apk

SignalDeck has its own home: https://github.com/IIMacGyverII/SignalDeck — source, issues and new builds are there from now on (with the app's full history). This build is also posted on the old repository so earlier betas find it; after updating, Device → Updates looks in the new one.

Radio audio check, Blackview Xplore 1 — thanks to the Faraday-cage tests: receive audio works on the Xplore (with the squelch held open the receiver noise arrived cleanly, receptions carried audio, and the squelch now closes after MON). The check's verdict wrongly said the phone "can't get any receive audio" because it looked for the Ulefone audio service, which the Xplore doesn't use (its audio comes over a second serial port). The verdict now follows the phone's own audio path.

Updates: a Release path and a Beta path — Device → Updates shows both, each with the changes since the version you have, so a beta made for one phone doesn't push everyone to update. On a beta you can go back to the newest release (installed with root; settings and data are kept).

Real spectrum — the intercom's bars are now the actual spectrum of what you hear (18 bands, 200 Hz to 3.6 kHz, low notes left), and SignalDeck Web draws the same bars on its Intercom page.

ISS passes after a restart — ISS APRS / ISS SSTV tracking (pass after pass) now carries on by itself after an update or a reboot.

Mission Statement and About — a Mission Statement button on the Device page (and in SignalDeck Web's Settings) with the project's mission, and About and license: version, copyright, the license in plain words, the source link and the open-source parts SignalDeck is built with.

Download check: SHA-256 of SignalDeck-1.0.0-beta.12.apk: 2988ea8cc0f786523d6a8723f20a7eb996f553e5e8ee8c00019c5164b6825650