Radio link
The card at the top shows who owns the radio (green: this app, cyan: the stock app, amber: a problem) with the serial port and speed. Take over and Hand back move the radio between this app and the stock app.
From a browser
SignalDeck Web → Settings shows the module firmware and whether it is the factory image, this phone's profile and its revision, the app version, the battery and processor temperatures, whether the radio is taken at boot, and whether Wi-Fi debugging is listening. Restart the module and Check for updates each ask you to confirm before they run. Installing an update replaces the app and keeps your channels and settings. The firmware loader, the Own the radio at boot switch and Allow unlisted images stay on the phone.
Exit
Closing SignalDeck or swiping it away does not switch the radio off: the radio keeps running in the background, receiving (that is how it works with the screen off), and the module stays powered. Device → Exit SignalDeck stops it properly: it ends any transmission and everything running (scan, APRS, FT8, M17, satellite tracking, the parrot, the band scope), stops the audio and closes the radio's serial port, then either switches the radio module's power off (Turn the radio off and exit: it no longer receives or uses battery; opening SignalDeck turns it on again in a few seconds) or gives the radio to the phone's own intercom app (Hand back to the stock app and exit). The notification has an Exit button too (pull it down to see it), which turns the radio off. Satellite tracking you had set to follow every pass, Keep access after reboot and scheduled operations stay set: they start again the next time SignalDeck runs.
Root and reboots
The radio's serial port is locked by Android's security policy; the app needs Magisk root to unlock it. Keep access after reboot installs a small Magisk module so the rules survive reboots; with it, Own the radio at boot lets the app take the radio as the phone starts.
Radio settings
Switches for owning the radio at boot, the side PTT key, volume-up as PTT, a custom PTT key (see Custom PTT key), Soft SQ while scanning, coverage logging (see Coverage maps), voice announcements (channel changes, caller names, keyword alerts; when you change channels quickly only the channel you stop on is spoken, and while scanning only a stop on activity and the channel you end on), the roger beep, the new intercom look, and Animated panel when quiet (the falling lines in the intercom panel on an idle channel; they always move while receiving, and turning this off saves a little battery).
DMR roaming
Device → DMR roaming (also in SignalDeck Web → Settings; on a phone with DMR, and so not on an analog-only radio such as the ANYSECU W6+, which also hides Your DMR ID): while you travel on a DMR repeater channel, SignalDeck switches to the nearest repeater in the current zone that carries the same talkgroup (the one the channel transmits on, or in its RX group list). It needs the repeater channels to have a location (Nearby Repeaters adds it). It only switches when the other repeater is clearly nearer, at least 5 km and 30 % closer, so it does not flip between two at the same distance; it checks every 30 seconds, at most one switch every two minutes, and never during a call, while you transmit, scan, use the band scope or a satellite pass is tracked. Each switch goes in the history (“Roaming: switched to …”). It uses the GPS while it is on.
Custom PTT key
Any other button can transmit too: another side key, a wired headset's button, a Bluetooth PTT button, a volume key. Tap the Custom PTT key row, tap Start, then press and hold the button for about two seconds and let go; nothing transmits while learning. The Side PTT key switch stays as it is for the phone's own PTT key, and the two work side by side.
SignalDeck then checks the button automatically. It refuses one that can't work: the phone's own PTT key (it already transmits), the power, home and back keys, the touch screen, the fingerprint sensor, and a button that reports letting go at once although it was held. It warns about side effects: pressing it also brought another app to the front (checked while SignalDeck is open; a button can behave differently over other apps), a volume key still changes the volume outside SignalDeck (SignalDeck puts it back when you let go), a media button still plays or pauses music, Volume-up transmits uses the same key (it is switched off), a Bluetooth button only works while it is connected. Use it anyway keeps a button that only has warnings.
The learned button works with the screen off and SignalDeck in the background: it is read with root straight from the phone's input device, so the phone still does whatever else the button does. The switch on the row turns it on and off; Forget the learned key removes it. As always, transmitting stops by itself after 28 seconds, receive-only channels refuse it, and on a phone whose profile is untested it does not transmit.
Your DMR ID
What other radios see when you talk on DMR channels. Change sets it.
About and license
The Mission Statement sheet (and its card in SignalDeck Web) also shows the version, the copyright, the license in plain words (free software under the GNU GPL v3 or later, no warranty; keep the author credit, mark modified versions, no rights to the SignalDeck name or icon), where the source code and the official signed builds are, and the open-source parts SignalDeck is built with.
Mission Statement
The button above the tools (and in SignalDeck Web, at the top of Settings) shows why this project exists: “This project is a showcase of what an Android ham radio can do. It is built for innovation, and built on the innovation, discovery and hard work of those who came before me. I hope it inspires others to create, and to look for the next step.”
Tools
Back up writes the five OpenGD77-style CSV files (Contacts, TG_Lists, Channels, Zones, DTMF) to Download/DMR/DMR_Backups, plus SignalDeck_Extras.csv with your channel notes, the nets on your channels and each zone’s exact channels (Zones.csv names channels, so two channels with the same name were mixed up; a zone edited in another program since still follows Zones.csv; other programs ignore the file); Restore reads any such folder, including codeplugs edited in the OpenGD77 CPS fork; channels outside 136–174 and 400–480 MHz (a 220 MHz channel from another radio, for example) are skipped and listed in the result, since this radio cannot tune them. The files use the same columns as the DMRModHooks module, so backups move between the module, this app and the CPS fork; saved talkgroup lists travel in TG_Lists.csv. Re-import copies the stock app's channels (on the DMR phones, the Atom XL included, you pick an area; on the W6+ and the Xplore 1 there is one list). RadioID list downloads the names behind DMR IDs from radioid.net. Updates shows two paths: Release (finished builds) and Beta (test builds, often made for one phone being tested), each with its newest build and what every build since yours changed; tap a path’s Update to install it in place (nothing is installed otherwise, and your data and root access are kept). Diagnostics shows the live protocol log and radio tools (module version, power-cycle, test tone) and Check backup round trip, which exports everything, restores it into a scratch copy and lists any field that would not survive; your channels are not touched.
Phone profile
The line under the phone's name on the Device page (port · speed · audio · revision) is this phone's profile; tap it for details. Tested profiles are built into each SignalDeck release and work without the internet. SignalDeck also checks the project's signed profile list (at most every 12 hours, or Check now): it can bring a newer revision of this phone's profile, a profile for a phone this version does not know yet, or an advisory. A list is used only when its signature is valid and it is not older than the one already on the phone; a built-in profile is only ever replaced by a higher revision. Use the built-in profile ignores the list's profiles altogether. An advisory warns about a problem found with a profile and, by default, switches something off: transmit, automatic take-over, or the whole profile (the stock app keeps the radio). You get a notification, the Device page shows ⚠ advisory, and the details say what and why. It is your phone: Advisories → Use it anyway asks twice, then SignalDeck works as if that advisory did not exist (for that advisory only; Apply the advisory again undoes it). Advisories lapse at their date unless renewed, and none of this needs the internet to keep working. Transmit changes apply at once, the rest the next time SignalDeck starts.
Custom ROMs
On a custom ROM or GSI the radio still works, but Ulefone’s radio audio service (PrizeTinyService and its tinyserver) is usually gone with the system partition. On the Armor 26 Ultra SignalDeck notices that by itself and moves the radio audio straight to and from the phone’s sound card instead: a small helper inside SignalDeck runs through root (Magisk), switches the sound card’s routes to the radio for receive or transmit, and moves the audio, exactly as the vendor service does on the stock ROM. Nothing is installed in the system and nothing changes on a stock ROM, where the vendor service is still used. Receive and transmit sound the same either way (measured: the same noise level on receive, the same tone deviation on air). The Radio audio check says which path is in use. If it reports that the sound card path did not start, check that SignalDeck has root access in Magisk. A device report from root also lists the phone’s sound card streams and mixer controls, which is what support for another phone’s custom ROM is built from.
Radio firmware
The next line shows the radio module's firmware. SignalDeck remembers the first version this phone's module ever reported as its stock firmware and keeps it for good, so you can always tell what the phone came with. When the module reports another version, the line turns amber and shows both. On a phone SignalDeck has a profile for whose module firmware can be read (not an analog-only module such as the ANYSECU W6+'s, which carries no firmware file and cannot be read), once it owns the radio it also checks that stock firmware against the signed firmware catalogue (fetched at most once a day): the module version, and the stock app's firmware file by its fingerprint. When the catalogue does not list it, SignalDeck asks once whether to submit it to the firmware project, and an amber line under the firmware line, Firmware not in the catalogue yet, stays until the catalogue lists it; tap it to submit later. Submitting opens the project's GitHub issue form in the browser with the phone model, the module version, the stock app's version and the file's fingerprint filled in; you check them and press Submit there, with a GitHub account. Nothing is sent unless you do, and nothing in it identifies you. When the stock app's firmware file is new to the catalogue as well, SignalDeck copies it (after checking its fingerprint) to Download/DMR/FoundFirmware with a SOURCES.txt, and the issue's attachment box says where it is. Attaching it is your choice: an attachment on the issue is public, anyone can download it, and the file belongs to the phone maker. SignalDeck never uploads it. Tap the firmware line to open Module firmware. That page shows the installed image, the image you chose, and whether the factory backup is verified. A load starts only after every pre-flight check is green: the module answered, the radio is idle, the stock app is paused, the battery is charging above 40 percent or above 60 percent, the file's hash matches a known image, and the factory backup is present. The bar then walks Prepare, Update, Hello, Erasing, Transfer, Finish, Restart and Verify. Erasing fills over about twelve seconds while the module clears its flash. Transfer fills as each block is accepted. Under the bar: blocks, bytes, rate, time so far, time left and retries. While a load runs the intercom, SignalDeck Web and Android Auto say the radio is busy loading firmware, and Talk does nothing until it finishes. Handshake log opens the transfer record. If the version that comes back is not the one that was loaded, the page restores the factory image by itself and says so. A stock-app version that differs from the one this phone shipped with is only a warning when the firmware file itself matches. Recovery, when the module does not answer at all, offers only that factory image. An image stays in the module until you load another one, including after a reboot. Nothing on the page changes the radio's bands or its power. If the stock app is gone and there is no verified copy, Download factory image checks the signed firmware catalogue and saves the factory image only when its signature and its hash both match. Allow unlisted images, under Advanced, is off until you confirm it twice. It lets a file from Download/DMR/Firmware load when you type the first eight characters of its hash, the factory backup is on the phone, and the phone is a known one. The catalogue and this project do not cover that file. The switch turns off after the load. A version string that does not match restores the factory image. Restore factory still loads that image afterwards, when the backup is verified, even if the module is reporting the unlisted version.
Help support this phone
On a phone SignalDeck does not know yet, or one whose profile is untested, Device → Help support this phone (also under Device report) lists the steps in order, each with its own instructions and a tick when done: 1 Run all checks (below), 2 Listen check, 3 Send the results. A step unlocks when the one before it is done. The listen check needs SignalDeck to own the radio: tap Take over, choose a channel on the Intercom page where you can hear stations right now, then Start. It has two parts, each with its own question, so the answer tells where a problem is: first 10 seconds with the squelch held open (MON), when the speaker should play something — static, or the station if one is talking (did you hear anything? if not, the sound path to the speaker is the problem; skipped on DMR channels, which have no static), and SignalDeck records 5 seconds of it, then 50 seconds with the normal squelch, which opens by itself when the station talks (did you hear the station clearly?), recording up to 20 seconds while something is heard. A station right at the squelch level sounds choppy because the squelch keeps opening and closing; that is the signal, not the app. The report shows each recording's length, level, clipping and dropouts. When you share, the station recording is left out unless you choose to include it, because it may contain other people's voices; the static recording is always included. For each part it records the signal strength each second, how long something was heard and how much audio arrived; if the signal stayed at or below the squelch level it says so. Your answer goes into the report with the measurements. Every step only listens. After each step send the results; the next version of the app (Device → Updates) carries what was learned.
Run all checks
On a phone SignalDeck does not know, or one whose profile has not been tested, the app offers this the first time it opens (Device → Run all checks, or Device report → Run all checks, any time later). One button does it all in about two minutes: closes the stock walkie-talkie app, makes the device report (including clues from the stock app's code and the radio module's device-tree entry), gives you 10 seconds to press the side PTT key, opens the stock app for 15 seconds (it first asks which app that is: the one it found, ranked by evidence such as holding the radio's serial port or shipping a serial library, Choose another app… for any app with an icon, or None to skip) to record how it starts and listens (its log, the serial ports it opens and their settings, every byte it sends to the radio module and gets back from its very first call (it is closed first so its start is seen; the bytes go into stock_serial.txt with radio IDs blanked), the radio driver's messages; do not press PTT then, the stock app would transmit) and closes it again (on a phone whose radio is a USB device behind a bridge chip, such as the Unihertz Atom XL, the radio takes the phone's USB port while it is on, so a computer on the USB cable loses the phone for those 15 seconds; the checks then switch the radio off the stock app's own way and give the port back, and the computer sees the phone again a few seconds later; a plain force-stop would leave the radio on and the port taken until a restart), runs the radio probe (it asks the module who it is on the serial ports: the DMR version query and, for analog modules of the SA818 family, their AT handshake and version query; only the ports the walkie-talkie app itself uses when they are known, never anything that tunes or transmits; again with the module switched on if it did not answer, on phones with a profile; on a phone whose radio is behind a USB bridge chip, such as the Unihertz Atom XL, it stops the stock app's radio service for about 10 seconds, switches the radio on itself, asks the bridge chip and the module for their versions only, then switches the radio off, gives the USB port back and starts the service again; a computer on the USB cable loses the phone meanwhile; when the module answers there, the phone's serial ports are not swept), and, if you choose Checks + trial, takes the radio for about 30 seconds receive only (nothing is transmitted) to record whether the module answers, the signal strength and 5 seconds of the received audio (on an untested phone it listens on 446.00625 MHz with the radio's squelch open, so the audio path carries noise even when nobody is talking), then gives the radio back to the stock app. SignalDeck's own log is added with packet, position, message and caller lines removed and callsigns and IDs masked. The report ends with a summary and a draft profile: every setting SignalDeck needs to drive this phone's radio (the stock app, the module's protocol, the control port and its speed, the audio path, the power line, the PTT key and the broadcasts the stock app listens for, the SELinux rule), each with how sure the report is and what it saw, or unknown; nothing in it is applied, it is what the maintainers write the phone's profile from. Both are also at the end of 00_SUMMARY.txt, and report.json holds the same facts as data, so two reports can be compared on a computer (scripts/report_diff.py in the SignalDeck repository). At the end, Send shares the zip by e-mail, a messenger or a cloud drive, GitHub issue opens a pre-filled issue to drag it into, and the folder stays in Download/DMR/DeviceReport (adb pull /sdcard/Download/DMR/DeviceReport from a computer).
Radio audio check
Device → Device report → Radio audio check, for “no sound from the radio” on DMR or analog. Choose the channel and tap Start (if the radio is still starting up, the check waits up to 30 seconds for it). On an analog channel (easiest: a NOAA weather channel, which always has a station) it first holds the squelch open for 10 seconds (MON), so receiver noise must arrive even with nobody on the air: that alone shows whether the audio path works (it waits for the radio to confirm MON first, and says so if the radio never answers). If the squelch then stays open with no signal, it tries the stock app’s way of closing it and reports what worked. Then it listens for a minute with the normal squelch; on DMR have someone talk on the talkgroup meanwhile. SignalDeck records what the radio reports (each reception, and on DMR who called which talkgroup, with caller IDs shortened), whether audio arrived from the phone’s radio audio path (the vendor audio service on the Armor, the radio’s audio serial port on the Xplore 1) and how loud it was, how the phone plays it (volume, speaker or Bluetooth), and, on phones whose audio goes through the vendor audio service, checks the system for that service, which custom ROMs may lack (on the Armor 26 Ultra SignalDeck then reads the radio audio straight from the phone’s sound card, see Custom ROMs; on other phones a Magisk module that adds Ulefone’s audio service and its PrizeTinyService library from the phone’s stock firmware brings the audio back: SignalDeck asks Android for that library when it is there). It ends with the most likely cause (for example: this ROM lacks the audio service; no audio even with the squelch open; the talkgroup is not in the channel’s RX list, so the radio drops the calls) and puts the details in the device report to share. If the radio refuses to switch MON on (it can, right after many quick channel changes), SignalDeck retries three times and the check says so instead of blaming the audio path. Nothing transmits and the audio is never kept.
Device report
For a phone without a profile, the Device report tile collects what a profile needs, captures what the side PTT key sends, runs the root-only radio probe, and shares the result or opens a pre-filled GitHub issue. The report and the PTT capture only read. The probe sends the radio module's version query on the serial ports, including USB serial ports (ttyACM, ttyUSB: there it also sends the Agold phones' version queries), and, until the next reboot, allows this app to open them. It leaves alone any port another app or service has open (the stock app, a vendor radio service, or this app while it owns the radio: Hand back first) and ports that belong to the modem, GPS or Bluetooth. It tries other line speeds on a port only when it can set that port's own speed again, puts every port's line settings back afterwards, and says so plainly if one is not back (a reboot restores it). It switches the module's power on only if you choose Probe + power pulse. With root the report also lists, for phones it does not know yet: the phone's name from its vendor partition (a GSI reports a generic name), the USB devices and what each interface is (a radio behind a USB chip shows as serial plus sound), the radio-related system properties, vendor radio services and programs (names and sizes), programs listening on local network ports, programs holding USB serial or sound devices with their command lines, installed Magisk modules (names, versions and file names, never their contents), and, in the PTT capture, which key a raw key code becomes in the phone's key layout files. SignalDeck's own harmless SELinux denials are counted instead of listed. Before log lines go into the report, personal details are taken out: long numbers such as DMR IDs and phone numbers, e-mail addresses and callsigns, and, in the radio frames the stock app logs, the radio ID, the call number, the encryption key, caller details and text messages (shown as ##). On phones whose stock app logs its radio frames (Unihertz Atom XL, Ulefone Armor 3WT), the summary also says when the module answered the stock app, so a probe that could not reach the module's port does not look like a dead module. Radio firmware files (root, in the Device report menu) lists the radio chip images the phone carries, in its radio folders and inside the stock walkie-talkie app (found through root while SignalDeck has it switched off): name, size, a SHA-256 fingerprint and the module version written inside. A file whose fingerprint SignalDeck already has (its own factory and bench images, and the signed firmware catalogue's rows) is marked already known with what it is, for example a phone's factory image or a stock copy kept for research, so nobody needs a copy of it. A file in /sdcard/intercom/dmr comes with a warning: on some phones (Unihertz Atom XL, Ulefone Armor 3WT) the stock walkie-talkie app loads a .bin from that folder into the radio module by itself when its name sorts after the module's version, so nothing should be left there by accident; SignalDeck never writes there, and copies go to Download/DMR/FoundFirmware. The apps' own files in /sdcard/DMR (serial captures, recordings, reports, logs, backups) are left out; there only a .bin of at least 100 kB with a module version inside is listed, such as an image you copied there yourself. The list goes into the report; files are copied only if you tick them, into Download/DMR/FoundFirmware on the phone with a SOURCES.txt, and nothing is sent anywhere. They belong to the phone maker: share them only privately, and only if the SignalDeck maintainer asks.
When the radio module stops answering
SignalDeck checks that the radio module takes commands. At start-up it asks for the module's version; with no answer within 3 seconds it restarts the module for real (power off, a pause, power on), twice at most. While running, if a channel change, MON or squelch command has waited 6 seconds for an answer while the module still sends signal readings, SignalDeck asks once more and then restarts the module and puts the channel, MON and the receive audio back (a few seconds without reception, at most once every two minutes, never while transmitting). Each restart is noted in the history. A module that still does not answer usually needs the phone restarted; please send a device report then.
Second radio test
Device → Device report → Second radio test (also step 2 of Help support this phone): for a new or untested phone, with any other FM radio. Choose an unused analog channel on a frequency the other radio can use too (VHF or UHF; licence-free examples: PMR446 446.00625 MHz in Europe, FRS 462.5625 MHz in the USA), set the other radio to the same frequency with no tone, then follow the steps: key it and talk for 5 seconds; keep it quiet while SignalDeck holds the squelch open (MON); key it without a tone and then with 100.0 Hz while SignalDeck listens with a 100.0 Hz tone (a temporary copy of the channel). SignalDeck measures each step itself: how soon the radio reports a reception (this sets the scan time per channel), how loud the received audio is, whether the squelch closes, whether MON was refused and whether the tone squelch works, and suggests profile values. This phone only listens. The results go into the device report.
Report summary
Every shared report starts with 00_SUMMARY.txt: the phone, the profile and its revision, the radio module, the audio path, the latest Radio audio check and second radio test, every radio command with how often it was sent, answered, refused or answered slowly, and how many signal readings were the module’s “no reading” value. The report folder in Download/DMR/DeviceReport gets it as soon as the report is made, so a folder sent by hand has it too (Share writes it again with the latest checks); a copy of the shared zip also stays there.
Radios that do less
SignalDeck shows only what this phone's radio can do. On a radio without DMR (the ANYSECU W6+), the Contacts and Messages tabs, DMR channel types, Your DMR ID, DMR roaming, the RadioID list, the firmware loader and the DMR text choices in message forms and the emergency sheet are hidden, and the VFO is FM only. On a radio that tunes only part of the bands (the W6+: 400–470 MHz), whatever parks on a frequency it cannot reach is hidden or refused: APRS monitoring on 144.390, SSTV on 144.500, the NOAA weather alerts and the satellites that send outside its bands; the VFO starts on your channel and its arrows jump over what it cannot tune; the packet finder leaves out frequencies it cannot reach (on the W6+ all its 2 m defaults: add UHF ones in its Settings); every message about frequencies names this radio's bands. On a radio that reports no signal strength (the W6+), the band scope is hidden, the signal meter on the intercom and on the mode pages says RECEIVING or QUIET instead of S-units, and the fox hunt can only be the fox. POCSAG pages need the symbol engine of the HR-C7000 bench firmware, so a radio with another module does not offer them. SignalDeck Web follows the same rules.
Unihertz Atom XL
Tested 2026-10-28 with radio module DMR006.U4A.V067: SignalDeck receives and transmits on it like on the Armor 26 Ultra (FM, DMR voice and texts, APRS, DTMF, SSTV, recording, scanning, the signal meter), and takes the radio by itself when it opens and, with Own the radio at boot, after a restart (about a minute after the phone starts). What is different from the Armor: Its module is UHF only (400–480 MHz), so what parks on 2 m is not offered (APRS on 144.390, SSTV on 144.500, the NOAA weather alerts, satellites outside the band). The radio is a USB device behind a small bridge chip on the phone's only USB port, so while SignalDeck has the radio a computer on the USB cable does not see the phone (use Wi-Fi for SignalDeck Web and adb). While SignalDeck has the radio it keeps the phone awake (the processor, not the screen), so receptions with the screen off are not missed; that costs some battery, and Exit or Hand back lets the phone sleep again. Take over stops the stock app's radio service and switches the radio on itself; Exit and Hand back switch it off and give the USB port back. Hand back takes about 20 seconds: it first checks that the bridge chip answers before it switches the stock app back on (the stock app would otherwise try to update the bridge's firmware; if the chip stays silent, restart the phone before opening the stock app). The receive audio comes from the radio's own USB sound card, opened at each reception like the stock app does and kept open for a moment after it, so the end of a transmission (where an APRS packet sits) still reaches the decoders. Now and then the bridge chip stops the sound by itself (during a long reception, or about one reception in ten right at its start); SignalDeck then restarts the bridge, which costs a few seconds of audio, and carries on, so a long SSTV picture can lose a few lines. Sometimes the bridge's reception signal sticks after the radio is switched on; SignalDeck notices receptions from the signal strength instead (a moment later than usual). When two receptions in a row go unreported it restarts the bridge once; if the signal stays stuck, the history asks you to restart the phone, which clears it, and the Device report shows the state. MON on an analog channel opens the sound at once, without waiting for that signal. The caller of a DMR call is read when the call starts and again after it ends, because the bridge cuts the radio's messages short while sound flows. While SignalDeck has the radio it switches on Android's "Disable USB audio routing" (developer options), so Android does not treat the radio as a USB headset, and puts the setting back when it lets go (after a restart too). Hand back warns when /sdcard/intercom/dmr holds firmware files: the stock app loads those into the radio module by itself when it starts. Module firmware shows the module's version but opens no loader: this module is updated through the bridge chip, not the way SignalDeck loads the Armor's. POCSAG pages need the Armor's bench firmware and are not offered. Channels: with none, SignalDeck offers to import the stock app's channels from the area the stock app is on (it has ten areas: Default and regional FRS/PMR lists; channels without a name are named after their area and number); Device → Re-import imports another area. Only channels come over: the stock app keeps no talkgroup lists or contacts SignalDeck uses. Agold's App block (Settings) stops apps a few minutes after the screen goes off and blocks their start at boot, which would cut the radio off: SignalDeck opens App block for itself once when it takes over; switch off Boot blocker, Start blocker and Background cleanup there. Receiving does not heat it: with the radio on and the screen awake the phone settled about 3 °C above idle (processor near 36 °C, battery near 31 °C), the same during a 15-minute reception as after it (2026-10-29).
ANYSECU W6Plus DMR
The W6Plus with DMR (the phone calls itself V69) has the W6+'s body but a DMR radio module of the Atom XL's family (DMR006.U4A), connected straight to the phone. Its profile is untested, so SignalDeck takes the radio only when you choose Take over and does not transmit on it yet. Checked 2026-10-29 for receiving: SignalDeck takes the radio, reads the module, imports the stock app's 128 channels and your DMR ID, plays FM reception through the phone's speaker (the volume keys set it), and the signal meter works; Soft SQ uses its normal levels. Its module is UHF only (400–480 MHz), so what parks on 2 m is not offered. Module firmware shows the module's version but opens no loader: the module keeps the maker's firmware, and POCSAG pages, which need the Armor's bench firmware, are not offered. DMR calls, texts and transmitting are not checked on this phone yet.
Untested profiles
Some phones have a profile written from their stock app and owners' reports that has never run on that phone (the Device page shows "untested" next to the port). On those, SignalDeck does not take over the radio by itself, neither when it opens nor at boot: tap Take over yourself, after making a device report and running the radio probe. If taking over fails, the stock app is switched back on straight away. Transmitting is switched off on these phones until the profile has been tested (the talk key, the side PTT key, packet modes and the web all refuse), so the radio only ever listens. On the Blackview Xplore 1 the app sets the radio's PTT line to receive before it switches the module on, the way the stock app does. The Ulefone Armor 20WT has an untested profile too: its radio is on another serial port than the Armor 26 Ultra's and opened with its own stock app's serial library. The Unihertz Atom XL is tested: see Unihertz Atom XL. The ANYSECU W6+ is tested for receive (2026-10-28), so SignalDeck takes its radio over by itself like a supported phone; its transmit was confirmed on the air the same day, so it transmits like a supported phone too. It has a different radio altogether: an analog UHF module (400–470 MHz, no DMR) that SignalDeck drives with its own text commands. On it SignalDeck offers the stock app's 128 channels when it first takes over, tunes, sets the tone (including the stock 62.5 Hz) and squelch, and hears the radio through the phone's camcorder input, so recording, captions and the decoders work; SignalDeck plays the radio itself, as on the other phones (the module's own speaker path stays off and the module's volume stays fixed), so the volume keys set the loudness and Soft SQ, the volume and muting act on what you hear; the sound comes a fraction of a second after the signal. Soft SQ uses its own thresholds on this phone (its receive audio is quieter above 3 kHz than the Armor's): level 1 lets barely readable signals through, level 9 only clean ones, static never opens it. The W6+'s audio cannot carry sub-audible tones, so on a channel with a receive tone Soft SQ keeps the module's squelch at 1 and the module checks the tone; without a tone the module's squelch is held open and Soft SQ alone decides. While Soft SQ is on, the channel's Squelch level is not used. Data modes (SSTV, FT8, M17) on the W6+ keep the radio's own squelch at the channel's level (at least 1): with its squelch fully open this radio decodes APRS worse. Its module gives no signal readings, so the S-meter stays dark. On a radio without DMR the Contacts and Messages tabs (DMR contacts and texts) are hidden, every channel is analog (the channel type, the Relay setting and the Analog/DMR filters are not shown; Nearby repeaters lists only FM repeaters the radio can tune, a DMR + FM repeater is added as its FM channel, and imported DMR channels are left out), and Module firmware shows the module's version but opens no loader. SignalDeck Web hides the same: its Messages and Contacts pages, the Analog/DMR filters, the channel type and the DMR log mode.