Author Topic: Assign lens focal length and name for non cpu lenses  (Read 67018 times)

Lars Steenhoff

  • Senior
  • ****
  • Posts: 453
Re: Assign lens focal length and name for non cpu lenses
« Reply #50 on: November 22, 2016, 09:00:10 PM »
@dfort yes your exactly right about the crop mode, the correction should not be applied.
Therefore it would be good to know if a shot was filmed in crop mode or normal. so that the lens correction is only used when it was a full frame shot. (I could manually disable the corrections for crop mode shots )

I will have some free time in the weekend and will have a look at getting up to speed with lua.  :)

DeafEyeJedi

  • Hero Member
  • *****
  • Posts: 3228
  • 5D3 / M1 / 7D / 70D / SL1 / M2
Assign lens focal length and name for non cpu lenses
« Reply #51 on: November 22, 2016, 09:47:53 PM »
@dfort yes your exactly right about the crop mode, the correction should not be applied.
Therefore it would be good to know if a shot was filmed in crop mode or normal. so that the lens correction is only used when it was a full frame shot.

+1 -- because in the past I've accidentally overstretched some of the footage in post due to being shot crop-mode.

I will have some free time in the weekend and will have a look at getting up to speed with lua.  :)

Sweet. Looking forward to it! :)
5D3.113 • 5D3.123 • EOSM.203 • 7D.203 • 70D.112 • 100D.101 • EOSM2.*

Lars Steenhoff

  • Senior
  • ****
  • Posts: 453
Re: Assign lens focal length and name for non cpu lenses
« Reply #52 on: November 22, 2016, 10:33:23 PM »
Code: [Select]
lens.name = "X3 Zeiss Distagon T* 2/25 ZF.2"
There could also be a way to write the crop info in the lens name, so no api change is needed, and the lens profile would not be automatically applied.
This does feel a bit of a hack, and there is the character limit of the lens name exif field you mentioned before.

Alternatively the focal length could represent the crop

Code: [Select]
lens.name = "Zeiss Distagon T* 2/25 ZF.2
lens.focal_length = 75

But the fist question @dmilligan would be: is the crop mode setting exposed to lua ?

dfort

  • Developer
  • Hero Member
  • *****
  • Posts: 3730
Re: Assign lens focal length and name for non cpu lenses
« Reply #53 on: November 23, 2016, 05:48:02 AM »
Code: [Select]
lens.name = "X3 Zeiss Distagon T* 2/25 ZF.2"

Does this work with ACR? If you need to enter the lens name manually to correct lens distortion doesn't it kind of defeat the purpose of what we're doing?

@a1ex hinted at adding some new metadata to MLV but how would that work with ACR?

If you would be satisfied with being able to look up a library of flat frames to fix vignetting and some other issues I think that would be possible to implement that without having to add any extra metadata with the cooperation from the developers of applications tailored specifically for MLV files. Applications like MLVFS, MLV Producer and MLP. Though we're talking about a lot of work. I believe @Danne is probably the furthest along with the flat frame thing in MLP. I'm drifting a bit off topic now because this should work for any lens, not just manual lenses.

@dmilligan -- I can rework lens.aperture to camera.aperture or expo.aperature or whatever. What we have going on here is being able to write the lens name, focal length and aperture only for manual lenses via lua. If a lens that communicates with the camera is detected these become read only. This seemed like a worthwhile thing to do but I don't want to put up a pull request that clashes with your vision of the API.
5D3.* 7D.206 700D.115 EOSM.203 EOSM2.103 M50.102

dfort

  • Developer
  • Hero Member
  • *****
  • Posts: 3730
Re: Assign lens focal length and name for non cpu lenses
« Reply #54 on: November 23, 2016, 07:18:38 PM »
@Lars_Steenhoff
@garry23
@DeafEyeJedi

New test builds. This time I went on a merge fest so these have crop_rec, 10bit-12-bit and a few other enhancements along with the lua non-cpu lens thing we're working on here. These are only for the 5D3.113 and EOSM.202 since that's what we seem to be testing this on and are the only platforms that seem to work with the crop_rec mode that was requested for this next round of testing.

Good luck!

https://bitbucket.org/daniel_fort/magic-lantern/downloads/magiclantern-x-perimental.2016Nov23.zip
5D3.* 7D.206 700D.115 EOSM.203 EOSM2.103 M50.102

Lars Steenhoff

  • Senior
  • ****
  • Posts: 453
Re: Assign lens focal length and name for non cpu lenses
« Reply #55 on: November 23, 2016, 07:39:24 PM »
Yes this is great,  :) I was just installing the build tools on the mac and already downloaded the xperimental branch, after seeing all the merges going in there  8)

Im still figuring out how to make the build, so thanks for making it available as a download.  Will try it out on the 5d3 now.

Lars Steenhoff

  • Senior
  • ****
  • Posts: 453
Re: Assign lens focal length and name for non cpu lenses
« Reply #56 on: November 23, 2016, 10:41:15 PM »
So far great results! @dfort

I did a few tests by just making copies of the script and adding the lens names to the script.

This works well if I restart the camera for before each lens change, if I just run a different script after each other only the first one will stay active.
The 25 mm and the 35 mm and 50 mm work great

ZEISS25f2.LUA

Code: [Select]
-- ZEISS 25 f2
-- Prints lens_info.name on the console

menu.close()
console.show()
if lens.name == "" then
    print("non-cpu lens")
    lens.name = "Zeiss Distagon T* 2/25 ZF.2"
    lens.focal_length = 25
    lens.aperture = 20
