July 03, 2015 @ 15:41 EDT
Shinko S1245 and S6245 (AKA Sinfonia E1 and CE1)
A few months ago I received a semi-official documentation dump from
Sinfonia. Thanks to that information, Gutenprint now claims full
support for both the S1245 and S6245. These models required new
backends, and last night I committed the last of the necessary changes.
Both printers should now work -- in theory, anyway.
As I don't own or have access to either printer, this code has received no testing whatsoever, and as such might result in kittens swallowing the earth with impeccable wide-eyed cuteness as they mew and cry out for belly rubs. Oh, the humanity!
If there's someone out there who wouldn't mind donating a printer to the cause, or at least be willing to go a few rounds of testing, drop me a line.
Do it for Free Software. Do it for World Peace. Do it for Kittens.
June 30, 2015 @ 22:27 EDT
June 29, 2015 @ 08:15 EDT
Ongoing Dyesub Photo Printer Developments
Gutenprint 5.2.11-pre1 was released this weekend. It contains the usual support for a pile of new printers, and improvements for many previously-supported models. I'll only speak about stuff I had a hand in:
First, the newly-supported models that are reported to be working quite well:
- Canon SELPHY CP820 and CP910
- Citizen CW-01 / Olmec OP900
- DNP DS620/DS620A
- Mitsubishi CP-3800DW
Next, new models that were added but have received no testing:
- Sony UP-CR10L (aka DNP SL10)
- Shinko S1245 
Models that have much-improved support:
- DNP DS40/DS80/RX1 
- Citizen CX/CX-W/CY 
- Canon SELPHY CP900
- Kodak 605, 6800, and 6850 
- Mitsubishi CP9550 family (including the CP9550DW-S!)
- Sony UP-DR200
Finally, models that are improved or added, but will require muh more work before they are considerd useful:
- Mitsubishi CP-D70/D707/K60/D80 
- Ciaat Brava 21 
- Kodak 305 
- Kodak 8810
- Shinko S6145 
- Shinko S6245
 The Shinko S1245 is notable in that I've already completed a full-featured backend that just needs testing with a real printer.
 These models are all related, and use an unknown color scaling/dithering algorithm that must be reverse-engineered before the printers become usable.
 The Kodak 68x0 family in particular is consirerably more robust in the face of errors, media mismatches, and status reporting.
 The DNP/Citizen backend was greatly improved, and is far, far more robust than it used to be. Error detection and recovery, general buffer management, handling media/printjob mismatches, and even general status queries were all improved.
