5 CubicSDR Roadmap and Ideas
David Albert edited this page 2017-12-18 17:44:33 -05:00

CubicSDR Roadmap

These are some of the current ideas, goals and achievements for CubicSDR to date. As advanced goals become possible they'll be moved into the active queue and issues will be created.

Active Feature Goals and Status:

  • Simple UI
  • Devices
    • SoapySDR Device support (known working checked)
      • SoapySDRPlay for SDRPlay (Maintained by C.J.)
      • SoapyRTLSDR for RTL-SDR (Maintained by C.J.)
      • SoapyHackRF for HackRF
      • SoapyBladeRF for BladeRF
      • SoapyUHD for Ettus USRP
      • SoapyRemote, use any SoapySDR Device via network (works on Pi)
      • SoapyAirSpy (Maintained by C.J.)
      • SoapyAudio (Maintained by C.J.)
      • SoapyOsmo for GrOsmoSDR devices
        • OsmoSDR
        • MiriSDR
        • RFSpace
  • Basic Features
    • Device Selection
    • Bandwidth
    • Color scheme
    • Load/Save session
    • Audio sample rate
    • Device PPM
    • Waterfall speed
    • Spectrum average speed
    • Gain Controls
    • Bookmarks
    • History
    • Default preferences
      • Audio defaults
      • Device defaults
    • Run any device as rtl_tcp server and visualize control
  • Neat Visuals
    • 2D visuals
      • Y Scope
      • Spectrum
      • Waterfall
      • Add faint grid for sense of scale
      • Audio Spectrum
      • X/Y Scope
      • Indicate outer spectrum edges when zoomed
    • 3D visuals
      • I/Q helix
  • Demodulation:
    • Basic modular expansion
    • Multiple demodulators per IQ stream
    • Audio device selection
    • Modes
      • FM
      • FM stereo
      • AM
      • LSB
      • USB
      • DSB
      • I/Q
      • CW
    • Controls
      • Display Frequency and allow manual adjustments
      • Allow selection of demodulation type
      • Display separate zoomed-in view of current waterfall and spectrum, allow adjustments
      • Display signal level and allow squelch control
      • Display audio output selection
      • Volume control
      • Direct frequency input
      • Mute
  • Basic Input Controls
    • Drag spectrum to change center frequency
    • Hold shift and click on waterfall to create a new demodulator
    • Clicking waterfall adds new demodulator when none visible
    • Drag center of demodulator on waterfall to change frequency
    • Drag edge of demodulator on waterfall to change bandwidth
    • Double-Click to move demodulator to frequency within it's current range
    • Hold alt and drag range on waterfall to set demodulator frequency + bandwidth
    • Hold alt+shift and drag range on waterfall for a new demodulator
    • Hover demodulator on waterfall and press 'space' to toggle stereo
    • Hover demodulator on waterfall and press 'd' or 'delete' to delete it
    • Keyboard arrows adjust frequency, shift for faster change
    • Undo / Redo action
  • I/Q Recording and playback
    • Recording
      • Record waterfall output to PNG file chunks of desired height
      • Record I/Q input data
      • Simultaneously record demod decimated I/Q and audio
    • Playback
  • Audio
    • Recording
  • Implement digital demodulation supported by liquid-dsp: (http://liquidsdr.org/doc/modem.html)
    • Demodulator Lab
      • Demodulator I/Q input filtering
      • Audio output filtering
      • Toggle current demodulator exclusively into "Lab" mode
        • Additional visualizations for audio and I/Q stream
          • Audio Spectrum
          • Constellation / X-Y Scope
        • Digital demodulation status and controls
        • Demodulator AGC, Equalization controls
          • Lock AGC and Equalization when digital lock obtained
        • Digital output
          • Output console
          • Capture file (auto?)
          • Network output
          • Block device output
    • Digital modes available to implement
      • PSK
      • DPSK
      • ASK
      • QAM
      • APSK
      • BPSK
      • QPSK
      • OOK
      • SQAM
      • Star Modem
      • MFSK
      • CPFSK
  • Optimization
    • Eliminate large waterfall texture uploads
    • Update visuals to OpenGL 3.x / OpenGL ES
    • Resolve constant refresh on visuals that don't change often
    • Resolve all driver/platform vertical sync issues
    • Group and divide IQ data distribution workload instead of 100% distribution per instance
  • Test Equipment Mode
    • Wideband sweeps (e.g. sweep 20MHz by iteratively sweeping 2MHz)
    • Store calibration data to allow accurate RF power measurement

Advanced Goals and ideas:

  • Design a plan for expansion via modules (dylib/dll/lua)
  • Support shell-based stdin/stdout tools for direct output/playback to/from CLI audio processing apps (i.e. DSD on OSX)
  • Update visuals to support OpenGL ES
  • Basic demodulator filter(s) that can be enabled and tweaked visually
  • Support multiple simultaneous device usage
    • Categorize devices by antenna connections
    • Allow locked frequencies to activate unused devices to continue demodulation on same antenna
  • Integrate LUA
    • Expose liquid-dsp functionality
    • Scriptable liquid-dsp demodulation
    • Scriptable digital demodulation output handlers
      • Create block output devices on *nix?
      • Create socket outputs?
      • Visual outputs?
    • Take control of additional devices and spawning new demodulators (i.e. trunkers)
    • Script manager / live editor
    • Provide scriptable liquid-dsp modulation for transceivers?
    • Allow scripts to launch/run headless (no UI)
  • "PVR" like mode with waterfall time shifting
  • L/R and surround-sound balance settings for separating and listening to mono streams
  • Add tool for converting decimated I/Q recording to video
    • Select video features such as title/demodulation/scope/waterfall/etc.
    • Render to video from GL frames->ffmpeg/mencoder /w demodulated audio
  • Accessibility / Control
    • USB/MIDI control surfaces
    • Joystick / gamepad input
    • Vibration / force-feeback
  • Investigate compilation via emscripten using SoapyRemote for input
    • Create web server+SoapyRemote bundle for embedded devices
    • Use emscripten compiled CubicSDR via embedded web server