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..

Posted by Solomon Peachy | Permanent link & Comments | File under: Free Software

October 19, 2014 @ 23:49 EDT

Shinko/Sinfonia printers

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...

Posted by Solomon Peachy | Permanent link & Comments | File under: Free Software

October 17, 2014 @ 23:33 EDT

More dyesub printer work

The Citizen CW-01 is now confirmed working, and the necessary code has been committed into Gutenprint. With luck, the next release will take less than two years! This should also work with the Olmec OP-900, but I'll need a USB ID in order to add that to the backend.

Meanwhile, I just committed initial support for the Kodak 305 and Kodak 8810 printers to Gutenprint. It's unknown if they need an intelligent backend, but I suppose time will tell. As always, testers welcome.

Here's my current to-do list:

  • Kodak 8800, 7000/7010/7015, and D4000
  • Mitsubishi CP-D80DW and CP-9600DW
  • Shinko S1245, S6145/S6145-5A, S5245, S8145, and DP-1045
  • Sony UP-CR10L and UP-CR20L (aka DNP SL-10 and SL-20)

These models need USB IDs:

  • Citizen CW-02, OP900, OP900-II
  • Mitsubishi CP-3800DW

These models need testing:

  • Mitsubishi CP-3020D/DA/DE/DAE, CP-9550D/DW, and CP-9810D/DW
  • Kodak 8500, 9180, 8810, and 305

I've received inquires about various HiTi models, but without access to the printers (or at least complete USB sniffs of print generation with specific settings logged) I won't be able to make any progress. Their windows spool format is some sort of (compressed!) intermediate language rather than something that's natively dumped to the printer.

Finally, the Mitsubishi CP-D70/D707/K60 remain problematic; despite a lot of work on the backend we're no closer to figuring out the necessary color scaling/dithering the windows drivers employ so the color output from Gutenprint is pretty lousy.

This isn't how I'd intended to spend my Friday night. With luck the fever will finally break tonight so I can get out and about tomorrow..

Posted by Solomon Peachy | Permanent link & Comments | File under: Free Software

October 06, 2014 @ 23:13 EDT

Further adventures with printers: The Citizen CW-01

A few days ago, someone with a Citizen CW-01 popped up on the Gutenprint mailing list. Due to its lineage, I'd assumed it (and its bretheren, the OP900) was related to the newer CW and CY families, and would work with the DS40 backend once the USB PID was known.

It turns out that the printer operates at 334dpi natively, so some additional work was needed. I'm not sure how I'd missed that. So, after some decoding of the WinXP print jobs, I discover the spool format is quite simple, and looks nothing like the newer CX/CY series.

So I ask the user to obtain some sniffs of the printer comms, and he delivered two dumps that look quite similar to the CX/CY, differing only in a couple of parameters.

So, it was pretty easy to whip up a new backend. It's out for testing now, and with luck, in a few days I'll be able to declare the CW-01 as officially supported by Gutenprint, so it'll work under Linux.

It'll be a bit more work to figure out how much of the CX/CY's status/info command set works with the CW-01, and I suspect the 600dpi support needs some more work, but for now, it's out of my hands.

In other news, another Mitsubishi CP-D70DW user popped up, sent me some detailed sniffs, and let me remote into his system for some interactive debugging; many, many bugfixes to the backend later, and it seems to be handle everything I know how to throw at it. With luck it'll also fix the CP-K60DW functionality as well.

Unfortunately, the CP-D70/D707/K60 employ a seriously screwy nonlinear tone curve/smoothing approach that I haven't been able to model, so Gutenprint's output is pretty lousy. Such is the fate of reverse-engineering efforts..

Posted by Solomon Peachy | Permanent link & Comments | File under: Free Software

September 23, 2014 @ 21:27 EDT



Sunday Morning was a Good Morning.

Posted by Solomon Peachy | Permanent link & Comments | File under: Photos

September 11, 2014 @ 20:21 EDT

I'm a little teapot, short and stout..


Posted by Solomon Peachy | Permanent link & Comments | File under: Photos

