{
  "added_at": "2026-11-03",
  "additional_evidence_urls": [
    "https://github.com/MaikelChan/CatPrinterBLE/blob/007f82151fe40250bd3d5328139e588ea99364ac/CatPrinterBLE/CatPrinter.cs",
    "https://github.com/MaikelChan/CatPrinterBLE/blob/007f82151fe40250bd3d5328139e588ea99364ac/CatPrinterBLE/Crc8.cs",
    "https://github.com/MaikelChan/CatPrinterBLE/blob/007f82151fe40250bd3d5328139e588ea99364ac/CatPrinterBLE/CatPrinterBLE.csproj",
    "https://github.com/MaikelChan/CatPrinterBLE/blob/007f82151fe40250bd3d5328139e588ea99364ac/CHANGELOG.md",
    "https://github.com/MaikelChan/CatPrinterBLE/blob/007f82151fe40250bd3d5328139e588ea99364ac/LICENSE"
  ],
  "category": "reconstruction-cases",
  "description_en": "Replaces the vendor phone app for the MXW01 “cat printer”, a small Bluetooth Low Energy thermal printer, with a Windows command-line client. The author reports starting from the iOS-only Moblin implementation and then reverse-engineering the vendor's phone app further, and the client sends CRC8-checked commands to one GATT service while streaming 384-pixel image lines in 1-bit or 4-bit grayscale. Several command IDs remain marked as unknown, and the author tested only this one printer model.",
  "description_zh": "以一个 Windows 命令行客户端替代 MXW01“猫猫打印机”（一款小型低功耗蓝牙热敏打印机）的厂商手机应用。作者称以仅支持 iOS 的 Moblin 实现为起点，再进一步逆向厂商的手机应用；该客户端向一个 GATT 服务发送带 CRC8 校验的命令，并以 1 位或 4 位灰度传输每行 384 像素的图像数据。若干命令 ID 仍标为未知，作者也只测试了这一款打印机。",
  "entry_url": "https://awesomerea.org/resources/catprinterble-mxw01-printer-case/",
  "entry_url_zh": "https://awesomerea.org/zh/resources/catprinterble-mxw01-printer-case/",
  "evidence_url": "https://github.com/MaikelChan/CatPrinterBLE/blob/007f82151fe40250bd3d5328139e588ea99364ac/README.md",
  "group": "cases",
  "id": "catprinterble-mxw01-printer-case",
  "json_url": "https://awesomerea.org/resources/catprinterble-mxw01-printer-case/record.json",
  "kind": "case-study",
  "markdown_url": "https://awesomerea.org/resources/catprinterble-mxw01-printer-case/index.md",
  "markdown_url_zh": "https://awesomerea.org/zh/resources/catprinterble-mxw01-printer-case/index.md",
  "name": "Cat Printer BLE: reconstructing the MXW01 thermal printer protocol",
  "name_zh": "Cat Printer BLE：重建 MXW01 热敏打印机协议",
  "record_type": "resource",
  "relationship": "independent-reconstruction",
  "requirements": [
    "Reviewed at the release 1.2.0 commit of 2025-05-22. The tool prints images with Bayer or Floyd–Steinberg dithering, feeds or retracts paper, and reads battery, paper, temperature and state information; README says it is not an editor and that other printer models are not planned because the author has none to test.",
    "Requires the user's own MXW01 printer. The repository contains only original C# source and a photo; the vendor app the author analysed, any decompiled code and any traffic captures are not included, and no account or vendor software is needed at runtime.",
    "Windows only: the project targets .NET 8 for Windows 10 build 19041 or later with native AOT publishing, using the InTheHand.BluetoothLE and SixLabors.ImageSharp packages; the README asks for the .NET 8 Runtime.",
    "CatPrinter.cs names the GATT service and its command, notification and data characteristics and lists the command IDs, with comments marking several as unknown or guessed. The repository has no test suite or CI, so printing behaviour is author-reported.",
    "MIT license."
  ],
  "requirements_zh": [
    "在 2025-05-22 的 1.2.0 版本提交处审阅。该工具可使用 Bayer 或 Floyd–Steinberg 抖动打印图像、进纸或退纸，并读取电量、纸张、温度和状态信息；README 称它不是编辑器，且作者手头没有其他型号可测，因此不打算支持其他打印机。",
    "需要使用者自己的 MXW01 打印机。仓库只包含原创 C# 源码和一张照片；作者分析过的厂商应用、任何反编译代码和通信抓包均未收录，运行时也不需要账号或厂商软件。",
    "仅支持 Windows：项目面向 Windows 10 build 19041 及以上的 .NET 8，并采用原生 AOT 发布，依赖 InTheHand.BluetoothLE 和 SixLabors.ImageSharp 软件包；README 要求安装 .NET 8 Runtime。",
    "CatPrinter.cs 给出了 GATT 服务及其命令、通知和数据特征值，并列出各命令 ID，注释将其中若干标为未知或推测。仓库没有测试套件或 CI，打印行为为作者报告。",
    "采用 MIT 许可。"
  ],
  "targets": [
    "protocol"
  ],
  "url": "https://github.com/MaikelChan/CatPrinterBLE",
  "verification": "source-reviewed",
  "verified_at": "2026-10-27"
}
