
CaribouLite 是一款功能强大的软件定义无线电(SDR)树莓派扩展板。相较于仅支持接收且频率范围有限的 RTL-SDR 等入门设备,CaribouLite 凭借其可编程 FPGA、开源固件、高达 6 GHz 的频率覆盖以及发射(TX)功能,为射频爱好者提供了更广阔的应用空间。
选择树莓派型号
CaribouLite 是一款树莓派 HAT,它依赖博通 SoC 的 SMI(次要内存接口)功能,因此必须与树莓派搭配使用。需要注意的是,它不兼容树莓派 5,因为树莓派5 使用 RP1 芯片管理 GPIO,无法直接访问 SMI。
你需要一块具备 40 针 GPIO 接口的树莓派,例如树莓派 4、3 B+ 或 Zero 2。对于大多数 SDR 应用场景,树莓派4 的性能已绰绰有余。本文使用一台运行 64 位系统的树莓派4 进行操作。
在树莓派操作系统 Bookworm 上安装驱动
按照官方指南安装驱动程序时,发现在 Debian 12/Bookworm 系统上需要应用额外的补丁才能正常工作。
以下是完整的安装步骤:
# 克隆 CaribouLite 仓库
git clone https://github.com/cariboulabs/cariboulite.git
cd cariboulite
# 应用针对 Bookworm 的补丁
curl -L https://patch-diff.githubusercontent.com/raw/cariboulabs/cariboulite/pull/210.patch | git apply -v
# 运行安装脚本
./install.sh
# 安装过程中提示 “Did not find SoapySDRUtil” 时,输入 ‘y’
编译安装过程需要几分钟。完成后,安装脚本可能会提示两条警告,要求启用 i2c_vc 和 spi1-3cs 设备。使用以下命令编辑配置文件:
sudo nano /boot/firmware/config.txt
在 dtparam=audio=on 行上方添加:
# CaribouLite
dtparam=i2c_vc=on
dtoverlay=spi1-3cs
保存文件并重启树莓派。重启后,可以验证驱动模块是否已加载:
lsmod | grep smi
正确的输出应包含 smi_stream_dev 模块。
关于 xtrx-dkms 的编译问题
安装完成后,执行 apt 更新时可能会遇到 xtrx-dkms 编译失败的错误。此错误源于旧版驱动与较新内核(6.4+)的兼容性问题。虽然上游代码已有修复,但 Debian 软件仓库中的旧版本尚未更新。目前可以暂时忽略此错误,它不影响 CaribouLite 核心功能的使用。
通过 SoapySDR 进行远程 SDR 操作
你可以在树莓派上启动 SoapySDR 服务器,以便从局域网内的其他电脑(如你的主力台式机或笔记本)访问 CaribouLite 并运行 GQRX 等图形化 SDR 软件。
启动服务器:
sudo systemctl start SoapySDRServer.service
查看服务状态或实时日志:
sudo systemctl status SoapySDRServer.service
# 或
sudo journalctl --follow -u SoapySDRServer.service
CaribouLite 提供两个频段选项:
- 高频 (HiF):30 MHz - 6 GHz
- 次 1 GHz (S1G):389.5 - 510 MHz 和 779 - 1020 MHz
在实际流传输SDR信号到远程客户端时,树莓派4的CPU占用率通常在15-20%左右,网络带宽消耗约为50-150 Mbps。
一个重要提示:为确保信号质量,建议在树莓派上禁用Wi-Fi,仅使用有线以太网连接。Wi-Fi信号本身会对SDR接收产生严重干扰。可使用以下命令关闭Wi-Fi:
sudo nmcli radio wifi off
若需服务器开机自启,执行:
sudo systemctl enable SoapySDRServer.service
在树莓派上本地使用 GQRX
你也可以直接在树莓派上安装并使用 SDR 软件:
sudo apt install gqrx-sdr
安装后即可本地运行 GQRX。但请注意,在树莓派4上直接运行图形界面并处理高采样率数据时,可能会遇到界面响应迟缓或CPU负载过高的问题。这主要是由于图形渲染和信号处理共同占用了系统资源。因此,更推荐的方案是在性能更强的远程电脑上运行客户端,或将树莓派作为纯服务器,通过 OpenWebRX 等网页界面进行访问,这能显著减轻树莓派的负担,属于高效的运维实践。