Make OS X 10.4.3 understand Canon EOS 350D RAW files

Update 11jan06 @ 11:33 {OS X} 10.4.4 is now available, and fixes this problem.

Update 03nov05 @ 12:04: Right, Phil Chapman appears to have sorted out the correct codes for 350D support by utilising values from the Canon PowerShot G6 entry in the Raw.plist file, so rather than post a new entry I’m updating this one so that it shows correct and useful information (the downloadable file has also been updated).

I’ve been annoyed with the lack of RAW support for the Canon EOS 350D for a long time, and had high hopes that 10.4.3 would fix this as it seemed to be the OS version that Aperture was waiting for, and was dismayed to find that 10.4.3 still hadn’t got it right. After some prodding from Ben I went and delved into the update pax file and found an interesting file called Raw.plist which has a list of all the RAW formats that the system supports.

To my astonishment there is already support for the Canon EOS Digital Rebel XT which is simply the US name for the 350D: looking closely at the <key> statements showed that it was likely to be the ASCII string that the RAW importer was searching for, so after a quick strings over one of my RAW files I simply copied the XT section and renamed the initial key to Canon-EOS 350D DIGITAL and now both {iPhoto} and Preview understand my files.

I don’t think this will work on earlier versions of 10.4 (10.4.2 has a much smaller file size) but if you add the following chunk to the file Raw.plist in the directory: /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ImageIO.framework/Versions/A/Resources (you will need Administrator rights to alter this file) then you can have support too, or if you are a trusting soul, then you can simply download a new Raw.plist and simply replace the existing one.

NB 1: If you do download this file, please ensure you are running 10.4.3 first as this file has not been checked on any other version of {Mac OS X}

NB 2: The data here is an exact copy of the Digital Rebel XT code block, with the addition of the three premul values at the start of the data that have been taken from the G6 data block, as found by Phil Chapman. Read more at the Apple Discussion on RAW support in iPhoto.

<key>Canon-EOS 350D DIGITAL</key>
        <dict>
                <key>black</key> <integer>3</integer>
                <key>max</key> <integer>4095</integer>
                <key>white</key> <integer>4095</integer>
                <key>premul0</key> <real>2.30</real>
                <key>premul1</key> <real>1.00</real>
                <key>premul2</key> <real>1.35</real>
                <key>m1</key>
                <array>
                        <real>0.6159</real> <real>-0.0945</real> <real>-0.0745</real>
                        <real>-0.6846</real> <real>1.3563</real> <real>0.3684</real>
                        <real>-0.0802</real> <real>0.1086</real> <real>0.7555</real>
                </array>
                <key>m2</key>
                <array>
                        <real>0.6018</real> <real>-0.0617</real> <real>-0.0965</real>
                        <real>-0.8645</real> <real>1.5881</real> <real>0.2975</real>
                        <real>-0.1530</real> <real>0.1719</real> <real>0.7642</real>
                </array>
                <key>mc</key>
                <array>
                        <real>1.23345</real> <real>0.03700</real> <real>-0.03700</real>
                        <real>0.00000</real> <real>1.20878</real> <real>0.00000</real>
                        <real>0.00000</real> <real>0.00000</real> <real>1.23345</real>
                </array>
                <key>otrc</key>
                <array>
                        <real>0.233</real> <real>0.127</real> <real>2.303</real>
                        <real>0.324</real> <real>1.543</real> <real>0.649</real>
                        <real>0.851</real> <real>0.571</real>
                </array>
                <key>esint</key> <real>0.52</real>
                <key>esein</key> <real>2.24</real>
                <key>eseth</key> <real>1.48</real>
                <key>gresc</key> <real>2.81</real>
                <key>scal1</key> <real>0.24</real>
                <key>scal2</key> <real>0.22</real>
        </dict>

← Previous Post

Next Post →

