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 | | --- | --- |