Older blog entries for Pizza (starting at number 125)

Success with the Kodak Professional 1400

About a week ago a massive box was left on my doorstep containing a lightly-used Kodak 1400 large-format dye-sublimation printer. Lightly used to the grand total of a whopping 72 prints, according to the self-test page.

Unfortunately, my elation turned sour when I discovered that I couldn't just dump the raw spool file to the printer. Firing up a USB sniffer under WinXP, I discovered that the to-the-printer protocol bore little resemblance to the spool file -- even the image data itself used a different format. To top it all off, the printer needed intelligent buffering.

So, armed with the USB sniffer output, I heavily modified the spooler I wrote for the Canon SELPHY printers. Last night, I achieved success, and succesfully printed the WinXP test page I'd previously generated, but also an image printed using gutenprint.

The Kodak 805 printer that replaced this one probably needs a similar treatment (given that it uses the same spool file format) but unless someone sends me a printer (or cash) I won't be able to test that theory out.

I still have to generate another couple of test prints under WinXP to decode two remaining protocol options, but other than that, the Kodak 1400 printer is now usable under Linux!

Oh, this is the first image I printed on this thing via Gutenprint. I wish I could say it was something I took.

Syndicated 2013-01-20 13:38:44 from Solomon Peachy

More driver hackery

This morning, I submitted the third pass at the CW1200 WLAN driver to the linux-wireless list. The changelog is too long to list here, but the bulk of the changes were teased from a code dump that Sony released. It seems they went through much the same pain as I did, and of course none of the changes made it upstream.

Aside from the Sony changes, the single biggest change was a rebalancing of the tx/rx handling, so that it's now considerably fairer. Of course, there was the usual pile of small changes, including a fix for an OOPS triggered by the broken IBSS code. It's still broken, but at least it's not crashing anything now.

We'll see where v3 goes. Hopefully merged into linux-next, or barring that some meaningful feedback on what I need to do next.

In other news, Before the new year I added support to Gutenprint for the Kodak 9810 dyseub printer. None of the code's been committed yet, but there's no real rush. I'm now waiting on a Kodak 1400 printer to show up -- Once I've verified my core gutenprint changes are sound and that printer works, I'll commit everything, marking the untested models as experimental.

Then I'll tackle the Kodak 8500 and the Mitsubishi CP3020D/CP3020DA, not that I'll be able to test those either.. Afterwards, I'll see about the more modern Mitsubishi printers if I'm feeling so inclined.

I really need to start getting rid of this pile of Canon dyseub printers. Maybe four, instead of twelve. At least the incoming Kodak 1400 is a large-format model!

Syndicated 2013-01-13 03:10:34 from Solomon Peachy

CSS hackery

One of the tasks I got up to during my recent "vacation" was the first real hacking on the code powering my photo site in more than a year. This time, the changes are mostly cosmetic in nature. I've been removing javascript/DOM hacks in favor of CSS3 to style the buttons, checkboxes/selections.

The result is far simpler markup and faster page loads because there's no javascript rewriting the page on the fly. In fact, the only javascript present now is the code that inverts the image selection, and even that's far simpler because it just walks the list of checkboxes and toggles them.

I'm also giving attention to the layout and especially element spacing; trying to generally improve the intangible "feel" of the site through subtle tweaks that make things much more visually pleasing.

The goal here is to clean out as much legacy cruft as possible, so I can more easily make more complex (but necessary) UI changes. There are still too many tables used for layout/formatting; I'll be trying to eliminate those next.

I'm back to working on this thing for my sake, solving my own needs, making it into something I want to keep on using, and I must say it's a nice change. Yay for (useful) productivity!

Syndicated 2013-01-09 04:44:55 from Solomon Peachy

More reverse engineering goodness

I decided to make a sweep of it and decode the raw spool formats for the remaining "Professional" Kodak photo printers, the 8500 and 9810. This means that all of Kodak's professional dyesub printers will be supported, save for the long-since-discontinued ML-500.

But I digress. It turns out the 8500 is essentially a rebadged/tweaked Mitsubishi CP3020D, albeit without 8x12 support and a third variation of the Mitsubishi block-chunked image format -- packed BGR data, sent in one ginormous data block but wrapped in the "traditional' 3020D control blocks. That will require no changes to gutenprint to support, so I'll probably implement support for the 8500 before the CP3020D/DA models it's based on.

