Canon EOS protocol convertor for old Sigma lens Featured

Rate this item
(8 votes)

Cause of problem

Because some of lens manufacturers are using communication protocol for Canon EOS cameras which was reverse engineered instead of bought* (which is not bad, because without this expense they can offer cheaper products) they are facing problem with communication protocol changes in newer cameras. In fact it is not change but in older types some protocol commands was not used and marked as reserved of for future use... To be specific, change which made old lenses unusable was in command 0x12 which was changed to 0x13 in newer cameras. As result you will get ERROR 01 or maybe even ERROR 99 (pay attention for ERROR 99 because it is general error which covers "all problems on the world" and there may have nothing to lens, during my tests I observed only ERROR 01 when shooting or when DOF button pressed as only these situations adjust aperture in lens) when you will attach old Sigma lens to you actual Digital EOS camera.

*According to this document Canon doesn't state if protocol specifications was ever released to any third party company. So Canon may be only one who knows complete protocol specifications. Most important information from this document is "buy original Canon lens or ask manufacturer for fix" which is not problem until you have too old lens for free of charge modification by manufacturer. So out goal is still the same, modify lens to make it working as cheap as possible. Thanks to Samppa Tolvanen for this information.

Problem solution

Aside lens change or fixed aperture use options we have quite elegant possibility to add controller which will change this command when it is transmitted to lens so lens can understand it. There is already few implementations for this modification. One which I found on Martin Melchior web page was inspiration for me to do my own implementation. Reason for wheel reinvention was on beginning just desire to try it too. Later I modified code for newer MCU and added some power save functions.

Before you will apply this modification please go through this simply troubleshooting to check if modification could help you.

Digital EOS Protocol

Digital EOS is using modifier SPI protocol. Modified is CLOCK signal where after each packet is CLOCK driven LOW for at least 78us to separate packets. Data are read on CLOCK rising edge and receiving side always drive its data pin LOW during reception.

Below is quoted post from Hans, original link https://pickandplace.wordpress.com/2011/10/05/canon-ef-s-protocol-and-electronic-follow-focus/#comment-402 (thanks Elliot for link), anyway it may be useful for deeper protocol commands decoding:

This is the a log from an EOS500 and a EF100LIS lens The lens is much newer than the Body, and it’s therefore expecting a “newer” startup sequence than used by the body
You wil HENCE not find a lens info sequence like the one at the top..

