⚠ This browser doesn't expose Web Serial and/or WebHID. Use a Chromium-based desktop browser (Chrome, Edge, Opera) over HTTPS to connect real hardware. The waterfall display and image-to-audio tools still work without it.
Connections
Close other CAT/audio apps first — only one program can hold the port at a time.
VFO
——.———.——
MODE —RX
Mode
Current modeunknown
Digits shown as MHz.kHz.tens‑Hz. Scroll over a digit to tune it directly.
Bands jump to the lower edge — verify against your own licence before TX.
Saved frequencies
Add manually
Click a saved entry to jump to it — sets frequency and mode if CAT is connected. Stored in this browser only.
Spectrum & waterfall — receive● TRANSMITTING
2400 Hz span
VOL
FPS0
FFT—
SPAN—
NET—
LINKS0/3
AUDIO—
Plays RX audio through the device set in Settings → Audio → Monitor speaker.
Antenna tuner, PTT & TX
ATU (built‑in tuner)
Statusidle
Briefly transmits — confirm antenna/dummy load + low power first.
Constant carrier: unmodulated tone, auto-cuts off (timeout in Settings). Low power only.
PTT & drive
If you minimise or switch away from this tab mid‑transmission it's now stopped automatically. Use this if a transmission ever seems to carry over or overlap with the next one.
TX audio level0%
Dense images read louder to the rig — if RX looks like a solid block, turn drive down and watch ALC stay near zero.
Extra PTT hold after audio ends, so the image tail doesn't clip.
Transmit
Click or drop a photo — it will be rendered into the waterfall as it transmits.
No image loaded.
Renders as a picture in a receiving waterfall. Slower speed = sharper detail. More encode options below.
Dense images read louder to the rig — if RX looks like a solid block, turn TX mic gain down, not up, and watch the G90's ALC stay near zero.
Encode settings
Time columns — more = sharper time detail, longer transmission. Frequency rows — more = finer left-right detail, but each tone gets less passband.
≈ Hz per bin — sets how many distinct rows can actually be resolved as separate tones.
Real waterfalls display signal level on a dB (logarithmic) scale, not a linear one. With this on, pixel brightness is encoded so the received tones line up with that scale instead of every mid-tone looking almost as bright as white.
How many dB separate pure black from pure white. Should roughly match (Ceiling − Floor) in Settings → Waterfall display for accurate contrast on receive.
Higher = tones switch more crisply between columns (sharper left-right detail, more clicky); lower = tones blend smoothly into the next column (softer, quieter transitions).
Flips apply to the transmission only — the preview thumbnail stays as-loaded.
Bright pixels = "on" tones. Auto-ticked for light-background photos; override if it looks backwards.
Estimated transmit time: ~12.6 s
Mic input level0%
Keys the rig exactly like the main PTT button in the left panel — release to unkey. Shares the same DE‑19 audio-out path as image TX, so connect DE‑19 audio (left panel) first.
Voice needs the rig in a phone mode — set USB/LSB under the Mode section of the VFO panel (left).
Bulk import matches filenames to slots — name files 0.wav … 9.wav, attention.mp3, end.ogg (case-insensitive, any audio format).
Upload a short clip for each digit you plan to use.
Where audio plays while you're just listening (not sending to the radio). Browser voices can't be redirected to a specific device by any web API — they'll always use your OS default output regardless of this setting.
Browser voices can't be captured by this page's audio engine, so only custom audio clips can go out over the air — otherwise this stays local monitor-only, out of the device chosen above. Shares the same DE‑19 audio-out and PTT method as the rest of this app, so connect DE‑19 audio (left panel) first.
STANDBYawaiting traffic
Spectrogram
live analysis of playing audio · scrolls left to right, low freq at bottom · uses the same colour palette as the receive waterfall (Settings)
Click or drop an audio file — MP3, WAV, FLAC, OGG, M4A/AAC, and more (whatever your browser can decode).
No file loaded.
Pitch and speed both work by resampling, so they're linked like a turntable — cranking one nudges the other's perceived effect. There's no independent time-stretch in a page this size.
0 = play once (no repeat) · N = repeat N extra times after the first play · -1 = loop forever (until Stop)
Where Preview plays while you're just listening. Transmit over air always uses the TX output device set in Settings → Audio, regardless of this.
STANDBY
Transmit shares the same DE‑19 audio-out and PTT method as the rest of this app — connect DE‑19 audio (left panel) first. Long or infinite loops still carry the usual dead-man's-switch failsafe in the background; it just won't cut in for a long while.
Transmit
Send — text to Morse
Standard timing (dot = 1 unit, dash = 3, element gap = 1) at 1200/WPM ms per unit, using Character speed for the dots/dashes themselves. Farnsworth spacing stretches only the gaps between letters and words to a slower effective WPM — set it equal to Character speed for standard (non-Farnsworth) timing, or lower to keep individual characters crisp while giving your ear more time between them. Prosigns like <AR>, <SK>, <BT>, <KN>, <AS> are sent as one run-together symbol. Unsupported characters are flagged in the preview above (shown as [x?]) rather than silently dropped. Sent as a keyed audio tone through the DE‑19 path, same as the rest of this app — put the rig in a phone (USB/LSB) mode.
Receive
Receive — decode
Tone level0%
(listening…)
Decodes from whatever DE‑19 audio-in is hearing (fixed-speed decode against the WPM above, not adaptive) — reuses the same receive audio connection as the waterfall, so connect DE‑19 audio (left panel) and it works whether or not the waterfall display itself is running.
Transmit
Send — text to RTTY (Baudot/ITA2)
Space tone 2295 Hz — computed from Mark tone and Shift (Space = Mark + Shift, or Mark − Shift with Reverse ticked below — standard ham RTTY polarity, e.g. the classic 2125/2295 Hz pair). Keep both tones inside the waterfall passband set in Settings → Waterfall display.
5‑bit Baudot/ITA2 encoding, 1 start bit + 5 data bits + stop bits, continuous-phase FSK (carrier never drops between mark and space — just like a real RTTY signal). LTRS/FIGS shift codes are inserted automatically as needed; unsupported characters are skipped. Sent as an audio tone pair through the DE‑19 path — put the rig in a phone (USB/LSB) mode, same as the rest of this app.
170 Hz shift is the near-universal ham RTTY standard — only change Mark/Shift if you know the station or system you're working expects something else.
Receive
Receive — decode
Space tone 2295 Hz — computed from the two settings above.
Tone level0%
(listening…)
Decodes from whatever DE‑19 audio-in is hearing — an async start/stop bit sync against the Baud rate above (not adaptive, so match it to the sending station), reusing the same receive audio connection as the waterfall. Connect DE‑19 audio (left panel) first; works whether or not the waterfall display itself is running. Best results with a strong, steady signal and Mark/Shift set to match what's actually being sent.
Click or drop a photo — encoded as a real SSTV picture, decodable by MMSSTV, QSSTV, Robot36 and any other SSTV app.
No image loaded.
Sent with a standard VIS header (44) at the start, so any SSTV receiver auto-detects the mode — no need to tell the other end what you picked.
Estimated transmit time: ~114.0 s
The photo is cropped and scaled to fill the selected mode's frame — 320×256 for Martin/Scottie, 320×240 for Robot — so a roughly matching aspect ratio crops most naturally. Martin/Scottie send Green/Blue/Red tones directly; Robot sends brightness (Y) at full resolution plus colour difference (R−Y/B−Y) at half horizontal resolution, which is why Robot modes are faster for a similar picture size. All run 1500 Hz (black) to 2300 Hz (full level) per channel, with continuous-phase synthesis so there's no clicking between pixels or lines.
SSTV is a continuous, fairly loud tone for the whole picture (60–115 seconds depending on mode) — same ALC guidance as Image/Text: if RX sounds distorted or the G90's ALC pins, turn TX mic gain down, not up.
Extensions
FSK/RTTY is fully implemented — click it to open the decoder tool window (opens with NAVTEX/SITOR‑B/RTTY presets built in). The rest are placeholders for future extensions, shown the way an unavailable extension appears on a real receiver.
Waterfall display
Default scrolls newest signal to the bottom. Invert to scroll newest to the top instead.
32768 is the browser's hard ceiling for real-time analysis (Web Audio's AnalyserNode caps out there) — there's no way to actually run higher than that, so that's as far as this goes even though the panel used to imply more room above 8192.
Floor/ceiling set the dB window mapped to black→full brightness on the live waterfall — this is what the browser's spectrum analyser uses to turn signal level into colour. It defaults to a wide 70 dB window; narrowing it (e.g. matching the Dynamic range setting under Radio → Transmit → Image / Text → Encode settings) makes transmitted images reproduce with correct contrast instead of washing out. Persistence smooths frame-to-frame flicker — higher trails more, lower shows faster detail.
CAT control
G90 CATs as an IC‑7100 clone — addr 70, controller E0, 19200 baud. Some firmware uses A4 instead; try it if "Read frequency" comes back empty.
The "PA" port is amp-keying output, not a PTT input. If CI‑V PTT doesn't key the rig, try RTS/DTR above.
Disconnect CAT software when done — power-cycling while connected can trigger firmware-update mode.
Audio devices
Requires a Chromium browser. TX output = DE‑19 (carries audio to the radio). Monitor = your speakers/headphones for RX audio. Preview / local playback = your speakers/headphones for the Image and Audio File "Preview" buttons and for the Numbers Station reader when it isn't keying the radio. The headset microphone for Voice TX is picked on the Radio tab's Voice sub-panel.
Test tuning
Appearance / Themes
Advanced — custom colours
Pick colours above, then apply — saved as your custom theme.