0.0.0 • Published 8 years ago
rtlsdrjs v0.0.0
📡 rtlsdr.js
Turn your Realtek RTL2832U based device into an SDR (Software Defined Radio) receiver using JavaScript.
Supports Node.js and WebUSB compatible browsers.
Requirements
Hardware
- Realtek RTL2832U based USB adapter with R820T tuner chip
 
Software
- Node.js 8.x or later + node-usb requirements
 - Web browser that supports WebUSB
 
Setup
Node.js
Install: npm i rtlsdrjs
Require: const RtlSdr = require('rtlsdrjs');
Browser
Download a rtlsdr.js build from a release.
Include rtlsdr.js in you HTML page: <script src="path/of/rtlsdr.js"></script>
Usage
let readSamples = true;
async function start() {
  //
  // request a device
  // - displays prompt in browser
  // - selects first device in Node.js
  //
  // RtlSdr.getDevices() can be used to get a list of all RTL SDR's attached to system
  //
  const sdr = await RtlSdr.requestDevice();
  //
  // open the device
  //
  // supported options are:
  // - ppm: frequency correction factor, in parts per million (defaults to 0)
  // - gain: optional gain in dB, auto gain is used if not specified
  //
  await sdr.open({
    ppm: 0.5
  });
  //
  // set sample rate and center frequency in Hz
  // - returns the actual values set
  //
  const actualSampleRate = await sdr.setSampleRate(2000000);
  const actualCenterFrequency = await sdr.setCenterFrequency(1090000000);
  //
  // reset the buffer
  //
  await sdr.resetBuffer();
  while (readSamples) {
    //
    // read some samples
    // - returns an ArrayBuffer with the specified number of samples,
    //   data is interleaved in IQ format
    //
    const samples = await sdr.readSamples(16 * 16384);
    //
    // process the samples ...
    //
  }
}Acknowledgements
This library is based on Jacobo Tarrío's (@jtarrio) work in Google's Radio Receiver Chrome app, which used work from the RTL-SDR project. The Chrome USB API layer has been replaced with node-usb on Node.js and WebUSB when running in the browser.
License
Apache 2.0
0.0.0
8 years ago