# ESB-Moniter **Repository Path**: mingkjl/esb-moniter ## Basic Information - **Project Name**: ESB-Moniter - **Description**: No description available - **Primary Language**: C - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-10-21 - **Last Updated**: 2026-10-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # LibreSDR ESB 调试工具 **一键真实 RF 演示上位机:** 双击 [Start_ESB_Demo.cmd](Start_ESB_Demo.cmd),仅点击“开始测试”。在屏蔽箱联锁下执行固定 CH18、固定 CH26、普通模式和快速恢复四个真实 RF 场景;显示 SDR 发射启停、固定源配置,以及来自两板原始事件的跳频慢放。独立 EXE 位于 `dist/ESB_AFH_Demo/`,运行无需 Python/NCS,结束自动停发、恢复并保存报告。两轮 8 场及 75 项检查已完成;快速恢复为 **39.935 / 41.242 ms**,普通模式保留 **389.784 ms** 长停顿及 **4103.692 ms、未确认迁移** 的失败,算法性能未整体通过。源增益不等于接收端干扰功率;历史数据、本次实测及动画计时明确区分。见[演示说明](docs/demo_gui.md)与[RF GUI 验收报告](docs/demo_rf_gui_20261023.md)。此前 40 例软件丢帧 GUI 的验收仍保留为[历史报告](docs/demo_gui_20261023.md)。 **快速模式稳定性及短停顿续测(2026-10-23):** 观测连接已恢复,当前固件 **40/40 例有限解码丢帧实测完成**。5/15/18 ms 保留原信道 **24/24**;60 ms 持续故障快恢复 **4/4**,完整业务间隔 **36.770~39.247 ms**。24 ms 暂态开启组也跳频,间隔 **36.626~39.264 ms**,高于关闭组 **24.228~26.219 ms**,边界取舍需继续优化。此前弱链路自然迁移 3 次、严格零迁移门槛失败,第四段采集失败仍保留为不完整。复用 DeepSeek 解析器核对 649 个事件引用,本次 32 项回归测试通过;两版 J-Link DLL 均通过重连后的 RAM 核对,未证明版本故障。最终双端 RAM 确认 CH18、0 dBm、fastloss=0,约 746 次有效回复/秒,SDR 关闭;一般 RF 资格仍未通过。见[本轮报告](docs/afh_stability_20261023.md)。 **当前镜像 RF 回归(2026-10-23):** 真实干扰下普通预约跳频 **4/4 成功**,跨信道间隔 **30.259~35.344 ms**;但决策前停顿导致整段最大间隔 **56.331~64.089 ms**,全部未达 50 ms 目标。同工作点快速模式 **3/3 通过开发检查**,整段间隔 **37.564~39.918 ms**,每次 1 笔应用超时、无无效回复。保留一次发射前弱链路基线异常;当前仍非总体 RF 资格,最终恢复 fastloss=0。共 19 次有限发射、74 项相关测试,固件及 SDR 波形未改变。下一步验证快速模式长期稳定性和短暂扰动下的误迁移。见[本轮报告](docs/afh_rf_final_20261023.md)。 **同步重传计时(2026-10-23):** 已按 SYNC_REQ 每次软件提交的回显时间戳计算 RTT,并校验当前请求的八条发送记录,防止迟到 ACK 低估时延。相同较重丢失模型的完整最大业务间隔 **54.9→31.4 ms**,保护时间公式未降低;新镜像九次实机有限解码丢包回归全部通过,最大间隔 **33.642~34.623 ms**。276 项测试和两板 Flash 回读通过,正常约 746 次有效回复/秒。模型改善与实机回归分开统计,当前镜像真实 RF 资格仍待验证,保持 fastloss=0。见[本轮报告](docs/afh_sync_timestamps_20261023.md)。 **PREPARE 业务调度(2026-10-23):** 已让跳频前台同步与业务交错,两板烧录及 Flash 回读通过。80 次选择性同步消息丢失的旧/新实机对照,完整最大业务间隔从 **78.965~86.736 ms** 降至 **33.708~34.603 ms**;追加九次全部通过,最大 **34.490 ms**。264 项相关测试通过。SDR 全程关闭,实机为手动触发的受控解码丢包;较重丢失模型仍有 **54.9 ms** 跨信道间隔,当前新镜像尚未重新取得 RF 资格。最终约 747 次有效回复/秒,保持 fastloss=0。见[本轮报告](docs/afh_prepare_scheduling_20261023.md)。以下条目均为各阶段历史记录,结果绑定各自镜像。 **普通预约路径诊断(2026-10-23):** 本轮五档固定信道对照未取得合格中等干扰工作点,普通 AFH 的新增实机性能样本为 0。确定性模型复现了 PREPARE 前台同步阻塞业务:每个同步请求丢失前 2/5 次时,最大业务间隔为 **88.0/203.2 ms**,两端仍能完成普通预约跳频。下一处优化聚焦 PREPARE 同步期间的业务调度;模型数字不能当作 RF 实测。被动 RAM 采集已改为 32 位双读校验,97 项相关测试通过。见[本轮报告](docs/afh_scheduled_validation_20261023.md)。 **真实 RF 重复验证(2026-10-23):** 当时镜像在屏蔽箱既定工作点、fastloss=1 下完成 20/20 组自动恢复,完整业务间隔中位数 **36.6975 ms**、最大 **40.690 ms**;每次恢复有 1 笔应用请求失败。旧/新镜像 ABBA 同条件对照确认正常有效吞吐下降 **3.1004%**(770.96 → 747.06 次/秒)。这验证强干扰下 FAST_RESCUE 路径,正常质量评估/预约跳频仍需独立验证;默认 fastloss=0,保留工作点通过与一般 RF 资格的区别。见[阶段报告](docs/afh_rf_validation_20261023.md)。 **周期同步交错调度(2026-10-22):** 已让同步采样间继续传输业务,并增加 16 ms 后台预算及超预算后的 50 ms 重试间隔。相同故障模型的最大业务间隔由 **85.6 降至 11.6 ms**;最终镜像六组选择性同步丢失实测约 **572~581 次有效回复/秒、最大间隔 17.6~18.2 ms**,两次软件失联恢复为 37.355/38.616 ms。431 项测试通过,四分钟源关闭观察零超时、未跳频;真实 RF 恢复资格仍未更新,保持 fastloss=0。正常吞吐约 747 次/秒,较上一轮略低,需旧/新镜像配对确认,见[本轮报告](docs/afh_sync_scheduling_20261022.md)。 **RX 同步进展修复(2026-10-22):** 已修复 POLL 将同步回复替换为 STATUS 后,RX 漏记后续同步进展的问题,两板已烧录并回读校验,401 项软件测试通过。八分钟源关闭对照合计 368,295 个有效回复、零超时、未跳频,最大业务间隔 11.089 ms;但受控模型仍有 85.6 ms 周期同步业务停顿,**整体性能未达标,保持 fastloss=0**。DeepSeek 负责解析与汇总,主代理复核后归档,见[本轮报告](docs/afh_sync_progress_20261022.md)。 **DeepSeek 数据处理分工(2026-10-22):** 已接入 API,由 DeepSeek 生成和修正解析器,主代理负责审查、独立核算与实验结论。首个任务完成七次快恢复时间线重建,28 项检查通过,524 个事件引用逐项核对;最长 201.424 ms 中 RESCUE 累计 77.299 ms、VERIFY 累计 90.892 ms。仅处理已有端点日志,原跳频验收失败结论不变。凭据保存在 Windows 凭据管理器,详见[接入、分工与首次结果](docs/deepseek_processing_20261022.md)。 **AFH 单向停顿诊断(2026-10-22):** 修复了业务恢复后 `DATA_DEGRADED` 不退出、随后迟到跳频的问题,并增加 MCU 定时软件丢帧命令与有限测试空闲恢复。359 项测试通过;最终镜像 40 个定时窗口完成,短停顿保持原信道 **24/24**,60 ms 停顿快恢复 **4/4**、业务间隔 36.624~39.292 ms。八分钟无注入弱链路对照仍发现开启组 7 次快速迁移、最长 **201.424 ms**,**快速模式仍不达标,已恢复 fastloss=0**。附加有限测试脚本的时序失败及补测均保留,详见[本轮报告](docs/afh_directional_20261022.md)。 **AFH VERIFY 修复(2026-10-22):** 修复了 POLL 提前更新回显导致 RX 验证计数停滞的缺陷,两板已烧录,341 项软件测试通过。三组真实 RF 诊断均自主迁移到 CH26,整段最大业务间隔 **43.177 / 36.067 / 37.969 ms**,未见 VERIFY 超时。但候选在两分钟无注入弱链路检查中仍迁移两次,**稳定性门槛未通过,不扩大到 20 组,最终保持 fastloss=0**。停发后约 771 次有效回复/秒、1.308 Mbps。详见[本轮修复、诊断与保留问题](docs/afh_verify_20261022.md)。 **AFH 快速失联恢复候选(2026-10-22):** 已实现双端能力协商和 20 ms 快速恢复。三组预试通过,但扩大试验在 12/20 组后因下一组无注入基线跳频中止;12 组中 9 组整段空窗小于 50 ms,最长 **1403.196 ms**,仅 8 组最终保持两端 CH26 ACTIVE,**候选不通过,已恢复 fastloss=0**。问题集中在 VERIFY 超时后的扫描长尾及弱链路反复快速恢复。停发后约 749 次有效回复/秒、1.271 Mbps,详见[实现、失败证据与后续范围](docs/afh_fastloss_20261022.md)。 **AFH 长断流诊断(2026-10-22):** 已完成 MCU 事务/MAC/同步计时和同镜像 600/1000 µs 实机对照,两组各 3/3 次自主跳频。600 µs 跨信道空窗中位数 28.054 ms,但整段最大空窗仍为 52.391~54.954 ms,**整体 50 ms 目标尚未达到**;主要耗时已定位到判定前连续失败的 MAC/应用重试。默认及最终运行值保留 1000 µs,正常吞吐约 778 次有效回复/秒、1.320 Mbps。284 项测试通过;源码、固件及各阶段证据随本次 Git 归档,见[本轮报告](docs/afh_gap_20261022.md)。 **AFH 预约业务优化(2026-10-21):** 已让确认预约后的 100 ms 等待继续传业务,并完成两板烧录及 **20 组真实 RF 配对测试,20/20 自主迁移成功**。跨信道空窗中位数从 132.803 降至 **34.708 ms**,样本 p95 为 **40.363 ms**;包含未完成事务的迁移阶段最大空窗 p95 为 42.592 ms。判定前的受扰停顿仍可达 67.317 ms,不能声称所有业务间隔均达标。275 项软件测试通过,见[本轮实现、性能与限制](docs/afh_armed_business_20261021.md)。 **AFH 优化前基线(2026-10-21):** 已烧录 J-Link DLL 直读 RAM 遥测与真正的固定信道模式。三组屏蔽箱真实 CH18 噪声对照中,AFH 三次均自主迁移到 CH26,噪声期吞吐约为固定 CH18 的 2.7~3.3 倍;业务空窗 **126.743~133.435 ms,未达 50 ms 目标**。当时定位约 100 ms 的预约等待停发;后续优化见上条。248 项测试通过,见[基线实测数据与失败记录](docs/afh_ram_comparison_20261021.md)。 **接收导出优化(2026-10-21):** 新增板端 12 位 I/Q 无损打包与 PC 原生解包,20 MSPS 的网络负荷从 80 降为 60 MB/s。8 轮计划各 60 秒的测试中,5 轮达到约 20.018 MSPS,另有两次约 2.1 秒停顿和一次超时,**稳定性尚未通过,GUI 接收后端未切换**。留存首块共 671 帧通过独立 CRC 校验,236 项软件测试通过。详见[本轮报告与失败记录](docs/p4_export_20261021.md)。 **端点对照与接收路径定位(2026-10-21):** −28 dBm 下静默、brief、完整查询各约 120 秒,本轮共 200,619 个有效回复、零应用超时。板端本地 DMA 约 20.00 MSPS,纯 TCP 成功短测约 93.35 MB/s;完整 IIO 接收仍受限,临时 CPU1 对照最高约 15.66 MSPS。排查重点已缩小到板端 IIO 数据访问与网络导出,尚无连续无损或新增 RF 跳频验收结论。详见[本轮诊断报告](docs/p4_diagnosis_20261021.md)。 **−28 dBm 与吞吐排查(2026-10-21):** 已增加并烧录 −28 dBm 功率档位,寄存器与身份校验通过。120 秒基线有效回复 65,980 次、应用超时 2 次,本轮未注入干扰。关闭 DSP/写盘后,纯接收最高约 14.92 MSPS;USB 当前运行于 SuperSpeed。详见[本轮记录与下一步顺序](docs/p4_workpoint_20261021.md)。当前镜像的 RF 资格保持待验证,早期结果按各自镜像分开保存。 **UART 与原始 IQ 复测(2026-10-21):** 两轮真实 CH18 噪声注入均被 SDR 观察到,但 −20 dBm 端点业务正常、未触发跳频;−40 dBm 无干扰基线不成立,未注入。新镜像 IQ 离线解码中 71,370 帧通过独立 CRC 校验。20 MSPS 配置下实际送达约 12.74~13.34 MSPS,尚不能测量精确恢复时间。217 项软件测试通过,详见[本轮报告](docs/p4_uart_round_20261021.md)。 **身份确认与基线更新(2026-10-21):** RX 现为 COM25。两端新增 `IDN?`,主机按角色和芯片 ID 自动发现 UART;错误角色会拒绝连接。-20 dBm、120 秒无注入对照中,UART/静默组应用超时为 0,密集 RTT 组为 277,精简 RTT 补测为 1。详见[身份查询与基线报告](docs/endpoint_identity_20261021.md)。下方早期 P4 的自主逃离结果对应上一版镜像,与本轮分开统计。 **屏蔽箱 RF 实测(2026-10-21):** 已验证真实发射启停和一次自主逃离;三次可比注入测试仅一次在注入期间稳定迁移,AFH 恢复可靠性尚未达标。新增 `esb afh power`,当前固件的 compact IQ 回放验证通过。详见[实测报告与后续排查](docs/p4_shielded_rf_20261021.md)。 **串口提前通知更新(2026-10-21):** 已完成 COM9/COM21 与 SDR 接收验证,支持 `esb afh watch`、`brief` 和 `lead`,详见[阶段报告](docs/advance_notice_20261021.md)。 本项目提供接收专用的 Python/PySide6 中文上位机、CLI、流式 GFSK/ESB 解码、有限大小 IQ 保存与重新解码回放,以及 NCS 3.3.0 构建/烧录脚本。 [阶段性成果报告(截至 2026-10-20)](docs/阶段性成果报告_20261020.md)汇总已完成功能、分阶段实测结果、交付物、已知问题及后续计划。 **AFH 更新(2026-10-21):** 两板已实现 AFH v2、compact/full 预约跳频与失联恢复;上位机支持双信道 DDC、跟随调谐、独立端点日志和事件 IQ 回放。使用 [Start_AFH_GUI.cmd](Start_AFH_GUI.cmd) 启动监控,见[阶段报告](docs/阶段性成果报告_AFH_20261021.md)及[运行说明](docs/afh_usage_20261021.md)。固件复位默认仍是 legacy,AFH 选择仅在 RAM 中。连续无损 20 MSPS、50 ms 业务空窗和实际 RF 干扰验收尚未全部达标。 下列 2026-10-20 数字为历史版本记录,不能替代 AFH 镜像的验收数据。 **定量丢包测试(2026-10-20):** 在 TX 输入 `esb test 5000`,发送 5000 个独立请求,以 RX 有效回复统计丢包百分比;测试强制关闭重传,结束自动停发。支持 `esb test status/stop`,原配置保留,`esb start` 恢复连续通信。8 项新增实机检查、11 项原功能回归及 3 项客户端测试通过;详情见[灵敏度测试命令与结果](docs/esb_per_20261020.md)。 **固件 shell(2026-10-20):** TX 的 **COM9**、RX CH340 的 **COM21** 及两板 RTT 均已验证。可用 `esb stop/set/start` 修改 ESB 参数,`get/stats` 查询;当前恢复默认 4M、CH2、252 字节回复。上位机暂未增加 TX/RX 配置界面。参见[命令、参数范围与验证记录](docs/esb_shell_20261020.md)。下方原始 SDR 验收数字对应添加 shell 前的固件,新镜像尚未重新做 IQ 验收。 **启动等待优化(2026-10-20):** 修复 Windows 子进程反复加载完整科学计算库的问题,并让各进程同时准备。点击开始到显示首包的正式入口对照从 **16.52 秒降到 5.87~8.58 秒**;96 项测试通过,新增启动阶段提示。30 秒复测主机丢块为 0,但仍保留 IIO 超时和一条回复步进异常的未解决记录。重启上位机生效,详见[启动耗时报告](docs/startup_latency_20261020.md)。 **历史模式(2026-10-20):TX 发请求,RX 回复连续 uint32 数据,PHY 为 4M。** 每包回复包含 63 个小端 32 位整数,首包 1~63,次包 64~126,跨包递增。两个 nRF54 已烧录并验证,TX 端有效回复吞吐约 **2.736 Mbps**、步进及连续性错误为 0。上位机已显示两个方向和请求配对;30 秒实机采集配对 40,226 个有效回复,主机丢块和 UI 丢帧均为 0,仍记录了 221 个 CRC 失败候选帧。**89 项测试通过**,保存 IQ 的 1,403 帧回放逐项一致。见 [请求应答验收报告](docs/exchange_4m_20261020.md)和[实机截图](artifacts/exchange_4m_gui_compact_20261020/complete.png)。 此前单向无 ACK 的 4M 满载模式通过了 120 秒 GUI 测试,有效 payload 约 3.330 Mbps、主机丢块 0;该历史结果对应旧固件,不能当作当前双向吞吐。详见 [优化及实机报告](docs/optimization_4m_20261020.md);[优化前基准](docs/performance_4m_20261020.md)单独保留。此前出现过 IIO 超时,不能将一次成功测试当作永久不掉线或硬件零丢样证明。 此前的 [2M 验收报告](docs/acceptance_report.md) 和 [连接故障与恢复记录](docs/connection_recovery.md) 保留:2M 三分钟复测收到 7193 个 CRC PASS、主机丢块 0。该结果不代表当前 4M 满载性能;硬件丢样及数小时稳定性仍未验证。 ## 直接启动 在本机双击 [Start_ESB_GUI.cmd](Start_ESB_GUI.cmd),或在项目目录执行: ```powershell powershell -NoProfile -ExecutionPolicy Bypass -File scripts/run_gui.ps1 ``` 本机依赖已就绪。这个原有入口不打开 DK 串口,自动加载 `profiles/active_profile.json`;AFH 专用入口另启动只读 RTT 日志采集器。列表显示方向和整数范围,详情保留完整 payload。实际发现的设备 URI 为 `ip:fe80::20a:35ff:fe00:1e53%5`(接口 scope 可能随机器配置改变)。历史双向真实捕获目录 `captures/capture_20261020T063547_790975Z` 可直接回放,回放自动使用捕获时的 profile。数据从 RX 协议实例启动时开始递增,晚打开上位机看到的是当前计数。合成演示明确标记 SIMULATION,不进入实机计数。 4M 优化后实机截图:[LIVE 接收](artifacts/optimization_4m_20261020/gui120_final_bytes/live.png)、[停止与帧详情](artifacts/optimization_4m_20261020/gui120_final_bytes/complete.png)。此前 2M 停发对照为 160 → 0 → 164 个 CRC PASS;A1~A10 的历史证据与 LFRC 适配边界见 2M 验收报告。 ## 本机环境和依赖 - SDK:`C:\ncs\v3.3.0`,nrf tag `v3.3.0`;工具链包 `C:\ncs\toolchains\936afb6332`,由本机 `toolchains.json` 对应到 3.3.0。 - 板:`nrf54l15dk/nrf54l15/cpuapp`,PCA10156 / nRF54L15 REV1。板载 J-Link SN `001057723221`,J-Link 9.24a。 - 构建 Python 3.12.4、GCC 12.2.0、Zephyr SDK 0.17.0、west 1.5.0、CMake 4.2.1、Ninja 1.13.2。这些组件的独立版本号不叫“3.3.0”。 - 上位机 Python 3.14.0 x64,NumPy 2.5.3、SciPy 1.18.1、PySide6 6.12.0、pylibiio 1.0、orjson 3.13.0;系统 `libiio1.dll` 1.0.0 / `9a92966`。本项目自带 Windows x64 DSP DLL,见 [构建及回退说明](host/esb_monitor/native/README.md)。 完整路径、哈希和执行结果在 [环境审计](docs/environment_audit.md) / [environment.json](artifacts/environment.json)。 联网重建依赖:安装 Python 3.14 x64,并按本机 LibreSDR 指南配置匹配的 libiio 1.0 Windows DLL,然后执行: ```powershell powershell -NoProfile -ExecutionPolicy Bypass -File scripts/setup_windows.ps1 ``` 项目有自己的 `.venv`,基础科学/GUI 依赖通过只读 `.pth` 引用已验证的 `D:\TEMP\PGPS-SIM\.venv\Lib\site-packages`,新增 orjson 安装在本项目中。未修改 PGPS-SIM;当前运行仍依赖该目录存在。可用下列命令复现基础依赖引用,或者用上面的普通安装消除引用: ```powershell powershell -NoProfile -ExecutionPolicy Bypass -File scripts/setup_windows.ps1 -ReferenceVenv D:\TEMP\PGPS-SIM\.venv ``` 版本锁定见 [requirements-lock.txt](requirements-lock.txt)。构建脚本与上位机使用不同 Python;不要把 NCS 的 `PYTHONPATH` 注入上位机 Python。 ## DK 低频晶振适配 官方原版已成功编译、烧录、回读校验和复位,但在这块板上停在 GRTC/LFXO 初始化,RADIO 未初始化。用户提示低频晶振可能已去掉后,添加了 [diagnostic_lfrc.conf](firmware/diagnostic_lfrc.conf),改用低频 RC 和 GRTC LFLPRC。 **当前两板运行使用 LFRC 的 4M 请求/应答应用。** TX 探针为 `001057723221`,新增 RX 的 J-Link EDU Mini 探针为 `000801050224`(nRF54L15 REV2)。应用在项目内单独维护,SDK ESB 库未修改。此前 2M `diagnostic_lfrc` 和单向 4M 固件保留。原始默认 LFXO 构建的启动问题仍保留为独立事实。见 [固件说明](firmware/README.md)。 ```powershell # 当前 4M 请求 / 回复版本,两板使用内部低频 RC powershell -NoProfile -ExecutionPolicy Bypass -File scripts/build_firmware.ps1 -Variant exchange_4m_tx powershell -NoProfile -ExecutionPolicy Bypass -File scripts/build_firmware.ps1 -Variant exchange_4m_rx powershell -NoProfile -ExecutionPolicy Bypass -File scripts/exchange_hardware.ps1 -Action flash powershell -NoProfile -ExecutionPolicy Bypass -File scripts/exchange_hardware.ps1 -Action inspect # 历史单向 4M 满载 TX(会改变当前运行模式) powershell -NoProfile -ExecutionPolicy Bypass -File scripts/build_firmware.ps1 -Variant throughput_4m powershell -NoProfile -ExecutionPolicy Bypass -File scripts/flash_firmware.ps1 -Variant throughput_4m powershell -NoProfile -ExecutionPolicy Bypass -File scripts/inspect_dk.ps1 -Variant throughput_4m # 回退此前通过验收的 2M LFRC 版本 powershell -NoProfile -ExecutionPolicy Bypass -File scripts/build_firmware.ps1 -Variant diagnostic_lfrc powershell -NoProfile -ExecutionPolicy Bypass -File scripts/flash_firmware.ps1 -Variant diagnostic_lfrc powershell -NoProfile -ExecutionPolicy Bypass -File scripts/inspect_dk.ps1 -Variant diagnostic_lfrc # 保留的官方原始基线;当前板可能再次卡在 LFXO 初始化 powershell -NoProfile -ExecutionPolicy Bypass -File scripts/build_firmware.ps1 -Variant official powershell -NoProfile -ExecutionPolicy Bypass -File scripts/flash_firmware.ps1 -Variant official ``` 烧录脚本只擦除固件涉及的范围,使用 `VERIFY_READ` 后复位,不执行 recover 或全片擦除。每次成功烧录会更新 `profiles/active_profile.json`,GUI/CLI 优先加载它;原始官方 profile 始终单独保留。若通过其他工具烧录,需手动选择匹配的 profile。固件哈希是预期身份,不代表每次连接时都重新读取了板上整个 Flash。 ## 当前 4M ESB 配置 | 项目 | 本机 NCS 3.3.0 值 | | --- | --- | | 信道 / 频率 | 2 / 2402 MHz | | PHY / 发射功率 | NRF 4 Mbps(BT=0.6、h=0.5)/ 0 dBm | | 发射地址 | pipe 0,`E7E7E7E7E7`,按空口时间顺序每 8 bit MSB 打包显示 | | 帧格式 | DPL,LENGTH 8 bit + PID 2 bit + ACK_REQUEST 1 bit;每帧 payload 252 byte(SDK 上限)| | CRC | 16 bit,poly `0x11021`,init `0xFFFF`,覆盖地址、11 bit PCF 和 payload;无白化 | | ACK / 重传 | selective auto ACK 开启,应用 noack=true,重传 0 次;435 µs 重传延时不参与普通无 ACK 发送路径 | | 提交周期 | 无应用层 sleep,16 项 FIFO 连续补充,fast ramp-up;实测帧起点间隔中位数 604.75 µs | 前导码为 **16 bit**,已由真实 IQ 和独立 CRC 验证。2099-bit 帧占用 524.75 µs,实测包间空隙约 80 µs;应用层间隔为 0 不表示空口无间隙。当前 [4M profile](profiles/ncs330_esb_throughput_4m.json) 与历史 [2M 参数证据](docs/esb_profile.md) 分开保留。 当前 4M profile 的接收设置为 **8 MSPS、6 MHz 接收模拟带宽、15 dB 手动增益、RX0/A_BALANCED**,每块 262144 个复样本、4 个 native buffers、5 秒 IIO 超时。6 MHz 是 SDR 接收带宽;nRF 的发射调制由 4M PHY 决定。连接后逐项读回;本机 LO 返回 2401999998 Hz,比请求低 2 Hz,按实际值记录,偏差超过 100 Hz 会拒绝。连续解码要求每符号 2~16 个整数样本,例如 4M 使用 8、12、16 MSPS;提高采样率会进一步增加主机负载。 ## LibreSDR 接入后的操作 2026-10-20 超时修复:IIO 接收中断时最多重新建立连接两次,界面显示重连进度;重连后的 IQ 单独分段,日志记录中断,无法确定的缺失样本仍为 `null`。若 Ping 正常却连续出现首块超时,板上 `iiod` 可能仍占用旧采集连接,参见 [连接故障与恢复](docs/connection_recovery.md)。 1. 接通 LibreSDR 电源与 USB/网线。GUI 点击“发现设备”;若发现为空,可输入实际 `usb:` 或 `ip:` URI。IPv6 链路本地地址须带正确的 Windows 接口 scope。不会把旧 IP 当成当前设备。 2. 点击“连接”,核对上下文与设备信息。选择与实际 RF 插口对应的 RX 通道和端口;第一轮保持默认配置,必要时调整增益,避免削顶。 3. 点击“开始接收”。界面区分 profile 预期、SDR 实际读回和接收估计。停止后连接释放;再次采集先重新连接。 4. 选择一帧查看 PCF、完整 payload、CRC、位偏移、解调图和 IQ 样本区间。“暂停显示”仍继续采集保存。“停止接收”会取消 Stream 并排空保存队列。 5. 每次接收自动保存到 `captures/`。列表保留最近 2000 帧;导出复制全部会话报文,不受 CRC 筛选限制。 CLI 示例(将 URI 替换为实际发现结果): ```powershell .venv\Scripts\python.exe -m esb_monitor discover .venv\Scripts\python.exe -m esb_monitor diagnose --uri "ip:实际地址" .venv\Scripts\python.exe -m esb_monitor capture --uri "ip:实际地址" --seconds 60 --max-iq-mib 256 .venv\Scripts\python.exe -m esb_monitor replay "captures\实际捕获目录" # 指定独立 profile 时,全局参数放在子命令之前 .venv\Scripts\python.exe -m esb_monitor --profile profiles/ncs330_esb_ptx_default.json profile ``` ## 验证及数据 ```powershell powershell -NoProfile -ExecutionPolicy Bypass -File scripts/check_environment.ps1 -Probe powershell -NoProfile -ExecutionPolicy Bypass -File scripts/run_acceptance.ps1 # 当前 4M 性能测试:输出包含实际吞吐与主机丢块,不以完成运行代替性能达标 .venv\Scripts\python.exe scripts/benchmark_receiver.py --profile profiles/ncs330_esb_throughput_4m.json --uri "ip:实际地址" --seconds 60 --max-iq-mib 32 --output artifacts/benchmark_4m_new.json .venv\Scripts\python.exe scripts/benchmark_gui.py --profile profiles/ncs330_esb_throughput_4m.json --uri "ip:实际地址" --seconds 30 --output artifacts/benchmark_gui_4m_new .venv\Scripts\python.exe scripts/benchmark_raw_rx.py --profile profiles/ncs330_esb_throughput_4m.json --uri "ip:实际地址" --seconds 30 --output artifacts/benchmark_raw_4m_new.json # 持续实机验收:默认采集 65 秒,检查至少 60 秒和足量样本 powershell -NoProfile -ExecutionPolicy Bypass -File scripts/run_acceptance.ps1 -Hardware -Uri "ip:实际地址" # 已有成功接收后:正向 / DK halt / 恢复对照,finally 中 go powershell -NoProfile -ExecutionPolicy Bypass -File scripts/verify_negative.ps1 -Uri "ip:实际地址" # 仅在停止采集后,手动恢复板上 IIO 服务;SSH 交互输入设备密码 powershell -NoProfile -ExecutionPolicy Bypass -File scripts/restart_iio_service.ps1 -Uri "ip:实际地址" ``` 主验收脚本覆盖长测及 IQ 回放;GUI 和停发对照由 `verify_live_gui.py`、`verify_negative.ps1` 分别提供独立证据,再由 `consolidate_acceptance.py` 汇总。后者会核对 LIVE 来源和固件身份,不凭缺失证据写 PASS。更换设备或摆位后,先短捕获检查格式、幅度和 CRC,再运行长测。 会话包含 `session.json`、`profile.json`、`iq.s16le`、`blocks.jsonl`、`packets.jsonl`、`packets.csv` 和 `runtime.log`。IQ 默认最多 128 MiB,在 8 MSPS 时容纳约 4.19 秒样本(丢块时并非连续时间);达到上限后报文记录继续。回放仅覆盖已保存的 IQ,不能用其帧总数直接与完整 60 秒日志比较。回放结果不重复复制原始 IQ,应保留原始捕获目录。单位、位序、时间和缺失值定义见 [数据与解码说明](docs/data_and_decoder.md)。 硬件没有可靠序号/溢出计数时,相关值写 `null`。主机队列丢块独立计数;不能从 CRC FAIL 比例推导空口丢包率。当前 DSP 使用已知符号率的局部相位搜索,已在本次真实 RF 环境验证;宽范围频偏/时钟漂移、复杂干扰和数小时稳定性尚未覆盖。 ## 项目导航 - [firmware/README.md](firmware/README.md):官方基线、2M LFRC 和 4M 吞吐固件、差异和指纹。 - `host/esb_monitor/`:hardware、dsp、protocol、session、gui、cli。 - `profiles/`:官方基线、LFRC 适配、当前活动配置和 JSON schema。 - `tests/`:协议、独立 CRC、合成 IQ、回放、IIO 假对象契约、GUI 回归;生产代码不导入测试数据。 - `artifacts/`:固件、构建/烧录日志、环境审计、测试、截图和验收 JSON。 - [docs/optimization_4m_20261020.md](docs/optimization_4m_20261020.md):4M 上位机优化、正确性和实机性能验证。 - [docs/performance_4m_20261020.md](docs/performance_4m_20261020.md):4M 发射配置及优化前性能基准。 - [docs/acceptance_report.md](docs/acceptance_report.md):历史 2M 实机验收与适配边界。