Case study
Cat Printer BLE: reconstructing the MXW01 thermal printer protocol
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.
- Targets
- Protocol
- Category
- Independent reconstruction cases
- Relationship
- Independent reconstruction project
- Sources reviewed
Requirements & limits
- 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; this review ran neither the tool nor a printer.
- MIT license. The reviewed sources establish no AI or REA use.
About this entry
The description was reviewed against primary sources. This does not establish runtime testing, security auditing or verified compatibility.
Primary sources
- README.md GitHub · MaikelChan/CatPrinterBLE · Revision 007f821
- CatPrinterBLE/CatPrinter.cs GitHub · MaikelChan/CatPrinterBLE · Revision 007f821
- CatPrinterBLE/Crc8.cs GitHub · MaikelChan/CatPrinterBLE · Revision 007f821
- CatPrinterBLE/CatPrinterBLE.csproj GitHub · MaikelChan/CatPrinterBLE · Revision 007f821
- CHANGELOG.md GitHub · MaikelChan/CatPrinterBLE · Revision 007f821
- LICENSE GitHub · MaikelChan/CatPrinterBLE · Revision 007f821
More in Protocols
- a0rfid: an open driver for A0-protocol UHF RFID readers · Case study
- Xiaomi Kettle BLE protocol: reconstructing a smart kettle's control interface · Case study
- Ford Fiesta MK5 MS-CAN: decoding the dashboard and radio bus · Case study
- uniden-r8-ble: reconstructing the Uniden R8 radar detector's BLE telemetry · Case study
- opendash: reconstructing the Scanmatik SM3 J2534 adapter protocol · Case study
- OWL: an open Apple Wireless Direct Link implementation · Case study