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...
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..
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..
September 23, 2014 @ 21:27 EDT
September 11, 2014 @ 20:21 EDT
September 07, 2014 @ 09:01 EDT
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.
September 06, 2014 @ 08:15 EDT
Shining on thieves on the garden wall..
September 01, 2014 @ 23:07 EDT
September 01, 2014 @ 21:05 EDT
We are but a grain of sand on an endless beach..
August 28, 2014 @ 19:01 EDT
August 27, 2014 @ 21:58 EDT
A word to the foolish: Don't.
August 24, 2014 @ 18:51 EDT
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!
August 22, 2014 @ 21:27 EDT
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.
August 05, 2014 @ 19:42 EDT
July 21, 2014 @ 20:02 EDT
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..
July 07, 2014 @ 20:31 EDT
Sunset over Del Mar
June 29, 2014 @ 18:33 EDT
June 29, 2014 @ 18:07 EDT
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.
June 12, 2014 @ 22:13 EDT
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.
June 06, 2014 @ 16:47 EDT
Walking in Beauty
Outside my place of work, there is a now-defunct golf corse. The northern 2/3rds is slated to be developed into another generic office park, while the southern third, which I can see through my window, is expected to remain as green space.
I have worked across from this green space for the better part of a year. Until a couple of months ago, it was reasonably maintained, but since then it has been allowed to lie fallow, slowly returning from its former gently-sculpted purpose to a much more natural, dissheveled state.
This afternoon, I went for a walk.
This afternoon is the first time I stepped out onto this space, after eleven months of parking my car not three feet from its threshold.
It was not a long walk, in time or distance, but it felt like both an instant and an eternity. I stepped out with my head spinning, both literally and metaphorically, needing to get out of the disconnected, artificial confines of a high-tech semiconductor design facility, needing something natural and real, needing to stretch my stiff limbs, needing to move about in the natural chaos of live.
I stepped out, not knowing what to expect; not knowing if the family of racoons would peek out at me from behind a weather-stripped fence, if a lizard would scuttle away from the crunch of my feet on the gravel path, if I'd inhale a swarm of gnats as I rounded a tree.
I went for a walk.
Why had I waited this long to begin to explore this slice of unnatural natural space a quarter mile from I-95? Every day I'd seen the birds landing in the water hazards, lizards basking on the now-overgrown sand traps, giant spiders weaving even larger webs between tall palm trees, insects gorging themselves on the sweet necar of wild flowers.
It was a beautiful walk.
I let my hair down, closed my eyes, stretched, inhaled deeply, and drew in the beauty around me. I tasted the air, I heard the dry grass crunch, I smelled the dog fennel's subtle scent lingering on my fingers, and from behind closed eyelids saw life emerge and spread out in an endless, infinite sea.
It was a walk in beauty.
On the way back up to the office, one of my colleagues remarked about how boring, ugly, and empty that old golf course was. He couldn't have been more wrong.