*Telegram DCL DLC
0x000000 0A FF ;Sync command
0x000001 00 AA ;Sync reply
0x000002 90 FF ;Note the lens ignores
0x000003 B9 FF ;all further coms until
0x000004 00 FF ;the second sync command
0x000005 12 FF ;@ telegram #13
0x000006 80 FF
0x000007 B0 FF
0x000008 00 FF
0x000009 00 FF
0x00000A 00 FF
0x00000B A0 FF
0x00000C 00 FF
0x00000D 00 FF
0x00000E B2 FF
0x00000F 00 FF
0x000010 00 FF
0x000011 00 FF
0x000012 80 FF ;The body tries to ask for lens info
0x000013 0A FF ;using 80 0A 00 00 00 00 00 00
0x000014 00 AA ;but since the lens is not correctly
0x000015 00 00 ;initiated according to a newer
0x000016 00 00 ;version of the EOS protocol
0x000017 00 00 ;it mistakes the 0A for a sync
0x000018 00 00 ;command, replies with an AA
0x000019 00 00 ;and starts up (replies with 00)
0x00001A A0 00 ;The body ask for current Fl
0x00001B 00 00 ;
0x00001C 00 64 ;Lens answers 00 64 = 100mm
0x00001D B2 00 ;Don’t know what the B2 command
0x00001E 00 60 ;is but it relates to change
0x00001F 00 00 ;in aperture on zooms
0x000020 00 01
0x000021 0C 00
0x000022 C0 0C ;Request current position of focus group
0x000023 00 00 ;reply is 16 bit signed int
0x000024 00 00
0x000025 F0 00 ;Unknown
0x000026 00 60
0x000027 0E 00 ;Some sort of init sequence id
0x000028 0F 0E ;same…
0x000029 0A 0F ;Sync command
0x00002A 00 AA
0x00002B 90 00 ;Status request command first byte
0x00002C B9 00 ;same.. second byte
0x00002D 00 00
0x00002E B0 00 ;Aperture info
0x00002F 00 30 ;Display Av
0x000030 00 20 ;Min Av
0x000031 00 58 ;Max AV
0x000032 A0 00 ;Request Fl
0x000033 00 00
0x000034 00 64
0x000035 B2 00 ;Unknown
0x000036 00 60
0x000037 00 00
0x000038 00 01
0x000039 0C 00
0x00003A C0 0C ;Request focus position
0x00003B 00 00
0x00003C 00 00
0x00003D F0 00
0x00003E 00 60
0x00003F F8 00 ;Best Focus Correction value
0x000040 00 D3
0x000041 50 00 ;Set speed
0x000042 2D 50
0x000043 0C 50
0x000044 06 0C
0x000045 0F 06 ;Search toward MFD @ set speed
0x000046 0A 0F ;Sync command
0x000047 00 AA
0x000048 90 00 ;Status request command first byte
0x000049 B9 00
0x00004A 00 10 ;status reply: lens at end stop
0x00004B B0 00
0x00004C 00 30
0x00004D 00 20
0x00004E 00 58
0x00004F A0 00
0x000050 00 00
0x000051 00 64
0x000052 B2 00
0x000053 00 60
0x000054 00 00
0x000055 00 01
0x000056 F0 00
0x000057 00 60
0x000058 90 00 ;Status request command first byte
0x000059 B9 00
0x00005A 00 10 ;status reply: lens still at end stop
0x00005B 0C 00
0x00005C 05 0C
0x00005D 0F 05 ;Search toward INF @ set speed
0x00005E 0A 0F ;Sync command
0x00005F 00 AA
0x000060 90 00 ;Status request command first byte
0x000061 B9 00
0x000062 00 24 ;focus group is moving and accelerating
0x000063 B0 00
0x000064 00 30
0x000065 00 20
0x000066 00 58
0x000067 A0 00
0x000068 00 00
0x000069 00 64
0x00006A B2 00
0x00006B 00 60
0x00006C 00 00
0x00006D 00 01
0x00006E F0 00
0x00006F 00 60
0x000070 90 00
0x000071 B9 00
0x000072 00 04
0x000073 C0 00 ;Request focus position
0x000074 00 00 ;
0x000075 E0 5E ;focus position = 00 5E
0x000076 00 BC
0x000077 00 15
0x000078 C0 00 ;Request focus position
0x000079 00 01 ;focus position = 01 CB
0x00007A E0 CB ;Lens extension correction
0x00007B 00 BC
0x00007C 00 E4
.
.
.
.
.
As for the 44 command not being used (a bit further down in the same log):

0x00014E 90 00 ;Status request command first byte
0x00014F B9 00
0x000150 00 00 ;status reply: focus group at rest
0x000151 F8 00
0x000152 00 AC
0x000153 E0 00
0x000154 00 BD
0x000155 00 11
0x000156 EA 00
0x000157 00 A3
0x000158 00 D7
0x000159 00 8C
0x00015A 00 04
0x00015B 00 00
0x00015C 00 00
0x00015D E4 00 ;Lens extension factor
0x00015E 00 A1
0x00015F 00 C6
0x000160 44 00 ;Move focus group
0x000161 06 44 ;06 01 = 1537 steps
0x000162 01 44 ;toward INF
0x000163 0F 44
0x000164 0A 0F
0x000165 00 AA
0x000166 90 00 ;Status request command first byte
0x000167 B9 00
0x000168 00 24 ;status reply: focus group moving + acc
.
.
.

