New Camera – Canon EOS 650D (aka Kiss X6i) – Linux and pink ufraw fun!

I was super happy to recently upgrade to the new Canon 650D. Waited for them to arrive in the country, and the right deal before the purchase.
I happily snapped pics and video all the way home, boy was i impressed. The shutter speed was almost twice the speed of my old 450D, and the video spectacular.
I got home, plugged in the SD card to my laptop, and …..AHHHHHHHHHHHHHHHHHHHHHHHHHH PINK!

A Quick google shoes that the pink overlay created by dcraw and ufraw . I the latest version of dcraw easily compiled and had the problems fixed, no major deal. It was a single and easily compiled.

However, in saying that, i generally use ufraw due to ufraw-batch due to more options and previously posted HDR script, so i was a bit disappointed that there was no patch.
So i downloaded the code for ufraw-0.18 , grepped for strings, found some entries for similar cameras, duplicated the settings. I then checked images for unique identifiers and updated with the correct values. A Couple of compiles later and i have a working ufraw !

Anyway, after all that, i found the cvs version of ufraw now has it patched already, so bit of wasted time, but in case anyone else wants a working copy here is my one
This is compiled on/for 64bit machine, so if you are using otherwise you will need to recompile. If you are running debian you will need to run this to compile

apt-get install libgtk2.0-dev liblcms-dev libgimp2.0-dev libtiff-dev libjpeg62-dev libpng12-dev libexiv2-dev zlib1g-dev libbz2-dev libgtkimageview-dev

Untar, cd ufraw-18-650D/ ; ./configure && make ; ./ufraw file.CR2 . Once that is going just replace the system copy (or make install?)

More instructions at


In case you have a Canon camera and need to add support, its fairly easy. Basically it needs to be told to decode it as a CR2 and what default settings.
Grab a copy of the source, and edit . Search for a string for a camera similar to your own, i used the Canon 550D, so searched for 550D. You will find code that looks like this

{ "Canon EOS 550D", 0, 0x3dd7,
{ 6941,-1164,-857,-3825,11597,2534,-416,1540,6039 } },

This is the default make/model/and a few other settings shown from above it. Copy/paste the lines changing the model (you can tweak them later if you think they are vastly wrong)

Further down you will see

} else if (is_canon && raw_width == 5344) {
top_margin = 51;
left_margin = 142;
if (unique_id == 0x80000270)
adobe_coeff ("Canon","EOS 550D");
goto canon_cr2;
} else if ....

Again, copy/paste a new else if statement, change the model number. The raw_width/margins/unique_id are in a photo you can get off your camera. Use exiftool to grab the exif data from an image and replace it with the correct items. The main thing to get right is the unique_id .

Save and exit that file now and open up wb_presets.c . Again search for the model similar to your own and you will find something similar to this
{ "Canon", "EOS 550D", Daylight, 0, { 2.1426, 1, 1.5488, 0 } },
{ "Canon", "EOS 550D", Shade, 0, { 2.4619, 1, 1.3193, 0 } },
{ "Canon", "EOS 550D", Cloudy, 0, { 2.3066, 1, 1.4258, 0 } },
{ "Canon", "EOS 550D", Tungsten, 0, { 1.5264, 1, 2.3428, 0 } },
{ "Canon", "EOS 550D", WhiteFluorescent, 0, { 1.9072, 1, 2.1973, 0 } },
{ "Canon", "EOS 550D", Flash, 0, { 2.3701, 1, 1.4141, 0 } },

These are just the white balance for different settings based on the camera, feel free to adjust or use them however you want, it may take a recompile or two to get it right. Make sure you change the model name!
Once that is done, compile! that was all there was too it.