Meanwhile, The 9810 is very different from the other Kodak models. It uses a command-stream type of format that's on the verbose side but is otherwise well-structured, with the raw RGB data being sent in a plane-interleaved fashion. Supporting it will require no core changes either.

so, this is my plan of attack over the next couple of days:

  • Kodak 9810
  • Kodak 8500
  • Mitsubishi CP3020D
  • Mitsubishi CP3020DA
  • Other (current!) Mitsubishi models?

Anyway. Time to go to bed.

Syndicated 2012-12-26 04:23:58 from Solomon Peachy

Another two Kodak printers supported..

Just added support to Gutenprint for the Kodak 605 and 805 dyesub printers. They were mostly the same as the 6800 and 1400 (respectively) they replaced.

I've also reverse-engineered the raw dump formats of the Mitsubishi CP3020D and the CP3020DA 8x10 dyesub printers. They use a somewhat convoluted block-oriented format, with the former using CMY-based plane interleaving and the latter using RGB-based scanline interleaving. To add joy to the mix, the blocks are sent to the printer in reverse order (bottom-up), but within each block the scanlines are top-down.

Once the Kodak 1400/805/6800/6850/605 support is reviewed and committed into Gutenprint, I'll start working on the low-level changes necessary to support these Mitsubishi printers.

Maybe a grateful user will mail one of them to me in thanks? (hint hint)

Syndicated 2012-12-25 17:08:56 from Solomon Peachy

And then there were two more

Just added support for Kodak 6800 and 6850 photo printers to Gutenprint. The main difference between them is that the 6850 is faster -- 8s (vs 11s) for a 4x6 print -- and natively supports 5x7 media.

There are many thousands of these printers deployed in self-serve photo kiosks, and they're trivial to find on ebay. Cost per 4x6 print is under $0.17 and media refills are very easy to obtain.

Meanwhile, the 6800/6850 has been superceded by the 605, and the 1400 has been superceded by the 805. If I'm still motivated I may try to add support for those models too..

Syndicated 2012-12-25 04:06:30 from Solomon Peachy

Pre-Holiday Hackery

It's been a busy few days, and my vacation hasn't even started yet.

I accomplished two major tasks this weekend. First, I finally kicked off new attempt to mainline a Linux driver for the ST-E CW1100/CW1200 WLAN chipsets. The first post to linux-wireless went over fairly well, and the suggestions (many of which were already on the pending list) kicked off a flurry of updates culminating in a second revision posted later that day.

Those submissions have spawned a fair amount of commentary and some patches; I've spent most of the day so far incorporating a massive code drop from Sony, for example. That's undergoing some testing now, and I'm hoping other interested parties will step up and get some wider test coverage in so we can get this driver into the next Linux release cycle (3.9). I created a public git repo of my working tree, which will live on until the driver is accepted upstream:

git://git.shaftnet.org/compat-wireless-cw1200.git

I'm going to hold off on submitting a v3 patch until I get more feedback and testing, which means it probably won't happen until after the new year. Apparently most folks take it easy this time of year.

Thankfully, I've had another project to keep me busy. I've spent a fair amount of time working on the Gutenprint printer driver package too, fixing support for the Kiosk-scale Sony UPP-DR150 photo printer (~8 seconds for a 4x6 print!) and adding support for the larger-format (8x10/8x12) Kodak Professional 1400 printer. I don't own either printer; instead I reverse-engineeried the raw data generated by the printers' Win32 drivers.

Not bad for two and a half days' work, eh?

Meanwhile, there are now twelve Canon SELPHY photo printers on my desk. The entire line is supported except for the CP-790, CP-530, and CP-520 -- and then only because we don't know what their USB PIDs are. The only one with known problems is the positively-ancient CP10, which locks up after the first (successful!) print. All other models JustWork(tm) now. I should start getting rid of most of these.

If I find myself with more time on my hands I may try to add support to Gutenprint for another Dye Sublimation printer. Ideally it would be one still commercially available, not too expensive, and a larger format (eg 8x10) because I can put that to use. We shall see..

