__ _ __ _ __ __ ______ _______ ___
/ / (_) /____ | |/_/___/ |/ /_ |/ __/ _ \/ _ \
/ /__/ / __/ -_)> </___/ /|_/ / __/_\ \/ // / , _/
/____/_/\__/\__/_/|_| /_/ /_/____/___/____/_/|_|
LiteX based M2 SDR FPGA board.
Copyright (c) 2024-2026 Enjoy-Digital.
LiteX-M2SDR is an open-source SDR board in the M.2 2280 Key M form factor, pairing an ADI AD9361 RFIC (2T2R, 70 MHz β 6 GHz) with a Xilinx Artix-7 XC7A200T FPGA. Gateware, drivers, C API and tools are all open, built on the LiteX framework. Pop it in an M.2 slot, connect antennas, and stream or record I/Q in about 5 minutes with our tools or any SoapySDR-compatible software.
- 2T2R, 12-bit up to 61.44 MSPS β and up to 122.88 MSPS with ~100 MHz of analog bandwidth (Wide Analog Bandwidth).
- PCIe Gen2 x4 (~14 Gbps) with LitePCIe: MMAP + DMA streaming, Linux driver, low-latency mode and hardware timed TX.
- Ethernet 1G/2.5G (+ experimental 5GBASE-R) (LiteEth) and SATA record/replay (LiteSATA) on the LiteX Acorn Baseboard Mini (Ethernet, SATA).
- Timing & sync: external 10 MHz / PPS, PCIe PTM, Ethernet PTP, White Rabbit.
- Software:
libm2sdrC API, CLI utilities, SoapySDR driver (GQRX, GNU Radio, srsRAN, ...). - Room to grow: the base design uses only a fraction of the XC7A200T, leaving space for your own RF processing; multiboot for safe remote updates; powerful debug through LiteX host bridges and LiteScope.
- Why Another AD936x SDR?
- Hardware & Availability
- Capabilities
- Quick Start
- Architecture
- Documentation
- Contact
We know what you'll first ask when discovering this project: what's the RFIC? π€ Yes β another AD936x-based SDR! π
We've been designing FPGA-based projects for clients with this chip for almost 10 years and still think it has capabilities that haven't been fully tapped by open-source projects. Paired with the LiteX framework, it makes for a minimalist, flexible SDR: a compact M.2 board with a minimal on-board RF frontend that can be specialized externally, a large FPGA, and SerDes lanes that can be used for PCIe, Ethernet, SATA or inter-board links (LiteICLink), down to coherent multi-board MIMO setups on a PCIe M.2 carrier. π
Yes, this project is also a showcase for LiteX capabilities π β rest assured, we'll do our best to gather and implement your requests to make this SDR as flexible and versatile as possible, and to keep a welcoming, friendly community. π€
This board is proudly developed in France π«π· by Enjoy-Digital, managing the project and gateware/software development, and our partner Lambdaconcept designing the hardware. π₯π·
The LiteX-M2SDR board is sold through the Enjoy-Digital Shop. It has been tested with several SoapySDR-compatible applications as well as with our own C utilities.
Note
Availability. The project has been a great success, with more than 500 boards already shipped to happy users! π Demand is strong and the current stock is sold out: with AD9361 and XC7A200T component prices rising, we are working with our hardware partner on the next production batch at the current price, and we're confident it will be available again soon. π
Need a board sooner? We're taking pre-orders at a slightly higher price and launch a small production batch as soon as enough orders are collected (e.g. 50+ boards). Contact us to discuss your requirements!
The board is offered in the M.2 2280 Key M form factor with the SI5351C clock generator, providing flexible clocking from the local XO or an external 10 MHz reference (uFL or FPGA-generated). More details
Note: The SI5351C variant now also covers the features of the former SI5351B variant (FPGA-regulated clocking for software-controlled loops) and advantageously replaces it. Existing SI5351B boards remain supported by the gateware and software.
The same board scales from a single PC to a distributed setup:
|
|
| 8T8R in a single PC. Four boards on an ASUS Hyper M.2 card with PCIe bifurcation, each streaming over its own PCIe link. | Distributed over Ethernet. On the LiteX Acorn Baseboard Mini, the board gets 1G/2.5G (+ experimental 5G) Ethernet (SFP), PoE, PTP time sync and SATA recording. See Ethernet. |
Pinout, I/O voltages, PPS input and LED behavior: see the Hardware Reference.
What is available depending on where the board is mounted, and the ./litex_m2sdr.py option that
enables it ("β" = not available in that setup).
RF & streaming
| Feature | M.2 slot | Acorn Baseboard Mini | Build option |
|---|---|---|---|
| 2T2R TX/RX, 12-bit, up to 61.44 MSPS | β | β | always included |
| 2T2R at 122.88 MSPS (wide bandwidth) | β ΒΉ | β | --with-rfic-oversampling |
| PCIe streaming | β Gen2 x1/x2/x4 | β Gen2 x1 | --with-pcie --pcie-lanes=1|2|4 |
| Ethernet streaming, 1G/2.5G/experimental 5G (details) | β | β | `--with-eth [--eth-phy=2500basex |
| Hardware timed TX | β | β | always included |
libm2sdr C API, utilities, SoapySDR |
β | β | host software |
Timing & sync
| Feature | M.2 slot | Acorn Baseboard Mini | Build option |
|---|---|---|---|
| External 10 MHz reference | β Β² | β Β² | runtime (--sync / clock_source) |
| PCIe PTM host time sync | β Β³ | β Β³ | --with-pcie-ptm |
| Ethernet PTP time discipline | β | β | --with-eth --with-eth-ptp |
| PTP-disciplined RFIC reference | β | β Β² | --with-eth-ptp-rfic-clock |
| White Rabbit | β | β | --with-white-rabbit |
Storage & system
| Feature | M.2 slot | Acorn Baseboard Mini | Build option |
|---|---|---|---|
| SATA record/replay | β | β | --with-sata |
| Multiboot / remote update | β | β | always included |
| GPIO | β | β | --with-gpio |
ΒΉ Needs PCIe Gen2 x2/x4 bandwidth. Β² SI5351C variant. Β³ PCIe Gen2 x1 only.
See Building And Loading The Gateware for build details. Prebuilt images for the common
configurations are published on the Releases
page and can be flashed with scripts/flash_release.py.
On a fresh Ubuntu system, with the board in an M.2 slot and antennas connected:
-
Install the prerequisites:
sudo apt install build-essential cmake git \ pkg-config libsdl2-dev libgl1-mesa-dev \ libsoapysdr-dev soapysdr-tools libsoapysdr0.8 \ gnuradio gnuradio-dev libgnuradio-soapy3.10.9t64 gqrx-sdr \ libsndfile1-dev libsamplerate0-dev
-
Clone, build and install the kernel driver, utilities,
libm2sdrand SoapySDR module:git clone https://github.com/enjoy-digital/litex_m2sdr cd litex_m2sdr/litex_m2sdr/software sudo ./build.py sudo modprobe m2sdr # or reboot
-
Check the board is detected:
cd user ./m2sdr_util info SoapySDRUtil --probe="driver=LiteXM2SDR"
-
Launch your SDR software (GQRX, GNU Radio, ...) and select the LiteX-M2SDR device through SoapySDR. π‘
Tip
No I/Q samples in your SDR application? Make sure the m2sdr.ko kernel module matches this
source tree (older builds needed IOMMU passthrough, iommu=pt on x86).
Overflows/underflows at high sample rates? Switch the CPU governor to performance.
Details in Host Setup.
More: build options and manual install Β· Raspberry Pi 5 Β· Orange Pi 5 Max Β· Jetson Orin Β· Ethernet setup Β· C API.
The PCIe design is the default: no baseboard required. Most of the complexity is handled by LiteX and LitePCIe; the SoC itself exposes an MMAP interface and DMA streams, and integrates the SDR/RFIC cores. LitePCIe and its Linux driver have been battle-tested on several commercial projects. The design is validated at 2T2R @ 61.44 MSPS and handles 2T2R @ 122.88 MSPS oversampling (7.9 Gbps on the PCIe bus). Debug is available over PCIe or JTAG (MMAP peek & poke, LiteScope).
On the Acorn Baseboard Mini, the M.2 SerDes lanes can be used for Ethernet instead of PCIe: LiteEth provides the 1000BASE-X/2500BASE-X PHY, the UDP/IP hardware stack and the streaming/Etherbone front-ends, for control and RX/TX sample streaming bounded by the link bandwidth. See Ethernet.
The full index is in doc/README.md.
| Getting started | Using the board | Features | Timing & sync | Development |
|---|---|---|---|---|
| Building the software | User utilities | Ethernet | PCIe PTM | Building the gateware |
| Host setup | SoapySDR driver | SATA | Ethernet PTP | Debugging guide |
| Flashing releases | GNU Radio | Wide bandwidth | White Rabbit | Hardware reference |
| Platform guides | libm2sdr C API | Low latency | Changelog | |
| Kernel driver | Timed TX |
Got a unique idea or need a tweak? Whether it's custom FPGA/software development or hardware adjustments (like adapter boards) for your LiteX-M2SDR, we're here to help! Feel free to drop us a line or visit our website. We'd love to hear from you!
E-mail: florent@enjoy-digital.fr Website: http://enjoy-digital.fr/