Oh, just to forestall the question, all printers with multicut modes (eg 2x6 strips) have full support, but will require a minor patch to be applied to Gutenprint before compiling.
I'll end this with my usual request for testers, especially ones with access to the Shinko S1245, Sony UP-CR10L, and DNP SL10 models since the work is already completed. As for what's next, the Shinko S6245 is the most promising candidate.
Thanks go out to everyone who has helped -- be it testing or providing USB dumps; sending over documentation (Yay, Shinko!), or actual printers (Yay, LiveLink!). There are others I would like to acknowledge but they have asked to remain anonymous. Thank you, all.
June 12, 2015 @ 21:47 EDT
May 26, 2015 @ 02:38 EDT
May 24, 2015 @ 14:09 EDT
May 14, 2015 @ 15:32 EDT
May 13, 2015 @ 20:53 EDT
May 12, 2015 @ 18:06 EDT
May 01, 2015 @ 21:23 EDT
April 28, 2015 @ 20:33 EDT
April 22, 2015 @ 02:00 EDT
Holy Exploding Battery, Batman!
- Battery acid doesn't smell particularly good
- You can never have too much baking soda on hand
- I got damn lucky that the only other damage was some paint
One bit of luck -- These batteries have two weeks left on their no-questions-asked 2-year full replacement warranty. With luck they'll replace them both.
April 11, 2015 @ 14:11 EDT
April 05, 2015 @ 09:37 EDT
February 17, 2015 @ 23:17 EST
Progress on the Shinko S1245, S6145, and S6245
A few weeks ago, a kind gentleman at Sinfonia sent me a pile of documentation on their S1245, S6145, and S6245 printers.
The S6145 and S6245 use a similar command language to the S2145, but the S1245 is quite different. So I decided to start with the latter, and created a new backend for it. It's now complete, but needs testing.
Support for the S6245 will probably follow, likely added into the existing S2145 backend as most of their code will be shared.
Unfortunately, the S6145 is another matter. While its command language is quite similar to the S2145, it has some peculiar data format requirements.
While the spool data is packed 8-bit RGB, the printer driver (aka our backend) is expected to convert it to 16-bit planar YMC+L data. That is easy enough to accomplish, except the data also needs to be massaged via an unknown algorithm combined with an opaque data blob that the printer supplies.
If this sounds familiar, it's because that sounds eerily similar to what the Mitsubishi K60/D70/D707/D80 printers require, complete with a file providing the raw lamination data and pile of tabular data that feeds into the transformation algorithm. This is strong evidence that the S6145, the CIAAT Brava 21, Kodak 305, and those Mitsubishi models all use the same basic print engine.
The Sinfonia rep wasn't able to provide any further details on the algorithm, though he did provide a set of binary x86 and x86_64 libraries that perform the necessary transformations. So it's a sort of bad news, good news situation.
Anyway. At this point, the S1245 backend is ready for testing, and since I can't justify buying yet another high-end photo printer, that means I'll need a volunteer to test this stuff out.
In the mean time, I'll probably work on support for the S6245, which will also eventually need testing. Then I'll move on to the S6145, get the core backend in place, then teach myself some x86_64 assembly and get to reverse-engineering the necessary algoritms and maybe eventually get somewhere.
So, does anyone have a spare S1245, S6245, and/or S6145 printer to toss my way? It's for a good cause!
January 18, 2015 @ 08:36 EST
January 07, 2015 @ 06:58 EST
Happy new year, y'all...
Due to some major unexpected expenses and an annoying (if minor) bout of pneumonia, my new year's plans were considerably less ambitious than in recent years.
This time, I watched the sunrise from Alice Wainright Park, with a view over Biscayne Bay, in the Vizcaya district of Miami.
It was a fallback position, because for some ungodly reason the powers that be locked up all parks on both Key Biscane and Virginia Key.
I'm not sure if I'll write up some sort of retrospective of the year, but I have been keeping myself busy.
December 01, 2014 @ 20:33 EST
November 22, 2014 @ 08:35 EST
The current state of the Mitsubishi CP-D70DW, CP-D707DW, CP-K60DW-S, and CP-D80DW printers under Linux
Over the last month or so, I've received on average two questions a week about these printers, mostly along the same lines of "I can't print with them, help!"
The short answer
They don't work with Linux, and this isn't likely to change anytime soon.
The longer answer
With the Mitsubishi CP-D70 and D707, If you use the Gutenprint 5.2.11-cvs code later than August 14, and the backend code from at least October 4, you will be able to successfully generate prints. The CP-K60 still won't print at all due to incomplete knowledge about printer backend protocol, and I have not seen what changes the CP-D80 incorporates.
Unfortunately, while the CP-D70 and D707 are able to successfully print, the output is all screwed up. The Windows drivers perform non-linear color scaling that requires gamma correction; this is annoying but would be straightforward to figure out, except the drivers are also doing some sort dithering.
How bad is this dithering? A test job with six nominal colors results in a printjob that contains over 18,000 (16-bit) color values. Even a simple "print a page with a single, pure color" job results in dozens (if not hundreds) of colors as the driver adjusts the intensity according to some unknown algorithm.
The pithy answer
Mitsubishi actually wrote Linux drivers for all of these (and other!) printers, but only provides them as part of their Kiosk solutions, not for normal end-users. So, don't reward manufacturers that snub Linux users, and support those who do.
The alternative answer
There are many competitive alternatives (both price-wise and performance-wise) which have solid support under Linux. In particular, here's what I'd recommend if you want a kiosk-class, workhorse photo printer:
- DNP DS40, RX1, or DS80
- Citizen CX, CX-W, or CY
- Shinko S2145 / Sinfonia S2
- Kodak 6800, 6850, or 605
- Sony UP-DR150 or UP-DR200
Several other models from these manufacturers should (in theory) work okay, but the above represents a known-good list. Note the utter lack of any Mitsubishi models; as of this writing, none of their printers play well with Linux.
The pleading answer
In case anyone over at Mitsubishi is reading this, how about tossing me some documentation and a printer or three to play with? Proper Linux support will only help you sell more printers!
November 21, 2014 @ 17:40 EST
November 10, 2014 @ 19:44 EST
November 08, 2014 @ 10:42 EST
November 08, 2014 @ 10:27 EST
October 29, 2014 @ 22:38 EDT
Further printer work
Okay, so I guess I was wrong about additional printer hacking. Despite the 12-hour days at the office over the past few weeks (we got our first silicon back, and software is the ring that binds everything together in the darkness), I'm still spending time writing code when I get home.
First, I added support for the Sony UP-CR10L and its rebadged bretheren, the DNP SL10. I've had these on my to-do list for a while; I'd already decoded everything and updated the existing UP-DR150/200 backend to handle the new bits, but never got around to adding proper support into Gutenprint. That's now done, and once I get the USB PIDs, it should JustWork(tm).
Beyond that, I've knocked out a few things on the bug list. One I just fixed affected pipelined printingon the DNP/Citizen printers, and it was most easily triggered by multi-page print jobs. With Gutenprint 5.2.10's backend, the printer would just abort the job after the first page, but if you were using a development snapshot after 2014-06-04, it would automatically retry the job, resulting in an endless printing of page 1 over and over again.
The bug was due to the backend mistakenly treating the "Printing, with one available buffer for a 300dpi or small 600dpi job" status as an error.
At least folks won't have to wait for the next Gutenprint release to pick up the latest backend code.
I have a rather large photo backlog from the past month to sort through. That will be my weekend project..
October 19, 2014 @ 23:49 EDT
I just committed initial support for the Shinko/Sinfonia CHC-S1245, CHS-S6145, and CHC-S6245 into Gutenprint. They use printjob structures similar to the S2145, and appear to share the same basic driver core, so the odds are high that the existing S2145 backend will work with only minor changes.
So, if there's anyone out there with one of those models (or better yet, some low-level documentation on their communication protocol) drop me a note, and from there we should be able to get things working pretty quickly.
There's still the CHC-S8145 and the DP-1045 to sort out, but those are for another time.
I think that's it for printer hacking for a while, barring bugfixes and the ongoing Mitsubishi CP-D70/D707/K60 saga. Testers needed...