Software Defined Radio

CaribouLite RPi HAT

A fully open source dual-channel SDR Raspberry Pi HAT with a tuning range up to 6 GHz

$247,334 raised

of $112,000 goal

220% Funded! Order Below

In stock. Order now, ships within three business days.

$72 - $140

View Purchasing Options

Recent Updates

You'll be notified about news and stock updates for this project.

CaribouLite is an affordable, open-source, dual-channel software-defined radio (SDR) platform—and an SDR-focused FPGA development framework—implemented as a Raspberry Pi (RPi) HAT. CaribouLite turns your Raspberry Pi single-board computer (SBC) into a self-contained, dual-channel radio Tx/Rx that spans a wide tunable frequency spectrum up to 6 GHz.

CaribouLite gives you full control of its hardware, including the FPGA, its firmware, and all of its supporting software. With the deeply integrated IceStorm toolchain, writing your own FPGA application couldn’t be easier. You can reuse many Verilog modules, such as SPI and SMI modules, to support custom applications of CaribouLite hardware.

Purpose & Philosophy


We created two versions of CaribouLite: the full version and the ISM version. Both versions include an internal TCXO clock-source, a low-noise amplifier (NF < 4 dB under 3 GHz) and high Tx power (up to 14 dBm). They also provide fully controllable, 8-bit, read/write PMOD expansion ports to facilitate advanced applications such as direction finding, GPS synchronization, etc.

On the software side, Raspberry Pi’s high-level APIs like Soapy / GNU Radio, and Jupyter notebooks are fully supported, through which the HAT’s complete feature-set can be accessed.

Frequency Range

The full version of CaribouLite provides two Tx/Rx SDR channels:

The 4 MSPS I/Q samples (both Tx and Rx) are transmitted over the RPi’s secondary memory interface, where CaribouLite acts as a high-throughput memory peripheral.

Operational frequency ranges (Tx & Rx) (see note below)

The ISM version of CaribouLite supports the native 2.4-GHz and sub-1-GHz bands available within the Microchip chipset used.

A Note About Frequency Range

In testing, CaribouLite exceeded the frequency capabilities described above. The lower bound of the wide channel measured closer to 1 MHz, for example. We are sticking with the official component specifications, however, in full confidence that the SDR community will drive the board to its limits and determine its actual capabilities.

A Note About Board Versions & Regulation

As mentioned above, we decided to offer a CaribouLite variant optimized for the unlicensed ISM bands. It contains a bare modem, without additional frequency-conversion capabilities. As a result, it can transmit over 2.4 GHz and Sub-1-GHz bands. This variant is not only significantly less expensive than the full version of CaribouLite, it closely implements the reference design of its Microchip modem so as to comply with various countries’ radio regulations (ETSI, FCC, etc.). While neither of the CaribouLite variants have undergone a regulation-compliance process, it might be easier for a third party to navigate such a process using the ISM version.

A Note About Usage

CaribouLite and CaribouLite-ISM were built to make low-cost, educational tools and test equipment as accessible as possible. Nevertheless, users need to be familiar with, and adhere to, the radio regulations in their country or region so as to mitigate potentially harmful interference. We urge you to study up on your local restrictions and to read the safety information that comes with your CaribouLite board thoroughly.

CaribouLite front view

Fully Open Source to Support Your Projects

As a fully open source SDR, CaribouLite allows you to customize, optimize, or improve it to suit your own needs. To that end, we are committed to providing complete source code and thorough documentation, including toolchain and programming guidelines. We are also excited to hear your suggestions and to implement them if we can!

During the campaign, we aim to provide custom, step-by-step application guides (FPGA, C/C++, Python, etc.) and a library to support applications such as…

…and more to come as the CaribouLite community grows.

Linux Software

Boot-Time Recognition & EEPROM API

CaribouLite is recognized by Raspbian during the boot sequence, and the board variant is determined through the on-board configuration resistors. Each CaribouLite is shipped with a programmed RPi-HAT EEPROM containing the board’s information, including the device-tree overlay and drivers to be loaded. Unless additional customization is required by the user, all needed Linux modules are loaded and pin-muxing is configured on system start-up.

Experts Zone: EEPROM customization is possible using the EEPROM API and the device-tree overlays. For more information have a look here first.

CaribouLite API

All CaribouLite software components are located in our GitHub repository. That includes libcariboulite & SoapySDR drivers, device-tree overlays, and sample code.

SoapySDR API is fully supported and included in Soapy API. To support both channels in CaribouLite SDR—and to stay backward compatible with the current ecosystem software—each CaribouLite board is recognized as two SDR devices rather than as one device with two channels. The two devices are:

  1. The Sub-1-GHz channel
  2. The wide range up to 6 GHz (or 2.4 GHz for the ISM version)

This configuration supports a wide range of standard software packages such as SDR-PlusPlus, GQRX, CubicSDR, GNU-Radio, and more.

