# luaradio **Repository Path**: mirrors_vsergeev/luaradio ## Basic Information - **Project Name**: luaradio - **Description**: A lightweight, embeddable software-defined radio framework built on LuaJIT - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-01-06 - **Last Updated**: 2026-01-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # LuaRadio [![Tests Status](https://github.com/vsergeev/luaradio/actions/workflows/tests.yml/badge.svg)](https://github.com/vsergeev/luaradio/actions/workflows/tests.yml) [![GitHub release](https://img.shields.io/github/release/vsergeev/luaradio.svg?maxAge=7200)](https://github.com/vsergeev/luaradio) [![License](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/vsergeev/luaradio/blob/master/LICENSE) [![Reference Manual](https://img.shields.io/badge/docs-reference%20manual-blue)](https://luaradio.io/docs/reference-manual.html) [![Mailing List](https://img.shields.io/badge/mailing%20list-grey)](https://groups.io/g/luaradio) **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](http://luajit.org/), 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](http://luajit.org/ext_ffi.html) to wrap external libraries, like [VOLK](http://libvolk.org/), [liquid-dsp](https://github.com/jgaeddert/liquid-dsp), and others, for computational acceleration, sophisticated processing, and interfacing with SDR hardware. Use GNU Radio? See [how LuaRadio compares to GNU Radio](docs/6.comparison-gnuradio.md). See the LuaRadio [mailing list](https://groups.io/g/luaradio) for general discussion. ## Example ##### Wideband FM Broadcast Radio Receiver

``` lua 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](examples) of what you can build with LuaRadio. ## Built-in Applications LuaRadio comes with a collection of built-in command-line applications. These applications include radio receivers that are compatible with all SDR sources supported by the framework, as well as file and network sources: ``` $ luaradio Usage: luaradio [options]