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.