Turn your Beagle into a web-accessible shortwave receiver and software-defined GPS
C C++ JavaScript CSS Verilog Assembly Other
Permalink
Failed to load latest commit information.
arch/sitara hoist contents of code subdirectory up one level Apr 19, 2016
e_cpu timestamp audio IQ samples Jan 28, 2017
extensions release v1.56: fixes for new WSPR decoder Feb 22, 2017
gps timestamp audio IQ samples Jan 28, 2017
pkgs allow lookup of two level names Jan 10, 2017
platform/beaglebone_black update the dump statistics Jan 17, 2017
pru hoist contents of code subdirectory up one level Apr 19, 2016
rx no inactivity timeout on local connections Feb 21, 2017
support reduce WF BRAM usage from 8/0 to 7/1 Jan 30, 2017
tools make compatible with sh or bash Jan 24, 2017
ui convert to new kstr_*() string package Feb 5, 2017
unix_env add some apt/dpkg aliases Jan 24, 2017
verilog reduce WF BRAM usage from 8/0 to 7/1 Jan 30, 2017
web kiwi_gc_recv only defined in openwebrx.js Feb 25, 2017
KiwiSDR.bit reduce WF BRAM usage from 8/0 to 7/1 Jan 30, 2017
Makefile release v1.58 Feb 25, 2017
README.md add links to bug/wish list, github commits Oct 26, 2016
_COPYRIGHT start of STANAG 4285 decoder extension Aug 10, 2016
_LICENSE hoist contents of code subdirectory up one level Apr 19, 2016
cfg.c continue if kiwi.config/dx.json parse fails Feb 5, 2017
cfg.h continue if kiwi.config/dx.json parse fails Feb 5, 2017
config.h MALLOC_MAX >= PHOTO_UPLOAD_MAX_SIZE! Dec 28, 2016
dx.c continue if kiwi.config/dx.json parse fails Feb 5, 2017
dx.h Account for NBFM mode in the dx list Oct 4, 2016
fpga.c add SPI_RFI_TEST option Jan 24, 2017
g now symlink to 'k' script May 31, 2016
k new script 'n': run with sdr & gps disabled Jul 19, 2016
kiwi Now a symlink to 'k' script like the others Jun 6, 2016
kiwi.config update WF_2CIC mode for 8k CIC decimation Jan 24, 2017
kiwi.h pass URL debug argument to server Jan 21, 2017
main.cpp eeprom_update() add more checking Dec 18, 2016
n new script 'n': run with sdr & gps disabled Jul 19, 2016
net.c reminder need to deal with IPv4LL issue Feb 5, 2017
net.h reminder need to deal with IPv4LL issue Feb 5, 2017
ng now symlink to 'k' script May 31, 2016
stats.c TaskSleep(n) => TaskSleepMsec/Usec(n) Jan 2, 2017
str.c convert to new kstr_*() string package Feb 5, 2017
str.h convert to new kstr_*() string package Feb 5, 2017
types.h reduce WF BRAM usage from 8/0 to 7/1 Jan 30, 2017
up add script to update to latest version Dec 19, 2016
update.cpp fix bug in admin update status check Jan 4, 2017

README.md

[updated 27-October-2016]

KiwiSDR

Click image for full size.

KiwiSDR© bluebison.net

KiwiSDR

Software-defined Radio (SDR) and GPS for the BeagleBone Black

An add-on board ("cape") that turns your Beagle into a web-accessible shortwave receiver.

Note: the KiwiSDR PCB design has moved to a separate repository called KiwiSDR_PCB.

Kickstarter

KiwiSDR had a successful Kickstarter.

Details

Description

This SDR is a bit different. It has a web interface that can be used by up to four separate listeners. Each one listening and tuning an independent frequency simultaneously. See the screenshots below.

Components

  • SDR covering the 10 kHz to 30 MHz (VLF-HF) spectrum.
  • Web interface based on OpenWebRX from András Retzler, HA7ILM.
  • Integrated software-defined GPS receiver from Andrew Holme's Homemade GPS Receiver.
  • LTC 14-bit 65 MHz ADC.
  • Xilinx Artix-7 A35 FPGA.
  • Skyworks SE4150L GPS front-end.

Features

  • 100% Open Source / Open Hardware.
  • Includes VLF-HF active antenna and associated power injector PCBs.
  • Browser-based interface allowing multiple simultaneous user web connections (currently 4).
  • Each connection tunes an independent receiver channel over the entire spectrum.
  • Waterfall tunes independently of audio and includes zooming and panning.
  • Multi-channel, parallel DDC design using bit-width optimized CIC filters.
  • Good performance at VLF/LF since I personally spend time monitoring those frequencies.
  • Automatic frequency calibration via received GPS timing.
  • Easy hardware and software setup. Browser-based configuration interface.

Status

Give the live receivers a try at the links above. You'll need a recent version of a modern web browser that supports HTML5. The web interface works, with lots of problems, on iPad. But there is no mobile version of the interface yet.

The files of a KiCAD PCB layout of the cape are available. This PCB has been fabricated in production quantities and shipped to over 350 customers. Please email me any comments you have after reviewing the design document above (I need all the advice I can get). The active antenna and injector PCBs have been fabricated and are undergoing development.

Objectives

I wanted to design an SDR that provides certain features, at a low price point, that I felt wasn't covered by current devices. The SDR must be web-accessible and simple to setup and use.

I also want to provide a self-contained platform for experimentation with SDR and GPS techniques. In this respect the project has a lot in common with the recent HackRF and BladeRF Kickstarter projects.

Most importantly, I'd really like to see a significant number of web-enabled, wide-band SDRs deployed in diverse locations world-wide because that makes possible some really interesting applications and experiments.

Operation

The user will be required to purchase the Beagle, plug the SDR into the cape connectors, install a couple of software packages and open up an incoming port through whatever Internet router may exist. An antenna solution must also be provided although the included active antenna should help in this regard. A $10 GPS puck antenna will work fine. An adequate power supply to the Beagle (e.g. 5V @ 2A) will be required.

Four channels of audio and waterfall streamed over the Internet 24/7 requires about 30 GB per month. This is a common cap for many residential broadband plans. An automatic dynamic-DNS system is already part of the software so a web link to the SDR is immediately available with no configuration. Of course the system can be configured to only allow connections from the local network and ignore Internet connection requests.

Web interface screenshots

Click images for full size.

View of entire 0-30 MHz range:

Moderate zoom of medium-wave broadcast band with spectrum display on top enabled:

Over-the-horizon-radar (OTHR) from Cyprus showing short-term ionospheric fluctuations:

VLF/LF reception in New Zealand

kHz Station Location Signal
12.88 Alpha Khabarovsk & Novosibirsk Russia Navigation system
17.0 VTX2 India MSK comms
19.8 NWC Australia MSK comms
21.4 NPM Hawaii MSK comms
22.2 NDT/JJI Japan MSK comms
24.1 (UNID) Korea, per David L Wilson FSK comms
40.0 JJY Japan Time signal
45.9 NSY Italy MSK comms
54.0 NDI Japan MSK comms
60.0 JJY/WWVB Japan, USA Time signals
68.5 BPC China Time signal

Many others heard during different times and conditions.

[end-of-document]