For comparison here’s the start up of the same lens with a 650D DSLR body The key difference is that this body does not send the lens info 80 0A command until after it has sent the 0A sync command twice and the lens therefore does not mistake the second byte of the 80 0A telegram for a sync command…

0x000000 00 FF
0x000001 0A AA
0x000002 00 AA
0x000003 0A 00
0x000004 00 AA
0x000005 80 00
0x000006 0A 81
0x000007 98 FE
0x000008 01 00
0x000009 00 64
0x00000A 00 00
0x00000B 00 64
0x00000C 00 77
0x00000D 00 9A
0x00000E 14 00
0x00000F 7F 02
0x000010 01 72
0x000011 00 B9
0x000012 94 00
0x000013 41 FF
0x000014 B0 00
0x000015 00 21
0x000016 00 20
0x000017 A0 58
0x000018 00 00
0x000019 E4 64
0x00001A 00 A1
0x00001B 68 C6
0x00001C 93 F0
0x00001D 04 93
0x00001E 05 93
0x00001F 0A 93
0x000020 91 93
0x000021 86 00
0x000022 00 00
0x000023 00 04
0x000024 0C 00
0x000025 0F 0C
0x000026 0A 0F
0x000027 00 AA
…….

And btw, I do not think you are really seeing a C2 command as it relates to the TTL2
distance used by much newer bodies than the EOS500
~ hans ~

Disclaimer

Following informations, software, hardware and procedures are not official and can damage your equipment or cause injury. Be aware of this as I'm not responsible of how you will use following material. I made this based on my own requirements to bring my old lenses (most of them from ebay) back to life. Till now nothing was damaged by this modification in my hands, but I can guarantee any third party usage.

Also please note that this SW was tested on my lenses and camera body which I had in time of writing, I can't guarantee that it will work on every combination of equipment on the world. I will be happy to cooperate with others and tune SW for maximum performance but at moment it is doing what I need.

Software

sigma aperture command convertor

Logic analyzer output using SW v.1.0.0 . Trace 1 - clock, trace 2 - data from camera to interface, trace 3 - data from interface to lens

Because camera is powering MCU even turned off, it was important for me to reduce power consumption. To achieve this I choose newer low power MCU and add sleep timer, if there are no incoming data for 5sec MCU is put into power down mode.

Important part of program is timeout value which depends on bus speed and duration between packets. For EOS 450D, 550D and 50D which I was able to test was CLOCK frequency 78kHz and duration between packets was 230us. For proper packet separation was chosen 150us. But if there are some "faster" cameras from Canon it will be necessary to lower this value.

 

 

 

 

Hardware

 

Interface development, EOS 450D, Sigma 28-70, Saleae analyzer, AVR Dragon and one mad man.

I choose smallest MCU from Atmel to fit hardware into most lenses (and some of them really lacks some free space) ATTINY10. It have also much smaller power consumption in active state against ATTINY24A and in power down mode it consumes few uA. As you can see below, difference is significant. Oscilloscope plot of VDD voltage is here if someone will be interested.

Power consumption measurement fclk=8MHz:

ATTINY24A - 7.3mA active, 3mA sleep.

ATTINY10 - 2.85mA active, 0.022mA sleep.

 

Because this MCU have size 3x3mm including leads it is nearly impossible to produce reliable design only with wire work. Because of this I created two versions of PCB (model A for vertical and model B for horizontal installation).

If you like you can order boards on e-mail .

Both models are available with programmed MCU for 10 EUR + shipping. For this price you will get PCB board assembled with programmed MCU and capacitors, I'm not responsible for installation into lens and effect of this board on lens or camera body. This is very tiny board which can be very easily soldered improperly which could cause camera or lens damage. 

Of course it is possible to send your lens to me and I can do modification for you. Please contact me on e-mail above for more details.

This is not a business, I'm offering boards for nearly production costs for others to give them possibility to modify their lenses, please keep that in mind.

