All Projects → vsergeev → Luaradio

vsergeev / Luaradio

Licence: other
A lightweight, embeddable software-defined radio framework built on LuaJIT

Programming Languages

lua
6591 projects

Projects that are alternatives of or similar to Luaradio

quince
a 2.4 GHz SDR neighbor using 1 bit ADC
Stars: ✭ 24 (-95.28%)
Mutual labels:  radio, sdr
vor-python-decoder
Decodes VOR signal from WAV file to get the bearing to your position
Stars: ✭ 33 (-93.52%)
Mutual labels:  radio, sdr
RTLion
Multipurpose RTL-SDR Framework for RTL2832 based DVB-T receivers
Stars: ✭ 88 (-82.71%)
Mutual labels:  radio, sdr
Hackrf
low cost software radio platform
Stars: ✭ 4,286 (+742.04%)
Mutual labels:  radio, sdr
Localradio
📻 LocalRadio is "Radio for Cord-Cutters" – a Software-Defined Radio (SDR) app for your Mac and mobile devices. With an inexpensive RTL-SDR USB device, LocalRadio provides a casual, home-based radio listening experience for your favorite local frequencies - FM broadcasts/free music/news/sports/weather/public safety & aviation scanner/etc.
Stars: ✭ 269 (-47.15%)
Mutual labels:  radio, sdr
RF-List
RFSec tools
Stars: ✭ 98 (-80.75%)
Mutual labels:  radio, sdr
nfc-laboratory
NFC signal and protocol analyzer using SDR receiver
Stars: ✭ 41 (-91.94%)
Mutual labels:  radio, sdr
hdradio
HD Radio SDR Receiver
Stars: ✭ 15 (-97.05%)
Mutual labels:  radio, sdr
cariboulite
CaribouLite turns any 40-pin Raspberry-Pi into a Tx/Rx 6GHz SDR
Stars: ✭ 785 (+54.22%)
Mutual labels:  radio, sdr
Virgo
📡 Virgo: A Versatile Spectrometer for Radio Astronomy
Stars: ✭ 85 (-83.3%)
Mutual labels:  radio, sdr
newsched
The GNU Radio 4.0 Runtime Proof Of Concept
Stars: ✭ 19 (-96.27%)
Mutual labels:  radio, sdr
Rtl Sdr
library for turning a RTL2832 based DVB dongle into a Software DefinedReceiver; mirror from https://git.osmocom.org/rtl-sdr/
Stars: ✭ 336 (-33.99%)
Mutual labels:  radio, sdr
rtlsdr-wsprd
WSPR daemon for RTL receivers
Stars: ✭ 93 (-81.73%)
Mutual labels:  radio, sdr
SDR Matlab OFDM 802.11n
📡 Using Software Designed Radio to transmit MIMO-OFDM QPSK signals at 5 GHz
Stars: ✭ 44 (-91.36%)
Mutual labels:  radio, sdr
yellowShoes
nrsc5 (HD FM) radio player
Stars: ✭ 16 (-96.86%)
Mutual labels:  radio, sdr
FlyDog SDR GPS
Forked from Beagle_SDR_GPS for specialised add-on SDR board with 16-Bit ADC which improved from KiwiSDR.
Stars: ✭ 17 (-96.66%)
Mutual labels:  radio, sdr
urh
Universal Radio Hacker: Investigate Wireless Protocols Like A Boss
Stars: ✭ 9,060 (+1679.96%)
Mutual labels:  radio, sdr
SW-Chinese-received-frequency
主流国际中文电台短波接收频率
Stars: ✭ 46 (-90.96%)
Mutual labels:  radio, sdr
nrsc5-dui
An enhanced, user-friendly version of nrsc5-gui that is not heavily dependent upon Python processing for audio generation.
Stars: ✭ 49 (-90.37%)
Mutual labels:  radio, sdr
Easy Sdr
This project is about creation of affordable and easy-to-manufacture prototypes of PCBs which are used to expand the capabilities of existing low-cost SDR receivers based on RTL2832U chip.
Stars: ✭ 275 (-45.97%)
Mutual labels:  radio, sdr

LuaRadio Build Status GitHub release License Reference Manual Mailing List