September 07, 2014 @ 09:01 EDT

Consolation Shopping?

In the death throes of my last two relationships, I made a couple of large-ish, almost-but-not-quite impulse purchases. The last time, it was an eighteen-year-old pickup truck. This time, it was a seven-year-old travel/camper trailer:


Naturally, there were several reasons for these purchases, but in the end I think it was a matter of making progress towards my long-term goals and dreams -- And a burning desire to not let the fact that I was once again going at things alone stopping me from actually doing what I wanted with my life.

The truck, and now this trailer, were incremental steps towards the goal of a more outdoorsy life, not just in the camping-over-random-weekends-year-round sense, but more importantly, the epic roadtrip and the ability to be more nomadic and still support myself while practicing my trade.

It's high time I stop tying myself down and take advantage of my freedom of movement. After my last move, I built an[other] empty nest in a place considerably larger than I actually needed, to hold stuff I mostly don't care about (or use) anyway. It's also a big burden financially, and that's hurting my long-term plans, all of which require a decent chunk of cash.

This nesting makes more sense if I'm living with someone else, but since I'm not and will likely remain that way, why maintain the trappings of a life I do not (and will not) have when it actively interferes with what I want?

...Which brings me back to my not-quite-impulse purchases -- I bought the truck to enable a dream, and later the camper to help realize that dream. It's my dream, my journey.. and one worth travelling.

Posted by Solomon Peachy | Permanent link & Comments | File under: Life and other BS

September 06, 2014 @ 08:15 EDT

Shining on thieves on the garden wall..


Shot with a 500/5.6 mirror lens. I'd like to try this with something longer someday..

Posted by Solomon Peachy | Permanent link & Comments | File under: Photos

September 01, 2014 @ 23:07 EDT

A metaphor


Posted by Solomon Peachy | Permanent link & Comments | File under: Photos

September 01, 2014 @ 21:05 EDT

We are but a grain of sand on an endless beach..


Taken at the Kissimmee Prairie Preserve State Park, pretty much straight up in the air.

This 30 second exposure was with an 11mm lens opened wide to f/2.8, at ISO3200. Longer exposures would require a fancy equitorial mount to track the Earth's rotation.

Posted by Solomon Peachy | Permanent link & Comments | File under: Photos

August 28, 2014 @ 19:01 EDT



Posted by Solomon Peachy | Permanent link & Comments | File under: Photos

August 27, 2014 @ 21:58 EDT

Trusting Hypocrites

A word to the foolish: Don't.

Posted by Solomon Peachy | Permanent link & Comments | File under: Life and other BS

August 24, 2014 @ 18:51 EDT

Cinderella's other slipper


Posted by Solomon Peachy | Permanent link & Comments | File under: Photos

August 24, 2014 @ 08:03 EDT

Demystifying the Mitsubishi CP-D70DW/D707DW/K60DW

In recent weeks, I've had folks with access to Mitsubishi's CP-D70DW and CP-K60DW-S photo printers pop up and offer to help figure out what it would take to get Gutenprint to properly support them.

In short order, I managed to fix the backend/spooler for the CP-D70x series, but the CP-K60 is still elusive -- I'm going to need USB sniffs of the Windows drivers doing their thing to figure out just what I need to tweak. Hopefully this contact will be able to do that for me.

But in both cases, the USB sniffs are only part of the problem. It turns out my original reverse-engineering of the spool file format was lacking.

Oh, the structure of the files is reasonably well understood now; there's two 512-byte headers present, followed by three (or four, if matte lamination is enabled) planes of 16-bit Y/M/C data.

Once the backend was working properly with the D70, the reports were that gutenprint's output was way too dark, which indidated that the color data needed to be gamma-corrected or otherwise have some sort of curve applied.

Naturally, reality turned out to be a lot messier. I whipped up a simple program to analyze the raw spool files in an initial attempt to get a baseline for the correction curves.. and that's where things got quite wonky.