Standard Communication Baseband API

CaribouLite also supports using the standard IEEE-802.15.4 PHY built-in cores implemented within Microchip’s AT86RF215-ZU modem. With the dual IEEE-802.15.4 PHY radio channels, you can implement hardcore basebands and communication nodes such as Zigbee(Pro), Thread, and others without the need for any further SDR programming or design.


CaribouLite contains a ICE40LP1K FPGA chip that is primarily used for the SDR application – channel configuration, bi-directional data-streaming, and diagnostics services. Like any other element of CaribouLite, it can be tweaked, modified, and reused for custom applications.

The FPGA is programmed by libcariboulite when the operation session starts. Programming is handled by a special API adapted to CaribouLite and can be used from the commandline. Further details can be found in the firmware subdirectory of our repo.

The SMI Interface API

SMI (Secondary Memory Interface) allows you to stream I/Q samples back and forth between the RPi and CaribouLite. To the best of our knowledge, this interface has not been fully investigated previously, and we are happy to provide our contribution to the RPi community. We have explored two different approaches for this interface – the user-mode approach (see Lean2‘s amazing work), and the kernel-mode module approach. In the end, we decided to adopt the kernel-mode approach, as it proved more robust for high-volume data streams.

We have contributed design considerations, a software API, bugs, and benchmarking, all of which can be found on our SMI page and in our external documentation pages.

Layout & Interfaces

Block Diagram

System block diagram


CaribouLite draws power through its 40-pin header from the Raspberry Pi’s 5 V rail. Those 5 V are used by the Tx-side RF amplifier after some filtering (full version only). A low-noise 3.3 V LDO is used to supply the board’s 3.3 V peripherals. An additional LDO down converts the 3.3 V to 2.5 V and 1.2 V voltages for the FPGA.

The usage of LDOs, rather than DC-DC converters, decreases the level of conducted and radiated interference into the sensitive parts of the board. It also results in low-mid frequency isolation between the RPi and CaribouLite and decreased levels of EMI emissions.

System power architecture


Push Button

User programmable push button / HAT-EEPROM write enable

PMOD Interface

The 8-bit PMOD connector allows you to use the FPGA for digital-control applications, debugging, or synchronization. The firmware exposes these pins as an input/output-selectable and -maskable GPIO bank. These GPIOs are controllable through both the FPGA APIs and the SoapySDR APIs.

A Few Application-Specific Use Cases

LED Indicators

General purpose LEDs (LD1 / LD2): These high-brightness LEDs are FPGA controllable through the FPGA software API. They can be used to trigger user action, to indicate system state (such as PLL-lock status), or to warn the user of a problem.

RF activity LED indications: Each of the two radios have a pair of Tx/Rx LEDs adjacent to their RF connectors that indicate the radio’s current activity.

External Ref. Clock Input

Mixer synthesizer reference signal inputs

To support a wide range of frequency tuning, CaribouLite uses the Qorvo RFFC5072 integrated mixer IC. By default, the frequency reference source (of 32 MHz) to the PLL is generated and provided by the modem.

For some application (clock-phase matching, different frequency resolution, etc.), a separate clock source may be required. On the top side of the board, you can mount an external clock source via U.FL. Resistor jumpers can be modified as needed.

Top and Bottom sides of the CaribouLite
1. 6 GHz SMA connector8. Modem - AT86RF215
2. Sub-1-GHz SMA connector9. FPGA - ICE40LP1K
3. User switch and user LEDs10. RFFC5072(A) - Synth. Integrated Mixer
4. PMOD connector (8-bit I/O, GND and 3.3V)11. TCXO 26 MHz
5. External reference clock input12. RPI 40-pin connector
6. RF activity indication LEDs13. RPi HAT-EEPROM
7. RF Front-end for 6 GHz channel