EOS interface model A

model A with dimensions model B with dimensions
Model A Model B

 

Atmel ICE Basic programmer/debugger

Both boards are double sided and designed to solder directly to lens connector pins. Actual size and photos of installed boards will be as soon as board will arrive from manufacture.

Because ATTINY10 supports only TPI interface for programming (not PDI), you have to check if your actual programmer supports that in case you want to program MCU by yourself. As far as I found following programmers should support it:

  • Atmel ICE Basic
  • AVRISP MkII
  • STK600

 

Installation

I have to remind you again, boards are as tiny as was possible, proper soldering skills are required to accomplish this successfully.

For detailed board model A installation manual click HERE.

For detailed board model B installation manual click HERE.

Model A board installation on Sigma 28-70 2.8-4:

1. First contacts needs to be prepared for board placement.  If there is too much solder (board cannot be fit) remove it with solder wick.
2. Data IN to lens need to be disconnected and gap needs to be created by sharp knife or scalpel between flex contact and pin.
3. Installed model A board on connector.
4. Board is soldered directly on pins.
5.

Disconnected IN signal is connected on bottom side of board.

 

Model B board installation on Sigma 28-70 2.8-4:

1. First contacts needs to be prepared for board placement.  If there is too much solder (board cannot be fit) remove it with solder wick.
2. Data IN to lens need to be disconnected and gap needs to be created by sharp knife or scalpel between flex contact and pin.
3. Placement of board. pins are connected with board by solder bridges, if there is too big gap for bridge, solder by bridge only first and last pin and rest connect by thin wire. Here DATA from board to lens was connected by wire.
4. Detail of board height on connector.
5.

Detail of build in board on connector. There is much space inside for more than one modification boards :).

 

Model B board installation on Sigma 28-70 2.8:

1. First contacts needs to be prepared for board placement.  If there is too much solder (board cannot be fit) remove it with solder wick.
2. Data IN to lens need to be disconnected and gap needs to be created by sharp knife or scalpel between flex contact and pin.
3. Placement of board. pins are connected with board by solder bridges, if there is too big gap for bridge, solder by bridge only first and last pin and rest connect by thin wire. Here DATA from board to lens was connected by wire and also DATA to board was connected by wire, because gap between pin and board was too large for solder bridge.
4. Installed board, there is even more space than in 28-70 2.8-4 lens. So no problem at all.
5.

One more photo from above to be sure than inner barrel will not collide with board.

For more photos CLICK HERE.

References

Till now was successfully installed 15 boards. I want to thank all the people who share their experiences with my boards and allow me to do this compatibility chart:

Canon EOS body
1N (film)
1000D
1200D
100D
450D
500D
550D
600D
700D
50D
70D
10D
6D
7D
7D MK II
5D
5D mk II
5D MK III
1D MK II
1D MK III
1Ds MK II
1Ds MK III
Lens
Sigma 28-70mm f2.8
Sigma 28-70mm f2.8-4
Sigma 70-210mm f2.8
Sigma HSM APO Macro 400mm f5.6
Sigma APO AF Macro 400mm f5.6
Sigma APO AF 500mm f4.5
Quantaray macro 50mm f2.8
Sigma APO AF 500mm f7.2
Sigma AF 18mm f3.5
Sigma APO AF Macro 300mm f4
Sigma APO HSM AF Macro 300mm f4
Sigma 100-300mm f/4.5 –f/6.7 UC Zoom
Sigma 28-105mm f/4-f/5.6 UCII

 

95834 Last modified on %PM, %13 %465 %2018 %12:%zář
More in this category:

