Orbitron DDE Azimuth Elevation To Serial

Control a satellite rotator automatically from Orbitron by sending it the azimuth (or other properties) via serial.

A while ago I wrote some code to listen to Orbitron using it’s DDE inter-process comms and send the satellite information string over serial to potentially drive an aerial rotator.

I’ve since updated the code and thought I would share it here.

Using DdeOrbitronToSerial

  • Firstly install Orbitron.
    • Update 13-02-2019: Orbitron doesn’t seem to work well unless you run it as admin – it can’t save files to its install dir and won’t pick up config changes. One work-around may be a custom install location.
  • Download DDEOrbitronToSerial.zip (June-2019) and unzip it to somewhere sensible.
  • Open the install directory of Orbitron and find Setup.cfg (example path below)
    • C:\Program Files (x86)\Orbitron\Config\Setup.cfg
  • Add a similar line as below to Setup.cfg: (obviously changing paths to where you unzipped things) As per Orbitron’s documentation:

    List of available drivers. New drivers can be added by editing [Drivers] section of Config\Setup.cfg file. Example config line: MyDriver=d:\MyDriver.exe

  • Don’t directly run the exe, you have to launch it from Orbtron itself by going to the rotor/radio tab, selecting the correct DDE driver, in this case it’s DDEOrbitronToSerial. Then click the button to the right of the dropdown to start sending data and launch the application:


  • The DDEOrbitronToSerial application should now launch and you will be able to select your COM port and output the satellite data to the serial port.
    • NB: You can edit additional options such as com port baud rate in the config file by clicking the open config button.

Any bug reports or feature requests are welcome!


  • June 2019 – Added latest release with a bug fix:
    • FIXED: Certain USB to serial chips would only receive a few characters.