My test jobs were all generated by Windows; indeed it's the standard Windows XP printer test page. There are a total of six colors present in the image; black, white, and the four colored panes of the windows logo. Straightforward, right?

The D70x test jobs had about 38,000 unique color values in each plane. The K60 had nearly 58,000. Out of 65,536 possible values. In other words, they're doing some sort of contiunuous tone smoothing, and there's no nice, neat mapping from input RGB values to what the printer spits out -- Not even for "black" and "white". WTF? How am I supposed to proceed from here? Start disassembling the Windows driver?

So at this point, it's not looking likely I'm going to be able to figure this out without spending a lot of soul-sucking time reverse-enginnering x86 assembly. I have better things to do, unless someone wants to pay me more money than this is worth.

One fun tidbit is that Mitsubishi's current photo kiosks run Linux, and as such they've already written native Linux drivers for these things.

In the mean time, if you want a kiosk-scale photo printer that works great with Linux, DNP/Citizen and Shinko/Sinfonia have current models that have first-class support, and the now-discontinued Kodak 6800/6850/605 and Sony UP-DR150/DR200 models also work well.

So. Mitsubishi, feel free to toss some documentation (and a printer or three) my way. It'll only help you sell more printers!

Posted by Solomon Peachy | Permanent link & Comments | File under: Free Software

August 22, 2014 @ 21:27 EDT

Little Buddy


He was trapped in the stairwell at the office, and before we rescued and freed him, he was gracious enough to pose for me.

Posted by Solomon Peachy | Permanent link & Comments | File under: Photos

August 20, 2014 @ 14:55 EDT

RSS feeds, oh my!

For several years now, I've been using Tiny Tiny RSS to keep track of literally hundreds of RSS feeds. One of its features is I can republish a selection of what I want as an independent feed. While I've been marking stuff for republishing, I never did share the URL of that feed with anyone.

So without further ado, here's the Stuff Solomon Finds Interesting RSS feed.

The content is rather varied, from techincal to legal to sappy to photographic and everything in between. Be warned -- it's sometimes not family-friendly in subject or content.

In other news, I've been writing a lot lately, but it hasn't been for public consumption. If you want to know, ask...

Posted by Solomon Peachy | Permanent link & Comments

August 11, 2014 @ 09:44 EDT

Whelp, it was nice while it lasted

I'm single again.

As Dale put it, she's not ready for the kind of relationship I want, and may never be. That's a shame, because several of the reasons this went so deep so quickly were that we both shared a vision of what we thought a relationship should be.. and both felt, and wanted that, from and in each other.

She really was what I was looking for in another person and in a partner. I can't remember ever being this excited about someone, so saying that I'm disappointed and more than a little heartbroken is a gross understatement.

Time will tell if we can sustain a meaningful friendship with what's left.. I truly hope so.

...Que Sera Sera.

Posted by Solomon Peachy | Permanent link & Comments | File under: Life and other BS

August 05, 2014 @ 19:42 EDT

Beach Babe


Finally, I have a decent photo of Dale that I took myself.

Taken at Ormond Beach this past weekend.

Posted by Solomon Peachy | Permanent link & Comments | File under: Photos

July 21, 2014 @ 20:02 EDT



Saw a rugby game on Saturday.

It consists of a bunch of cavemen beating beating each other up and wrestling over an overinflated, mostly-out-of-control oblong bladder.

And the ladies in the audience were... very happy to watch.

Posted by Solomon Peachy | Permanent link & Comments | File under: Photos

July 11, 2014 @ 14:56 EDT

More on the Kodak 6850

The venerable Kodak 6800 and 6850 printers are true workhorses; it's not uncommon to see them flogged on eBay with upwards of 200,000 prints on them -- not because they are worn out, but because they tend to outlast the systems they're plugged into.

I originally added support for these models to Gutenprint the better part of two years ago, and through some helpful volunteers, I was able to reverse-engineer enough of the printer communications to write an open-source CUPS backend to enable them to print under Linux.

That seemed to be good enough, and I generally forgot about these models.. until a few months ago, when the folks over at LiveLink arranged to have an Kodak 6850 sent my way. (These guys are awesome, BTW!)

