About a year of so ago I added support for the newer Canon SELPHY printers (CP820, CP910, CP1000, and CP1200) into Gutenprint. Despite using the same media kits as their older siblings, under their plastic bodies they sported a new print engine that worked fairly differently.
Slightly different print sizes, a Y'CbCr image format, and, surprisingly, they appeared to be sane USB Printer class models and not require a special backend to handle communications.
Fast forward to last week, and it turns out that was a premature assessment. While the printers didn't require any special hand holding to print a single image, they would lock up if one would send over two jobs back-to-back. Canon still can't implement proper flow control.
Time to break out the sniffer and capture some multi-page jobs! A quick flurry of hacking later, and the 'canonselphyneo' backend was born. It brings along sane flow control, status reporting, and error detection on par with the selphyneo's older siblings.
I also discovered the 'L' print size was incorrect. All of this will will be in Gutenprint 5.2.12-pre5 or newer, but the current backend can always be grabbed from my selphy_print repository.
Oh, as I write this, I don't have the USB IDs for the CP820 or CP1000 models. I need those so they'll be recognized by the backend. Holler if you have one!
Update 2017/01/06: I now have the CP1000 ID; only the CP820 is missing.