80 thoughts on “Orbitron DDE Azimuth Elevation To Serial”

  1. Hello, I tryed this code, but I can’t receive the data I was wondering if is a coom speed problem as I didn’t find the way to set the com speed, and looking to the flashing led on my serial converter is seem quite high (I’ll try with an oscilloscope tomorrow ) Is it possible to have a way to set the com port speed?
    Thanks in advance, Matteo

    1. Hi Matteo,
      Thanks for the comment. You can edit the config file to change the baud rate. I can see that the config file is a bit awkward to update so perhaps I’ll put some specific options in too 🙂

  2. Just made it a bit easier to edit the options by forcing the config XML file to be opened in notepad. GUI settings may come at a later date.

  3. I have a Bushnell telescope with the motors to move it to what you want to see. The scope is shot. Motors work. The controller plugs into the base with only a phone or cat5 jack. I can’t remember offhand I’m not home to check. Would there be a way to output this to something like that? My plan is to take the tube off and mount a yagi.

    1. Hi,
      I don’t see why not. It depends what you need to feed into the controller.

      At the moment it outputs a string which is sent down a serial port. So if the motor controller takes serial it would be an easy code change but if the controller needs something else you may have to bodge together an intermediary unit. Feel free to post some more details, happy to take a look.

    1. Actually, I’ve verified that this does run on XP. Also, I wouldn’t recommend you use an unsupported OS, for security reasons at least.

  4. I am running orbitron to steer my sdr.
    To control my rotor as well i installed your package an updated the setup.cfg width the suggested line.
    But after restarting the Orbitron program your driver/program doesnt show up in the dropdown list.
    So are I am doing something wrong, using WIN10

    1. I’ve tested it on my Windows 10 machine and it works.

      If it’s not showing up in the drop down menu along with WispDDE and MyDDE then this is almost certainly a mistake in the Orbitron config.
      You mention restarting Orbitron – if you edited the config while Orbitron was running it may have overridden it on close, so make sure Orbitron isn’t running while you add the the lines to the config file.
      It may also be worth mentioning that you need to have your text editor running as an administrator to edit the Orbitron config file if you have installed it to the default location in program files.

      I hope that helps, feel free to post any other info if you don’t get it working.


      1. Thank you, I’ve been messing with it for a few hours because it wouldn’t show up in the Driver list. Is there a way that I don’t have to run Orbitron as an Administrator on my Windows 10 for the changes to work properly?

        1. I’m not certain but I think because Orbitron was written for older Windows versions it saves it’s configuration settings to a file in program files which normal level users don’t have write access to on Win 7 and onward. As far as I know most other settings won’t be able to be saved if Obritron is installed in the default program files directory.

          I think if you make your changes and run Orbitron as administrator just the once it should be able to read in the changes and then write them out again when it exits. This should be enough for the changes to persist and be read in the first time.

          My second choice would be to install Orbitron to a custom location, not in program files, where you as a normal permission level user will have write access.

          Third option may be to manually change the permissions of that settings file yourself so that your user has write access.

          I’m not sure if any of those would work or if there are better ways to do it but it’s my best guess!


          1. hello sir it is very nice project, im trying to use stepper motors for AZ and EL can you please help me with the code

    1. The serial output from the PC needs to go to something that can parse the data and drive the motors. The motors are not connected directly to the PC. My recommendation for an easy start would be to use an arduino and a motor driver module.

  5. Dear Alex,
    Thank you for sharing this. It was really helping for me. On my system everything is fine at software end, But my rotor controller didn’t accept commands like AZ300,EL13. It accept command like A300, E13 and it azimuth angle should go first on serial and then elevation angles. like from Orbitron if azimuth angle is 300 and elevation angle is -31. Then commands that will sent to rotor controller via serial should be A300 and next command should be E-31.
    Can you do this change in the software?
    It will be really appreciated.
    Thanking you in anticipation and waiting for your answer

    1. Hi,
      Thanks for the comment. I will have a look to see if I can add a method that will allow a user to specify a format string. That should help you out 🙂

    2. Hi,
      I’ve added a change that will allow you to specify a custom format string. Updated the download list. You could use “A[AZ], E[EL]”.
      Please have a go with that and let me know how it goes!


  6. Dear Alex,
    I have checked updated version, but it stops working when I link it with Orbitron. Previous versions does not have this issues.
    waiting to hear from you. Thank you so much.

    1. Can I get your email address? So that I can send you snap of the problem. I have also tested it on another system with windows 10, but it is causing same problem.

  7. Dear Alex,
    First of all, thank you so much for helping.
    It was my mistake, now it is working perfectly and sending command as A30, E-12.
    But my rotor controller accept first Azimuth and then elevation command. like A300 should go on serial first and then E30 should go on serial.
    and second thing is my rotor controller accept only positive angles, so most of time elevation angles are in negative, can you do some processing on it to make angle positive so that it would be accepted by rotor controller.
    Thank you so much for your help. hoping to listen from you soon. And how can I contact you, to learn more?

    1. I’m glad it’s working for you 🙂
      Can you give me some exact examples of what your system requires?
      Elevation when below the horizon (0 degs) is normally shown as negative so I would be interested in knowing the requirements for it to always be positive.


      1. Negative elevation is ok.
        Just split Azimuth and Elevation commands. First Azimuth command should go to the controller and then after few milli seconds delay, elevation command should go. Like
        delay of 1ms

  8. Sir
    How would you go about writing code for arduino uno to use just AZ only to rotate an antenna. I have my elevation fix . Not sure how to make the arduino look for the information.

    1. Hi,
      Assuming you have serial communication to your arduino you can use the serial commands to get the string sent from the dde azimuth orbitron plugin.
      When running my DDEObritronToSerial plugin you can give it a format string which it will use to format what it sends down the serial port to your, for example, arduino. In there just specify it to send [AZ] and in your arduino code it would be as simple as:

      while (Serial.available()) {
      azimuth = Serial.readString();
      I’ve not tested it but i believe readString will keep reading until the end of the string (I’m guessing a newline char for example). If not do it byte at a time – there are loads of reading serial port examples out there for arduinos.
      Hope it goes well.

  9. Hi Alex,

    First of all a big Thank you for your efforts in bringing out such a nice piece of DDE software.
    It works fine and the newest addition of custom output setting is just what was required. I did try the 2016 version earlier which was working fine.

    Now I am doing a project for AzEL rotor system , which is supposed to work in sync with a computer running Orbitron and “ALSO” standalone using a MicroController preferably an Arduino.

    Since you already have the Custom settings with
    [SN] [AZ] [EL] [DN] [UP]

    Could you please add the “Date” and “Time”
    [DATE] [TIME]
    also which will be very useful for extracting the
    DATE TIME AZ EL onto a microcontroller Memory via a PC and then can be used as a standalone system [ Microcontroller + Rotor system WITHOUT a PC] on the Field and made more portable.

    Arduino + Clock Module + Rotor System.

    It will be really appreciated and will be of immense use to all experimenters as well.

    Summary :

    [DATE] [TIME] for custom format string

    A Checkbox [] Zero when Negative Elevation

    Please consider if it’s not too complicated.

    Once again a BIG thank you for the DDE software.


    Sunil U K
    New Delhi India

    1. Thank you for your kind words. I’m glad people are finding it useful.
      Your request is something that can be done when I have some time.
      The zeroing of elevation should not be a problem.
      The only part I’d be concerned about is the format of the DATE and TIME strings.
      I would initially opt for dd-mm-yyyy or yyyy-mm-dd for the DATE and hh:mm:ss (where hh is 24hr) for TIME.

  10. Hello,
    i am trying for the first time the program but cannot understand if it is just for the Rotators or also for the radio.
    It will be great if it does both like the wispDDE as your one has the possibility to choose Comports greather of COM4 that WispDDE does not do but your one has this option but cannot, or i cannot find for the radio.
    Am i missing something or it does not have the radio Option.
    Also it will be great also if at the end of the pass it will stop moving the rotators ( as i see it contine moves the azimuth rotator even if the satellite is under the horizon ) and have the possibility of the Parking positions.
    Thanks for your work
    73’s de Enzo IK8OZV

    1. Thanks for the comment.
      This plugin for orbitron just sends the satellite data down a serial port. It is generally left to the receiving device to process it as the user wishes.
      For example, I would have a micro-controller receive the az and el data and drive a motor controller.

      It can send all available satellite information including position and radio data down one serial port but only one at this time.

      I can see a scenario where one may want to send the position down one port and the radio data down another though. I will consider this use case for the to do list!


  11. hello alex,
    I have successfully installed the DDEOrbitron to Serial to Orbitron plugin and exited the data from Orbitron sent from Loging. I plan to connect the output data from this orbitron to Arduino UnoR3 with L298N motor driver to drive Elevation and Azimuth motors. Have you ever tried programming this DDEOrbitron output on Arduino Uno R3?

    Warm regards…73 de

    1. Hi Andy,
      Glad to hear that it’s working for you 🙂
      Yes I have in the past used an arduino to receive the az and el info. Receiving the data is pretty straightforward – you receive the string down the serial port and extract the elements you need. The tricky bit is driving your motor and working out which direction it’s pointing.
      I’d be interested to hear how your build goes – best of luck!

  12. Hi Alex. how are you? I have a problem with win10. I follow the procedure but it does not appear in the drop-down window to choose the DDE.
    I did it on a machine that I have with XP and it worked. but in win 10 it does not appear.
    I have Oroitron 3.71 and DDE 2018.
    What should I do? can you help me?
    greetings from Argentina.

    1. Hi Sebastian,
      Thanks for the comment. I’m well thank you, hope you are too.

      I have heard of this from others but have not been able to reproduce the problem myself. I have just installed Orbitron and DDEOrbitronToSerial to a fresh Windows 10 machine and it worked well for me.

      1) When you edited the setup.cfg file did you have Orbitron running? I believe it overwrites the configuration everytime it exits – which would remove your change and not be there to load when it restarted.

      2) Could you perhaps change another setting in the configuration to double check that you can successfully edit the file and have those changes shown when you run Orbitron?

      3) Can you run DDEOrbitronToSerial.exe manually just to see if it starts up – it won’t do anything useful as there is no Orbitron feeding it data but it should show up a window.

      4) Double check the path in the configuration really does point to your DDEOrbitronToSerial.exe file (which should also have some library files alongside it)

      Let me know how those checks go, also perhaps let me know your exact installation steps.


  13. can this be implemented for the satellite positioning on SDRConsole to allow comms to an Adruino Mega for a homebrew satellite positioner

    1. Hi Darren,

      Thank you for your comment and interest!
      I’ve not used SDRConsole, unfortunately.
      Just to clarify, is it the case that SDRConsole has a component that outputs the satellite position in some format?
      If that output is readily available it would not be very difficult to send it down, say, a serial port to an Arduino.
      Feel free to add some more details and I’ll get back to you.


  14. Hello!
    I have successfully downloaded your program to use with Orbitron, and it works very nicely. I have also built and am in the process of tuning up a version of K3NG’s antenna controller which uses an Arduino Mega 2650. When I run Orbitron with the MyDDE software, I can see the output from it through the Arduino IDE serial viewer. I used the custom string option to send a command that is recognized, which works as long as the azimuth is more than 99. Anything less than 100 does nothing because this particular program is looking for numbers from 000-360. How hard would it be to change the dde to send the data this way to the serial? I realize that the K3NG program could also probably be modified to take an azimuth heading between 0-360, but I’m just learning about C+ programming and am not sure how to do it…although I may take a stab at it anyway!

    Thanks for your help,

  15. Nice job Alex, a handy tool.
    This may be a request better suited to Mr. Stoff, but I’m looking to have multiple (heaps) sats az and el output via serial, any suggestions for best method of attack?
    Regards, Sandy

    1. Hi Sandy, thank you for your comment.
      No, sorry, I’ve not encountered a tool which can do this but I’ve not really ever looked for that specific functionality.

      A little while ago I started writing something which I was going to use instead of Orbitron as it does not seem to be actively worked on anymore and as such I’ve had problems with it and Windows 10. I never got around to finishing it but I’m still interested in at least putting together a library which can, when given the right details, output the current location of a satellite at a given time. This library would place no restrictions on the number of satellites that could be tracked. I put together a proof of concept in python towards the end of 2017 which I may start to work on again. If / when I get this into a good enough state for use I will make sure I post it here and leave you a reply.


  16. Hi, Alex.

    I installed your DDEOrbitron plugin and it worked fine. Congratulations!
    I’m having trouble reading the data sent to the serial port.
    I tested the code below to read azimtuh, but I need help because it did not work.

    String azimuth;

    void setup () {
    Serial.begin (9600);
    Void loop () {
          while (Serial.available ()> 0); {
          azimuth = Serial.readString ();

          Serial.print (“az:”);
          Serial.println (azimuth);
          delay (1000);

    I am using an Arduino Nano with Nextion display and a sensor (HMC5883) which shows the azimuth and elevation. I want to compare the values ​​received by the serial port with those of the sensor and thus to activate or deactivate relays.

    Can you help me by correcting the above code?

    I appreciate it.

    73, PY7GO – Nazareno

  17. Alex,

    I solved it!
    My anxiety was so great for the code to work that I forgot to convert the string to int. Now I can read perfectly and compare with the sensor. I’ll continue with the project.


    73, PY7GO – Nazareno

  18. Hi Alex,
    The DDEOrbitronToSerial opens and then closes shortly after. How do I keep it running? Its on my I:drive. The first few times it ran ok.
    Steve M0ZEH

      1. Thanks for the message, I’m glad it’s working for you now.
        If you want, you can let me know how you tried to set it up on your other drive and I can have a go at reproducing any errors and fixing if needed?
        Let me know, happy to help.

  19. I got a question. I start VSPE com port software. I then connect putty to the emulated com port. I then tell DDEOrbitronToSerial to connect to the same virtual com port. Should I be able to see anything in the putty terminal. I see my commands coming from the arduino I programmed. When I press certain keys on my pc keyboard I get a message back in the putty window ok.
    I do see sent bytes in the vspe info window so something is happening.
    I think I need to program the arduino to receive the data coming from DDEOrbitronToSerial and then print it to the serial window.
    Any comments welcome.
    I’m building an EL/AZ antenna rotator controller. The idea is the microprocessor will read the data coming from DDEOrbitronToSerial to drive 2 large stepper motors.
    Steve M0ZEH

    1. I test with a similar setup regarding the virtual ports. My test setup:

      • In my case the virtual com ports come up as COM3 and COM4.
      • I then connect one of those to a terminal program, say COM3 (e.g. putty, or I use https://hw-server.com/files/priloha/termv19b.zip, obviously that’s a 3rd party site so use at own risk!)
      • Then load up Orbitron, run the Orbitron to serial program and select the other com port, COM4. I tick send to serial if it’s not already doing so
      • Then I see the output sent to the terminal.exe program
      • Here’s a link to a screenshot: Screen shot using virtual com ports

      Just a few thoughts some of which may not be useful but maybe some will prompt an idea or something! When you connect your Arduino to the PC it should come up as a com port. I may be misunderstanding but It sounds like you’re connecting the Arduino com port to multiple things on the pc? The com port will only be able to be connected to by one software application. If you choose this com port to send your data to with the Orbitron to serial program then only the Arduino will get the data and you won’t be able to see any data coming back form the Arduino (Orbitron to serial doesn’t show data coming back from the com device as I had not thought of that until now). So perhaps a very basic test would be to simply flash an LED on the Arduino every time you get a full line of text, which means it should flash every time the satellite data updates in Orbitron – very simple but at least you know that some data was arriving at the Arduino. A nicer test setup could be to have a 2nd serial port on the Arduino echo back the string it received to the pc on that 2nd port. Another way to verify it’s all working may be to code the Arduino to turn a stepper when it receives a single number via the serial port and set the custom string of the Orbitron to serial program to send just the azimuth so you can test the Arduino manually and then switch over the com port to Orbirtron and it should turn the stepper to follow that single number.

      Best of luck getting it working and I’m glad you’re giving my tool a go, makes it worth it to spend the time writing the program if you know people may find it useful!

  20. It works now. First started vspe and connected vspe com 4 to arduino com 2 with splitter. Then run putty on com 4. Then run orbitron ddetoserial on com 4. I can send and read commands in putty.
    Thanks steve

    1. Just found out your program works with sdr-console as it has an orbitron dde output as well. This saves me using orbitron at all. Very useful program thanks. Steve M0ZEH

  21. Hello Alex.
    Congrats for an awesome post and a great blog all in all.
    I am working on an Ardino antenna rotator as well, and this plugin helps a lot. To bad Orbitron can only launch a single driver at a time. It would have been great to tune my RTL-SRD as well. I will try to manually launch DDE Tracker for SDR# .
    Is there any way I can subscribe to your post?
    Best wishes from Romania,

    1. Thanks a lot for the kind comment!
      I think you can subscribe by ticking one of the below options:
      “Notify me of follow-up comments by email.
      Notify me of new posts by email.”

      I took a look at your blog too and there are some interesting posts on there too, thanks a lot for sharing 🙂

      Would you want Orbitron (or similar) to track multiple satellites at a time or just to be able to track one satellite and have the azimuth etc. sent down to multiple devices / serial ports?

      Thanks and all the best,

      1. In my humble opinion, I am very pleased the way Orbitron and your DDE works. Is more than I hoped for. Even the SDR#, launched manually, receive the tracking radio frequency.
        The output string is very flexible indeed, but I don’t know if it follows a certain protocol for commercial rotators.
        Also, would it be of interest to display (as text) the incoming data from the external interface (Arduino)? For example the antenna position.

        Best wishes,

        1. I think displaying the text coming back from the device would be a useful addition, especially for debugging, next time I look at the code I’ll try to add that. If there are other things you think would be useful then do feel free to say and I can always try to add things to it.


  22. Hi Alex
    I successfully installed your DDE Orbitron to Serial plugin and it worked.
    My challenge is to get the strings from orbitron and then able to change those strings into numbers that i will put on PID. The serial data i am getting is mixed with alphabet. If there is a video that explain how to do that please share i am really struggling.

  23. Pingback: racov.ro
  24. outstanding thread and information.
    I also have the DDE dialog open and then close after about 4 seconds. I am running windows 10 on a laptop. I do have to run Orbitron in Admin mode in order for the DDE to serial option to show up in the drop down box. I saw a post above where someone said they moved the DDE to the root of C:\, so I will try that when I get home. This only started happening after I modified the config file. its strange.

  25. Hi Alex! Thanks for your work!

    I am using this tool to communicate from Orbitron to a HamSupply Serial controller card for a Yaesu G-1000SDX Rotator. The part is based of the Rotor-Ez / Idiom Press format. I’m using the custom string function to send the command to the controller which I have tested using a terminal program and found that the chip will not respond if the Azimuth value has a decimal. Would it be possible to add an option (maybe a check box ) to write out azimuth values as whole numbers only?


  26. Hi Alex,
    first of all, excellent program you wrote there. i test it for my project(not finish yet). work prefectly. anyway, can i have a feature, can your code detect (send to MCU) when satellite start rising (AOS)?

    thanks in advance.

    1. Hi, thanks for the message, unfortunately the only data available from Orbitron, as an example is:
      SNNOAA_19 AZ20.5 EL-56.5 DN144998410 UP145001590 DMCW UMFM
      So we don’t actually get sent any AOS notifications, that I know of anyway.
      You can however configure Orbitron to do different tings once the satellite is in range. So you may be able to get something working there that way, hope you manage to figure something out!

      1. Ahh, too bad, but i understand that. Anyway orbitron will send data automatically when satellite is first rising at AOS. And the beautifull thing was data can be send through mcu via bluetooth spl. Awesome.


  27. Hello Alex,
    Is it possible to add some other ports towards rotor software?
    I’m using a SPID Big HR rotor which is driven by spidMD01dde software.
    If I use Orbitron with the MyDDE client, the whole chain works fine. MyDDE is getting the datastring and the SPID software is getting the string from MyDDE.
    What I eventually want is not to use Orbitron but SDR Console as a SDR and tracking program.
    It’s sending the Orbitron format and your DDEOrbitronToSerial program is receiving that very well. Only the spidsoftware isn’t getting any data. I think/guess that MyDDE is sending the data via an lpt port or so? can you give me any advice how to tackle this problem?

    73′ Alex (pe1rxu)

    1. Hi, if I’m understanding you correctly it sounds like you want the spidMD01dde to also receive the same data as my software?
      The way this software works is that Orbitron acts as a DDE server which means a DDE client (like this) can subscribe to a topic being sent from it. So any other software wanting to do the same will need to subscribe to your other source of DDE data with the same topic.
      Do you know if the spidMD01dde software supports DDE data transfer?
      Best of luck!

  28. hello, the program does not run, when I try to open it nothing happens and I have tried everything and it still does not work

    1. hi, did you put the configuration files in the correct place and add the correct config within that file? Then did you launch it from Orbitron itself, not just running it directly?

  29. Hello,
    I am looking for information how can I use this method on Virtual Machine… I have MacBook Air with M1 SoC and installed Windows 11 via Parallels. There is no way to install nullmodem since there is no ARM64 driver for Windows, I have created two serial ports in VM settings Com 1 and Com 2 that are exposed to my Win 11 ARM VM, but after selecting Com 1 in DdeOrbitronToSerial settings, but I am unable to force use Com2 to drive frequency change in Uno. Please give me any info how cain I set this up.

  30. Hi Alex.
    I’m currently trying to implement a ground station using Orbitron. Your plugin has been of great use in the implementatios of this station through Arduino, however, I’m porting this service to a Raspberry Pi 4 in order to reduce the number of components of the system, emulating the Orbitron app through Wine.
    As I’m no longer using Arduino, is there a way to output the El, Az data through a text file instead of using serial communication?

Leave a Reply

Your email address will not be published. Required fields are marked *