end
print("lens: "..lens.name)
print("focal_length: "..lens.focal_length)
print("aperture: "..lens.aperture/10)
print "Press any key to exit."
key.wait()
console.hide()


ZEISS35f2.LUA
Code: [Select]
-- ZEISS 35 f2
-- Prints lens_info.name on the console

menu.close()
console.show()
if lens.name == "" then
    print("non-cpu lens")
    lens.name = "Zeiss Distagon T* 2/35 ZF.2"
    lens.focal_length = 35
    lens.aperture = 20
end
print("lens: "..lens.name)
print("focal_length: "..lens.focal_length)
print("aperture: "..lens.aperture/10)
print "Press any key to exit."
key.wait()
console.hide()



ZEISS50MP.LUA

Code: [Select]
-- ZEISS 50MP f2
-- Prints lens_info.name on the console

menu.close()
console.show()
if lens.name == "" then
    print("non-cpu lens")
    lens.name = "Zeiss Makro-Planar T* 2/50 ZF.2"
    lens.focal_length = 50
    lens.aperture = 20
end
print("lens: "..lens.name)
print("focal_length: "..lens.focal_length)
print("aperture: "..lens.aperture/10)
print "Press any key to exit."
key.wait()
console.hide()





Lars Steenhoff

  • Senior
  • ****
  • Posts: 453
Re: Assign lens focal length and name for non cpu lenses
« Reply #57 on: November 23, 2016, 11:31:30 PM »
The Zeiss Planar T* 1,4/85 ZF.2 does not show up in ACR for some reason.
And if I compare a shot from the lens on a Nikon camera the exif data does not have the lens name, but ACR does recognise the lens for profile. so I'm not sure were ACR reads this name from.

Canon dng file processed with MLVFS
http://www.larssteenhoff.com/forum_pics/M23-2308MLV_1_2016-11-23_0001_C0000_000010.dng

Nikon raw file from the nikon df with the zeiss lens.
http://www.larssteenhoff.com/forum_pics/DSC_7499.NEF

ZEISS85.LUA
Code: [Select]
-- ZEISS 85 f1.4
-- Prints lens_info.name on the console

menu.close()
console.show()
if lens.name == "" then
    print("non-cpu lens")
    lens.name = "Zeiss Planar T* 1,4/85 ZF.2"
    lens.focal_length = 85
    lens.aperture = 14
end
print("lens: "..lens.name)
print("focal_length: "..lens.focal_length)
print("aperture: "..lens.aperture/10)
print "Press any key to exit."
key.wait()
console.hide()




Canon dng file processed with MLVFS
http://www.larssteenhoff.com/forum_pics/M23-2308MLV_1_2016-11-23_0001_C0000_000010.dng



Nikon raw file from the nikon df with the zeiss lens.
http://www.larssteenhoff.com/forum_pics/DSC_7499.NEF

dfort

  • Developer
  • Hero Member
  • *****
  • Posts: 3730
Re: Assign lens focal length and name for non cpu lenses
« Reply #58 on: November 24, 2016, 12:00:31 AM »
ACR can't find "Zeiss Planar T* 1,4/85 ZF.2" but your other lenses are fine? Just checked that file and reproduced the issue. That's very strange. In the Nikon NEF file I see this:

Code: [Select]
Lens ID                         : Carl Zeiss Planar T* 1.4/85 ZF.2
So I edited the "Lens Model" your file with exiftool replacing the "1,4" with "1.4" and it worked:



Go figure.
5D3.* 7D.206 700D.115 EOSM.203 EOSM2.103 M50.102

Lars Steenhoff

  • Senior
  • ****
  • Posts: 453
Re: Assign lens focal length and name for non cpu lenses
« Reply #59 on: November 24, 2016, 12:31:47 AM »
Great you found it!   so the comma should be a dot in lens name.

Now all my lenses work!  Thanks for figuring that out


ZEISS85.LUA
Code: [Select]
-- ZEISS 85 f1.4
-- Prints lens_info.name on the console

menu.close()
console.show()
if lens.name == "" then
    print("non-cpu lens")
    lens.name = "Zeiss Planar T* 1.4/85 ZF.2"
    lens.focal_length = 85
    lens.aperture = 14
end
print("lens: "..lens.name)
print("focal_length: "..lens.focal_length)
print("aperture: "..lens.aperture/10)
print "Press any key to exit."
key.wait()
console.hide()

ZEISS50.LUA
Code: [Select]
-- ZEISS 50 f1.4
-- Prints lens_info.name on the console

menu.close()
console.show()
if lens.name == "" then
    print("non-cpu lens")
    lens.name = "Zeiss Planar T* 1.4/50 ZF.2"
    lens.focal_length = 50
    lens.aperture = 14
end
print("lens: "..lens.name)
print("focal_length: "..lens.focal_length)
print("aperture: "..lens.aperture/10)
print "Press any key to exit."
key.wait()
console.hide()

Lars Steenhoff

  • Senior
  • ****
  • Posts: 453
Re: Assign lens focal length and name for non cpu lenses
« Reply #60 on: November 24, 2016, 12:40:59 AM »
The way I tested it was just to rename the scripts and load them all, just to test if they work.
Actually its quite an easy way to select different lenses  :)  just have to restart the camera after a lens change but need to do that anyway.

I guess there is no way to store a lens setting so when I turn the camera on it will auto load the last setting?




Lars Steenhoff

  • Senior
  • ****
  • Posts: 453
Re: Assign lens focal length and name for non cpu lenses
« Reply #61 on: November 24, 2016, 01:05:56 AM »
Found it!