Having full access to one of these things made it far easier to poke and prod and generally reverse-engineer the printer communications. Consequently, I've mostly decoded the printer media status (now with print counts!) and media query messages, and greatly improved error detection and recovery.

It's probably safe to say it now works better under Linux than it ever did with the Official Windows/OSX drivers, though without access to a 5x7 conversion kit and media I'm sure there's something I've missed.

In other news, I'm still hunting down some bugs involving the Sony UP-DR200, Canon CP900, and Mitsubishi CP-D70/CP-K60 models, but with only indirect access progress is slow.

It would be so much easier if the manufacturers of these things could toss some documentation my way. It could only help them sell more printers and media, after all..

Back to the bit mines..

Posted by Solomon Peachy | Permanent link & Comments | File under: Free Software

July 07, 2014 @ 20:31 EDT

Sunset over Del Mar


I was in San Diego for a couple of days for a work trip; my hosts took me to eat on the beach in Del Mar.

The Pacific smells rather different than the Atlantic.

Posted by Solomon Peachy | Permanent link & Comments | File under: Photos

June 29, 2014 @ 18:33 EDT

False modesty


Posted by Solomon Peachy | Permanent link & Comments | File under: Photos

June 29, 2014 @ 18:07 EDT

Om nom nom


Posted by Solomon Peachy | Permanent link & Comments | File under: Photos

June 14, 2014 @ 09:57 EDT

The soundtrack of my life, thrice

This morning, while changing the oil in my vehicles and generally puttering around the garage, I put on Lacuna Coils's latest album, Broken Crown Halo to play in the background while I worked.

This album is more of a return to their roots, darker, gritter, with more of the raw emotion that was less prevalent in their last two (and quite excellent!) albums.

And true to form, their music and lyrics were oddly relevant to my life's progressions, with several songs that cut right through me. This time, however, ther was one in particular that I'd heard a couple of times.. but not really heard until I was driving home from disposing of nine quarts of used motor oil.

Beating Bessie's steering wheel as I drove her somewhat more aggressively than usual (the old gal really does like being ridden with purposeful roughness!) I started singing along, eyes unexpectedly tearing as I let my voice carry over the music and Lacuna Coil's off-key vocal harmonics.

    Burning the pyre
    Take me in your arms
    And start to burn
    Yearning for life

    Take me in your arms
    And start to burn
    Never ending darkness
    Yearning for life

    I burn with you
    We'll see it through
    I burn in you
    It will never be the same as it was before

Some day, I will see them in concert, and for once, sing my heart out.

Posted by Solomon Peachy | Permanent link & Comments | File under: Life and other BS

June 12, 2014 @ 22:13 EDT

Life's not-so-little-surprises

I sat down with every intention of letting the words flow forth, but I when faced with the enormity of what there was to say, I deciced to start with a picture that I did not take:


This, dear readers, is Dale.

I had started to tell the story of us; how we almost met years ago during some of our darkest times; how we were drawn together when we finally did meet; our first touch, our first kiss, and many more firsts, private or otherwise... but as always, it took writing and discarding many words to figure out what I really needed to say; what really important.

In the moment our awarenesses met, our worlds collided with the subtelty of a bolt of lightning. It was a moment, a charged touch... a moment that changed everything.

Five weeks, near-constant contact, and two long dates later, we are still catching up, learning each other's minds, hearts, and bodies as our souls continue to merrily frolic ahead, giggling in shared glee as they taunt us with promises of even more wonderful things ahead.

For we have found, in each other, the home that we have struggled so long to individually create. We are two sides of the same coin, united in a balance we've always thought, yet never quite believed, to be possible.

Even as I write this, we are still growing stronger, not just as a pair of newly-united kindred spirits, but also in our own individualities. I feel more myself, she feels more herself; we both feel alive, connected, and at long, long last... we are no longer alone in this vast universe.

...Welcome home, Dale.

Posted by Solomon Peachy | Permanent link & Comments | File under: Life and other BS