{
  "added_at": "2026-11-09",
  "additional_evidence_urls": [
    "https://github.com/Cr4sh/qc_debug_monitor/blob/d4c2f80c8077adc1b6a9e99b0c1c4bc9ed43b40d/README.MD#L44-L46",
    "https://github.com/Cr4sh/qc_debug_monitor/blob/d4c2f80c8077adc1b6a9e99b0c1c4bc9ed43b40d/README.MD#L89-L93",
    "https://github.com/Cr4sh/qc_debug_monitor/blob/d4c2f80c8077adc1b6a9e99b0c1c4bc9ed43b40d/qc_debug_monitor.py",
    "https://github.com/Cr4sh/qc_debug_monitor/tree/d4c2f80c8077adc1b6a9e99b0c1c4bc9ed43b40d/examples"
  ],
  "category": "firmware",
  "description_en": "Python monitor by Dmytro Oleksiuk (Cr4sh) that reads debug messages from Qualcomm cellular-modem firmware in real time over the modem's DIAG serial port, on a rooted Android phone or a USB modem. It enables message reporting for chosen 16-bit subsystem IDs, prints or logs text messages with their firmware source file and line, and decodes terse messages, which carry only a 32-bit format-string hash and arguments, when given a hash database. A discovery mode lists the subsystem ID ranges a modem answers to, and logs can be split into one file per subsystem.",
  "description_zh": "由 Dmytro Oleksiuk（Cr4sh）编写的 Python 监视工具，通过调制解调器的 DIAG 串口实时读取高通蜂窝调制解调器固件的调试消息，可用于已 root 的 Android 手机或 USB 调制解调器。它为选定的 16 位子系统 ID 开启消息上报，输出或记录附带固件源文件名和行号的文本消息；提供哈希数据库时，还能解码只含 32 位格式字符串哈希及参数的精简（terse）消息。发现模式可列出调制解调器响应的子系统 ID 范围，日志也可按子系统分别写入单独文件。",
  "entry_url": "https://awesomerea.org/resources/qc-debug-monitor/",
  "entry_url_zh": "https://awesomerea.org/zh/resources/qc-debug-monitor/",
  "evidence_url": "https://github.com/Cr4sh/qc_debug_monitor/blob/d4c2f80c8077adc1b6a9e99b0c1c4bc9ed43b40d/README.MD",
  "group": "tools",
  "id": "qc-debug-monitor",
  "json_url": "https://awesomerea.org/resources/qc-debug-monitor/record.json",
  "kind": "tool",
  "markdown_url": "https://awesomerea.org/resources/qc-debug-monitor/index.md",
  "markdown_url_zh": "https://awesomerea.org/zh/resources/qc-debug-monitor/index.md",
  "name": "qc_debug_monitor",
  "name_zh": "qc_debug_monitor 高通调制解调器调试消息监视器",
  "record_type": "resource",
  "relationship": "foundation",
  "requirement_facets": [
    "prerequisites",
    "prerequisites",
    "prerequisites",
    "testing",
    "license"
  ],
  "requirements": [
    "Run the Python 2 script with pySerial and access to a serial device such as /dev/ttyUSB0; the README uses sudo. The repository has no tags or releases.",
    "A Qualcomm modem with an exposed DIAG serial port is required. The documented Quectel EC25 example uses an MDM9607; other devices may need subsystem ranges found with discovery mode.",
    "Terse-message decoding requires an external database of Qualcomm firmware debug-message hashes. The README gives no provenance or reuse terms for that database; without it, terse messages remain undecoded.",
    "The README describes example logs from an EC25 connected to an srsLTE eNodeB and labels subsystem descriptions as guesses. The repository contains no firmware images, and the project has no tests.",
    "The repository has no license file or license statement."
  ],
  "requirements_zh": [
    "以 Python 2 和 pySerial 运行脚本，并访问 /dev/ttyUSB0 等串口设备；README 使用 sudo。仓库没有标签或发布版。",
    "需要已开放 DIAG 串口的高通方案调制解调器。文档中的 Quectel EC25 示例使用 MDM9607；其他设备可能需要用发现模式查找子系统范围。",
    "解码精简消息需要外部的高通固件调试消息哈希数据库。README 未给出该数据库的来源或复用条款；缺少数据库时，精简消息仍未解码。",
    "README 描述了 EC25 连接 srsLTE eNodeB 时采集的示例日志，并将子系统描述标为推测。仓库不含固件镜像，项目没有测试。",
    "仓库没有许可证文件或许可声明。"
  ],
  "targets": [
    "firmware"
  ],
  "url": "https://github.com/Cr4sh/qc_debug_monitor",
  "verification": "source-reviewed",
  "verified_at": "2026-10-27"
}