If I turn on autorun the lens is loaded at startup, this is perfect.

Now the only thing not in user menu is the aperture setting, that should be relatively easy to code, I will have a look at some examples
( or you can use the text editor in camera  :D )


Lars Steenhoff

  • Senior
  • ****
  • Posts: 453
Re: Assign lens focal length and name for non cpu lenses
« Reply #62 on: November 24, 2016, 01:37:37 AM »
All these Zeiss lens names are recognised in ACR
Code: [Select]
Zeiss Distagon T* 2.8/15 ZF.2
Zeiss Distagon T* 3.5/18 ZF.2
Zeiss Distagon T* 2.8/21 ZF.2
Zeiss Distagon T* 2.8/25 ZF.2
Zeiss Distagon T* 2/25 ZF.2
Zeiss Distagon T* 2/28 ZF.2
Zeiss Distagon T* 2/35 ZF.2
Zeiss Distagon T* 1.4/35 ZF.2
Zeiss Makro-Planar T* 2/50 ZF.2
Zeiss Planar T* 1.4/50 ZF.2
Zeiss Planar T* 1.4/85 ZF.2
Zeiss Makro-Planar T* 2/100 ZF.2
Zeiss Apo Sonnar T* 2/135 ZF.2



Now I'm trying to get a Nikon lens to be recognised in ACR but it does not reconise it.

Quote
Nikon AF NIKKOR 35mm f/2D

There are no commas in the name, perhaps the name is wrong or ACR is looking in another exif field for Nikon lenses.
I took those names from the same list on the adobe website.

https://helpx.adobe.com/camera-raw/kb/supported-lenses.html#Nikon

Quote
Nikon AF Fisheye-Nikkor 16mm f/2.8D
Nikon AF NIKKOR 50mm f/1.4D
Nikon AF NIKKOR 35mm f/2D
Nikon AF NIKKOR 24mm f/2.8D

None of these are recognised

dfort

  • Developer
  • Hero Member
  • *****
  • Posts: 3730
Re: Assign lens focal length and name for non cpu lenses
« Reply #63 on: November 24, 2016, 01:41:32 AM »
Look what I found in the exiftool source code:

lib/Image/ExifTool/Nikon.pm
Code: [Select]
# nikon lens ID numbers (ref 8/11)
Code: [Select]
    '00 40 2D 2D 2C 2C 00 00' => 'Carl Zeiss Distagon T* 3.5/18 ZF.2',
    '00 48 32 32 24 24 00 00' => 'Carl Zeiss Distagon T* 2.8/21 ZF.2',
    '00 54 3C 3C 18 18 00 00' => 'Carl Zeiss Distagon T* 2/28 ZF.2',
    '00 54 44 44 0C 0C 00 00' => 'Carl Zeiss Distagon T* 1.4/35 ZF.2',
    '00 54 44 44 18 18 00 00' => 'Carl Zeiss Distagon T* 2/35 ZF.2',
    '00 54 50 50 0C 0C 00 00' => 'Carl Zeiss Planar T* 1.4/50 ZF.2',
    '00 54 50 50 18 18 00 00' => 'Carl Zeiss Makro-Planar T* 2/50 ZF.2',
    '00 54 62 62 0C 0C 00 00' => 'Carl Zeiss Planar T* 1.4/85 ZF.2',
    '00 54 68 68 18 18 00 00' => 'Carl Zeiss Makro-Planar T* 2/100 ZF.2',
    '00 54 72 72 18 18 00 00' => 'Carl Zeiss Apo Sonnar T* 2/135 ZF.2',

So if exiftool has to look up the lens via the Lens ID ACR can probably use either the Lens ID or Lens Model EXIF tags to identify the lens.

In any case, looks like things are working. Now we need a real lua script. It should be able to run Autorun so that when a non-cpu lens is detected it will look up a configure file for the last lens used and have a menu where you can choose from a list of lenses. We might consider putting all the possible lens combinations that are in the Adobe list that can be adapted to a Canon body in a text file so users don't need to figure out that the way a lens is displayed in ACR might not be exactly the way it is saved in the EXIF tag.

@Lars_Steenhoff - The lens you are looking for is probably:
Code: [Select]
AF Nikkor 35mm f/2Got that from the exiftool code.

@garry23 - It would be great if you can you jump start this when you get back from vacation.
5D3.* 7D.206 700D.115 EOSM.203 EOSM2.103 M50.102

Lars Steenhoff

  • Senior
  • ****
  • Posts: 453
Re: Assign lens focal length and name for non cpu lenses
« Reply #64 on: November 24, 2016, 01:51:50 AM »
http://www.larssteenhoff.com/forum_pics/DSC_7500.NEF

Here is a file shot on Nikon with the AF Nikkor 35mm f/2,   I tried this name but it still does not recognise it.
Perhaps you can look in this file to see how and were it stores the lens data.

If I open this file in an exif editor I don't see anything in the lens model field.

Lars Steenhoff

  • Senior
  • ****
  • Posts: 453
Re: Assign lens focal length and name for non cpu lenses
« Reply #65 on: November 24, 2016, 02:02:26 AM »
http://u88.n24.queensu.ca/exiftool/forum/index.php?topic=2754.0

Here is some talk about encrypted exif data. I do remember that Nikon encrypts its raw files

Quote
Use the exiftool -v3 to see both the encrypted and decrypted LensData in hex.

https://forums.adobe.com/thread/350943

dfort

  • Developer
  • Hero Member
  • *****
  • Posts: 3730
