Strange.....you usually complain when I include links. ;-)
Someone was posting regarding changes to advance curve and one could likely achieve some success through monitoring intake vacuum at a given throttle opening. Problem is, the KLR carb has no easy means to attach a TPS (throttle position sensor) and single cylinder engines are a real tough call for MAP sensors.
When determining ignition advance curve from scratch, the only way I know to do so is to monitor for detonation while experimenting/monitoring ignition timing at wide open throttle. Once one as determined maximum advance during the progression from minimum to maximum RPM at wide open throttle and assumed maximum temperature, one has a basis for timing the engine. This is generally where bikes stop.
Assuming the same cylinder filling, combustion rate/burning rate requires a certain amount of time. Let's call it "X" miliseconds. If the spark ignites the air-fuel mixture at a piston position which allows "X" milliseconds of burning time before the piston reaches the top, then double the RPM and the piston will reach top before the burning is completed if the spark occurs at "X" milliseconds, correct?
For this reason, the spark must occur at "X" milliseconds and not at a specific piston position, correct? So, since the spark is timed from crankshaft (or camshaft = same effect) position, it must be fired earlier in terms of crankshaft (piston) position as RPM increases in order to allow "X" milliseconds for burning. So, we must advance the timing (spark firing point) as RPM increases. Note that I have taken license in the explanation but the trend is correct. Note also that the amount needed to time correctly is no linear.
Since combustion rate/burning rate is at maximum at WOT and high temperature, one can assume that the burning rate will be slower during smaller throttle openings because smaller throttle openings provide less compression pressure and so slower burning rate. For this reason, partial throttle requires earlier spark firing in order to provide for the "X" milliseconds + added time.
In order to do this, one requires either a reference of engine load, usually by intake manifold vacuum or air flow rate compared to engine characteristics.
If one inspects a conventional automotive distributor, one will find centrifugal weights which provide speed related advance and a vacuum chamber which provides for greater advance as engine load is decreased.
How to do this for a KLR? Well, as above generally but in the final analysis it's far more difficult. Far easier to combine with fuel injection and therefore use the same air flow and engine speed data combined with experimentally supplied look-up pages.
I've worked with this problem on multi-cylinder engines which is doable. As for a single like the KLR with huge intake pressure pulses....there lies madness.