20 comments

  • Andrei Comment Link
    Andrei 04 leden 2016, 13:09
    Hi,

    I'm also interested in this modification for my Sigma 400mm 5.6 (non APO/Macro). I've sent you an email about purchasing a board.

    Also, the links to the different software versions are not working.

    Thank you for this tutorial :)
  • sergio guinovart Comment Link
    sergio guinovart 03 leden 2016, 21:01
    HOLA ESTOY INTERESADO EN ADQUIRIR UNA PLACA MODELO A PARA UN SIGMA 70-210 2.8
    COMO PUEDO REALIZAR EL PEDIDO. GRACIAS
  • Ilídio Barbosa Comment Link
    Ilídio Barbosa 30 prosinec 2015, 23:41
    My friend gave me a sigma 70-210 UC 1:4/5.6, bit trying to shoot with other than maximum aperture results in error 01. I've read this messages in the forum, but i'm not abble to do this modificstion miself, since I have no soldering habbilities.
    Is there someone I can send the lens in europe, that would be kind enough to fix the problem!?
    Please reply to my email ilidio.barb@sapo.pt.
    Kindly,
    Ilídio Barbosa, Portugal
    (Csnon 50D)
  • Juha Vainio Comment Link
    Juha Vainio 19 říjen 2015, 21:36
    Hi
    I have Sigma 105mm f2.8 macro lens which I used with my old Canon EOS 300 film camera. It worked fine with it. Only problem was that AF made just noise and did not work. I bought this setup in 2001.

    In 2012 when I got Canon 650D I tested all my old lenses with it and to my disappointment noticed that my Sigma macro doesn't work with it. From that point I have searched some way to make the Sigma lens work with new DSLR body. My country's official Sigma importer where not able to fix it as there is no more conversion/modification parts for my (old) model.

    Luckily I found this page. First I thought to re-chip the lens by myself. But when I contacted Jiri and heard that he could also fix my AF problem I decide it would be better to send the whole lens to him for re-chip mod and AF fix. Let say that I was little nervous to send my precious :-) lens to other country.

    Today I got my lens back. After re-chipping lens works as it should with my Canon 650D. I can finally take macro photos with my DSLR.

    I have to say that I got very professional service from Jiri. He takes full responsibility of his work.

    Juha Vainio
    Finland
    juha.j.vainio@gmail.com
  • Mariusz Micka Comment Link
    Mariusz Micka 12 září 2015, 11:47
    Hello, I have a lens Sigma 400mm F5.6 APO ( without macro ) .
    Is the chip will work with this model of the lens ?
  • Ireneusz Świrgoń Comment Link
    Ireneusz Świrgoń 24 srpen 2015, 20:50
    Sigma 400mm APO macro HSM after soldering in the model A chip working perfect now with my 40D. Thanks Jiri
    Great Job
  • Mark Comment Link
    Mark 08 srpen 2015, 05:20
    Last Friday morning I bought a Model A board. Two and a half hours later, my US$12 (including shipping!) PCB was shipped off. Today it arrived in Austin, Texas. Tonight I have a Sigma 70-210 f2.8 that can take pictures with apertures a small as f22. Everything seems to work. Even the Tamron 2X Tele-Converter does fine.

    This is great!

    Thanks so much.
  • Milio Comment Link
    Milio 17 červenec 2015, 04:48
    My first version Sigma 28mm 1.8 works perfect on my EOS drls now, a very impressive work on analyzing the incompatibilty of the the new eos protocol and old sigma Lenses, KUDOS for the Great job JIRI !!
  • Sander . Comment Link
    Sander . 11 červenec 2015, 13:55
    Hi Jiri,

    Just want to report succes on the sigma 70-300mm APO macro, on EOS 500D / 700D with golden ring. When the boards came in, is was amazed by how small they are.
    I got a little scared and postponed the operation :)

    My experience:
    I Bought both boards from you and used both.. I first tried model A, had a bad solder joint
    (it would skip aperture between chosen and 00, still lens error).
    I desoldered it with wick and tried model B, and I found this one easier to solder.
    Both board will fit easily in the lens though.

    Some (General) tips for those that aren't full pro with the soldering iron (like me):
    Not too warm! my soldering station has no temp indication, but i put it a little over half power.

    I used a little piece of kitchen paper to cover the glass, and some sticky tape to fixate the
    "pins unit" to make it a little less wobbly during soldering. I also put some sticky tape on
    the lens outside to prevent the optics from moving.

    After you've cut the ribbon cable pin 4 / have removed a little solder from the pins
    with desoldering wick (check resistances to make sure), you hold the board in place on the 'pins unit' between two fingers and then tack the outer most solder tabs first, no extra solder needed.

    After you've done all 4, tack the thin wire to the board, then carefully bend it around the board and cut it the right length. Put the tiniest bit of solder on the solder iron,
    tack the wire to the tab. Breath deeply, rebuild lens and test... succes!

    Tonight I'll drink a pivo in your honor Jiri.. Thank you for your awesome technical skills and producing these boards, I'm really looking forward to using this lens again this summer!

    Regards,

    Sander.
  • Dean martin Comment Link
    Dean martin 01 červen 2015, 20:53
    Is there any one that would rechip my sigma 300mm 2.8 apo lens it come up error 1 on my 7d
  • Elliot Comment Link
    Elliot 29 květen 2015, 14:07
    Thank you for this very nice work and your article. It will be very helpfull for my old sigma Sigma 70-210mm f2.8. I'll try your solution later. But for now, I just post this comment to give you the link for the code found in the "Digital EOS Protocol" section. Here it is :
    https://pickandplace.wordpress.com/2011/10/05/canon-ef-s-protocol-and-electronic-follow-focus/#comment-402

    Elliot
  • Miloš Comment Link
    Miloš 18 květen 2015, 14:16
    Hello,
    I would like to thank Jiři for upgrading my Sigma 400mm f5,6 APO Tele Macro. It works now perfectly with my Canon 40D and Canon 1100D.
    Thanks a lot for your time and professional work ;)
  • Wolfgang Comment Link
    Wolfgang 18 květen 2015, 10:01
    Updated "SIGMA AF MACRO 90mm 1:2,8" lens yesterday by using board B.
    Works well with my EOS 50D!

    Thanks a lot!
    Wolfgang
  • Dylan Comment Link
    Dylan 29 březen 2015, 20:18
    My Canon EOS Rebel T3i (600D) can now fully control the aperture of the Sigma APO 400mm Telemacro lens after soldering in the model A chip. Thanks!
  • Rampa McKvak Comment Link
    Rampa McKvak 23 březen 2015, 11:47
    Hi Max, For 400mm you should fit model A without problems, becuase there is plenty of space. If you want to be sure, check if there is at least 5mm of space under main connector inside lens. Jiri
  • Georges Comment Link
    Georges 23 březen 2015, 10:47
    Hi, my SIGMA AF 400mm F:5,6 APO Macro (non USM) works now perfectly with an EOS 50D. I used the model A board.
    Many thanks.
  • Max Comment Link
    Max 23 březen 2015, 09:05
    I hope this will also work with the very first Sigma AF Tele 400 5.6 (non Apo), what do you think? And which model of the board shall I order for this? Would be VERY happy if I can use my lens again!

    kr, Max
  • Rampa McKvak Comment Link
    Rampa McKvak 19 březen 2015, 08:49
    Hi Georges, Angelo fit perfectly model A in this lens (but HSM model) . Model A is easier to install but requires 5mm of vertical space under connector. If you can check this then you will have no problem.
    Jiri
  • Georges Comment Link
    Georges 16 březen 2015, 13:36
    Hi, I am about to update à SIGMA 400mm F/5.6 Apo Tele Macro (non HSM). Would you tell me what board you used? Model A? or B?
    THANK YOU;
  • Angelo Comment Link
    Angelo 15 březen 2015, 22:58
    Perfect thanks to Jiri I could recuperrare my sigma hsm macro lens apo 400 mm f 5.6, a true genius, now I can finally take a beautiful picture.Thanks
    Angelo

Leave a comment