Our MD-01 rotor controller has a wealth of settings! This can be a nice thing, but it can also lead to bad design choices when we’re not aware of all the features. It is probably a good idea to once in a while take a look at the manual of the thing you own. Or you can read this blog post.

When we implemented MD-01 support in hamlib, we tested it a bit against flyby. A satellite passing over from 0 azimuth degrees to 359 azimuth degrees should ideally result in the antenna rotating 1 degree, but what we observed was that the antenna started rotating a full 360 degrees turn from 0 and up to 359 degrees. Oh no! The immediate thought was that we were missing important features in flyby, and that flyby should have chosen the shortest path, etc. We therefore archived this as an bug in our issue tracker of flyby, and didn’t really think much more about it. We were sometimes haunted by sleepless nights full of regrets and bad conscience for not having fixed such a large issue, but were otherwise fine.

Illustration of proper rotor tracking behavior with full angle wrapping when the rotor has the possibility to rotate beyond the limits of 0 and 360 degrees.

But the mysterious thing was: rot2prog, our older rotor controller for our 2m/70cm array, already seemed to be clever enough to choose the shortest path. The author of this post, when he was measuring antenna patterns of the parabolic dish, would rotate the parabolic dish (MD-01) for a full rotation from start to end and think no more about it. However, when measuring the 2m/70cm array (rot2prog) for a full turn, the rotor would go backwards and stop, or not turn at all when attempting to do a full turn. This was a cause of some minor irritation, but the post author didn’t realize until much later that this actually was the desired behavior when tracking satellites, and that rot2prog was turning along the shortest path between two angles. Meanwhile, we even got a nice comment on our issue which said that a proper rotor controller should take care of the angle wrapping, and there was no need for us to take care of this in Flyby. The author of the current blog post still didn’t take the hint B).

Starting the 2m/70cm rotor at 0:

Issuing a command to turn to 350 degrees:

The rotor chooses the shortest path, and just rotates 10 degrees backwards. Not that desirable if a full turn is desired, but it any other practical situation with the use case normally used for our tracking antennas, this is definitely the desired behavior.

No such luck when turning the MD-01 rotor controller from 0 to 350 degrees:

It actually goes to 350 degrees, the long and exhausting way.

This is not desired for satellite tracking. Ironically, it won’t even reach 350 degrees since the limit is way before that.

Lucikly, however, once you have hard evidence for the problem, and you realize that a good rotor controller should choose the shortest path and that your rotor controller should be more clever than both you and your satellite tracking application, you realize that such an advanced and expensive rotor controller should have some settings for always choosing the shortest path.

We push ‘S’ to enter the main menu:

Pushing S again to enter the “Motor configuration” submenu, and scrolling with left arrow until the right setting:

This sounds like a likely setting. Short way is turned off. Ops! Pushing the up arrow button turns it on again.

We can then push F to exit and save the changes.

With these changes, the behavior is suddenly the desired tracking behavior, and the rotor turns 10 degrees the other way when issued a command to turn to 350 degrees azimuth when starting at 0. Success!

It turns out that the MD-01 menus are not that hard to navigate in and have easily readable settings. We probably should have investigated this earlier, but it’s not always easy to realize that the machines are more clever than you. Turning back this setting to not choosing the shortest path can also be convenient in some situations, like for doing antenna pattern measurements, and it is not desirable to let the rotor controller choose the shortest path. MD-01 has options for both usecases!