21 Comments

  1. Phil Chapman

    This almost works for me but my pics have a rather gruesome blue-green cast. Any ideas?

    with Preview – http://www.chapmandu.co.uk/best_of_nz/IMG_0964.jpg
    with Canon software – http://www.chapmandu.co.uk/best_of_nz/Pages/IMG_0964.html

    Thanks again!

  2. Argh! So close! It now reads photos from my 350D, but they have a very green tint to them. Any ideas?

    – Andy

  3. I saw a small tint on my iPhoto thumbnails but the full size images in Preview looked just fine. I do shoot in Adobe colour space (filenames start _IM rather than IMG) so I don’t know if that has any bearing.

    The plist has identical matrix values for the 300D and the Digital Rebel so I am at a loss as to what might be different between the 350D and the XT 🙁 I’ll try importing more older images to see if anything shows up on mine.

  4. I’ve just looked through Dave Coffin’s dcraw.c source code and there’s no reference to the 350D at all, and the 300D and Digital Rebel are treated identically. I think I’ll start experimenting with the colour temperature values at the start of the data block and see what happens.

  5. Hi,

    Many thanks for taking the time to look into this – it’s much appreciated. It’s so frustrating that Apple now support the XT, but not the 350D (which I understand *is* the same camera).

  6. Thanks for the comment Andy: I’m just rather annoyed with myself that I managed to choose the only batch of images I’ve taken in the last 3 months that didn’t show a colour shift, or I wouldn’t have raised any false hopes…

    For people not following this thread on Apple Discussions, I have found one difference in the files:

    Dumping an XT and 350D file with Phil Harvey’s Image-ExifTool only shows one difference between the two files: the XT has an entry for the ColorTemperature tag of 5200, and the 350D has -1, which I assume is a default for a missing value.

    Setting the ColorTemperature value to 5200 on the 350D using ExifTool results in a totally black image, as does any other edit with ExifTool (changing an IPTC tag, for example) or even setting -1 on the XT image, so there is something funky there. Canon’s DPP shows both plain and ExifTool edited files without any differences, and reads the ExifTool ColorTemperature modified files happily and with no colour cast, whatever the setting.

    So the next step is to find out what ExifTool is doing and see if I can’t force the tag in at the same position in the 350D file as the XT file: my feeling is that it’s being appended to the data block and Apple is assuming a fixed position. Of course, this may not be the end of it, but it is an obvious thing to try and prove/disprove.

  7. Phil Chapman

    Thanks for all your efforts Ian. This is probably a stupid idea but it’s not something like the european ColorTemperature value is spelt ColourTemperature and so is missed by ExifTool and so a default value is used? It does like a temperature problem to me, I wonder if modifying the settings on the camera such that they are the same as the default assumed by 10.4.3 would ‘solve’ the problem?

    Rgds,

    Phil

  8. Hi Phil: no, not a silly idea but in this case the values are stored all in hex, and ExifTool merely applies a string name to ease the reading of the settings (the actual entry id is 0x10ae or possibly 0x00ae). I have yet to try setting the colour temperature on my camera and seeing what happens – that’s the next trick as I haven’t managed to sort out the absolute entry position within the file yet.

  9. Unfortunately the Raw.plist posted on november 3rd is still wrong. Pictures are no more green but yellow 🙂

  10. The premul values taken from the PowerShot G6 suck. Using those makes images look much too yellow. They’re made for the G6, not the 350D. I’ve found that setting the premul values to 2, 1, 2 makes the images look like they should.

    I wrote this down on my own blog, too.

  11. That’s odd. Did you set the white balance correctly?

    I’m not entirely sure why different models of the same camera require different settings. The Digital Rebel XT (american version) works fine without the premul, I get normal images with 2, 1, 2 (I think differences between DPP are mostly related to it being different software and/or colour profiles), you get blue images that way. How the hell does the real software do this? 😉 Also I wonder, does anyone have the Japanese edition? (Digital Kiss N).

  12. :mrgreen: Whooohoo!
    Your last update did the trick. Everything working fine now with a Canon 350D (Firmware 1.0.2). Colours look as they should.

  13. For the poster #5, the 350D is NOT the same as the 300D. If fact, it’s much closer to the EOS 20D, and appears to use the same CCD. It does NOT use the same image sensor as the 300D. If Aperture supports the D20, this is probably the best place to look for what 350D requires.

  14. Giovanni Coia

    In response to poster #14 – do some research before you criticize others!!! the 300D, 350D and 20D for starters do not use CCDs. They use CMOS sensors (a fairly crucial difference, especially in regard to noise characteristics at low ISOs). Also it is widely known that while the sensors in the 20D and 350D are similar, they are different. The 20D has an 8.2 megapixel CMOS sensor whilst the 350D is only 8. The physical dimensions of their sensors are also different, the 350D’s sensor is marginally smaller at 22.2 x 14.8 mm, the 20D’s sensor is 22.5 x 15.0 mm. Therefore they DO NOT use the same sensor!

    You are correct in saying the 300D is not the same as the 350D though. All three cameras have their own unique sensors.

  15. Phil Harvey

    In response to point number 6 [ExifTool-edited CR2 image shows up black in iPhoto]: I’m fairly disappointed that it seems as if Apple can’t properly read an edited RAW image. I’ve seen problems like this before with other simplistic software that assumes fixed offsets for values in the file rather than parsing the file properly. Software this fragile may also easily be broken by a camera firmware update. With any luck, this will occur and Apple will be forced to fix the problem. Otherwise, there isn’t much hope of getting any action from Apple since the small number of people who even know how to edit their RAW images won’t show up on their radar.

    PS. I’m still running Panther and using a 300D, so I’m hoping that this problem gets fixed before I do my upgrades… 😉

  16. 10.4.4 now supports Japanese edition, Digital Kiss N.

  17. sebastien

    Hey i do not understand how to update my file. What”s the trick ? thanks

  18. There’s no trick involved, but I would strongly, strongly suggest that unless you have an absolutely unrelenting reason to stick with 10.4.3 that you instead update to 10.4.4 (or 10.4.5) and ignore everything on this page: Apple have fixed things for non-US EOS 350D’s since 10.4.4, and they have the colour balance sorted too.

    You may also find that there is a difference between the Apple and Adobe RAW conversions, so if you have Photoshop Elements 3 (or the full PS CS2) then do compare the .CR2 conversions and use the one you feel happiest with.

  19. I had a question. On my Digital Rebel 300D RAW doesn’t show as a quality. All other options show, but I really need RAW. What do I do?

  20. No idea – I don’t have a 300D. Perhaps taking it off the green square/full auto mode ? I would start with the manual: the one with the 350D covers this sort of setting very clearly, and the 300D definitely supports RAW:

    From http://www.imaging-resource.com/PRODS/EDR/EDRP.HTM:”Camera Menu

    Quality: Sets the image size and the compression ratio. Options are Large/Fine and Large/Normal (3,072 x 2,048 pixels), Medium/Fine and Medium/Normal (2,048 x 1,360 pixels), Small/Fine and Small/Normal (1,536 x 1,024 pixels), and RAW (3,072 x 2,048 pixels, with lossless compression).”