I have submitted a change to the dithering behavior in Ekos (of course, in the beta codebase). For those of you who run beta code, please test and let me know if you have feedback. Here are the changes:
Before this change
When dithering is activated, after a capture is completed, Ekos suspends guiding and capture, computes a random pixel offset, and moves the guide-star target position by that offset. It then uses standard guiding code to move close to that new target position, sending guide pulses to correct the pointing position until it is within a pixel in x and y image coordinates of the desired position. It may take several guide pulses to reach the new target position. Once the position is reached, guiding is resumed and then a new capture is started.
It is possible to disable guiding in RA or DEC, or disable one of the directions (east or west, north or south). When one guiding direction/motor is disabled, not only does Ekos not guide in that direction, but it does not send dither pulses in that direction (even though it may still decide to add a random offset in that direction--which is a bug). That can cause a situation when dithering will fail because it cannot achieve the desired dither offset.
Changes
Change #1: One Pulse Dithering. Since the dither target position offset is randomly computed, it is not critical to reach the exact random dither position. Therefore when dithering, Ekos will estimate what single RA & DEC pulses are necessary to move to the randomly generated position, and issue those pulses. However, it will not iterate with more pulses to refine the new target position. It will begin guiding from the position that was reached with the dither pulses, and use that as the new target position. This should result in simpler, more reliable and quicker dithering, with the same benefits of dithering. It is possible that some dither moves are less than originally randomly generated, e.g. due to backlash, but overall the dithering should continue to be effective. This change is controlled by a new checkbox, see below, which defaults to "off". In future releases, assuming this works well, my intention is to remove the checkbox and only use the new behavior
Change #2: Always dither in both RA & DEC. With the new code, dithering will not obey the guider's axis & direction restrictions. Thus, even if one chooses to only guide in RA, dithering will occur in both RA and DEC. In the past the dither was computed for RA and DEC, but the dither pulses in disabled directions were blocked, possibly leading to failed dithering when the positions weren't reached. Now the dithering pulses will be sent.