🐞 问题答复
这一页发布「🐞 遇到问题」上报的分析结论。输入编号(形如
20260917-072530-ab12)或关键词即可筛选。
20260919-085517-b3aa
已答复
环境 · 2026-09-19 09:12
(未填写)
无在发产品缺陷:录音「dropped/queue full」签名与 V2.44/V2.45(v1.15.0 发布)修复的写入端生命周期缺陷同签名,但均为 2026-09-12 旧日志、当前 v1.18.1 已含修复(server.py:348 `_ensure_rec_writer()` 幂等重建 writer、server.py:432 队列满改为丢最旧块),09-19 近期日志录音/音频/串口全部健康;其余命中为 USB 串口重枚举(环境)与开发机跑测试套件写同一日志造成的 Traceback 误报
诊断
录音命中全部是 2026-09-12 22:30 的旧日志(summary.txt『== 录音写入:233 条 ==』首条 2026-09-12 22:30:23,503 『Recording dropped 350 block(s) so far』、22:30:24,151 『Recording queue full on stop — finishing directly』),与 SDD/14-version-history.md V2.44/V2.45 记录的 22:26 现场签名(dropped 950 块 + queue full on stop + 时长正确全静音)同源,该缺陷在 v1.15.0 已修复,当前 1.18.1 远高于修复版本 → 按已修复的历史残留处理,非回归:2026-09-19 的 server.log 尾部无任何录音告警,env.json 显示 recording.active=true 正常
『串口掉线 5335 条』为 [Errno 6] Device not configured 的 USB 桥重枚举(summary.txt『串口恢复:出现 ENXIO…』),日志原文已指明电缆/供电/无源 HUB 嫌疑,且均发生在 2026-09-12;09-19 近期日志 serial_connected=True、IF poll 每约 5 分钟一次干净返回(『2026-09-19 08:55:14,656 IF poll: vfo_a=7060000 Hz (+0 Hz)』),属环境问题非缺陷
『Traceback 47 条 + 启动 25 次 ⚠️崩溃』是误报:server-prev.log 尾部大量行是单元测试输出(/dev/fake 端口、tmp 路径、『test_cq_player.py:162』『test_memory_recall.py:66』等),即本机在仓库目录跑测试套件时与服务器共用 logs/server*.log,测试的 Traceback 被计入体检;09-19 真实服务器会话(08:13–08:55)无异常,TX 会话 frames/written 正常、queue_drops=0
音频『Configured audio device not found』与『RX open failed -9999』均为 09-12/09-18 旧记录,对应设备重枚举后缓存索引失效(AGENTS.md 已记载该已知行为并带重初始化恢复);09-19 日志显示『RX audio started: [4] USB Audio Device』反复成功
『Weak password detected!』(2026-09-19 08:55:07,770)为使用建议;『未验证机型拒绝发射』TX 门禁 141 条属预期安全行为(env.json tx_gated=false,实际在用 FT-710 未被门禁)
你要做的
若近期再次遇到录音无声:直接重新录一段并用播放器确认,当前版本已按会话重建写入器;如新录音仍全静音再上报并注明时间点
串口若再掉线:把 FT-710 USB 线直插主机(不用无源 HUB),换一根短一点的优质 USB 线,并确认电台供电稳定;掉线后服务器会自动重连,无需重启
设备重插后若提示『Configured audio device not found』:在设置里重新选择当前的 USB Audio 设备名保存即可(系统重枚举会改变设备序号,程序已按名称解析)
建议把测试/开发运行的服务端日志与日常使用的 MRRC_LOG_DIR 分开(例如日常启动器已指向用户数据目录),避免测试 Traceback 污染体检摘要
把 Web 登录密码改为至少 12 位、含大小写/数字/符号,消除 Weak password 告警
如需 IC-705/IC-7760 等未验证机型发射,先按日志提示用 _diag_civ.py 核验电台,再设 MRRC_ALLOW_UNVERIFIED_TX=1 并重启;对 FT-710 无影响,可忽略该告警
原始证据
summary.txt:『2026-09-12 22:30:23,503 [WARNING] mrrc: Recording dropped 350 block(s) so far』『2026-09-12 22:30:24,151 [WARNING] mrrc: Recording queue full on stop — finishing directly』
SDD/14-version-history.md:15 (SDD V2.45 2026-09-12) 与 :16 (SDD V2.44 / v1.15.0):『Recording dropped 950 block(s) so far』…『_ensure_rec_writer() 在每次 add_audio/stop 入队/每次 REC 时幂等重建』
server.py:348 def _ensure_rec_writer() / server.py:432 『Recording queue full on stop — dropping the oldest …』(修复后措辞,证明当代码含修复)
summary.txt:『2026-09-12 23:05:05,849 Serial device [已隐去] disappeared ([Errno 6] Device not configured)』
server-prev.log:『test_cq_player.py:162』『test_memory_recall.py:66』『Connected to IC-7300 (CI-V 0x94) on /dev/fake』——Traceback 来自测试套件共享日志
server.log:『2026-09-19 08:16:11,620 TX session: frames=137 … queue_drops=0』『2026-09-19 08:16:11,879 RX audio started: [4] USB Audio Device …』『2026-09-19 08:55:14,656 IF poll: vfo_a=7060000 Hz (+0 Hz)』
server.log:『2026-09-19 08:55:07,770 [WARNING] mrrc: Weak password detected!』
相关代码:server.py:348 _ensure_rec_writer(V2.44/V2.45 修复已存在,当代码无需改动)
20260918-114118-9ad3
已定位,待修复
音频 · 2026-09-19 09:10
(未填写)
录音签名与 V2.44/V2.45 修复的「写入端一次性生命周期」缺陷同签名,当前 v1.18.1 已包含修复;包内命中行全部为 2026-09-12 修复前的历史日志,9/18 当天无新录音丢弃,按回归排查(用户先做一次新录音验证),其余告警(串口 ENXIO、音频 -9999、TX 门禁、弱密码)均为已知环境/预期行为
诊断
录音签名逐行吻合本仓历史:`Recording dropped 350 block(s) so far` + `Recording queue full on stop — finishing directly` 与 V2.44/V2.45(v1.15.0 发布,2026-09-12)记录并修复的『MP3 writer 只在进程启动时创建一次,首次 REC/STOP 后每会话无人消费、时长正确内容全静音』缺陷完全同签名;当前代码已含修复(server.py:348 `_ensure_rec_writer()` 在每次 add_audio/stop/REC 幂等重建 writer,队列满改为丢最旧块)→ 按回归排查:包内该签名的样本行时间戳均为 2026-09-12 22:30/22:37(修复发布前的旧日志残留),而 2026-09-18 当天的 log 尾部零条录音丢弃,故需用户在 1.18.1 上录一段新 QSO 验证;若新录音仍全静音即为回归
串口掉线 6893 条:`[Errno 6] Device not configured` + `No such file or directory: [已隐去]` 为 USB 串口桥物理层消失后重枚举(V2.43 已优化恢复成本:重连不再做 17 s 的全量状态同步),属线缆/HUB/供电环境问题,非产品缺陷
音频恢复 192 条:`RX open failed ([Errno -9999] Unanticipated host error)` 是 macOS Core Audio 在 USB 重枚举后缓存设备索引失效的已知现象,产品已内置 PortAudio 重初始化 + 按设备名重解析重试(audio_handler.py);`Configured audio device 'USB Audio Device' not found` 与之同源,env.json 显示当前两设备均已枚举到,属瞬时环境问题
TX 门禁 141 条(IC-705/IC-7760/FTDX10 not hardware-verified — transmit refused)为预期安全行为,且本机 radio.model=ft710、tx_gated=false,不影响使用;`Weak password detected!` 为密码强度提醒
Traceback 47 条在包内未附任何堆栈内容(仅重复标题行),且 server-prev.log 显示本机同时跑过单元测试(tests/test_cq_player.py 等),无法归因到运行故障;如需排查需附原始堆栈段落
你要做的
录音回归验证:在 v1.18.1 上开启一次录音(REC)→ 收发几十秒 → 停止,回放生成的 MP3 确认有声音;本仓 recordings 目录文件名含频率与时间(如 `<freq>kHz_<日期>_<时间>.mp3`),若新录音正常则说明包内命中只是 9/12 的旧日志,无需处理;若仍全静音,再上报并注明新录音的文件名与时间
串口稳定性:电台 USB 线直连电脑、不经无源 HUB;换一根短一点的优质 USB 线;确认电台供电稳定(重枚举多由供电/接触引起);掉线后程序会自动重连并经轮询层级恢复状态,无需手动重启
音频无声/启动时 RX 打不开:电台断电重开或换 USB 口后,在设置里重新选择 RX/TX 设备(macOS 重枚举会改变设备序号,程序会按名称重解析,但设备被系统改名/占用时需手动重选)并重启服务
如确需在未验证机型上发射才设置 MRRC_ALLOW_UNVERIFIED_TX=1(先用 _diag_civ.py 验证电台),本例 FT-710 已验证、无需设置
按提醒把 Web 登录密码改为 ≥12 位、含大小写/数字/符号的强密码
原始证据
summary.txt 录音写入:`2026-09-12 22:30:23,503 [WARNING] mrrc: Recording dropped 350 block(s) so far`;`2026-09-12 22:30:24,151 [WARNING] mrrc: Recording queue full on stop — finishing directly`
CHANGELOG.md:290 `现在 _ensure_rec_writer() 在每次 add_audio、stop 入队与每次 REC 时幂等重建 writer…队列满时改为丢弃最旧块以腾出位置给 stop 哨兵`
SDD/14-version-history.md:15-16 SDD V2.45/V2.44:『录音写入端生命周期修复——同一进程里只有第一次录音有声音…大小和时长都正确、内容全哑』,随 v1.15.0 发布
server.py:348 `def _ensure_rec_writer()`;server.py:396/423/1550 三处调用;server.py:432 `Recording queue full on stop — dropping the oldest block to finish`(新行为)
summary.txt 串口掉线:`Serial device [已隐去] disappeared ([Errno 6] Device not configured) — the radio's USB bridge re-enumerated, or the cable/hub/power is marginal`
summary.txt 音频恢复:`2026-09-18 07:11:25,831 [WARNING] mrrc.audio: RX open failed ([Errno -9999] Unanticipated host error) — re-initializing PortAudio`
env.json: version=1.18.1, radio.model=ft710, tx_gated=false, configured_rx/configured_tx=USB Audio Device;summary.txt TX 门禁:`Icom IC-705 is not hardware-verified — transmit refused`
server-prev.log:`tests/test_cq_player.py`、`tests/test_poll_scheduler.py` 等测试输出(说明本机日志混有开发测试记录)
相关代码:server.py:_ensure_rec_writer(修复已在当代码;如复现回归再查 recorder.py:_recording_writer_loop 与 server.py 的 _rec_queue 消费端)
工作流看板:FDE 看板 (bug/需求分类 · 排期 · 后台实施结果)
最后更新:2026-09-19 11:33(自动生成,勿手改)