DJ0MZ N01


QPMRpanCATweb: web app software specifically for Q900 and PMR-171 radios

This experimental Web App prototype provides combined Panadapter and CAT functions for the GuoHeTec TRX Q900 and PMR-171. See Installation below. The WebAudio and WebSerial environment is quite fragile, so expect the unexpected, such as panadapter and / or CAT control freezing.

If you are comfortable with HTML+JS coding, feel free to adapt the code for your needs. For coding assistance, an LLM such as Claude, DeepSeek or ChatGPT is your friend.

The app features several tuning, memory, DSP filtering and theme options, including:


Disclaimer

The web app is experimental, bugs are expected and no fitness for purpose or warranty is implied. Use of the CAT protocol is limited (not much readback) and sensitivity to RFI is high. Its application so far has been limited to desktop Linux and CW use cases. See the QuickStart document. The app was originally developed for my personal use cases (HF, CW, SWL) because the button panel failed on my PMR-171; this seemed like a hardware issue, but it turned out to be a wrong bit set during a FW installation, and the app cured this via USB (but I still enjoy using the app). The app may or may not work for other use cases.


Usage

The file can be used from the original server, or save the HTML+JS file and run in the HTML space of your own server, for example http://localhost, or a local HTTPS server. It will only work with a Chromium-based browser such as Chrome (also with Chromebooks) or Edge (not Firefox or Safari). It will not work as a standalone file outside the HTML space of the server.

The software is open source, but if you modify it, acknowledgement of "Dafydd, DJ0MZ" as original developer would be appreciated.


Development

Comments, bug reports and suggestions are welcome! Patience is requested for treatment of bugs.


Download

PanCAT


Installation

  1. Check that you are using a data cable and use the PMR USB-C port; I guess you are.
  2. Put ferrite clips on all cables (USB, power, phones, key, antenna etc.) both at the computer end and at the radio end.
  3. Close Bluetooth on your computer while starting the app ("Choose Port" -> "Open CAT") in order to avoid coupling conflicts. If only the panadapter works, very likely the radio has coupled with your Bluetooth, because Bluetooth supports audio but not WebSerial, which the app requires.
  4. Under Linux the app only works with newer Chrome, preferably the current Chrome .deb, because Chrome supports both WebAudio and WebSerial. On Windows, Edge should also be usable as it is Chromium-based. Firefox and other browsers do not have this.
  5. It only works under a web server, so it works directly from my link, or if you downloaded it, put it in your localhost HTML space.
  6. Try: sudo usermod -a -G dialout $YOURUSERNAME
  7. Try: sudo systemctl stop ModemManager.
  8. Check lsusb to see if the PRM is there. Or unplug the cable, run dmesg -w, plug in and see if the PMR appears.

Quirks / Bugs

  1. Please help development by reporting bugs and other issues to dj0mz@darc.de /li>
  2. A quirk that sometimes appears on startup is that the RX mutes. If this happens, either change an audio value to restore audio (volume, NR, NB) or if you have an antenna or dummy load attached, click PTT hold. This is because the radio interprets USB startup commands as "Transmit!", which the software has to combat.
  3. There is a panadapter quirk which I have not been able to solve: on startup (and sometimes after transmission) the panadapter goes on strike. Sometimes this can be cured with the "Force I/Q" setting. If not, make a completely fresh clean start: Exit the browswer, power cycle the radio and start again. Sorry about this one.
  4. On transmission the panadapter quits and may or may not restart. If no restart, close and open the panadapter. If still no restart, close both panadapter and CAT and reload the page, then restart both. This does not affect an ongoing QSO and can be corrected between QSOs.

Tools


Change log

2025-10-19V0.01for testing.
V0.02mod of click-to-tune.
2025-10-22V0.03 RX mute on startup dealt with.
2025-10-22V0.04 RX mute on startup further hardened.
2025-10-23V0.051. RX mute bug solved: DTR/RTS was interpreted by the radio as Transmit signal, therefore this had to be blocked immediately with a PTT off signal.
2. Audio-I/Q USB bug resolved: diagnostic sniffer developed for getting information which is missing in the manual (see "Tools"). Bug description (ChatGPT5(: "On some USB-CDC implementations (including Chrome's Web Serial on certain OS stacks), when you call port.open(...) the host implicitly asserts DTR (and sometimes RTS). A few radios treat asserted DTR/RTS as a key/PTT or CW-key line. Result: the rig blips into TX right at open - even before you send any CAT."
2025-11-09V0.06Added ATU on/off and ATU scan buttons. Removed legacy code. Included audio presence check but still very RFI sensitive via USB cable.
2025-11-14V0.07Added 1. right-click mouse option for activating mouse wheel frequency changer, 2. keyboard ENTER for Send target frequency.
Problem: tx activity disrupts panadapter (may reset I/Q signal to Sound).V0.06 solution did not work. New solution: added a sniffer heuristic to detect Sound vs. I/Q audio status, and if not I/Q operate the "Panadapter Stream Toggle" to return to I/Q panadapter display.


Web App Security Notice

This web app communicates directly with your radio hardware through Web Serial and may use your microphone for signal analysis. It runs entirely in your browser. No data are uploaded or shared but several browser-level permissions and security factors are important to understand.

Possible Risks

  1. Browser Permissions: When the app requests access to a serial port or microphone, it must be granted by you. If you allow access to the wrong device or site, another page from the same origin could re-use that permission.
  2. Third-party Scripts or Extensions: Malicious extensions or injected scripts could read or modify the page, including serial data.
  3. Public Hosting: If this page is hosted on an open or shared domain, other users could potentially inject or link content that inherits the same permissions and local storage. Recommendation: Download and run on your own server, e.g. localhost.
  4. Accidental Device Control: Any granted serial connection allows the page to send commands to your device. Always verify that the connected port belongs to your transceiver.

How to Stay Safe

This app is designed for direct local control and signal visualization. It never sends CAT data, audio, or settings over the internet. Keeping it on your own machine or trusted server ensures your radio stays secure.

Security note post-edited from a ChatGPT5 summary. DJ0MZ


Dafydd Gibbon, updated 2025-10-27, DJ0MZ@DARC.DE