LuaRadio is a lightweight, embeddable flow graph signal processing framework for software-defined radio. It provides a suite of source, sink, and processing blocks, with a simple API for defining flow graphs, running flow graphs, creating blocks, and creating data types. LuaRadio is built on LuaJIT, has a small binary footprint of under 750 KB (including LuaJIT), has no external hard dependencies, and is MIT licensed.

LuaRadio can be used to rapidly prototype software radios, modulation/demodulation utilities, and signal processing experiments. It can also be embedded into existing radio applications to serve as a user scriptable engine for signal processing.

LuaRadio blocks are written in pure Lua, but can use LuaJIT's FFI to wrap external libraries, like VOLK, liquid-dsp, and others, for computational acceleration, sophisticated processing, and interfacing with SDR hardware.

Use GNU Radio? See how LuaRadio compares to GNU Radio.

See the LuaRadio mailing list for general discussion.

Example

Wideband FM Broadcast Radio Receiver

local radio = require('radio')

radio.CompositeBlock():connect(
    radio.RtlSdrSource(88.5e6 - 250e3, 1102500), -- RTL-SDR source, offset-tuned to 88.5MHz-250kHz
    radio.TunerBlock(-250e3, 200e3, 5),          -- Translate -250 kHz, filter 200 kHz, decimate by 5
    radio.FrequencyDiscriminatorBlock(1.25),     -- Frequency demodulate with 1.25 modulation index
    radio.LowpassFilterBlock(128, 15e3),         -- Low-pass filter 15 kHz for L+R audio
    radio.FMDeemphasisFilterBlock(75e-6),        -- FM de-emphasis filter with 75 uS time constant
    radio.DownsamplerBlock(5),                   -- Downsample by 5
    radio.PulseAudioSink(1)                      -- Play to system audio with PulseAudio
):run()

Check out some more examples of what you can build with LuaRadio.

Quickstart

With LuaJIT installed, LuaRadio can be run directly from the repository:

git clone https://github.com/vsergeev/luaradio.git
$ cd luaradio
$ ./luaradio --platform
luajit          LuaJIT 2.0.5
os              Linux
arch            x64
page size       4096
cpu count       4
cpu model       Intel(R) Core(TM) i5-4570T CPU @ 2.90GHz
features
    fftw3f      true    fftw-3.3.8-sse2-avx
    volk        true    2.0 (avx2_64_mmx_orc)
    liquid      true    1.3.2
$

LuaRadio is accelerated by the optional libraries liquid-dsp, VOLK, and fftw. For best real-time performance, install these libraries and check that the features are marked true in the platform information:

  • Arch Linux: sudo pacman -S liquid-dsp libvolk fftw
  • macOS (Homebrew): brew install liquid-dsp fftw
  • macOS (MacPorts): sudo port install liquid-dsp volk fftw-3
  • Ubuntu/Debian/Raspbian: sudo apt-get install libliquid-dev libvolk1-dev libfftw3-dev
  • Fedora/CentOS: sudo yum install liquid-dsp fftw

Try out one of the examples with an RTL-SDR dongle:

$ ./luaradio examples/rtlsdr_wbfm_mono.lua 91.1e6

LuaRadio primarily supports Linux. It also strives to support FreeBSD and macOS, but real-time and audio support on these platforms is currently experimental. LuaRadio and all of its examples run great on the Raspberry Pi 3 with Arch Linux or Raspbian.

See the Getting Started guide for a tutorial on building your own flow graphs.

Installation

Arch Linux users can install LuaRadio with the AUR package luaradio.

macOS users can install LuaRadio with the Homebrew or MacPorts package luaradio.

See the Installation guide for other installation methods and details.

Project Roadmap

Check out the project roadmap for upcoming changes.

Contributions are welcome! See the contributing document for guidelines.

Documentation

LuaRadio documentation is contained in the docs folder.

  1. Reference Manual
  2. Installation
  3. Getting Started
  4. Creating Blocks
  5. Embedding LuaRadio
  6. Architecture
  7. Comparison to GNU Radio
  8. Supported Hardware

Project Structure

Testing

LuaRadio unit tests are run with busted.

Install busted with LuaRocks:

sudo luarocks --lua-version=5.1 install busted

Run unit tests with:

busted

License

LuaRadio is MIT licensed. See the included LICENSE file.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].