MakerNote

Home
Up

Overview

The Minolta MakerNote tag is one of the tags in the public EXIF area. Stored in this tag is very interesting information about camera settings which were in effect when taking the picture. Some of this information is repeated in normal EXIF tags but most of it exists just in this MakerNote or are more precise.

I have spent a lot of time in examining this tag with a very useful help of a few volunteers who provided me with the EXIF data from their picture albums. So many thanks to Molnár Barback Balázs, R. S. Blum, Pete Ganzel, Bill Hall, Dan Heimsoth, Jim Hunt, Graeme Knox, Bob Kouré, Pete Nicholls, Jiří Schacherl, Stanislav Zrno and David.

The information here is provided on an as-is without any warranty. Although I have tried to verify everything, it is still possible that there are some errors or mistakes. If you find any errors or you find out any additional information, please let me know at minolta@dalibor.cz

You can use this information freely in your projects but you have to let me know about your project and send me an a test version.

This information is contained in all JPEGs, TIFFs and RAW files. Be warned, however,  that some editing programs (even when they claim that they do not affect the stored EXIF data) destroy the MakerNote tag.

There is a utility which does decode and display all the known MakerNote information called Dalifer.


Version 1.0 - published 4.2.2003
Version 1.1 - published 5.2.2003
 MakerNote numbers are always stored in Motorola/Macintosh style, not Intel as I have stated before
 SubjectArea - changed
 WideFocusZone - changed
Version 1.2 - published 10.2.2003
 My English was corrected by Bill Hall. Thank you.
Version 1.3 - published 18.2.2003
 
ImageSize updates with D5 values. Thanks Bradley.
Version 1.4 - published 21.7.2003
 
FilmSpeed to ISO equation fixed. Thanks Anders.
 


MakerNote Tag

MakerNote is a tag with ID 0x927C (type 7 - undefined) and it can be quite long, about 12 kB.
In the beginning of this tag is a normal tag directory in usual format. Is consists of the following tags:
 

Name

ID

Format

Size

Camera

Meaning

MLTMakerNoteVersion

0000 ASCII 4

All

string 'MLT0' (not zero ended)

MLTCameraSettingsOld

0001 Binary 156
172

D5, D7
S304, S404 (different)

camera settings

MLTCameraSettingsNew

0003 Binary 208
224
228

D7u
D7i
D7Hi

camera settings

MLTTag10

0010 Binary 12968
11492

D5, D7, S304, S404
D7u, D7i

probably focus and exposure

MLTTag20

0020 Binary 260
354
394
716

D5, D7, S304
S404
D7u, D7i
D7Hi

unknown

MLTCompressedImageSize

0040 Long 4

All

size of the picture

MLTThumbnail

0081 Binary varies

D7

JPEG thumbnail 640x480
size from 10k to 65k

MLTThumbnailOffset

0088 Long 4

D7u, D7i, D7Hi

offset of JPEG thumbnail

MLTThumbnailLength

0089 Long 4

D7u, D7i, D7Hi

size of JPEG thumbnail

MLTTag100

0100 Long 4

D7Hi

unknown (always zero)

MLTTag101ColorMode

0101 Long 4

D7Hi

0 - natural color
1 - black&white
2 - vivid color
3 - solarization
4 - AdobeRGB

MLTTag102ImageQuality

0102 Long 4

D7Hi

0 - raw
1 - super fine
2 - fine
3 - standard
5 - extrafine

MLTTag103ImageQuality

0103 Long 4

D7Hi

0 - raw
1 - super fine
2 - fine
3 - standard
5 - extrafine

MLTPIM_IFD

0e00 Binary 40

D7u, D7i

PIM Information

MLTTag0f00

0f00 Binary 254

X, F100

camera settings

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Comments:

MLTMakerNoteVersion - this is always four bytes and contains the characters 'MLT0'. Probably just the magic number to verify that you are reading at the correct offset.

MLTCameraSetting - stores all settings which were in effect when taking the picture. Both tags have the same format described bellow. There is no need to process them in different ways.

MLTTag10 - I do not know the format of this tag. If you will find out, please tell me. It stores some information related to focus and maybe exposure metering.

MLTTag20 - I do not know the format of this tag. If you will find out, please tell me.

MLTCompressedImageSize - this is the size of the JPEG (compressed) or TIFF or RAW file.

MLTThumbnail - here is stored the thumbnail image (640x480) which is used for fast display of the picture on LCD of EVF. It is in normal JFIF format but the first byte should be changed to 0xFF. Beware! Sometimes the thumbnail is not stored in the file and this tag points beyond the end of the file.

