CubicSDR/README.md
2015-11-09 19:07:01 -05:00

7.0 KiB

CubicSDR

Cross-Platform Software-Defined Radio Application

Please see the CubicSDR GitHub Wiki for build instructions.

Utilizes:

Features 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 (untested)
      • SoapyRemote, use any SoapySDR Device via network (works on Pi)
      • SoapyAirSpy (WIP by C.J.)
      • SoapyAudio (WIP by C.J.)
      • SoapyOsmo for GrOsmoSDR devices
        • OsmoSDR
        • MiriSDR
        • RFSpace
        • AirSpy
  • 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
    • 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

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

Target Platforms:

  • OSX
  • Windows
  • Linux
  • HTML5

License:

  • GPL