Re: Assign lens focal length and name for non cpu lenses
« Reply #66 on: November 24, 2016, 04:53:29 AM »
I'm stumped on the Nikon AF Nikkor 35mm f/2 lens. It may be because this is an automatic lens and Nikon uses the LensID tag which is an integer instead of LensModel which is a string. In addition, LensID numbers seem to be dependent on the camera. I could change the LensID tag to show various Canon lenses but when I used the LensID for that lens (66) it came up:

Quote
Lens ID                         : Unknown (66)

So we might be out of luck when it comes to mounting Nikon AF lenses on your Canon and using them as manual lenses. Note that the Zeiss ZF.2 lenses are chipped but they are manual lenses so those seem to work fine.

[EDIT] I posted a question in the Adobe Camera Raw forum. Let's see if we can get an answer on this.

5D3.* 7D.206 700D.115 EOSM.203 EOSM2.103 M50.102

dfort

  • Developer
  • Hero Member
  • *****
  • Posts: 3730
Re: Assign lens focal length and name for non cpu lenses
« Reply #67 on: November 26, 2016, 08:48:44 AM »
Some interesting documentation that shows Lens ID information that was posted on another topic (in French):

http://www.magiclantern.fm/forum/index.php?topic=18308.msg175438#msg175438

There's a long list of lenses along with their Lens ID numbers. Interesting that the EF 70-200mm f/2.8L IS II USM lens has different ID numbers depending on whether or not a tele extender is being used.

Code: [Select]
Lens Id Hex Marque Modèle

251     FB  Canon  EF 70-200mm f/2.8L IS II USM
252     FC  Canon  EF 70-200mm f/2.8L IS II USM + 1.4x
253     FD  Canon  EF 70-200mm f/2.8L IS II USM + 2x

It also lists Zeiss ZE lenses but not ZF.2 lenses which are optically identical and we know are showing up properly in ACR.

Code: [Select]
Lens Id Hex Marque Modèle
33   4  21  Zeiss  Distagon T* 15mm f/2.8 ZE
33   5  21  Zeiss  Distagon T* 18mm f/3.5 ZE
33   6  21  Zeiss  Distagon T* 21mm f/2.8 ZE
33   7  21  Zeiss  Distagon T* 25mm f/2 ZE
33   8  21  Zeiss  Distagon T* 28mm f/2 ZE
33   9  21  Zeiss  Distagon T* 35mm f/2 ZE
33  10  21  Zeiss  Distagon T* 35mm f/1.4 ZE
33  11  21  Zeiss  Planar T* 50mm f/1.4 ZE
33  12  21  Zeiss  Makro-Planar T* 50mm f/2 ZE
33  13  21  Zeiss  Makro-Planar T* 100mm f/2 ZE
33  14  21  Zeiss  Apo-Sonnar T* 135mm f/2 ZE

I have no idea how this works because Lens ID only accepts a single integer value and all the Zeiss ZE lenses use the same integer.

Still no answers on the Adobe forum about the Nikon AF lens issue.
5D3.* 7D.206 700D.115 EOSM.203 EOSM2.103 M50.102

Lars Steenhoff

  • Senior
  • ****
  • Posts: 453
Re: Assign lens focal length and name for non cpu lenses
« Reply #68 on: November 26, 2016, 12:55:19 PM »
Yes I think on the adobe forum there won't be much help,
I had some other idea to make new profiles based on the current Nikon profiles and with a name that is known to be recognised.

There is the profile creator from adobe, but I have not yet found a way to open excisting profiles.

https://www.adobe.com/support/downloads/detail.jsp?ftpID=5489

I can understand why the lenses with an extender have a different name, as the profile should also be different as only the center of the lens is used.  this is the same effect of the magic lantern in camera crop module, so it is interesting to see that there is also provision for crop in the profiles.

dmilligan

  • Developer
  • Hero Member
  • *****
  • Posts: 3218
  • 60Da / 1100D / EOSM
Re: Assign lens focal length and name for non cpu lenses
« Reply #69 on: November 26, 2016, 09:29:29 PM »
I started working on this, progress so far: https://bitbucket.org/hudson/magic-lantern/branch/manual_lens_info

dfort

  • Developer
  • Hero Member
  • *****
  • Posts: 3730
Re: Assign lens focal length and name for non cpu lenses
« Reply #70 on: November 27, 2016, 04:40:27 AM »
Fantastic!

Ok if I ask for a feature request on this feature request? How about adding lens information tags to dng files so this will work for silent.mo too. We don't need a sidecar xmp for dng files, do we? Would this be in the scope of the manual_lens_info branch?
5D3.* 7D.206 700D.115 EOSM.203 EOSM2.103 M50.102

g3gg0

  • Developer
  • Hero Member
  • *****
  • Posts: 3154
Re: Assign lens focal length and name for non cpu lenses
« Reply #71 on: November 27, 2016, 09:48:42 AM »
just noticed this thread.
it is only about having a proper string for the current lens on MLV side?
or would it require additional data that must be embedded into DNG?
Help us with datasheets - Help us with register dumps
magic lantern: 1Magic9991E1eWbGvrsx186GovYCXFbppY, server expenses: paypal@g3gg0.de
ONLY donate for things we have done, not for things you expect!

dfort

  • Developer
  • Hero Member
  • *****
  • Posts: 3730
Re: Assign lens focal length and name for non cpu lenses
« Reply #72 on: November 27, 2016, 05:30:10 PM »
@g3gg0

For this to work with MLV, DNG and CR2 --

CR2 will require writing an xmp sidecar file.

