Minolta MakerNote

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
640×480
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 (640×480) 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
(2048×1536)
1 – 1600 x 1200
2 – 1280 x 960
3 – 640 x 480
For D5 the value 0
means 2048×1536.
RAW picture could have here 640×480 but it has no effect, it is still
2560×1920.
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(at)@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 640×480 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