I've set out to make my own tool to help me understand the communication between control panel and main board of a Canon Pixma MX340 multi-function inkjet. It will listen to that communication, filter out the known data, and alert me to activity that are unknown to me. I thought such a tool would already exist but I failed to find it.

Trying to keep things simple, I will focus on just this MX340 teardown project instead of a general serial data filter/alert system. The entire project will be built along a similar "start with the easy thing first" approach. In terms of hardware, this project requires two asynchronous serial receive lines. Rather than build dedicated hardware, I'm going to use standard USB serial adapters. Each of them have a transmit and a receive line, so I'll use two of those commodity adapters and use the receive line on each.

For connecting to the MX340, I first thought I'd do what I did earlier for the Saleae logic analyzer and build my own wiring harness. I wasn't thrilled with the thought of unsoldering some perfectly good connections just to swap to different wires, then I realized I had an even easier option: cut into the wiring harness I built and crimp on more connectors. This leaves existing soldering in place and I still preserve the ability to use the logic analyzer in parallel if I wanted to. I used generous amount of wire earlier so there's plenty of slack.

For software, I wanted to optimize my iteration time. This means I'm not using a microcontroller, to avoid a recompile and upload on every iteration. Staying on my computer, I don't even want to use a compiled language. I want something I can quickly experiment on an interactive command line and grow to short interpreted source code that's quick to edit and rerun. These preferences led me to Python and the pySerial library. I'll try that first and it seems to work well enough to help me gain further insight.


This teardown ran far longer than I originally thought it would. Click here to rewind back to where this adventure started.