DNG needs to have the lens data to be embedded.

MLV does have the required lens data -- though I found a minor issue if we decide to someday add the lens serial number as a user defined field because it isn't being saved. This is from a lens that should have something in the lens serial number field:

Code: [Select]
     Name:        'EF-S17-55mm f/2.8 IS USM'
     Serial:      ''
     Focal Len:   55 mm
5D3.* 7D.206 700D.115 EOSM.203 EOSM2.103 M50.102

Ant123

  • Contributor
  • Member
  • *****
  • Posts: 121
Re: Assign lens focal length and name for non cpu lenses
« Reply #73 on: November 27, 2016, 06:05:45 PM »
Here you can find parameters taken from 3 lenses:
Code: [Select]
MIME-Version: 1.0
Content-Type: application/octet-stream; name="lensinfo.zip"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="lensinfo.zip"

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


But attachments in this forum still don't work for me.

dfort

  • Developer
  • Hero Member
  • *****
  • Posts: 3730
Re: Assign lens focal length and name for non cpu lenses
« Reply #74 on: November 27, 2016, 07:49:53 PM »
I have no idea how you produced this or if it has anything to do with this topic for non cpu lenses but it is interesting.

Here you can find parameters taken from 3 lenses:
...
But attachments in this forum still don't work for me.

You don't need to attach text files but there is a 20,000 character limit per post and Tapatalk users will probably hate this:

EF-M22mm f/2 STM
Code: [Select]
uartr.lua: start UART redirection
Fri Sep 30 22:21:56 2016 UART redirect Test (uartrtst.lua) OK

!! RESET COMPLETE !!


[DCL 1st] ==================================
COM_CONTROL1 CTL_HEADER:         0x02
COM_CONTROL1 COM_2ND:            0x00
COM_CONTROL1 DATA_AVAILABLE:     TRUE
COM_CONTROL1 POWER_ON_REQ:       FALSE
COM_CONTROL1 EOS_COM_REQ:        TRUE

COM_CYCLE FREQ_24HZ:             FALSE
COM_CYCLE FREQ_25HZ:             FALSE
COM_CYCLE FREQ_30HZ:             FALSE
COM_CYCLE FREQ_48HZ:             FALSE
COM_CYCLE FREQ_50HZ:             FALSE
COM_CYCLE FREQ_60HZ:             TRUE
COM_CYCLE FREQ_72HZ:             FALSE
COM_CYCLE FREQ_75HZ:             FALSE
COM_CYCLE FREQ_90HZ:             FALSE
COM_CYCLE FREQ_96HZ:             FALSE
COM_CYCLE FREQ_100HZ:            FALSE
COM_CYCLE FREQ_120HZ:            FALSE
COM_CYCLE FREQ_ENBL:             TRUE

FB_GAP:                          0x00

UNIT_CONTROL SINK:               TRUE

RESET_COMMAND FOCUS:             FALSE
RESET_COMMAND IRIS:              FALSE
RESET_COMMAND IS:                FALSE
RESET_COMMAND SINK:              FALSE

POWER_CONTROL FOCUS_MOTOR:       FALSE

LENS_FUNC_PERMISSION PF:         FALSE
LENS_FUNC_PERMISSION FP:         FALSE
LENS_FUNC_PERMISSION CZ:         TRUE
LENS_FUNC_PERMISSION IRIS:       TRUE
LENS_FUNC_PERMISSION IS:         TRUE

IS_STATUS VECTOR_ENABLE:         FALSE
IS_STATUS SW_ON:                 ON
IS_STATUS START_STOP(SW1/SW2):   0x00
IS_STATUS SHUTTER_SPEED:         0x09

IS_MODE NORMAL:                  ON
IS_MODE DYNAMIC:                 ON

CAMERA_STATUS GRIP_POSITION:     0x00
CAMERA_STATUS TEMP_VALID:        FALSE
CAMERA_STATUS MODE:              STILL
CAMERA_STATUS REC:               FALSE

IRIS TARGET FNO:                 0x0074
IRIS_SPEED IRIS_SPEED:           0x00
IRIS_SPEED SPEED_UNIT:           0x00

IRIS_SPEED_IN_ZOOM IRIS_SPEED:   0x00
IRIS_SPEED_IN_ZOOM SPEED_UNIT:   0x00

IRIS_CONTROL SILENT_DRIVE:       0x00
IRIS_CONTROL POWER_STOP:         0x00
IRIS_CONTROL AUTO_CLOSE:         0x00

CHECK_SUM:                       0xB4



[DCL 2nd] ==================================
COM_CONTROL2 CTL_HEADER:         0x00
COM_CONTROL2 COM_2ND:            0x00
COM_CONTROL2 DATA_AVAILABLE:     FALSE

WOB_CENTER_FPC:                  0
WOB_WIDTH:                       0
WOB_MOVE_CENTER:                 0
FOCUS_SPEED:                     0
FOCUS_CONTROL DRIVE_MODE:        0x00
FOCUS_CONTROL PINT_STATE:        0x00
FOCUS_CONTROL IMAGESURFACE_FPC:  0x00

GET_FPC_TIMING:                  0x00
FOCUS_DRIVE_TIMING:              0x00

CHECK_SUM:                       0x00



[DCL Init] ================================
CTL_HEADER:                      0x01
COM_VERSION:                     0x01
COM_SUB_VERSION:                 0x00

