# Maker Note Idiosyncracies

It really is surprising how stupid some (...many, ...most?) manufacturers seem to be when it comes to writing what should be a fairly simple file format.

One positive thing is that most manufacturers seem to have adopted the use of an EXIF-like IFD (Image File Directory) structure for their maker notes. But many problems arise because of a fundamental design flaw in the EXIF/TIFF format. Values longer than 4 bytes are stored at a location referenced by an offset from an absolute position in the file (where offset 0 is the start of the EXIF/TIFF information).

The difficulty is that these offsets must be recalculated when a file is rewritten, but in general this is not possible (particularly for the maker notes) because the format of not all information is known. Some manufacturers have attempted to avoid this problem using offsets which are relative to the start of the maker note IFD instead of the usual start of EXIF. This is a good idea if implemented properly, but this is not done consistently. (And some manufacturers are not even consistent about how the offsets are calculated from one camera model to the next!)

> Technical aside:
> If EXIF were designed properly, all offsets would be relative to 4 bytes after the end of the IFD, which is the normal position for values to be stored, and all value data for the IFD would be stored in a block at this location. If this was done, an entire IFD could be relocated easily without causing problems.

Below is a list of idiosyncracies in files written by the digital cameras or software from various manufacturers. Many of these quirks relate to the offset problem mentioned above.

Canon: The 350D (firmware 1.0.1) gets the size of the thumbnail image wrong and reports it to be 10 bytes too long. This can cause the reported thumbnail image data to run off the end of the APP1 segment. A bug in version 1.0.4 of the 40D firmware causes it to write a maker note entry count that is one greater than it should be.

Casio: The preview image is referenced by two different offsets (the PreviewImage tag plus a PreviewImageStart/PreviewImageLength pair). Also, the offset for the PrintIM information is relative to the start of the IFD entry even though other offsets aren't.

Concord: Some models write PrintIM information with an entry-based offset like Casio.

Hewlett-Packard: The PhotoSmart 720 (one of the few HP models to use EXIF-format maker notes) uses a format code of 5 (rational64u) for tag 0x0204, but stores a rational32u value. Other models show about as much standardization as the Kodak point-and-shoot lineup.

Kodak: Professional DCS Photo Desk software writes a cyclical EXIF directory such that the InteropIFD pointer points back to IFD0. Point-and-shoot models show little standardization in maker note format.

Konica: The KD-300Z writes all maker notes offsets relative to the start of the individual IFD entry.

Minolta: An obvious bug in the firmware of the Z2 writes an incorrect offset for the 'MinoltaCameraSettings2' information -- it writes the offset of the offset itself instead of the offset of the value (hahaha!). Other offsets are correct.

Kyocera: A number of models write all maker notes offsets relative to the start of the individual IFD entry.

Nikon: D2H NEF files have huge blocks with all zero data (3.7 MB in my test file!).

Olympus: The E-1 and E-300 have subdirectories in the maker notes, but not only does the data size of these subdirectories exclude the subdirectory value data, but also it is 2 bytes too small for the directory information itself (doh! -- they forgot to include the entry count).

Pentax: The Optio 330 uses an offset for the PrintIM information which is relative to the start of the IFD entry (hmmm, like some Casio models...). Also, preview image offsets in the maker notes are given relative to the EXIF base rather than the maker note base (like all other maker notes offsets).

The Optio 550, 555, 33WR and 43WR all specify a PrintIM directory at a the same offset of 0x29a with length 40 bytes, but the only PrintIM information in the file is nowhere near that offset and is 128 bytes long. Also for these models, tag 0x002e has a constant value of 0x6a6 even though its position changes. Finally, all of these models plus the Optio WP waste many kilobytes of space in each image with large unused data blocks in the EXIF information.

The Optio 330RS and 430RS double reference the preview image information.

Note that the worst problems are with the Optio 230, 330, and 430, which carry the Asahi brand name.

Photoshop and Nikon Capture: Both of these packages write TIFF IPTC information as 'int32u' (or 'LONG'). This is wrong (see reference). Nikon Capture goes one step further and simply ignores IPTC that is written correctly as 'undef' or 'int8u'. (So for compatibility, ExifTool also writes this incorrectly as 'int32u'.)

Ricoh: An IFD subdirectory in the Ricoh maker notes of both the Caplio RR30 and RR1. The RR30 uses standard EXIF offsets (relative to the start of the EXIF data), but for the RR1 the offsets are relative to the start of the subdirectory.

Rollei: The DK4010 writes all maker notes offsets relative to the start of the individual IFD entry.

Sanyo: The offsets written in the maker notes of the J1, J2, J3, S1, S3 and S4 have very little to do with reality. Apparently the Sanyo programmers have no understanding of the concept of an IFD offset.

Skanhex: With some Skanhex models (SX-210Z3, SX-330Z3, SX3300, SX410Z3), the 264-byte makernotes block contains no useful information, and overlaps values from the ExifIFD. For these models there is also a large block (typically 1195 bytes) of unreferenced information in the EXIF data immediately following the IteropIFD. This block begins with the character sequence "SKANH\0", and contains exactly the same information in all 20 of my sample images that contain this block (except for a variable amount of padding at the end with 0xff bytes). These quirks also affect some Gateway, Jenoptik, Medion, Samsung and Yakumo models built by Skanhex.

Toshiba: The PDR-3310 writes all maker notes offsets relative to the start of the individual IFD entry. (very similar to Konica KD-300Z)

## RAW file Idiosyncracies

Minolta MRW: The A200 stores the thumbnail image offset in IFD0 relative to the start of file, while all other offsets are relative to the start of the TIFF header, which is 48 bytes into the file. Also, the A200 stores the StripOffsets and the StripByteCounts values in the wrong byte order.

Sony ARW: The A100 with firmware 1.00 sets the high word of the thumbnail image offset to zero, but it should be 0x0001. This problem is fixed for firmware 1.04, but may or may not exist in versions between 1.00 and 1.04.

Created Mar. 25, 2005
Last revised Dec. 10, 2008

<-- Back to ExifTool home page