schmijul/sdr-signal-analyzer
GitHub: schmijul/sdr-signal-analyzer
一个确定性 SDR 分析后端,专注于可复现的信号检测与 RF 特征提取,而非实时解调。
Stars: 0 | Forks: 0
# SDR 信号分析仪
[](https://github.com/schmijul/sdr-signal-analyzer/actions/workflows/ci.yml)
[](https://github.com/schmijul/sdr-signal-analyzer/actions/workflows/docs.yml)
[](https://github.com/schmijul/sdr-signal-analyzer/blob/main/pyproject.toml)
确定性 SDR 分析后端,适用于可复现的信号检查。
这不是解调器,也不是完整的 SDR 栈。
它是一个适用于可复现工作流的确定性分析后端。
## 你得到什么
- 可复现的信号分析
- 可脚本化的 CLI
- 可嵌入的核心
- 可测试的流水线
## 你得不到什么
- 实时 DSP 栈
- 解调
- 生产级 SDR 控制层
## 为何存在这个项目
该项目适用于那些可复现性比实时调节便利性更重要的工作流。CLI、GUI 和 Python 绑定都位于同一分析流水线,因此测试、自动化和手动检查使用相同的后端行为。
## 为何选择它而不是现有工具?
| 工具 | 重点 | 限制 |
| --- | --- | --- |
| Inspectrum | GUI 分析 | 无自动化,无后端 |
| GQRX | 实时 SDR | 非确定性,不可测试 |
| 本项目 | 后端 + 回放 | 不是完整的 SDR 栈 |
## 3 分钟示例
```
sdr-analyzer-cli \
--source replay \
--input tests/fixtures/tone_cf32.sigmf-data \
--meta tests/fixtures/tone_cf32.sigmf-meta \
--frames 4
```
预期结果:
- 在 `100.15 MHz` 附近确定性检测
- 相同的回放装置,在每次运行中产生相同的信号指标
请参阅 [docs/proof.md](docs/proof.md) 获取仓库支持的证据路径。
想先使用 GUI 而非 CLI?
```
sdr-signal-analyzer-gui
```
GUI 默认选择模拟器配置,因此首次运行无需硬件设置。
更喜欢非 GUI 的一行命令?
```
sdr-analyzer-cli --source replay --input tests/fixtures/tone_cf32.sigmf-data --meta tests/fixtures/tone_cf32.sigmf-meta --frames 4
```
## 示例输出

## 功能特性
- 已提交 IQ 装置的确定性回放
- 在 CLI、GUI 和 Python 绑定之间共享分析流水线
- 通过 `scikit-build-core` 打包的嵌入式 C++ 核心
- 用于结构化测量的 JSONL 导出
- 模拟器优先的工作流,适用于开发和 CI
- 可选实时源支持 `rtl_tcp`、UHD 和 SoapySDR
## 架构
- 数据源将 IQ 帧馈入单一分析流水线
- 会话层负责编排、诊断和导出
- CLI、GUI 和 Python API 使用相同的后端结果
更多细节:
- [架构](docs/architecture.md)
- [回放与录制](docs/replay-and-recording.md)
- [源指南](docs/sources/index.md)
## 状态与验证
### 硬件状态
- 回放:已在仓库中完全验证
- `rtl_tcp`:CI 中通过模拟服务器验证代码路径
- UHD / Soapy:尚未在附加硬件上验证
请参阅 [docs/proof.md](docs/proof.md) 获取具体证据,以及 [docs/hardware_validation_status.md](docs/hardware_validation_status.md) 获取后端状态详情。
当前验证信号:
- 回放装置在 [`tests/fixtures`](tests/fixtures) 中已提交
- 原生测试和 Python 冒烟测试在 CI 中运行
- 文档以严格模式构建
- 附加设备证据仍在等待中,并已明确记录
## 路线图
- [ ] 首个已提交的附加设备验证报告
- [ ] UHD 验证
- [ ] 多设备支持
- [ ] 性能基准测试
## 安装
目前从源码安装:
```
sudo apt install -y cmake g++ libegl1 libxcb-cursor0 libxkbcommon-x11-0 ninja-build python3-dev
python -m pip install ".[gui]"
```
软件包元数据和发布自动化已针对 `sdr-signal-analyzer` 包名在 [`pyproject.toml`](pyproject.toml) 中配置。
## 文档
- [文档主页](https://schmijul.github.io/sdr-signal-analyzer/)
- [证明页面](docs/proof.md)
- [测试与验证](docs/testing.md)
- [诊断](docs/diagnostics.md)
- [发布准备](docs/release.md)
标签:IQ数据, Python后端, SDR, 二进制发布, 信号分析, 信号回放, 信号处理, 信号检测, 可重现分析, 射频特征提取, 嵌入式核心, 开源工具, 无线电探测, 时序数据库, 测试流水线, 瀑布图, 确定性分析, 自动化分析, 跨站脚本, 软件定义无线电, 逆向工具, 频谱分析, 频谱监测