COM_CYCLE FREQ_24HZ:             TRUE
COM_CYCLE FREQ_25HZ:             TRUE
COM_CYCLE FREQ_30HZ:             TRUE
COM_CYCLE FREQ_48HZ:             FALSE
COM_CYCLE FREQ_50HZ:             TRUE
COM_CYCLE FREQ_60HZ:             TRUE
COM_CYCLE FREQ_72HZ:             FALSE
COM_CYCLE FREQ_75HZ:             FALSE
COM_CYCLE FREQ_90HZ:             FALSE
COM_CYCLE FREQ_96HZ:             FALSE
COM_CYCLE FREQ_100HZ:            FALSE
COM_CYCLE FREQ_120HZ:            FALSE

START_CYCLE FREQ_24HZ:           FALSE
START_CYCLE FREQ_25HZ:           FALSE
START_CYCLE FREQ_30HZ:           FALSE
START_CYCLE FREQ_48HZ:           FALSE
START_CYCLE FREQ_50HZ:           FALSE
START_CYCLE FREQ_60HZ:           TRUE
START_CYCLE FREQ_72HZ:           FALSE
START_CYCLE FREQ_75HZ:           FALSE
START_CYCLE FREQ_90HZ:           FALSE
START_CYCLE FREQ_96HZ:           FALSE
START_CYCLE FREQ_100HZ:          FALSE
START_CYCLE FREQ_120HZ:          FALSE

CAMERA_ID1:                      0xA8
CAMERA_ID3:                      0x00
CAMERA_ID4:                      0x83

CAMERA_VERSION[0]:               0x00
CAMERA_VERSION[1]:               0x00

CAMERA_SERIAL_NO[0]:             0x00
CAMERA_SERIAL_NO[1]:             0x00
CAMERA_SERIAL_NO[2]:             0x00
CAMERA_SERIAL_NO[3]:             0x00
CAMERA_SERIAL_NO[4]:             0x00

FB_ADJUST_DATA:                  0x04

GROUP1_VALID:                    FALSE
GROUP2_VALID:                    FALSE
GROUP3_VALID:                    FALSE
GROUP4_VALID:                    FALSE
GROUP5_VALID:                    FALSE
GROUP6_VALID:                    FALSE
GROUP7_VALID:                    FALSE
GROUP8_VALID:                    FALSE

STILL_CONFUSIONCIRCLE[0]:        0x07
STILL_CONFUSIONCIRCLE[1]:        0xD0

MOVIE_CONFUSIONCIRCLE[0]:        0x0A
MOVIE_CONFUSIONCIRCLE[1]:        0x00

CHECK_SUM:                       0x96



[DLC 1st] ==================================
COM_CONTROL1 LTC_HEADER:         0x02
COM_CONTROL1 COM_2ND:            0x00
COM_CONTROL1 DATA_AVAILABLE:     TRUE
COM_CONTROL1 IMAGE_OK:           TRUE
COM_CONTROL1 POWER_OFF_OK:       FALSE

UNIT_STATUS1 IS_LOCK:            FALSE

UNIT_STATUS2 SINK:               0x02

RESET_STATUS1 FOCUS:             0x02
RESET_STATUS1 IRIS:              0x02
RESET_STATUS1 ZOOM:              0x00
RESET_STATUS1 IS:                0x00

RESET_STATUS2 SINK:              0x02

POWER_STATUS FOCUS_RING_SENSOR:  TRUE
POWER_STATUS IRIS_SENSOR:        TRUE
POWER_STATUS STEPOUT_SENSOR:     FALSE
POWER_STATUS FOCUS_MOTOR:        FALSE

LENS_FUNC_STATUS PF:             FALSE
LENS_FUNC_STATUS CZ:             FALSE
LENS_FUNC_STATUS IS:             FALSE
LENS_FUNC_STATUS SINK:           FALSE

ERROR_INFO FOCUS:                FALSE
ERROR_INFO IS:                   FALSE
ERROR_INFO IRIS:                 FALSE

SWITCH_INFO1 IS:                 FALSE
SWITCH_INFO1 IS_MODE:            FALSE
SWITCH_INFO1 AF:                 FALSE

IS_INFO_AVAILABLE ANGULAR_SPEED: FALSE
IS_INFO_AVAILABLE COMPLENS_INFO: FALSE

GYRO_YAW:                        0
GYRO_PITCH:                      0
COMP_POS_YAW:                    0
COMP_POS_PITCH:                  0

IRIS_REAL_FNO:                   0x0046
IRIS_DISP_FNO:                   0x0040
IRIS_MIN_FNO:                    0x0046
IRIS_MAX_FNO:                    0x0120

IRIS_STATUS DRIVE:               0x00
IRIS_STATUS POWER:               0x00
IRIS_STATUS PHASE:               0x00
IRIS_STATUS CLOSE:               0x00
1/8 AVEF:                        0x19
JSSTESP:                         0x06
UNSTABLE_PHASE:                  0x00

FOCAL_LENGTH:                    22 mm
ZOOM_POSITION:                   0x00

FOCUS_STATUS FAR_END:            FALSE
FOCUS_STATUS NEAR_END:           FALSE
FOCUS_STATUS DRIVE_FAR:          FALSE
FOCUS_STATUS DRIVE_NEAR:         TRUE
FOCUS_STATUS ZOOM_DRIVING:       FALSE
FOCUS_STATUS ARRIVAL_CHECK:      TRUE

FPC:                             9380
WOB_CENTER_FPC:                  9380
NEAR_MARGIN:                     0
FAR_MARGIN:                      0
WOB_MIN_WIDTH:                   2147483647
MIN_SPEED:                       2147483647
MAX_SPEED1:                      2147483647
MAX_SPEED2:                      2147483647
DISTANCE:                        65535 cm
FOCUS_ZONE:                      15
OBJECT_MAGNIFY:                  2