MLTThumbnailOffset and Length - D7u, D7i and D7Hi no longer stores the thumbnail inside the tag. It has instead two tags describing the position of the thumbnail in the file and its size.

MLTTag100 - 103 - those four tags were added with D7Hi, although I do not understand why. MLTTag100 is always zero, MLTTag102 is the same as MLTTag 103. All information provided by those tags can be found inside MLTCameraSetting also. So there is no need to decode/display those four tags.

MLTPIM_IFD - I do not know how to decode this tag. Possibly it's just repeated information stored normally in tag 0xc4a5.

MLTTag0f00 - this tag is used to store camera settings for Minolta DiMAGE X and F100. I didn't try to decode it as I do not have those cameras. (There is a number of other additional tags on those cameras also)


Camera Settings Tag

This is of course the most interesting and important tag. It contains a sequence of a long numbers (4 bytes) encoded in Macintosh/Motorola big-endian style. This is regardless of the number format in the picture (even when the JPEG or TIFF itself is little-endian styel). Below is the table explaining the meaning of those numbers in sequence.
There are:
 - 39 values for D5 and D7
 - 52 values for D7u
 - 56 values for D7i
 - 57 values for D7Hi (Very oddly this one extra value is inserted between value 51 and 53.  So the values are shifted. Which means that you have to check for camera type when reading the end of this tag. Minolta engineers: Why you have done such a stupid thing?  :-(

Please bear in mind when trying to read those information that some values are set even if they have no real effect on the picture. In the example, BWFilter could be 3 even if the picture was not taken in B&W mode.
On the other hand for some settings you have to follow the camera logic. In the example, when DriveMode is Bracketing then you have to evaluate DECPosition to find out what you were really bracketing.
 

Field #

Name

Meaning

Comment

01

MLT01

0 or 1

This is mystery for me. This tag is zero first then without any obvious reason it changes to 1 and stays like this (and after long time it could revert to 0). The interval between change is random and very long.

02

ExposureMode

0 - P mode
1 - A mode
2 - S mode
3 - M mode

 

03

FlashMode

0 - fill-flash
1 - red-eye reduction
2 - rear flash sync
3 - wireless

 

04

WhiteBalance

0 - auto
1 - daylight
2 - cloudy
3 - tungsten
5 - custom
7 - fluorescent
8 - fluorescent 2
11 - custom 2
12 - custom 3

 

05

ImageSize

0 - 2560 x 1920 (2048x1536)
1 - 1600 x 1200
2 - 1280 x 960
3 - 640 x 480

For D5 the value 0 means 2048x1536.
RAW picture could have here 640x480 but it has no effect, it is still 2560x1920.

06

ImageQuality

0 - raw
1 - superfine
2 - fine
3 - standard
4 - economy
5 - extra fine

 

07

DriveMode

0 - single
1 - continuous
2 - self-timer
4 - bracketing
5 - interval
6 - UHS continuous
7 - HS continuous

 

08

MeteringMode

0 - multi-segment
1 - center weighted
2 - spot

I have seen values 0x0100 and 0x0102 and I do not know the meaning of them (all were taken with flash).

09

FilmSpeed

APEX Film Speed Value

Speed value = x/8-1
ISO = (2^(x/8-1))*3.125

10

ShutterSpeed

APEX Time Value

Time value = x/8-6
ShutterSpeed = 2^( (48-x)/8 )
! Due to rounding error x=8 should be displayed as 30 sec.

11

Aperture

APEX Aperture Value

ApertureValue = x/8-1
Aperture = 2^( x/16-0.5 )

12

MacroMode

0 - off
1 - on

 

13

DigitalZoom

0 - off
1 - electronic magnification was used
2 - digital zoom 2x
3 - Unknown meaning

I have found some pictures with this tag equal to three. I do not know what it means.

14

ExposureCompensation

EV = x/3 -2

Exposure compensation in EV

15

BracketStep

0 - 1/3 EV
1 - 2/3 EV
2 - 1 EV

 

16

MLT16

always zero

 

17

IntervalLength

interval is x+1 min (used with interval mode)

 

18

IntervalNumber

take x frames (used with interval mode)

 

19

FocalLength

x / 256 is real focal length in mm
x / 256 * 3.9333 is 35-mm equivalent

This value is not equal to FocalLength in public EXIF as the public one is tweaked to get 7x zoom to comply with marketing specification. The real zoom is 6.51x.

20

FocusDistance

x / 1000 is focus distance in meters
0 - focused at infinity

 

21

FlashFired

0 - no
1 - yes

See also InternalFlash so you can find out it you were using internal or external flash

22

Date

yyyymmdd

year = x/65536
month = x/256-x/65536*256
day = x%256

23

Time

hhhhmmss

hour = x/65536
minute = x/256-x/65536*256
second = x%256

24

MaxAperture

Max Aperture available with this focal length

Fno = 2^(x/16-0.5)
Break point is focal length (45 mm or 11.44 mm)

25

MLT25

always zero

 

26

MLT26

always zero

 

27

FileNumberMemory

0 - off
1 - on

 

28

LastFileNumber

number of the last stored picture

Usually this number +1 is in the filename of the picture. But when the pictures are kept in buffer before they are written to CF card then it doesn't work like this (esp. UHS mode).
0 - when FileNumberMemory is off.

29

WhiteBalanceRed

x/256 - red white balance coefficient used for this picture

Sometimes could be zero even if there is some red in the picture. Strange...
Range (/256): 0 and 0.77-2.31 (in my test data)

30

WhiteBalanceGreen

x/256 - green white balance coefficient used for this picture

Range (/256): always 1
Warning! Green white balance coefficient in raw file could be not equal to one and in this case all three WB coefficients are different to those stored in raw file.

31

WhiteBalanceBlue

x/256 - blue white balance coefficient used for this picture

Range (/256): 1.08-3.96 (in my test data)

32

Saturation

x-3 - saturation

Range: 0-6

33

Contrast

x-3 - contrast

Range: 0-6
I have seen the value 0x000c here also. What could it mean?

34

Sharpness

0 - hard
1 - normal
2 - soft

 

35

SubjectProgram

0 - none
1 - portrait
2 - text
3 - night portrait
4 - sunset
5 - sports action

 

36

FlashCompensation

(x-6)/3 - flash compensation in EV

Range: 0-12

37

ISOSetting

0 - 100
1 - 200
2 - 400
3 - 800
4 - auto

 

38

CameraModel

0 - DiMAGE 7
1 - DiMAGE 5
2 - DiMAGE S304
3 - DiMAGE S404
4 - DiMAGE 7i
5 - DiMAGE 7Hi

DiMAGE 7u is DiMAGE 7 with firmware 2.x
This "model" does not have separate number in this table although the data format is quite different compared to original DiMAGE 7 (with firmware 1.x)

39

IntervalMode

0 - still image
1 - time-lapse movie

I am not so sure now here.

40

FolderName

0 - standard form
1 - data form

 

41

ColorMode

0 - natural color
1 - black&white
2 - vivid color
3 - solarization
4 - AdobeRGB

 

42

ColorFilter

x-3 - color filter

Range: 0-6

43

BWFilter

 

Range: 0-10
Could be non-zero even if the picture is in color

44

InternalFlash

0 - no
1 - fired

Don't forget that external flash could have been used also

45

BrightnessValue

APEX Brightness value
 

Brightness Value = x/8-6
Range: from -20.25 to 13.5
Together with APEX Speed Value, Time Value and Aperture Value this could be used to verify that the picture was correctly exposed in M mode.
EV (+Exposure comp.) = AV+TV = SV+BV
(This equation is not true when using flash.)

46

SpotFocusPointX

x coordinate of spot focus point
in range 0-2560

It shows the last setting even when the spot focus was not used.

47

SpotFocusPointY

y coordinate of spot focus point
in range 0-1920

It shows the last setting even when the spot focus was not used.

48

WideFocusZone

0 - no zone
1 - center zone (horizontal orientation)
2 - center zone (vertical orientation)
3 - left zone
4 - right zone

0 with AF means that AF failed to lock and the picture is probably out-of-focus.

49

FocusMode

0 - AF
1 - MF

 

50

FocusArea

0 - wide focus (normal way)
1 - spot focus

 

51

DECPosition

0 - exposure
1 - contrast
2 - saturation
3 - filter

It stores the position of DEC switch. This value very useful when DriveMode is set to Bracketing to determine what the user was bracketing.

-- / 52

ColorProfile

0 - not embedded
1 - embedded

This tag is inserted here with DiMAGE 7Hi only!!
For the other cameras is not here.

52 / 53

DataImprint

0 - none
1 - yyyy/mm/dd
2 - mm/dd/hr:min
3 - text
4 - text + id#

 

53 / 54

MLT54

always 0x0001

I do not know the meaning of this tag.

54 / 55

MLT55

always 0x0001

I do not know the meaning of this tag.

55 / 56

MLT56

always 0x1f40

I do not know the meaning of this tag.

56 / 57

MLT57

always 0x0010

I do not know the meaning of this tag.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Problems and things to solve:

  • How to read MLTTag10, MLTTag20? What interesting information is stored inside PIM tags?
     
  • Why MLTThumbnail sometimes points beyond the end of file (there is no thumbnail in the picture)?
     
  • Why the exposure equation doesn't give a precise result?
    When I have tried to count AV+TV+ExposureCompensation-SV-BV I was expecting that the result would be close to zero (when not in M mode and not using flash). But the real results differ sometimes by +/- 2 EV. Why?
     
  • Why is WhiteBalanceRed zero sometimes?
    I have a few pictures which I took with flash but WB was incorrectly set to tungsten, but I have seen normal pictures also with Red=0.
     
  • How can you tell which pictures belong to one bracketing series? (It is possible not to take all three pictures and interrupt bracketing after one of two shots)
     
  • How can you tell that the picture was taken in bulb mode?
     
  • What is the meaning of Tag01?
     
  • What does mean the value 3 in tag DigitalZoom?
     
  • What does mean value 0x0100 and 0x0102 in MeteringMode (those pictures were taken with flash and they are not exposed very well)?
     
  • What does Contrast=12 mean?
    I have one picture taken in Solarization mode with this strange value.
     
  • Interval mode could be 2,3 and 4.
    I have seen this values in the EXIF data supplied by one volunteer. I have no explanation for it. They were all TIFFs.

If you know the answer to these questions or at least have a clue, then please let me know at minolta@dalibor.cz


Notes about public EXIF tags:

Generally speaking if you know how to decode MakerNote there is no need to decode public EXIF tags as there is nothing more than in MakerNote and the contents of MakerNote is much more precise (with one exception and that is Firmware Version of the camera).
There are a few bugs in Minolta firmware which affect the values in public EXIF tags also.

  • Flash (tag 0x9209) - if the picture is taken with external flash. Minolta stores the value 0x11 here which is contradictional. It means "flash fired" and "flash compulsory disabled". You should read this value as "external flash fired"
     
  • Brightness value (tag 0x9203) - when Minolta measures Brightness value being less than -6 EV then it stores a bogus number inside this tag.
     
  • Shutter Speed (tag 0x9201 ) or Exposure Time (tag 0x829a) - some cameras recorded all shutter speed rounded to a nearest "fixed" value. This has caused that all bulb exposures longer than 4s are recorded as 30s.
     
  • Subject area (tag 0x9214) - this is possibly interesting tag. It contains the coordinates of the rectangle used for auto focus. The coordinates are based on picture size (i.e. for 640x480 picture the x is in range 0-639). It duplicates the information about spot/wide focus zone used but adds also "precise" position of the zone in the image.
     
  • Firmware version (tag 0x0131) - here you can distinguish between DiMAGE 7 and DiMAGE 7u
     
  • ColorSpace (tag 0xa001) - here Minolta records value 1 which means sRGB color space. In many cases this is nonsense and there should be 0xffff which is "uncalibrated". This causes problems to Adobe Photoshop 7 because when it doesn't find attached ICC profile, it reads this tag and assumes that the picture is in sRGB which is not necessarily true and then it doesn't ask about missing profile. (You can change this behavior with a patch available on Adobe web site.)
     
  • FocalLength (tag 0x920a) and FocalLengthIn35mm (tag 0xa405) - those tag are just false. Minolta is trying to cheat the users to believe that DiMAGE 7 has 7x zoom which it is not (it is only around 6.5x). If you divide maximum and minimum focal lengths in tags from MakerNote you will end up with ratio 6.7x (with all cameras). Very interesting is when you divide the same values stored in public tags, then you get with DiMAGE 7 still 6.7x but with DiMAGE 7i, 7Hi and even with 7u you get 7.0x. And when you divide focal length equivalent to 35mm you get even more - 7.14x.
    How do they do it? They just multiply the focal lengths lower than 15 mm by 0.97 and higher than 30 mm by 1.02.
    The Minolta engineers are just cheating us and I am very disappointed with this approach. This is not an error, it is intentional falsification of data to achieve the conformity with teh marketing specification. Do we, loyal customers, really deserve such treatment?
     

So here is my all knowledge about MakerNote. Hopefully someone will find it useful. I just repeat once more that using this information
for your free projects is for free but you have to let me know about it and send me a copy of your project. If you would like to use this information in your commercial project you have to ask for a permission first.

If you would like to help me with solving the rest of the tags you could send me your EXIF data extracted from your picture library. It doesn't take long and it's quite easy. Volunteers please mail me.

Also if you have any comments or you will need some additional explanation I am always willing to help.

 Dalibor