13. Feasibility Assessment (ART 0530)
13.1 Feasibility Summary
| Dimension |
Assessment |
Explanation |
| CAT control feasibility |
High |
Full FT-710 CAT command set implemented and tested via pyserial |
| Spectrum feasibility |
High |
Dual-mode: FT4222 real FFT + S-meter fallback both working |
| RX audio feasibility |
High |
PyAudio capture → Opus encode → WS broadcast → browser playback |
| TX audio feasibility |
High |
Browser mic → Opus encode → WS → decode → PyAudio → radio |
| Mobile feasibility |
Medium-High |
Responsive UI; iOS requires HTTPS for mic (reverse proxy) |
| Operational feasibility |
High |
Single-process server, start/stop scripts, PID file management |
| Product completeness |
High |
All core features (control, audio, spectrum, meters, memories) implemented |
13.2 Risks
| ID |
Risk |
Probability |
Impact |
Mitigation |
| R1 |
Serial port not found or wrong port |
Medium |
High |
Log available ports; env var configuration; clear error messages |
| R2 |
FT4222 scope not available |
Medium |
Medium |
Automatic S-meter fallback; scope_pipe exits gracefully |
| R3 |
PyAudio device not matching FT-710 |
Low-Medium |
Medium |
Name-based auto-detection; device list logging; fallback to system default |
| R4 |
TX release command lost |
Low |
Critical |
TX-status poll (500ms) + browser watchdog, dead-man switch, unload beacon |
| R5 |
Opus library not available |
Low |
Medium |
Graceful PCM fallback on server and browser |
| R6 |
Audio device contention |
Low |
Medium |
PyAudio opens/closes streams on demand; only one TX stream at a time |
| R7 |
scope_pipe subprocess crash |
Low-Medium |
Low |
Server continues; falls back to S-meter spectrum; pipe exit handled in finally block |
| R8 |
Stale frontend assets |
Low |
Medium |
Service worker bypasses JS/HTML; version query strings |
13.3 Assumptions
| ID |
Assumption |
Confidence |
Validation |
| A1 |
FT-710 connected via USB with Enhanced COM Port at 38400 baud |
High |
CAT ID; response |
| A2 |
FT-710 USB audio device recognized by OS |
High |
PyAudio device enumeration |
| A3 |
libopus available on server (Homebrew opus package) |
Medium-High |
ctypes find_library(“opus”) |
| A4 |
FTDI libraries in lib/ match OS architecture |
Medium |
scope_pipe startup log |
| A5 |
Browser supports WebSocket, Web Audio, Canvas |
High |
Modern browsers |
| A6 |
libft4222.dylib from wfview app bundle for correct version |
Medium |
scope_pipe SPI read success |
13.4 Current Issues
| ID |
Issue |
Priority |
Status |
Resolution Path |
| I1 |
iOS Safari requires HTTPS for getUserMedia (mic access) |
Medium |
Open |
Use TLS reverse proxy (nginx) or connect via HTTPS |
| I2 |
PyAudio device index not configurable via env var |
Low |
Open |
Add FT710_AUDIO_IN_DEVICE / FT710_AUDIO_OUT_DEVICE env vars |
| I3 |
No per-band TX power control (FT-710 uses hardware power setting) |
Low |
N/A |
FT-710 has hardware RF POWER knob; CAT PC; command sets power globally |
| I4 |
No ATR-1000 / external tuner support |
Low |
Future |
Could add via second serial port |
| I5 |
No digital mode support (CW decoder, FT8, RTTY) |
Low |
Future |
Specialized DSP/packet decode needed |
| I6 |
No multi-client control arbitration — concurrent browsers can issue conflicting PTT/frequency commands (last-writer-wins) |
Medium |
Open |
Define arbitration rules (e.g., single-controller lock or role-based gating) |
| I7 |
mem_channels.json POST has no schema validation or backup |
Low |
Open |
Server-side payload validation; keep .bak copy before overwrite |
13.5 Dependencies
| ID |
Dependency |
Type |
Status |
| D1 |
Python 3.12+ |
Runtime |
Required |
| D2 |
FastAPI + Uvicorn |
Runtime |
Required (pip) |
| D3 |
pyserial |
Runtime |
Required (pip) |
| D4 |
PyAudio |
Runtime audio |
Required for audio (pip + portaudio) |
| D5 |
NumPy |
Runtime/DSP |
Required (pip) |
| D6 |
libopus |
Optional codec |
Optional (brew install opus / apt install libopus0) |
| D7 |
libft4222 + libftd2xx |
Optional scope |
Required for real FT4222 spectrum |
| D8 |
FT-710 + USB cable |
Hardware |
Required |
| D9 |
Browser WebSocket/Web Audio/Canvas |
Client |
Required |
13.6 Feasibility Conclusion
MRRC FT-710 is fully feasible and production-ready for remote FT-710 operation. All core capabilities — CAT control, bidirectional audio with Opus compression, real-time spectrum waterfall (dual-mode), multi-meter telemetry, memory channels, session authentication, and comprehensive PTT safety — are implemented and verified. The primary operational constraint is iOS requiring HTTPS for microphone access, solvable with a TLS reverse proxy. FT4222 scope requires specific library setup but degrades gracefully to S-meter fallback.