VIGNETTING0:                     0x00
VIGNETTING1:                     0x04
VIGNETTING2:                     0x0B
VIGNETTING3:                     0x0F

PO:                              0xD0
PO5:                             0xE3
PO10:                            0xEE
PITCH:                           0.000000
SENS0:                           0.000000
SENS1P:                          0.000000
SENS2P:                          0.000000
SENS3P:                          0.000000
SENS1M:                          0.000000
SENS2M:                          0.000000
SENS3M:                          0.000000
ABSINF:                          48
ABSNER:                          43
CHECK_SUM:                       0x09



[DLC 2nd] =================================
COM_CONTROL2 LTC_HEADER:         0x02
COM_CONTROL2 COM_2ND:            0x01
COM_CONTROL2 DATA_AVAILABLE:     TRUE

CHECK_SUM:                       0xF1



[DLC Init] ================================
CTL_HEADER:                      0x01
COM_VERSION:                     0x01
COM_SUB_VERSION:                 0x00

COM_CYCLE FREQ_24HZ:             TRUE
COM_CYCLE FREQ_25HZ:             TRUE
COM_CYCLE FREQ_30HZ:             TRUE
COM_CYCLE FREQ_48HZ:             FALSE
COM_CYCLE FREQ_50HZ:             TRUE
COM_CYCLE FREQ_60HZ:             TRUE
COM_CYCLE FREQ_72HZ:             FALSE
COM_CYCLE FREQ_75HZ:             FALSE
COM_CYCLE FREQ_90HZ:             FALSE
COM_CYCLE FREQ_96HZ:             FALSE
COM_CYCLE FREQ_100HZ:            FALSE
COM_CYCLE FREQ_120HZ:            FALSE

CAMERA_SERIAL_NO[0]:             0x00
CAMERA_SERIAL_NO[1]:             0x00
CAMERA_SERIAL_NO[2]:             0x00
CAMERA_SERIAL_NO[3]:             0x00
CAMERA_SERIAL_NO[4]:             0x00

LENS_VERSION[0]:                 0x01
LENS_VERSION[1]:                 0x08
LENS_VERSION[2]:                 0x00

LENS_RECOGNITION[0]:             0x31
LENS_RECOGNITION[1]:             0x10

LENS_NAME:                       EF-M22mm f/2 STM

UNIT_AVAILABLE1 FOCUS:           TRUE
UNIT_AVAILABLE1 IRIS:            TRUE
UNIT_AVAILABLE1 ZOOM:            FALSE
UNIT_AVAILABLE1 IS:              FALSE
UNIT_AVAILABLE1 ND:              FALSE
UNIT_AVAILABLE1 SINK:            TRUE
UNIT_AVAILABLE1 BARRIER:         FALSE

UNIT_AVAILABLE2 TELE_CONV:       FALSE
UNIT_AVAILABLE2 WIDE_CONV:       FALSE
UNIT_AVAILABLE2 MECHA LOCK:      FALSE
UNIT_AVAILABLE2 RING1:           TRUE
UNIT_AVAILABLE2 RING2:           FALSE
UNIT_AVAILABLE2 RING3:           FALSE
UNIT_AVAILABLE2 ZOOM_PRESET:     FALSE

UNIT_CONTROLLABLE1 FOCUS:        TRUE
UNIT_CONTROLLABLE1 IRIS:         TRUE
UNIT_CONTROLLABLE1 ZOOM:         FALSE
UNIT_CONTROLLABLE1 IS:           FALSE
UNIT_CONTROLLABLE1 ND:           FALSE
UNIT_CONTROLLABLE1 SINK:         TRUE
UNIT_CONTROLLABLE1 BARRIER:      FALSE

UNIT_CONTROLLABLE2 TELE_CONV:    FALSE
UNIT_CONTROLLABLE2 WIDE_CONV:    FALSE
UNIT_CONTROLLABLE2 MECHA LOCK:   FALSE
UNIT_CONTROLLABLE2 RING1:        FALSE
UNIT_CONTROLLABLE2 RING2:        FALSE
UNIT_CONTROLLABLE2 RING3:        FALSE
UNIT_CONTROLLABLE2 ZOOM_PRESET:  FALSE

RESET_REQ FOCUS:                 TRUE
RESET_REQ IRIS:                  TRUE
RESET_REQ ZOOM:                  FALSE
RESET_REQ IS:                    FALSE
RESET_REQ ND:                    FALSE
RESET_REQ SINK:                  FALSE
RESET_REQ BARRIER:               FALSE

SUPPORT FOCUS_REDRIVE_TIME:      FALSE

METHOD_AVAILABLE WOBLING:        FALSE
METHOD_AVAILABLE FCS_BACKLASH:   TRUE
METHOD_AVAILABLE FCS_POWER_OVER: TRUE

SWITCH_AVAILABLE IS:             FALSE
SWITCH_AVAILABLE IS_MODE:        FALSE
SWITCH_AVAILABLE AF:             FALSE
SWITCH_AVAILABLE FCS_PRESET:     FALSE
SWITCH_AVAILABLE FCS_PRESET_SET: FALSE
SWITCH_AVAILABLE FCS_PRESET_GO:  FALSE
SWITCH_AVAILABLE FCS_LIMIT:      FALSE
SWITCH_AVAILABLE FUNCTION:       FALSE

FOCUS_REDRIVE_TIME_SILENT:       0
FOCUS_REDRIVE_TIME:              0

