Older blog entries for Pizza (starting at number 122)

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:


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

27 Oct 2012 (updated 7 Nov 2012 at 00:08 UTC) »

Photo printers and libusb, oh my!

A while back, I picked up a Canon SELPHY ES1 dyesub photo printer, only to discover it didn't work properly under Linux, thanks to it needing an intelligent spooler to prevent lockups, and being just different enough from earlier models to require tweaks to gutenprint.

So, in the spirit of Free Software, I patched gutenprint, and wrote the spooler. Over time, the spooler got smarter, supported more printers, achieved sentience, and brought about world peace.

...Until Apple revved OSX's printer subsystem and Canon neglected to release updated drivers for, well, most everything. Since my tool was written to use linux's native usblp support, OSX users were SOL.

Last night, I finished rewiring it to use libusb, and accept input on stdin. This enables it to be used in a CUPS filter chain, and theoretically supports OSX. But that remains to be tested..

...And I finally moved it to version control:


It still needs USB IDs for most of the SELPHY line, but otherwise seems to work fine with my ES1, ES2, and ES30 printers, at least on Linux.

Syndicated 2012-10-27 15:48:49 (Updated 2012-11-07 00:08:27) from Solomon Peachy

Oooh, I can haz missle launcher?

[pizza@stuffed ~]$ lsusb
Bus 001 Device 003: ID 04f9:0039 Brother Industries, Ltd 
Bus 002 Device 002: ID 1941:8021 Dream Link WH1080 Weather Station / USB Missile Launcher
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Unfortunately, what I have hooked up to my system is a rather pedestrian weather station, not the more interesting missile launcher. And yes, I know it just fires nerf darts or something like that, but I can still dream about an Anti-Air missile installation controlled via USB, can't I?

On the other hand, I doubt .mil publishes their interface specifications, and reverse engineering a missile launcher is likely rather expensive. Not to mention mildly dangerous..

Syndicated 2012-09-18 17:19:14 from Solomon Peachy

I can haz kernel hacker?

My employer is looking for another software engineer. Not to toot my own horn, but they basically need another me -- a low-level system hacker type. We design and manufacture our own hardware, so there will be a ton of device driver work, board ports, and general kernel hacking work for both Linux and various RTOSes. There will also be a healthy amount of network protocol and general "big picture" system design sort of stuff.

An ideal candidate will be able to code C in their sleep, and have a pretty healthy understanding of the intracacies (and harsh realities) of the IEEE802.11 alphabet soup.

We also are in need of a kickass QA person.

Oh, we're located in Melbourne, Florida, but we're open to long-distance relationships. If you're interested, drop me a line.

Syndicated 2012-06-13 00:22:44 from Solomon Peachy

113 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!