v1.0 Β· Now Available

Your SunSDR2 DX
in Your Pocket

Native iOS SwiftUI app for remote control of the SunSDR2 DX transceiver. Real-time spectrum waterfall, low-latency audio, DSP noise reduction, one-touch PTT β€” a complete replacement for the web frontend.

Complete Transceiver Control

From spectrum waterfall to DSP noise reduction, channel presets to PTT β€” every feature is thoughtfully designed and optimized for iPhone touch interaction.

Real-Time Spectrum Waterfall

512-bin FFT real-time spectrum with web-matching colour ramp. Adaptive noise floor with configurable gain/bias contrast stretching.

  • Dynamic frequency scale (39k/78k/156k/312k IQ bandwidth)
  • Tap-to-tune on waterfall
  • 5-frame accumulation + 10fps throttle, zero main-thread overhead

Low-Latency Audio

RX: Int16 PCM 48kHz playback via AVAudioPlayerNode. TX: Microphone capture → downsample (48k→16k) → Int16 PCM → WebSocket.

  • RX 48kHz high-fidelity audio playback
  • TX 16kHz mono capture
  • Real-time RMS level meter
  • One-tap mute

Frequency & Mode Control

Large 56pt monospaced frequency display, step tuning, 12 amateur band presets, six modes: USB/LSB/CW/AM/FM/WFM.

  • 56pt digit frequency display, tap-to-enter in kHz
  • 5 step sizes: 1K/5K/10K/50K/100K
  • 12 band presets from 160m to 2m
  • CW/SSB/Wide/AM/FM filter presets

DSP Noise Reduction Panel

Complete WDSP digital signal processing control: NR2 noise reduction, NB noise blanker, ANF automatic notch filter, AGC automatic gain control.

  • NR2 noise reduction + level control + meter
  • NB / ANF / NF independent toggles
  • AGC: Off / Slow / Medium / Fast
  • Manual notch list (add/delete)

Channel Memory

3Γ—3 grid of frequency presets, always visible. Tap any cell to instantly tune frequency + mode. Empty slots show placeholder, ready for quick-save.

  • 9 channel slots in 3Γ—3 grid layout
  • Persisted via UserDefaults JSON
  • Swipe-to-delete, quick-save
  • One-tap frequency + mode tuning

System Settings

Server host configuration, IQ sample rate selector (39k/78k/156k/312k), Keychain auto-login, connection status diagnostics.

  • 4 IQ sample rate options
  • Keychain secure credential storage
  • 4 WebSocket connection status indicators
  • Favorites management with swipe-delete

Precision Engineering

4 WebSocket connections, zero external dependencies, built entirely on Apple frameworks.

SunsdrMobile iOS App SwiftUI Β· Combine AVAudioEngine sunmrrc Server FastAPI / Python radio.vlsc.net:8889 192.168.16.100 SunSDR2 DX 192.168.16.200 Port 50001/50002 HTTPS / WSS 4 WebSocket links UDP /WSCTRX Bidirectional Β· cmd:val /WSaudioRX ↓ Binary Β· PCM/Opus /WSaudioTX ↑ Binary Β· PCM /WSspectrum ↓ Binary Β· 512 uint8
Bidirectional Text
/WSCTRX
Bidirectional
cmd:val protocol β€” freq, mode, PTT, DSP
Downstream Binary
/WSaudioRX
Server β†’ Client
1B codec tag + Int16 PCM / Opus
Upstream Binary
/WSaudioTX
Client β†’ Server
Int16 PCM 16kHz mono
Downstream Binary
/WSspectrum
Server β†’ Client
512 Γ— uint8 dB (0=-120dB, 255=0dB)

Designed for iPhone Touch

Every pixel carefully laid out β€” the optimal balance of information density and ease of operation.

☰ CTRL RX TX FFT USB S7 23ms ⏻ β—€ 14.074.000 β–Ά 20m β–Ό 1K β–Ό S-meter S7 -30k -20k -10k 14.074 +10k +20k +30k πŸ”Š 45 AF RF SQL β—€ USB β–Ά β—€ SSB β–Ά 20m 14.074 40m 7.074 --- --.--- --- --.--- 10m 28.074 --- --.--- --- --.--- --- --.--- --- --.--- TX HeaderView 56pt Display WaterfallView 3Γ—3 Grid 96pt PTT

Main RX Screen

Spectrum waterfall + S-meter + audio level + gain sliders + mode selection + favorites grid + PTT

SMeterViewWaterfallView ModeSelectorFavoritesGrid PTTButtonGainSlider

DSP Panel

WDSP master toggle, NR2 noise reduction (with level meter and intensity slider), NB/ANF/NF toggles, AGC mode selection, manual notch management

NotchChartViewNR2 Card AGC ButtonGroupNotch List

Settings

Quick-save, favorites management (swipe-delete), server config + reconnect, connection status diagnostics, IQ sample rate selector

Quick SaveFavorites List Server ConfigStatusLine

Zero Main-Thread Burden

All heavy computation runs on background threads, ensuring smooth 60fps scrolling.

50%
Frame Skip Rate
Halves dispatch overhead
5Γ—
Frame Accumulation
Reduces waterfall processing frequency
10fps
Waterfall Frame Cap
UIImage update throttling
200KB
Waterfall VRAM
512Γ—100Γ—4 pixel buffer
4
Concurrent WebSockets
URLSessionWebSocketTask
0
Third-Party Dependencies
Pure Apple frameworks

Tech Stack

Swift 5.9 SwiftUI Combine AVFoundation AVAudioEngine URLSessionWebSocketTask CGImage / UIKit Keychain UserDefaults XcodeGen iOS 17+

Up and Running in 5 Minutes

Clone, generate the Xcode project, build, connect β€” just four steps.

Clone the Repository

Get the latest code from GitHub

git clone https://github.com/cheenle/SunsdrMobile.git

Generate Xcode Project

Use XcodeGen to generate .xcodeproj from project.yml

cd SunsdrMobile && xcodegen generate

Build & Run

Open the project in Xcode, select your iPhone, and press Cmd+R

open SunsdrMobile.xcodeproj

Connect to Your Radio

Enter your server address and password β€” auto-login via Keychain establishes all 4 WebSocket connections

radio.vlsc.net:8889 β†’ Keychain
View on GitHub

Runtime Environment

iOS 17.0+ Xcode 15.0+ Swift 5.9 Physical iPhone sunmrrc v3.4+ Self-Signed TLS Cert

The simulator lacks full AVAudioEngine microphone support β€” a physical iPhone device is required