IS_MODE NORMAL:                  FALSE
IS_MODE DYNAMIC:                 FALSE

IRIS_MAX_DISP_FNO_TELE:          0x0120
IRIS_MIN_DISP_FNO_TELE:          0x00A0
IRIS_MAX_DISP_FNO_WIDE:          0x0120
IRIS_MIN_DISP_FNO_WIDE:          0x0140
IRIS_MAX_SPEED IRIS_SPEED:       0x06
IRIS_MAX_SPEED SPEED_UNIT:       0x01
IRIS_MIN_SPEED IRIS_SPEED:       0x04
IRIS_MIN_SPEED SPEED_UNIT:       0x00

IRIS_UNIT_INFO STOP_RESOLUTION:  0x02

FOCAL_LENGTH_WIDE:               0x0016

FOCAL_LENGTH_TELE:               0x0016

ZOOM_MAX_POSITION:               0x0000

FOCUS_MAX_ZONE:                  0x001F

SWITCH_AVAILABLE2 ZOOM_KEY:      FALSE

COM_2ND_WAIT:                    0x06
COM_1ST_WAIT:                    0x0A
AF_WAIT:                         0x06

CHECK_SUM:                       0x72


<BYTE>
STATUS ST1:   0x00
STATUS ST2:   0x00
STATUS ST3:   0x00
STATUS ST4:   0x00
STATUS ST5:   0x00
STATUS ERROR: 0x00

<BIT>
ST1 AE_NG:    0
ST1 EMD_NG:   0
ST1 CL_ON:    0
ST1 BELOWS:   0
ST1 AJ_ON:    0
ST1 PF_ON:    0
ST1 FP_ON:    0
ST1 LSW_ON:   0
-------------------
ST2 CLOSE:    0
ST2 EMD_ON:   0
ST2 FD_ON:    0
ST2 ZM_ON:    0
ST2 FD_NG:    0
ST2 AF_NG:    0
ST2 SPECIAL:  0
ST2 MANUAL:   0
-------------------
ST3 ISDIS:    0
ST3 ISSTAT:   0
ST3 ISSW:     0
ST3 ISDON:    0
ST3 ISLOCK:   0
ST3 ED_ON:    0
ST3 GYRO_SET: 0
ST3 reserved: 0
-------------------
ST4 PHOTO_NG: 0
-------------------

FOCUS UNIT SPEC ========
WOBBLING LENS: FALSE
FD SLOW LENS : TRUE
STM LENS     : TRUE
USM LENS     : FALSE
OVERLAP LENS : TRUE

IS UNIT SPEC ========
IS UNIT      : FALSE
DYNAMIC IS   : FALSE

SINK UNIT SPEC ========
SINK UNIT    : CTRL

[LENS INFO] =============================================
LensID           = 0x1031
LENS NAME: EF-M22mm f/2 STM (Size: 17 Byte)
Wide FocalLength = 22 mm
Tele FocalLength = 22 mm

[FIRM VERSION] ==========================================
[1 8 0]

[ID INFO] ===============================================

[ID1]
 DOUJI YES
 NOEMD NO
 ZOOMA NO
 ZOOML NO
 MACRO NO
 SOFTL NO
 SHIFT NO
 SOTOME NO
 FSC SPD NO

[ID7]
 HSLENS NO
 NEWPRO YES
 AREABP NO
 ISLENS NO
 PZOOM NO
 SHUHEN NO
 CALCDIS YES
 ABSDIS YES

[ID8]
 EXT_ID YES
 LENS_No YES
 ABS_32 YES
 LENS_SW NO
 NEWPO YES

[ID13]
 TGTPOS_BP NO
 FD_SLOW YES
 IRIS_SLOW YES
 PWR_LMT_DC YES
 LENS_NAME YES
 IRIS_TIME YES
 K190BP    NO
 K169BP    NO

[ID14]
 SERIAL_5BYTE NO
 TS_POS      NO
 ABS_DRIVE NO
 UNLCK_NOSTP NO
 EXTEND_DT íPëÃ(TUBE)

[ID15]
 IRIS/AF/IS CNT 0

[ID16]
 EXT_ID17 YES
 AAEA2 YES
 FSS_DATA NO
 GYRO_DATA NO
 LENSDRIVE_EN YES
 FP_OK YES
 PINT1/4 Fɬ NO
 K269BP    NO

[ID17]
 AE_CRCT NO
 IRIS_INFO 1/16
 MOVIE_TRANSPORT YES
 PWR_OVER YES
 96H_ST_L YES
 ZOOM_POS NO
 FIRM_UP YES

[ID18]
 STATUS2 NO
 IRIS_16RELATIVEDRIVE NO
 DISP_FL NO
 TV_SPEED_NO YES
 DPP_INFO Ver.2nd

[ID19]
 CINEMA_CMD_ENBL NO
 FRESET_DRV NO
 STORE_DRV NO
 K289BP NO
 DAF_BP NO

[ID20]
 EXT_ID3 NO
 NEWPO_2BYTE NO
 IMG_MAG_CHG_EN YES
 L_DISPLAY_EN NO
 IRIS_FOLLOW_DRV NO
 IRIS_SLOW_DRV NO
 IRIS_128_DRV NO
 iBP NO

[ID21]
 BUSY_TIME_OVER_LENS NO
 FREE_SPD_EN NO

Tip for Mac users, save Ant123's code as a plain text file and open it with Stuffit Expander.
5D3.* 7D.206 700D.115 EOSM.203 EOSM2.103 M50.102