CaribouLite CaribouLite-ISM RTL-SDRLimeSDR MiniAirspy R2PlutoSDRLimeSDRHackRF OnebladeRFiotSDR
RF ChipsetAT86RF215 AT86RF215 RTL2832ULMS7002MR820T2AD9363LMS7002MMAX5864, MAX2837, RFFC5072LMS6002MAT86RF215, MAX2769
FPGA / CPLDICE40LP 1.28 kLE ICE40LP 1.28 kLE N/AAltera MAX 10N/AZynq XC7Z010 28 kLEAltera 40KLE Cyclone 464 Macrocell CPLDAltera 40KLE/115KLE Cyclone 4ZYNQ XC7Z010 / XC7Z020
Tuning RangeCH1: 30 MHz - 6 GHz / CH2: Sub-1GHz CH1: 2.4 - 2.4835 GHz / CH2: Sub-1GHz 22 MHz - 2.2 GHz10 MHz - 3.5 GHz24 - 1700 MHz325 - 3800 MHz30 MHz - 3.8 GHz1 MHz - 6 GHz300 MHz - 3.8 GHzSub-1GHz, 2.4 GHz, and 1575.42 MHz
Max Sampling Rate4 MSPS 4 MSPS 3.2 MSPS30.72 MSPS10 MSPS61.44 MSPS61.44 MSPS20 MSPS40 MSPS4 MSPS (16.368 MSPS MAX2769)
ADC/DAC Resolution13-bit 13-bit 8-bit12-bit12-bit12-bit12-bit8-bit12-bit13-bit (2-bit MAX2769)
Max RF Bandwidth2.5 MHz 2.5 MHz 2.5 MHz30.72 MHzUnknown20 MHz61.44 MHz20 MHz28 MHz4 MHz (8 MHz MAX2769)
Transmit Powerup to 14 dBm (@ISM frequencies), up to 14 dBm N/A0 to 10 dBm (frequency dependent)N/A7 dBm0 to 10 dBm (frequency dependent)0 to 10 dBm, -10 dBm+ (15 dBm @ 2.4 GHz)6 dBm14 dBm+
Frequency Stability<±2 ppm <±2 ppm ±1 ppm±2.5 ppm±0.5 ppm±25 ppm±2.5 ppm±20 ppm±1 ppm±2 ppm
Channels2 2 1 (Rx only)1122112 + 1 GPS Rx
DuplexDual Half Duplex Dual Half Duplex N/AFull SISON/AFullFull MIMOHalfFull SISODual-channel full duplex
In-System ProcessorBCM283x (x1/4) BCM2711 (x4) BCM283x (x1/4) / BCM2711 (x4) N/ANoCortex M4FARM Cortex-A9 (x1)NoLPC4320FNoArm Cortex A9 (x2)
Open sourceFull Full NoFullUnknownFullFullFullSchematic, FirmwareHardware, Firmware
Operating SystemLinux (Raspberry Pi dependent) Linux (Raspberry Pi dependent) ----Bare Metal MCULinux--Bare Metal MCU--Linux
Bus/InterfaceSMI (Raspberry Pi) SMI (Raspberry Pi) USB 2.0USB 3USB 2USB 2USB 3USB 2USB 3Gbit Ethernet and USB 2
GPSAddon Addon NoNoNoNoNoNoNoFE + Add-on Sync
IEEE-802.15.4 PHY cores2 2 NoNoNoNoNoNoNo2
Multi-Board SynchronizationClock and Data Clock and Data NoClockExternal Coherent clock input, outputsNoClockClockClock and timestampsClock and data
GPIOYes (8-bit PMOD) Yes (8-bit PMOD) NoYesYes (18 pins)NoYesExpansion HeadersYesYes (24 pins)
PortableYes (+RPi0) Yes (+RPi0) Yes (RPi)Yes (with a strong PC)Yes (with a strong PC)NoNoNoNoNo
Area (Dimensions)1,950 mm² (65 x 30 mm) 1,950 mm² (65 x 30 mm) 1,863 mm² (69 x 27 mm)2,208 mm² (32 x 69 mm)1,600 mm² (64 x 25 mm)9,243 mm² (117 x 79 mm)6,000 mm² (60 x 100 mm)9,000 mm² (75 x 120 mm)11,397 mm² (87 x 131 mm)7,752 mm² (76 x 102 mm)
Price$140 $72 ~$25$199$169$199$299$299$420$599
Price Per Channel$70 $36 ~$25 (Rx)$199$169 (Rx)$99.5$149.5$299$420~$199.5 (2+1 ch)

Support & Documentation

CaribouLite is extensively documented on GitHub:

You can also reach us at or using the Ask a technical question link below.

CaribouLite RPi HAT is part of Qorvo RF Accelerator

In the Press

OneSDR logo
SDR News logo

Ask a Question

Produced by CaribouLabs in Haifa, Israel.

Sold and shipped by Crowd Supply.


A 6 GHz RaspberryPi SDR HAT, with two TX/RX Channels. Includes a pre-soldered female 40-pin header and a loose male PMOD header.

$140 $8 US Shipping / $18 Worldwide

CaribouLite ISM

2.4-GHz + Sub 1-GHz RaspberryPi SDR HAT with two TX/RX Channels. Includes a pre-soldered female 40-pin header and a loose male PMOD header.

$72 $8 US Shipping / $18 Worldwide

Raspberry Pi Zero WH

From the Raspberry Pi Zero project.

Half the size of a Model A+, with twice the utility, plus Wi-Fi and Bluetooth connectivity and pre-soldered pin headers.

$16 $8 US Shipping / $18 Worldwide

About the Team


Haifa, Israel  ·  ·   cariboulabs

A group of experienced electrical/software engineers and hardware hackers determined to make RF engineering and prototyping accessible, educational, and enjoyable.

David Michaeli

See Also

Subscribe to the Crowd Supply newsletter, highlighting the latest creators and projects