rtlsdrjs
v0.0.0
Published
Turn your Realtek RTL2832U based device into an SDR receiver using JavaScript
Downloads
16
Maintainers
Readme
📡 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