📈 GH Trending Explorer 🎲 Surprise me

← all repos

luigifcruz / BirriaSDR

git clone https://github.com/luigifcruz/BirriaSDR.git

—

—
stars, 24h
+120
stars, 7 days · #427
+120
stars, 30 days · #1,942
120
★ total · +120% this week
19
forks · 7 open issues

Star history starts 2026-10-20; the chart appears after the second daily snapshot.

LanguageC
LicenseMIT
Created2026-10-13 (7d ago)
Last push2d ago
Watchers2
OwnerUser

Links

README excerpt
# BirriaSDR
Turn a supported USB Wi-Fi dongle into an experimental SDR receiver with
**14-bit I/Q at 40 MSps complex**.
BirriaSDR ships as `libbirriasdr`, a C11 library with an API modeled on
librtlsdr, together with a command-line recorder. It talks to the device from
userspace through libusb and includes the source of its own small device
program. Start with Build and try, or jump to the API
to add the receiver to an application. To see it working without building
anything, try the rough proof of concept.
> [!IMPORTANT]
>
> This is experimental software. The tested board starts from a channel 6
> initialization profile, and the library can tune anywhere from 2156 to
> 2610 MHz. Sensitivity across that range, frequency accuracy and gain are not
> calibrated. Use at your own risk.
https://github.com/user-attachments/assets/64e9fbbd-1f16-4c7b-905c-5624b9c574b7
## Background
Wi-Fi chipsets contain a complete wideband receiver. An analog front end tunes,
filters and amplifies the antenna signal, and a digital physical layer then
processes the resulting complex baseband samples. Some chips also include an
internal I/Q capture engine (ICAP) meant for calibration and debugging.
BirriaSDR repurposes that capture path to stream raw samples to the host over
USB.
 [code] 
The host programs the radio front end and the capture engine directly through
their registers. The capture engine writes samples into the chip's internal
memory. A small original device program, only 1,632 bytes and loaded through the
chip's built-in boot ROM, sends that memory to the host over USB. The library
then checks the stream and hands complex samples to the application.
Nothing from the vendor is downloaded to the device, whether RAM firmware or a
ROM patch. Nothing is written to flash or eFuse either, so all configuration is
volatile and disappears when the dongle loses power. The device program's
assembly source lives in `firmware/iq_stream.S`, and the
library embeds its assembled image.
The tested hardware is the **COMFAST MT7961/MT7921AU dongle (`3574:6211`)**,
which pairs an MT7961 digital die with an MT7972 analog die. By default the
receiver is centered on Wi-Fi channel 6 (nominally 2437 MHz) and uses receive
chain 0 at 40 million complex samples per second. The library can retune
anywhere in the 2156 to 2610 MHz range, even while streaming. At 40 MSps it
pairs the **40 MHz analog filter with the matching digital bandwidth setting**.
On the tested board, the measured noise spectrum falls about 3 dB at ±18 MHz.
The filters do not fully reject signals outside the sampled span, so strong
signals there can alias into the capture. Treat this as measured behavior
rather than a calibrated, flat bandwidth guarantee.
For more detail, see:
- The receiver overview
- The MT7921 / MT7961 / MT7972 receiver reference, with controls and register tables for each stage
- The architecture guide, which also covers adding a chipset
### Specifications
| Parameter | Current value |
| --- | --- |