If I'm feeling particularly masochistic, I'll continue with my fumbling efforts to implement dock detection for Rockbox on the Sansa Fuze v2. I haven't made much headway on that gargantuan reverse-engineering effort; it's mainly an exercise in learning a new set of skills.

I've also started reworking my website's CSS to improve its curb appeal. Like any other software undertaking, days when you delete more than you add fill me with joy. If I'm feeling particularly ambitions, I'll try doing the same to my photo archive; it could use some sprucing up too, but its underlying plumbing is what could use some real hardcore loving. It's been neglected for far too long, but even that's beginning to pick up, as I've begun to experiment with different workflows.

I'm really enjoying this burst of coding. It's especially nice when you have something to show for it!

Syndicated 2012-12-24 20:34:21 from Solomon Peachy

Pondering Photo Organizer's Future

Last week I formally released an update to Photo Organizer. It was the first release in two years, and had no new features whatsoever -- just a largeish pile of bugfixes.

I've been thinking about PO's future lately; where I'd like it to go, and to a lesser extent, how to get there. I still don't have a good answer. Pretty much every feature on the wishlist is pretty invasive, and I just don't have the drive to make it happen, because PO has largely done what I've needed.

Most features I've added over the years have been due to my workflow requirements, and I've largely hit a dead end on that front. I've started to experiment with alternative workflow models, but until something gels into a new ideal, PO won't change much.

Since I started on a photo-a-day commitment, my workflow has had to cope with more regular postings, and it's exposed a few cracks in how I used to do things. I'd like to automate some things better, but I'm running into bigger-picture limitations in how I combine PO with my blogging software. For example, none of my "witty" captions have made it back into PO. Fixing this properly means writing a RESTful API to manipulate arbitrary data, which is a huge undertaking.

That said, the biggest driver of change is the massive event-type photography binging like what I got up to last weekend. (Last night I batch imported 44 gigabytes of NEF files; 3,588 images) -- I need a better way of grouping, tagging, and ranking images to manage this sort of thing better. Proper hotkey support would make this a lot easier.

Meanwhile, if the other seeds I've been sowing come to fruition, I'll be working with models on more formal shoots. This will require yet another type of workflow -- less organization, but considerably more post-processing. This means the current versioning system must be beefed up to handle multiple RAW renderings and sidecars. Distributing the final images also exposes weaknesses of PO's permission system.

At the of the day, PO's just a tool that's supporting my needs as a photographer. I'd rather be behind a camera than in front of a computer, especially given that I already spend eight or so hours a day writing software for my day job.

Anyway. As I type this, my PO instance houses some 143,434 images, of which 120,070 are mine. Not counting filesystem overhead, they take up some 1,509,037,063,959 bytes of disk space. Yowza.

In other words, PO's going to be maintained pretty much forever.

Syndicated 2012-12-11 00:29:50 from Solomon Peachy

66/354: IT WORKS!

This deceptively simple printer test page has been literally five years in the making. It is the first time anyone's been able to successfully JustPrint(tm) with the "newer" Canon Dyesub printers under Linux, at least without jumping through some annoying hoops.

But it's not quite done yet.

I still need USB PIDs for the Canon ES3, CP-200(*), CP500, CP520, CP530, CP710(*), CP770(*), and CP790.

The ES20, ES3, CP-10, CP-100(*), CP-200(*), CP-220, CP-300(*), CP500, CP710(*), CP770(*), CP800, CP810, and CP900 models are theoretically supported but, need testing/confirmation.

Finally, the ES40 and CP790 are unsupported until someone comes along and either donates a printer (or cash) or is willing to be a guinea pig.

So, if you have one of these printers and want to use it under Linux (or modern OSX), drop me a line.

* == Already in the mail, so to speak.

Syndicated 2012-11-13 23:57:05 from Solomon Peachy

63/365: They're Breeding...

I'm now up to eight Canon dye-sublimimation photo printers, with two more bundles of joy on their way, all in the name of Free Software. It's interesting; a proprietary printer driver was the spark that spawned the Free Software movement, and I'm continuing the tradition with these.

The Gutenprint stack is far more capable than the original Canon dyseub printer drivers.

On a slightly related note, Anyone out there have a coloriometer I can borrow? I'd like to fully calibrate these things.

Syndicated 2012-11-10 22:56:24 from Solomon Peachy

116 older entries...

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!