依赖
Arch Linux:
sudo pacman -S --needed \
base-devel cmake fftw glfw volk zstd \
airspy rtaudio hackrf rtl-sdr soapysdr \
libiio libad9361 bladerf limesuite
额外设备库:
yay -S airspyhf-git libsdrplay
编译
git clone https://github.com/AlexandreRouma/SDRPlusPlus.git
cd SDRPlusPlus
mkdir build
cd build
cmake ..
make -j"$(nproc)"
cd ..
当时这版先复制一份运行目录:
cp -r root root_dev
先运行一次,让它在 root_dev 下生成 config.json、modules 和 res:
./build/sdrpp -r root_dev
再找出编译出来的模块:
find ./build -name '*.so' \
| sed 's/^/"/' \
| sed 's/$/",/' \
| sed '/sdrpp_core.so/d'
把结果填进 root_dev/config.json 的 "modules": [],同时改这两个路径:
"modulesDirectory": "./root_dev/modules",
"resourcesDirectory": "./root_dev/res"
之后从项目根目录运行:
./build/sdrpp -r root_dev

PipeWire JACK
终端启动后闪退或无音频,日志中出现:
RtApiJack::getDeviceInfo: error determining Jack input/output channels!
RtApiPulse::DeviceInfo pa_context_connect() failed: Connection refused
Could not open audio device
处理方法一是只对当前进程禁用 PipeWire JACK:
env PIPEWIRE_NOJACK=1 ./build/sdrpp -r root_dev
这样启动后可以正常打开并输出音频。另一种方法是用 PulseAudio 替换 pipewire-pulse:
sudo pacman -S pulseaudio
最后还是保留 pipewire-pulse,启动 SDR++ 时加 PIPEWIRE_NOJACK=1。
参考
Application hang and infinite loop using PipeWire
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。