I think you'll find, reviewing those early almost interminable posts, that the problems were caused by unfamiliarity with a newly acquired scantool, coupled with unfamiliarity with the procedures required to execute the commands - Tech2 will not permit access until certain conditions are met - GMTDScan has no restraints, thus having resulted many errors in the hands of the uninitated - which justifies the exorbitant pricing of the Tech2 and other factory scantools.
Now, having posted the specific procedures many times on many forums, I could say: had people listened, those errors would not have occured - however, in lieu of that, I'll just say (if only to be on the safe side): had people listened, those errors would not have occured
Again:
command TIMESET and PCM locks in a preset timing number of +3.5*BTDC, which we will call BASE timing, so the engine will stabilize and continue running - Desired is +3.5*, Measured is to be determined: PCM then rotates Optic Sensor\Camring to the most negative mechanical position allowed by the IP housing, then to the most positive mechanical position, for a total of 11*\22* crank MEASURED, which determines the range of advance from +3.5*BTDC - now, PCM is expecting range to be +3.5* plus 22*, which will result in a TDCO value of -0.5* - if IP has been moved, PCM will see different numbers at negative end and positive end, such as +5* plus 22* - a new TDCO value will then be calculated because the range has shifted, allowing more positive advance
Here's where the problem occurs when not using a Tech2: if Engine Coolant Temperature and Intake Air Temperature are below normal operating range when TIMESET is commanded, PCM locks in the BASE +3.5* number - however, in the background PCM is still calling for advance as required by the below-normal ECT\IAT - TDCO will be calculated from those advanced positive values, just as if the IP had been rotated in a positive direction - same-same alla-time same ting for more negative numbers, no sweat, GI..............
So: if ECT and IAT are stabilized at normal operating temperatures, PCM will be calling for zero advance, and TDCO will calculate properly from BASE timing - BASE timing is shifted according to IP mechanical position - useable range of ADVANCE is dictated by that mechanical position - TDCO is calculated from that range of numbers, which is why the numbers will shift upward if the engine rpms are increased - go over ~1500rpm, and you will get the TDCO DTC because the increased value is out of range
That is the way it works, irregardless of geographical location - TIMESET and TDCO LEARN were combined for OBD2, but even the OBD2 ko-ko diddy-wah fingersie\footsie thingy won't work if ECT\IAT are not normalized