📡 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; { // // 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; // // 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; // // set sample rate and center frequency in Hz // - returns the actual values set // const actualSampleRate = await sdr; const actualCenterFrequency = await sdr; // // reset the buffer // await sdr; while readSamples // // read some samples // - returns an ArrayBuffer with the specified number of samples, // data is interleaved in IQ format // const samples = await sdr; // // 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