URC - Rotor Controller

URC - Ultimate Rotor Controller

The price for the URC is currently (Euro) €795,-

(limited supply!)


This is for a complete unit, assembled and tested, ready to connect to your rotor and encoders. You need a proper 15 to 24 VDC power supply that can deliver enough current for the rotor/motors you will be using (12 VDC operation is

also possible)!


MOD-URC, modbus adapter for HH12, HH12-INC, AS5048A devices and analog input (for potmeter), (Euro) €50,-

(MOD-URC lets you connect cheap absolute encoders like HH12, AS5048A based devices and even an old potmeter to the URC controller via the RS-485 serial Modbus.



Please send any inquiries to the email address listed on "My CV/contact" page.

See the Terms of Purchase for warranty and cancellation details before you order.

Key features of URC:

  • Different position encoders supported (Az/El can use different encoders, does not need to be the same):
    • Direct interface to Incremental encoders on popular slewdrives from Coresun etc. (URC saves the current position during moves, restores it at power on, no loss of encoder position).
    • Support for absolute encoders via direct connection to RS-485 (Modbus):
      • Solar-360M for elevation (modbus RTU version) (direct connect)
      • Briter encoders, single turn and 16 turn, 10 and 15 bits modbus devices (direct connect)
      • SINDT02-485 absolute encoder/inclinometer from WitMotion for elevation (direct connect)
      • Using MOD-URC module:
        • HH12 based (HH12, HH12-INC and similar)
        • AS5048 (SPI) based devices
        • Support for potentiometer type (analog voltage, 0..5V) feedback
  • Drives DC motors from 12 to 24VDC, PWM controlled from 0 to 100% speed (or even "on/off" control of AC motors using external relays).
  • Maximum combined motor current is 13 ADC (10A for a single axis).
  • Motor current are monitored and shown live (on webpage a graph is shown with 10 minutes history).
  • Acceleration, deacceleration, min. start/stop speeds, maximum speed, deadband and hysteresis configurable.
  • Using incremental or absolute multi turn encoders, URC can handle axis's from -xxx° to +yyy° (f.ex -90° to +450°)
  • Simulation mode, lets you familiarize yourself with the URC before connecting it to the rotor (simulation works only if az/el encoders are set to "incremental encoders") 
  • Capacitive touch, 4.3 inch color display.
  • "Tooltip info", click on any text label and a help text for that item will be shown.
  • Gets it time from NTP (Internet time) or manually set, maintained in battery backed clock for true "mobile or off grid" operations.
  • Interfaces with SimpleCalc. The actual position of the antenna are used for calculations in SimpleCalc (HPBW etc.)
  • Can be controlled by SkyScanner for 3D mapping of noise.
  • VNC support for remote operation (recommended to use VPN if open towards the Internet!)
  • Web server, live dataview/control, settings, upload of new (html) files etc. (recommended to use VPN if open towards the Internet!)
  • Users can upload own webpages to the URC and use the HTTP/JSON commands/status messages, see below to build their own "GUI" via web browser.
  • Firmware updates can be fetched directly from internet (or uploaded via the web interface)
  • Numerous failsafe features, motor overcurrent, stuck encoders/blocked motors, hunting/oscillations.
  • Autonomous high precision tracking of moon and sun.
    • (Please note, the URC are optimized for having the mechanical stops on azimuth in the northern direction!)
  • Settable Park position and three "one touch" preset positions.
  • Support for various protocols for external tracking software:
    • Yaesu GS-232A/B (via RS-232 port)
    • PstRotator
    • URC UDP
    • socket interfaces
    • Rotctld (interfaces to PstRotator)
  • CAN Bus included for future expansion.
  • Supply voltage between 15 and 24VDC (fuse on back of box). Will work down to 12VDC also for portable operations (current consumption at 24VDC from 90 to 200 mA depending on the selected amount of backlight).


History

I designed the first revision of the URC Rotor controller back in 2022. The idea was to make a controller for my  own satellite system back then (which later became my 70cm EME system). Since 2025, the URC also controls my 4.8m dish for EME.


Since 2022, I have gotten a lot of requests from people asking if I would make the URC controller generally available for others to purchase at some point. Initially, the URC was only meant to be an "internal project", the design was not really made for production, the mechanics, housing and general design was just not optimized for that.


"Revision B" of the URC is now finished. This version have been optimized, easier to produce etc. The design are exactly the same as the "revision A" that have been running for 4 years, doing 9.000+ QSO's on both satellites and EME at my own QTH.


The URC has from the start, been designed with substantial processing power. The processor is a Cortex M7 (i.MXRT1064 from NXP) running at 528 MHz. On the board is 32 MByte SDRAM, 8 KByte FRAM (for storage of current incremental encoder positions, configuration etc), 128 MByte NAND Flash (disk system), a USB service port interface, SMPS for 3.3V and 12V (for encoders, CAN/RS-485/RS-232 devices etc), 10/100 MBit Ethernet, RS-232 port (for connection to PC ,tracking programs), 2 x incremental encoder interfaces, RS-485 port (for connection to absolute encoders via Modbus), CAN Bus interface and a 4.3 inch capacitive touch TFT display (480 x 272 pixels).


URC interfaces directly with the popular slewdrives from (among others) Coresun in China, feedback comes directly from the Hall effect sensors in the slewdrives, so no extra position sensors are needed in that case. A number of absolute encoders are also supported, ranging from single turn 10 bit to multiturn 15 bit devices, popular "HH12" encoders and even analog potentiometer "encoders" are supported (for legacy rotor systems).


Demo of a SVH3 Az/El slewdrive being driven by a 12V battery for true mobile operation. SVH3 nominal voltage is 24VDC but runs perfectly fine (although slower) at 12V:

Changing settings via web browser:

Back of URC

The back of the URC has a number of connectors, please notice that all the "12V" connections shares a common resettable (automatic) fuse of 400mA. Do NOT draw more than 400mA combined on these outputs!


The URC comes with all connectors included, the DC connector (XT-60) has wires already soldered to it (as shown on the picture above). The blue connectors are "pluggable screw connectors.


  • DC INPUT: This is the main power for the device, it uses 15 to 24VDC (will also run at 12V just fine, just observe the "12V" terminals on the blue connectors will be only around 10V!). Max current 13Amp. The connector used is a XT-60 connector (male connector on the URC).
  • FUSE: This is the main fuse for the DC input, use a fuse of maximum 13A (T). At delivery, a 4A (T) fuse is installed.
  • MOTORS: This connects to the two brushed DC motors (Az/El). Max current is 10A for one motor, maximum 13A total for both motors (set by the fuse).
  • ENCODERS: This is the incremental encoder inputs (directly from the slewdrive).
  • RS485: This is the RS485 communication bus, this is used to interface to absolute encoders (URC has 120 Ohm terminator inside).
  • RS232: A serial port, this can interface to legacy tracking programs that for example use Yaesu GS-232A/B protocols.
  • CAN: Connection to CAN Bus, this is for future expansion and features (URC has 120 Ohm terminator inside).
  • USB port: This is a "service connector" and is NOT for use by the enduser.
  • 10/100 MBit: This connects to your Ethernet/network, supports 10/100 MBit, DHCP or static IP address.


The 4 pole blue connectors are part number TBP02P1-381-04BE and the 8 pole blue connector is part number TBP02P1-381-08BE both from the company "Same Sky".

The 4 pole black connector for motor connections are part number 1944350000 from company Weidmuller


The URC comes with connectors for all the blue connectors, the motor connector and the DC connector.


Instructional videos

I'm making a number of Youtube videos of the different settings etc. of the URC. Please have a look at these to see if they answer some of your questions. They can be found in the playlist.

Advanced topics:

Help system

When tapping on the text labels on most windows, helpful hints will appear. These hints include information about parameters, settings, and allowed value ranges.


The displayed window exemplifies this by showing the help text related to the "Az deadband" label.

Guidance provided when clicking the text label "My Lat/+N,-S".

Track window

The main window. From here you can activate different tracking targets:

Park: Go to the defined (in "Presets") park position.

Rem: Activate remote tracking, using protocol defined in "Settings".

Sun: Track the sun.

Moon: Track the moon.


You can tap on the Az or El position and a numeric keyboard will show up, allowing direct goto.


Shows the motor current in mA, PWM speed in %, ETA in seconds and the current destination.


On the Manual window you can set a "Nudge offset" (see this section for an explanation).

You can only apply a "nudge offset" on the "Manual" window IF the URC is actively tracking (Sun, Moon or REM).


Whenever a "nudge offset" is effective, it will be shown in green (positive) or blue (negative) text (also show like this on the "Manual" window).

Presets window

From the "Presets" window you can define the "Park" position and three preset positions. Tap on the numbers and a keyboard will show up. You can also do a long press on one of the buttons ("Park", "Preset 1..3") and the current position will be saved as the new preset position.


The names shown on the buttons can be changed using the web interface (settings page).

Youtube video showing the renaming.

Manual window

The "Manual" window lets you move the motors manually by pressing the "UP", "DOWN", "CCW" and "CW" buttons. The motors will move as long as the buttons are pressed. 

You can also tap on the Az or El position and a numeric keyboard will show up, allowing direct goto.

The speed can be changed at the two entry fields ("Speed % Az" and "El"). No ramping of the movement are done when moving using "Manual".


At the lower right corner, there is a "Nudge" switch. If a tracking mode is currently selected (Sun, Moon, REM) this switch can be set to "ON". When doing so, the four buttons (CW,CCW,UP,DWN) changes from moving the antenna manually to setting "nudge" offset for the two axis. Every time a button is pressed, the "nudge offset" for that axis is incremented or decremented by 0.1°.


The "nudge offset" is applied to the calculated target, this will offset the antenna with a number of degrees (either positive or negative). 


Whenever a "nudge offset" is effective (and tracking an object!), it will be shown in green (positive) or blue (negative) text (also show like this on the "Track" window).

Limits window

URC operates with two sets of "limits":

"Hard limits" are the positions that are never allowed to be crossed. No matter if URC is running in manual mode or actively tracking an object, if the hard limit is ever to be crossed, the system will stop and go in the "stopped" mode. A popup window will also be shown on the screen with the error message.


"Soft limits" are limits that are allowed to be crossed in manual mode only (either from the "Manual" window or by entering a destination directly. Tracking an object (in "Rem" mode or sun/moon) will not be allowed. For example, if the lower soft limit for elevation is set to 10° while tracking the moon, as soon as the elevation of the moon goes below 10°, the elevation axis will not go below 10° but stay clamped.


The soft limit values can not be "outside" of the hard limits, they have to be "less" or "equal" to the hard limits.


Please note, the URC are optimized for having the mechanical stops on azimuth in the northern direction!

Setup window

The "Setup" window found in the URC stands out as the most sophisticated among all windows. It provides a wide range of parameters and settings that can be customized.

On the left side of the window, you will mostly find "system parameters" such as latitude/longitude, network settings, date/time, remote protocol settings, and more.


The right side are mostly related to the tuning and settings of the azimuth and elevation axis's. Here you can configure the type of encoder each axis uses, maximum speeds, deadband, hysteresis, maximum motor current allow etc.


Left side

  • Brightness, brightness of the screen 5 to 100%
  • Screen saver, time before screen goes into screen saver mode (only in stopped mode)
  • Set date/time, see below
  • Timezone (UTC), the difference from local time to UTC
  • Daylight saving, enable if daylight saving is in effect
  • My Lat/+N,-S, your latitude, positive for northern latitudes, negative for southern
  • My Lon/+E,-W, your longitude, positive for eastern longitude, negative for western
  • Use DHCP, enable to use DHCP, disable to use static IP address on LAN network
  • My IP, the IP address to use if using static IP address
  • Netmask, the IP netmask to use if using static IP address.
  • Gateway, the IP address of the gateway (router) if using static IP address
  • Calibrate az/el position, see below
  • Remote, select the remote protocol to use for "Rem" mode (yaesu GS-232, PstRotator etc)
  • Baudrate, the baudrate to use for the serial remote protocol (Yaesu etc)
  • Rem. port, the socket port to use for remote protocols that use the LAN interface
  • Stay in Rem, when enabled, the URC will stay in "Rem" mode when the object tracked goes below horizon.
  • Always allow VNC, when enabled, incoming VNC clients are always accepted, if not enabled, a popup screen is shown. This allows you to either accept or reject the VNC client. The settings depends on if you are on a private network or not
  • UDP Broadcast, enable UDP broadcast messages, these are sent to the "UDP BC port" specified
  • UDP BC port, port that UDP broadcast messages are sent to


Right side

  • WDT period, number of mS of watchdog period
  • WDT min.move, number of degrees that must be moved within the WDT period to prevent watchdog timeout
  • Max current mA, this is maximum motor current for each motor before overcurrent alarm is triggered
  • Max speed, this is maximum speed in %
  • Min start speed, this is minimum speed in % used when starting a move.
  • Min stop speed, this is minimum speed in % used when ending a move.
  • Deg Acc/Deacc, number of degrees for the ramp up/down of a movement
  • Az/El deadband, number of degrees for axis to be within before stopping
  • Az/El hysteresis, this is the maximum number of degrees difference between the current position and the target position before a move is initiated, this is effective in "Rem", "Sun" or "Moon" tracking
  • Az/El cnt/deg, ONLY when using incremental encoders. This is the number of counts per degree
  • Az/El enc reverse, this lets you reverse the counting direction if using incremental encoders (same as swapping the A/B signals in the ENCODER connector)
  • Az/El type, sets the type of encoder used on the axis. When using absolute encoders via RS.485 modbus, please observe the address used for the encoders (azimuth encoders are always address 1, elevation encoders are always address 2)
  • Modbus baudrate, this is the speed to use on the RS485 modbus for absolute encoders. This MUST match the configured speed of the connected encoder(s)

Set local data and time

Normally the URC gets its time from the internet or its own battery backed real-time clock. If for some reason you need to adjust the date/time manually, you can do so via this window. Enter the data and time, and press the checkmark at the top of the window.

Calibrate azimuth and elevation axis

This window lets you set the current position of the antenna. There are small differences depending on the type of encoder used for each axis.

To set the current position, you simply enter the correct azimuth and/or elevation value, and press the checkmark at the top of the window.


If you are peaking your antenna on the sun or moon (when measuring sun/moon noise), you can simply press the large buttons to use the current sun or moon position, and press the checkmark. Please notice that if "Nudge" is active (either Az or El nudge value is not 0), the nudge offset(s) are used for the positions! If nudge offset(s) are not 0, a warning is shown at the top right ("Nudge is NOT zero").


When an axis uses a absolute encoder, the "Clear offset" button for that axis are enabled. Pressing the button will clear any offset on that axis and set the offset to 0. This will then have the effect that the raw absolute position from the encoder are shown and used.


Clearing the offset for an axis will activate "Disengage motors" automatically, you can engage motors again in "System" window.


Remember you can use the "Disengage" function on the "System" window to prevent any sudden moves by the motors when doing setups like this!

System window

  • SW version, this is the current version of the software running. Pressing the "Update from internet" button will attempt to update the unit with the current firmware version available (requires connection to internet). The unit will restart after the update.
  • IP address, the current assigned IP address of the URC. Using the address "HTTP://URCxxx.local" in a browser will allow you to access the web browser.
  • MAC address, the physical MAC address of the LAN network chip (the line also shows the number of available and used slots for UDP and socket communication)
  • Serial number, this is the serial number of the URC
  • Simulate motors, if incremental encoders are selected for both azimuth and elevation, you can simulate motors and encoders while experimenting with settings
  • Disengage motors, enabling this will prevent motors from moving. Useful when using absolute encoders and testing these
  • Raw encoder/pos, this is the raw incremental encoder position(s) if used, and the (logic) signal levels of the A/B inputs on the ENCODER connector.
  • Motor load (mA), this is the current load for each of the two motors
  • Speed (deg/sec), speed in degrees per second of each axis
  • Restart controller, this will restart the URC (only possible when in "stopped" mode
  • Enable track, using this you can select which of the two axis are currently following tracking commands. Default is that both az and el are tracking (for example when doing a sun drift scan with SimpleCalc, you can disable tracking in azimuth (or elevation)
  • Remote service, this will enable connection to a "service desk" at moonbounce.dk. USE ONLY IF INSTRUCTED TO!!!
  • Modbus errors, shows the number of requests, replies and errors from connected absolute encoders (if configured). This enables you to spot any communication errors with the encoders.

Parameters for motor tuning

Below is a simplified drawing of how the various parameters in the "Setup" window controls the ramp up/down, the speeds and the target "lock".

All the "speeds" mentioned are PWM speeds of the motors, this can go from 0 to 100%. The three speed settings are common for both azimuth and elevation motors.


Please notice that most motors will not run at (very) slow speeds, especially when starting/stopping. Both SVH3 and SVH7 slewdrives typically have minimum start and stop speeds of 20%.


The parameters:

  • Max speed (A), this is the maximum speed motors will run at (10..100%)
  • Min start speed (B), this is the minimum speed that will be used when starting a move (5..100%)
  • Min stop speed (C), this is the minimum speed that will be used when trying to reach the final destination (5..100%)
  • Az/El Acc/Deacc (D), this is the number of degrees that are used for the ramp up/down from the "min speeds" to the maximum speed (0.2° to 10.0°).
  • Az/El deadband (E), this is the number of degrees in error from "wanted" to "actual" position that are allowed before motor stops (0.01° to 5.0°).
  • Az/El hysteresis, this is the number of degrees difference between "calculated/should be" to "current" position before a new move is initiated. F.ex when tracking sun/moon, when the object has moved this amount from the current position, a move will be initiated (0.01° to 10.0°).

Parameters for failsafe mechanisms

The URC comes equipped with several failsafe mechanisms, all designed to halt the system in case of any abnormal occurrences. Examples of potential issues include a motor stalling, broken position encoder cables, faulty encoders, or excessively high motor current due to mechanical blockages.


One essential implemented feature is the "Hunt/oscillations" alarm, which activates if an axis repeatedly moves back and forth in a searching manner, making more than three quick movements. This triggers an error message on the LCD screen and halts the system (no settings are available for this feature).


Graphically represented below are two key features: the "movement watchdog" and the "maximum motor current" functions.


The "movement watchdog" includes three parameters:


  • WDT period mS (A): This parameter specifies the time, in milliseconds, during which changes in position are monitored (100 to 5000 mS).
  • WDT min.move (B): This sets the minimum position change required within the WDT period. Failure to meet this criteria will result in the system halting with an audible alarm (0.001° to 1.0°).
  • WDT grace per. (C): The "grace" period is a delay in milliseconds applied to the normal watchdog check if the axis reverses direction from its previous movement. This delay prevents premature triggering of the watchdog due to excessive backlash. Only after the grace period expires does the normal watchdog timer start running. Feature is disabled if set to 0. (0 to 5000 mS).
  • Max current mA (D): This parameter defines the maximum permissible motor current in milliamperes. If this limit is exceeded, the system stops with an audible alarm (0 to 10000 mA).


    Using incremental encoders (slewdrives)

    Using incremental encoders with the URC are straightforward. Below is an example where a SVH3 slewdrive from Coresun is connected to the URC. The Hall sensors on the Coresun drives can be supplied with  5 to 12VDC making them perfect candidate for the URC.


    A Coresun SVH3 slewdrive has two cables, one for azimuth and one for elevation. The cables exits the drive motors on the back.

    Each of the cables consists of 6 wires in total, the red/black motor wires are thicker than the 4 remaining wires from the Hall sensor (incremental encoder).


    The thick red/black wires are the motor wires. The four thick wires are connected to the black connector which goes into the "MOTORS" connector on the back of the URC device.


    The brown/blue/orange/gray wires are from the built-in incremental encoders (Hall sensors) on the azimuth and elevation motors, the blue connector with these goes into the "ENCODERS" connector on the back of the URC.


    PLEASE NOTICE that the color coding of the sensor wires (brown/blue/orange/gray) are sometimes different depending on the actual slewdrive you have! Make absolutely sure you are using the right connections, check with the actual datasheet of your drive or the seller.


    The screenshot below is from the SVH3 PDF manual from Coresun, you can see the colors of the wires and what function each wire has. Using this with the description on the back panel of the URC lets you connect the wires correctly to the ENCODER connector. Remember, swapping either the "hall A" and "hall B" OR the "motor -" and "motor +" will reverse the direction of the axis!

    Below follows a description of how to set the "counts per degrees" for an incremental encoder. The example uses a SVH3 slewdrive from Coresun

    For the URC to be able to know what the current azimuth/elevation position is, it needs to know how many pulses it will see for each degree of movement. This setting is in principle the only thing needed for the URC to operate with incremental encoders (and the calibration of the current position the azimuth/elevation).


    The slewdrive consists of two "gears" (simplified picture to the left):

    • The "main gear", this is the large gear that drives the antenna in azimuth or elevation (on azimuth, one full 360° rotation of the main gear/output shaft, will rotate the antenna 360°). Reduction ratio around 50:1 to 80:1.
    • The motor/planetary gear. This is the combo that drives the main gear. The motor/planetary combo typically have a large reduction, sometimes up to 600:1.


    To the left there is a picture of the datasheet for the SVH3 from Coresun. There are two numbers that are interesting with regards to the "pulses per degrees" we need. This is the "Gear ratio" of the main gear, in this case it is 62:1. The other interesting number is the gear ratio of the motor/planetary gear that drives the main gear, in this case 552:1. If we multiply these two numbers:

    62 x 552 = 34224. So one revolution (360°) on the output shaft requires 34224 revolutions on the DC motor.


    In case of the SVH3 drive, the incremental encoder (Hall sensors) are mounted at the rear end of the DC motor. A little simplified, two magnet is mounted to the motor shaft and a Hall sensor is located close to the shaft. Every time the motor rotates one revolution, the Hall sensor will see two "pulses" from the magnets. So now we have:


    2 x 34224 = 68448 pulses pr 360° rotation on the output shaft.


    The way the incremental encoder interface is made on the URC will multiply the pulses from the incremental encoder ("quadrature interface") by four (basically it counts every "edge" of the two signals (Hall A and Hall B).

    So, the end result is then:

    4 x 68448 = 273792 pulses in the URC for 360° rotation on the output shaft.


    Or combined in one formula:

    62 x 552 x 2 x 4 = 273792 pulses


    So every time the output shaft has made a full 360° rotation, the URC will see 273792 pulses.

    This brings us to the value we need to enter in the "Az cnt/deg" and "El cnt/deg" in the "Setup" window on the URC!


    Az/El cnt/deg = 273792 / 360 = 760.53


    As there are small in-accuracies when manufacturing gears, its always a good idea to rotate the output shaft a full 360° (or 180°) and check the actual number of pulses (the raw pulse counts can be seen on the "System" window)!

    In the case of the SVH3 I used for the screenshots above, a more correct number was 760.50 pulses/degrees.


    Using absolute encoders

    The URC supports a number of absolute encoders, including:

    • Briter single turn and 15 turn 10 and 15 bit encoders (Modbus RS-485) directly connected via the RS-485 bus to the URC.
    • Solar-360M encoder for elevation from Level Developments, directly connected via the RS-485 bus to the URC.
    • SINDT02-485 Inclinometer from Wit Motionfor elevation (with RS-485 modbus interface).
    • When using the MOD-URC adapter board:
      • HH12 and HH12-INC absolute encoders
      • AS5048A based encoders for both azimuth and elevation.
      • Potentiometer (analog) device (need special setting on the MOD-URC)


    It is possible to use different encoders for azimuth and elevation. It is for example possible to use incremental encoder for the azimuth and a Solar-360M inclinometer for the elevation etc.

    RS-485 communication bus


    Absolute encoders connects to the URC using a RS-485 "multidrop serial bus". The RS-485 bus basically consists of three wires, Ground and the two signal wires, "A" and "B". The RS-485 bus allows you to connect multiple devices  (Slaves) together (in the case of URC, two encoders) and communicate with these from a "master" device. In this setup, the URC is the Master device and the absolute encoder(s) are the Slave(s). Due to the electrical properties of the RS-485 bus, it is possible to extend the RS-485 to very long distances, depending on the baud-rate used for communication (100's of meters are possible). It can be a good idea to use shielded cables for the encoders (connect the shield to ground at one end only, usually at the URC end).


    The URC has a connector on the back labelled "RS-485". This is a four pin connector, it carries the ground, "A", "B" and +12V signals. The +12V signal can be used to power the absolute encoders, max allowed current draw is 300 mA (internally fused).


    The protocol used for "talking" with the absolute encoders are the modbus protocol. Where RS-485 is the electrical interface, modbus is the "language" the encoders and URC uses to talk with each other over the RS-485 bus.


    In order for the devices on the RS-485 to be able to communicate, two things needs to be set correctly:

    • The baud rate, use the same baud rate on both encoders and URC. Default baud rate on URC is 38400 baud.
    • The configured modbus address on the encoders, for an encoder used for elevation, the address needs to be 2, for azimuth encoder the address needs to be set to 1.


    These parameters can be set from the manufactures own software application, and it is important that this is set correctly, otherwise the URC will not be able to communicate with the encoders!



    There is one VERY IMPORTANT thing to remember about a RS-485 communication bus, and that is the need for ONE termination resistors at EACH END of the bus! These termination resistors are needed in order to avoid reflections from the bus. A termination resistor is simply a 120 Ohm resistor that is connected between the "A" and "B" signal wires of the RS-485 bus. You need to mount ONE AND ONLY ONE termination resistor at each END of the cable!


    As the URC Rotor controller sits at one end of the (long) RS-485 cable, it already has a 120 ohm termination resistor mounted, so nothing is needed in that end.


    However, at the "far end of the cable", where the encoder(s) are placed, you will need to mount a termination resistor between the "A" and "B" signal wires on the RS-485 bus (unless the encoder already has that built in!). Remember, if you two absolute encoders connected to the bus, ONLY to mount ONE termination resistor at the encoders!


    If you use the "MOD-URC" encoder interfaces, there is a dip switch on these that can enable/disable a built-in termination resistor. If using two MOD-URC modules, remember to ONLY enable the termination resistor on ONE of the connected modules!


    In case of excessive communication errors with the absolute encoder(s), the system will go into stop mode and a message will be shown on screen. If you press "Cancel", no new error will be shown until communication is established again. If you press "OK", errors will show again if still no communication.

    Examples of connecting absolute encoders


    A couple of examples are shown below with various absolute encoder setups.

    Below is shown two "MOD-URC" modules. One MOD-URC connected to a AS5048A (DIP switch S1=ON, S0=OFF) based sensor for azimuth, and the other MOD-URC connected to a HH12 (DIP switch S1=OFF, S0=ON) based sensor for elevation. The settings for the MOD-URC is done using the DIP switches on the device (see above).

    This illustration shows a Solar-360M inclinometer for elevation sensing alongside a Briter encoder (16T multiturn, 15 bit) for azimuth orientation. It is crucial to accurately configure the encoders employing the designated software provided by the manufacturer of the absolute encoders. The elevation encoders constantly operate on address 2, while the azimuth encoders operate on address 1. Ensure that the baudrate is configured identically on both encoders and URC. The URC default baudrate is 38400 baud.

    MOD-URC setup


    The MOD-URC functions as an interface module between different absolute encoders based on AS5048B, HH12 (INC) and analog potentiometer (0..5V).

    Setup of the module is primarily done with a four position DIP switch on the board. Some of the more advanced features (f.ex use of potentiometer) can be done using a simple serial terminal (TTL serial interface needed).


    On the module, you will find two "pluggable screw terminals", one at each end (the mating connectors are delivered with the module).

    The four pole connector to the right on the picture below, is for power and modbus connection to the URC device. The four signals, GND, 485B, 485A and SUPP connects to the "RS-485" connector on the back of the URC. 

    The six pole connector on the left, connects to the sensor you will be using. Please observe the correct connection to the specific sensor you are using!


    The module you have will be configured for either "digital" or "analog" sensor. There is a small "jumper" just to the right of the "ANA" text on the board, this "jumper" selects if the board is to be used with a digital absolute encoder or a potentiometer. A solder "blop" will be placed at the right position for this.


    The four position DIP switch lets you configure the board:

    • TERM, setting this to "ON" enables the 120 Ohm terminating resistor. Remember, only the LAST device on the RS-485 bus must have this enabled!
    • S0, set this to "OFF" for a azimuth device (Address 1) and to "ON" for an elevation device (Address 2).
    • S1, this selects between HH12(INC) type of sensors if set to "OFF", AS5048B sensors if set to "ON"
    • S2, setting this to "ON" enables CCW direction, set to "OFF" for CW direction. This is used to "flip" the direction from the absolute encoder.

    Updates to the firmware in the device can be done using a TTL serial adapter, use the GND, TXD and RXD signals on the "pin header" at the upper right corner. This pin header matches the pinout of a standard FTDI USB to serial adapter cable, part number: TTL-232R-3V3, can be found f.ex at Mouser: TTL-232R-3V3

    .

    To enable update of firmware, keep the small push button pressed while powering up the board. You can then download a new firmware (HEX) file using the Flashmagic application. The project file to use for the Flashmagic program can be downloaded from here. In addition to this file, you will need a new HEX file with the actual (new) firmware in (can be found further down on the page under "Release notes"



    Remote control using VNC

    You can remote control the URC via a normal VNC client (for example RealVNC etc.).

    RealVNC viewer can be downloaded from here.

    In "Setup" window, you can enable or disable the automatic accept of incoming VNC clients. If set to disabled, a popup will show on the LCD display of the URC. It is then possible to accept or ignore the connection request.

    If you are on a network that is open towards the Internet it might be a good idea to keep this setting disabled, otherwise a user trying to gain access via VNC will be able to control the URC!

    Web server

    The URC features an integrated web server for convenient monitoring and operational control through a standard web browser. Access the webpage to initiate sun/moon tracking, position the dish, adjust to specific azimuth and/or elevation angles, and view motor current graphs. By providing your antenna's band and HPBW (-3 dB beamwidth), the calculated sky noise levels (in °K) for both the antenna's direction and the new target direction will be displayed.

    Using the upload feature of the file manager webpage, the user can upload own webpages adding personal features to the system. You will also be able to see the current "self doppler" for the moon (useful when doing EME and checking your own echoes).


    You have the capability to modify all controller settings and manage setting configurations by uploading and saving files directly thru the web interface (the configuration files are simple JSON text files, parameters not included in the files are not modified when doing a "Load from file")

    Main page

    The main web page of the URC allows you to control the operating mode, execute "goto" commands, monitor motor current etc.

    Settings page

    From this webpage you can change most of the parameters of the URC. You can also save/load the current configuration.

    Mobile application

    During the construction of my 4.8M EME dish, I felt the need for some way of remote controlling the rotor controller. I made a small .NET MAUI application for mobile phones (cross platform). This (very) small application lets you control the dish when I stand next to it and the URC controller is located in my shack. Very handy. The mobile application ("RURC") lets me enter target azimuth and/or elevation, park or activate Sun or Moon tracking etc.

    The application also shows a graph of the current (in mA) for each axis when moving.

    Pictures

    Below are some pictures, taken outside in full sunlight. You can clearly see the brightness of the LCD screen. Normal indoor operation will only have the backlight set to 10 %!

    Two complete controllers of "revision A". One is in use in my 70cm EME system and the other in my 4.8m dish for EME.


    2022-08-26 18.31.40
    2022-08-26 16.52.26
    2022-08-26 18.34.40
    2022-08-26 18.31.45
    2022-08-26 16.50.57
    2022-08-26 16.51.01
    2022-08-26 17.27.00
    2022-08-26 17.27.05
    2022-08-26 17.27.08
    2022-08-26 16.51.07

    A short (older) video of the current state of the controller. In the video, the controller is running with simulated motors/encoders

    URC driving a SVH7 Slewdrive for my 4.8 meter dish for EME

    Communication with URC

    There are different ways to communicate with the URC:

    • Using VNC for remote control ("remote desktop")
    • Webserver, you can monitor, control and configure the URC from its built-in webserver.
    • TCP/IP socket communication, lets you monitor and control the URC
    • UDP broadcast messages, the URC sends periodic messages out using UDP broadcast messages


    The webserver allows you make you own webpages if the ones delivered with the URC does not fit you preferences/uses. There is a small template/framework page that shows the most simple commands and status features, this should give you an idea of what is needed in order to talk with the webserver in the URC. You can get the template file "testurc.html" from here. Save and copy it to the URC using the "file manager interface" of the web interface. 

    Copying files to the URC are shown in the following video:


    SSI includes on webpages

    On webpages served by the URC, it is possible to use "SSI includes". The keywords are structured as HTML comments. The following keywords are supported, you can see on the index.html page (and other pages) from the URC how these are used.

    Most of these keywords (parameters) can be set using the HTTP GET command as described here.


    Keywords supported:

    • fwvers, this is the firmware version currently running on the URC, "1.11"

    • build, this is the firmware build date/time, "Sep 15 2026 10:22:33"
    • uptime, number of seconds since URC was powered on, "4456"
    • nbname, this is the NetBIOS name of the URC, "URC1544"
    • stat_rawaz, stat_rawel, this is the raw azimuth/elevation position, "123.33"

    • stat_az, stat_el, this is the (possible offset) azimuth/elevation position, "123.33"
    • stat_modbuspolls, this is the number of times a device on modbus has been polled, "3344"
    • stat_modbusreplies, number of times modbus device(s) have replied to polls, "3344"
    • stat_modbuserrors, number of times an errors on modbus requests, "0"
    • _lcdBrightness, brightness of LCD display, "50"

    • _screenSaver, screensaver timeout, 0=off, 1=10 minutes etc

    • _timezone, timezone compared to UTC

    • _daylightSaving, daylightsaving active (=1) or not active (=0)

    • _latitude, your lattitude, "55.77"

    • _longitude, your longitude, "9.77"

    • _dhcp, If =1 DHCP is used, if =0 static IP is used, "1"

    • _myIP, IP if static IP used, "123.22.33.12"

    • _myMask, IP mask if static IP used, "255.255.255.0"

    • _gwIP, gateway IP is static IP used, "123.22.33.1"

    • _wdtTimeout, watchdog timeout in mS, "1000"

    • _wdtMovement, minimum position difference in ° during WDTTimeout, "0.01"

    • _wdtBacklashGraceMS, grace period in mS for backlash compensation when changing direction, "0"

    • _posPark_Az, _posPark_El, park position for az/el

    • _posPreset1_Az, _posPreset1_El, preset position az/el
    • _posPreset2_Az, _posPreset2_El, preset position az/el
    • _posPreset3_Az, _posPreset3_El, preset position az/el
    • _maxSpeed, maximum travel speed, "100"
    • _minStopSpeed, minimum stopping speed, "20"

    • _minStartSpeed, minimum starting speed, "40"

    • _azNumDegreeAccelDeaccel, _elNumDegreeAccelDeaccel, number of ° for ramp up/down of movement, "1.0"

    • _azDeadband, _elDeadband, deadband in °, "0.5"
    • _azCntDegree, _elCntDegree, counts/degree of movement, "760.50"

    • _limitHard_cw, _limitHard_ccw, hard limits, "355"/"0"

    • _limitHard_up, _limitHard_down, hard limits, "95"/"0"

    • _limitSoft_cw, _limitSoft_ccw, soft limits, "350"/"0"

    • _limitSoft_up, _limitSoft_down, soft limits, "90"/"0"

    • _azHysteresis, _elHysteresis, hysteresis in °, "2.0"

    • _speedManuelAz, _speedManuelEl, speed when moving manually, "60"

    • _remProtocol, remote protocol used, 0=none, others is index from dropdown list on settings

    • _remIndexBaudrate, baudrate used when remote protocol active, index from dropdown list on settings

    • _remPort, port to use for networked remote protocols, "1111"

    • _maxCurrent, maximum allowed current for motors in mA, "1500"

    • _stayInRemoteOnLOS, if set to 1, REM stays active when object goes below horizon

    • _myName, friendly name to show on webpage, "Test URC"

    • _offsetAz, _offsetEl, offset for axis, "34.44"

    • _sensorTypeAz, _sensorTypeEl, the type of encoder used, index from dropdown list on setup window

    • _indexModbusBaudrate, baudrate to use for modbus, index from dropdown list on setup window

    • _allowVNCAlways, if set to 1, VNC requests are always accepted, if 0 a message needs to be accepted on URC LCD screen.

    • _azEncReverse, _elEncReverse, if set to 1, encoder direction is reversed.

    • _namePark, _namePreset1, _namePreset2, _namePreset3, the name to display in the park/preset buttons. Max length is 8 characters (Park button will only have the first 4 character shown on the "Track" window.




    Dynamic data via HTTP GET command

    Using a HTTP GET command, it is possible to get dynamic data from the UTC controller. This is the method the main page (index.html) of URC uses. It requests the data from the URC 30 times each second.


    Data will be returned if you do a HTTP GET:

    http://urc1234.local/dynamic.json


    The format of the data are shown below:


    {
      "NAME": "URC 4.8m Dish",
      "UPTIME": 2824,
      "TIME": "2026-08-05 11:56:27",
      "MODE": 0,
      "AZ": 2.01,
      "EL": 3.01,
      "NEWAZ": 2.01,
      "NEWEL": 3.01,
      "ERRAZ": 0,
      "ERREL": 0,
      "SPEEDAZ": 0,
      "SPEEDEL": 0,
      "LOADAZ": 0,
      "LOADEL": 0,
      "ETAAZ": -1,
      "ETAEL": -1,
      "SUNAZ": 190.97,
      "SUNEL": 50.72,
      "SUNNEXTEVENT": 26191,
      "SUNMAXEL": 50.84,
      "SUNTRANSIT": 84650,
      "MOONAZ": 297.41,
      "MOONEL": 2.31,
      "MOONNEXTEVENT": 1208,
      "MOONMAXEL": 54.95,
      "MOONTRANSIT": 62055,

      "WDTWARNAZ":0,

      "WDTWARNEL":0,

      "ERRMASK":0,

      "AZNUDGE":0,

      "ELNUDGE":0

    }


    The individual fields:

    • NAME: This is a symbolic name of the URC, can be set in settings.
    • UPTIME: Number of seconds since URC was powered on/reset
    • TIME: The current UTC time
    • MODE: The current mode the URC is in:
      • 0=stopped
      • 1=Park (moving towards park)
      • 2=Sun (tracking the sun)
      • 3=Moon (tracking the moon)
      • 4=Remote control (using the protocol set in settings)
      • 5=Manual (currently moved using buttons on manual window)
      • 6=Preset 1 (moving towards preset position)
      • 7=Preset 2 (moving towards preset position)
      • 8=Preset 3 (moving towards preset position)
    • AZ/EL: current position in degrees
    • NEWAZ/NEWEL: New target position in degrees
    • ERRAZ/ERREL: Number of degrees difference between target and current position
    • SPEEDAZ/SPEEDEL: Current PWM motor speed in % (0..100) 
    • LOADAZ/LOADEL: Current motor current in mA
    • ETAAZ/ETAEL: Number of seconds before the new target position has been reached (-1 if not moving)
    • SUNAZ/SUNEL: Current azimuth/elevation of sun
    • SUNNEXTEVENT: number of seconds until sun either sets or rises (if SUNEL>0, next event will be set)
    • SUNMAXEL: Maximum elevation of sun (will be at AZ 180 or AZ 0)
    • SUNTRANSIT: Number of seconds before sun is at maximum elevation
    • MOONAZ/MOONEL: Current azimuth/elevation of moon
    • MOONNEXTEVENT: number of seconds until moon either sets or rises (if MOONEL>0, next event will be set)
    • MOONMAXEL: Maximum elevation of moon (will be at AZ 180 or AZ 0)
    • MOONTRANSIT: Number of seconds before moon is at maximum elevation
    • WDTWARNAZ/WDTWARNEL: is an early warning that the watchdog for position change for axis is about to fire
    • ERRMASK, this is a bitmask with the current errors. Once a new movement is initiated on an axis, all bits in mask is cleared to 0.
      • Bit 0: Hard limit reached for azimuth axis
      • Bit 1: Hard limit reached for elevation axis
      • Bit 2: Hunt/oscillation alarm on azimuth axis

      • Bit 3: Hunt/oscillation alarm on elevation axis

      • Bit 4: Watchdog timeout on azimuth axis

      • Bit 5: Watchdog timeout on elevation axis

      • Bit 6: Overcurrent on azimuth axis

      • Bit 7: Overcurrent on elevation axis

    • AZNUDGE, ELNUDGE, this is the current nudge offset


    Sending commands via HTTP GET command

    Using HTTP GET command you can send a number of commands to the URC. You can send one or more commands in a single GET request. Below is a list of the different commands.


    The format is: "URCXXXX.local/index.html?abc=xyz". URCXXXX is the name of your specific URC on the network. The "XXXX" is the four last digits of the serial number. This is also shown on a sticker on the back of your URC.


    The commands the URC understands:

    • gotoaz=123.22, sends azimuth to 123.22 degrees. Same as tapping on the Az value on "Track" window
    • gotoel=45.0, sends elevation to 45.0 degrees. Same as tapping on the El value on "Track" window
    • calibrateaz=12.22, this sets azimuth to position 12.22. Same as using "Calibrate Az/el position" on "Setup" window.
    • calibrateel=1.33, this sets elevation to position 1.33. Same as using "Calibrate Az/el position" on "Setup" window.
    • command=FACTORY, be CAREFUL! This will reset the settings to factory defaults (except network settings)
    • command=PARK, activating PARK tracking, same effect as pressing "PARK" on the "Track" window
    • command=REM, activating remote tracking, same effect as pressing "REM" on the "Track" window
    • command=SUN, start tracking the sun, same effect as pressing "SUN" on the "Track" window
    • command=MOON, start tracking the moon, same effect as pressing "MOON" on the "Track" window
    • command=PRE1, PRE2, PRE3, activate PRE1/2/3 tracking, Az/el is set in "Preset" window
    • command=STOP, same effect as pressing STOP button on "Track" window
    • command=RESTART, this will restart the URC (same as doing a power off/on). Only allowed if currently in stopped mode
    • command=AZNUDGE_INC, this has the same effect as pressing CW key on "Manual" window when "Nudge" is active. Only valid if tracking Sun, Moon or Rem!
    • command=AZNUDGE_DEC, this has the same effect as pressing CCW key on "Manual" window when "Nudge" is active. Only valid if tracking Sun, Moon or Rem!
    • command=ELNUDGE_INC, this has the same effect as pressing UP key on "Manual" window when "Nudge" is active. Only valid if tracking Sun, Moon or Rem!
    • command=ELNUDGE_DEC, this has the same effect as pressing DOWN key on "Manual" window when "Nudge" is active. Only valid if tracking Sun, Moon or Rem!
    • NUDGERESET, the nudge offsets for both azimuth and elevation are cleared (set to 0).

    • CALIBSUN, CALIBMOON, same as the "align" buttons on the "Setup" -> "Calibrate Az/El position" window. Calibrates the current position of az/el to be the calculated position for sun/moon.


    Anything else will be treated as a parameter setting (if found). For example, if sending


    "HTTP://URC1234.local/index.html?_longitude=55.7754"


    this will set the users longitude to 55.7754


    URC Socket protocol

    I have developed a number of PC applications (SkyScanner, SatTrack etc.) and these supports communication with my URC controller using either UDP or TCP/IP Socket communications. 


    When using the socket protocol, the URC acts as a "server". It creates and accepts (multiple) connections to a socket it creates (port number can be defined in settings). As default, URC will listen on port 1111, but you can freely configure that.


    All messages are formatted as JSON text. Every time you send URC a request, it will reply back with its status message.


    Status message:


    {

      "TICK":143,

      "UPTIME":53,

      "CPULOAD":15.4,

      "VERSION":1.08,

      "MODE":0,

      "AZ":160.02,

      "EL":89.98,

      "NEWAZ":160.02,

      "NEWEL":89.98,

      "SPEEDAZ":0,

      "SPEEDEL":0,

      "LOADAZ":0,

      "LOADEL":0,

      "ETAAZ":-1,

      "ETAEL":-1,

      "SUNAZ":158.82,

      "SUNEL":53.83,

      "MOONAZ":109.48,

      "MOONEL":14.71

    }


    The individual fields:

    • TICK: is just a incrementing sequence number
    • UPTIME: is the time the rotor controller (in sec) has been running
    • CPULOAD: is the current CPU load in %
    • VERSION: is the firmware version
    • MODE: is the current mode of the URC:
      • 0=stopped
      • 1=Park (moving towards park)
      • 2=Sun (tracking the sun)
      • 3=Moon (tracking the moon)
      • 4=Remote control (using the protocol set in settings)
      • 5=Manual (currently moved using buttons on manual window)
      • 6=Preset 1 (moving towards preset position)
      • 7=Preset 2 (moving towards preset position)
      • 8=Preset 3 (moving towards preset position)
      • 9=Manuel mode is active (one or both axes are being moved from "Manual" tab on URC
    • AZ/EL: is the current position of the antenna
    • NEWAZ/NEWEL: is the target position
    • SPEEDAZ/SPEEDEL: is the speed in % of the motor (0..100)
    • LOADAZ/LOADEL: is the motor current for the motor in mA (negative value is CCW, positive is CW)
    • ETAAZ/ETAEL: is the number of seconds before motor has reached its new destination
    • SUNAZ/SUNEL: is the current position of the sun
    • MOONAZ/MOONEL: is the current position of the moon



    Commands the URC can receive:

    The status message above is sent back from URC on every command it receives.


    {"POLL"}

    POLL is just a request for current information (typically Az/El position is needed)


    {"GOTO":[35.42,10.52]}

    GOTO will send a new Az/El position to the URC. If the URC is in "REM" mode, the antenna will move to this position.


    {"MANAZ":[160.42]}

    This will move the azimuth to the defined position


    {"MANEL":[12.54]}

    This will move the elevation to the defined position


    {"STOP":[]}

    Stop all movement


    {"PARK":[]}

    Activate the park function (same as pressing "PARK" on the "Track" window


    {"SUN":[]}

    Activate tracking of sun (same as pressing "SUN" on the "Track" window


    {"MOON":[]}

    Activate tracking of moon (same as pressing "MOON" on the "Track" window


    {"PRESET1":[]}, {"PRESET2":[]}, {"PRESET3":[]}

    Move to Preset 1/2/3 position (same as pressing "Preset1/2/3" on the "Presets" window


    {"UPDATE"}

    Same as pressing "update from internet" in System window. Will fetch new firmware from internet (from moonbounce.dk)



    UDP broadcast message from URC

    The URC broadcasts status messages (as JSON) 10 times per second on UDP port 30201 to the local network.


    The format is as follows:


     {

       "uptimeURC":21,
       "serial":1044955607,
       "az":155.09,
       "el":80.08,
       "azLoad":0,
       "elLoad":0,
       "azPWM":0,
       "elPWM":0
     }


    The individual fields:

    • uptimeURC: is the number of seconds since URC was powered on
    • serial: is the serial number of the URC
    • az/el: is the current position
    • azLoad/elLoad: is the motor current in mA
    • azPWM/elPWM: is the PWM commanded speed (0..100%) for motor

    Customized webpages

    It is easy to make your own customized webpages for the URC device. Below is a "bare minimum" for a page, it requests the "dynamic.json" data 25 times each second and shows the current Az/El information. It also has a "goto" command, you can enter an Az/El value, press a button and the antenna moves to that position. The example shows most of the basics for a webpage, for further ideas/inputs on what can be done, look at the index.html and compas.html pages on the URC.


    You can download the current testurc.html file.



    Release notes

    To update the firmware in the URC, make sure it is connected to the internet, press the button "Update from internet" on the "System" window and follow the instructions on the screen.

    If updated/new webpages are available, these needs to be uploaded to the URC using the file manager webpage in the URC (access via HTTP://URCxxxx.local/file_manager.html) or press the file icon at the top of main webpage of the URC. Use the "UPDATE FROM SERVER" at the bottom of the file manager webpage.



    20261009 Version 1.17

    • The displayed text label in the Park, Preset 1/2/3 buttons can be changed via the settings webpage (not via the touchscreen on the URC!). The text in "Park" button on the "Track" window on the URC display will only have the first four characters shown. The web pages index.html, compas.html and settings.html has changed (Thanks Paul W2HRO)


    20261008 Version 1.16

    • Heavy optimized the VNC server, typical bandwidth requirement dropped by a factor of 6!
    • Manual moves will run at 50% reduced speed (of the speed configured on the "Manual" window) for the first 250 mS of the manual move.
    • Nudge feature is made persistent. If set, they will be used whenever a target is being tracked (Sun,moon,rem). Values are remembered thru power off/on. Shown in Youtube URC Part 6 video. (Thanks Paul W2HRO)
    • Added nudge feature to the web interface (index.html), you can also align to sun or moon.
    • Increased the history length from 600 to 1800 seconds for the current consumption and "positon error" graphs on the main webpage (index.html) (Thanks Dave KG0D)
    • More precise calculation of the indicated "self doppler" on the main page (index.html), should be accurate within 1 Hz of WSJT

    • As there are changes to webpages, please upload these too (use the "file manager" page in the web interface, see Youtube URC Part 11 video)


    20261004 Version 1.15

    • Added "align to moon" ("align to sun" was already there) on the "Calibrate Az/El position" on "Setup" window (Thanks Paul W2HRO)
    • Bug when trying to select an item in a dropdown list (e.g. on the "Setup" window) when using the LCD screen at the same time as VNC client active (Thanks Dave KG0D)
    • Added two new selections for SINDT02 inclinometer for elevation (X Reverse and Y Reverse), these will reverse the readings (Thanks Bent OZ1CT)

    • Changes to webpages, upload these too (use the "file manager" page in the web interface, see Youtube URC Part 11 video)


    20261001 Version 1.14

    • Added ERRMASK to the dynamic.json data. This signals any errors from the URC to the web interface
    • To use the new ERRMASK feature, update the index.html page on the URC (use the "file manager" page in the web interface, see Youtube URC Part 11 video)
    • Added E-STOP to the web interface (index.html) (Thanks Paul W2HRO)
    • Added "Manual mode" indicator to the MODE field in dynamic.json


    2026-09-28 Version 1.13

    • Added support for reverse/normal count direction on incremental encoders.
    • UDP broadcast setting in "Setup" page

    • Changed settings.html page to allow the reversion of incremental encoders
    • Updated index.html page.
    • Added compas.html page, this allows you to manipulate az/el using "point/drag/click". Still experimental
    • Updated pages can be downloaded using the file_manager page on URC and select "UPDATE FROM SERVER"


    2026-09-23 Version 1.12

    • Changed so that "Calibrate az/el" window (from "Setup" window) can be selected also when tracking,
      this enables you to calibrate when nudging is active. You can only press the checkmark on the calibrate window
      if none of the axis are currently moving, otherwise you get a warning.
    • Error when timezone are negative, fixed (Thanks Dave KG0D)


    2026-09-11 Version 1.11

    • Added "nudge" function. Using this, WHEN in active tracking mode, you can adjust az/el in 0.1 deg steps from the "Manual" window (activate the switch at the bottom of the Manual screen). 
    • Better handling of Ethernet reconnect situations (ARP monitoring, link up/down, mDNS etc)
    • Added support for WitMotion SINDT02-485 inclinometer sensor for elevation (via modbus)


    2026-09-01 Version 1.10

    • Developed a VNC server from scratch and added it for remote access (using RealVNC, TightVNC etc. clients). VNC can be enabled by default via "Settings" -> "Always allow VNC", otherwise need to be accepted for each session.
    • Added support for remote support (via system tab, ONLY when instructed by OZ9AAR !!)

    • Improved Sun/Moon calculations, much more precise
    • Acceleration/Deacc. distance in degrees are now separate for azimuth/elevation

    • Update to same fw version number will now be carried out
    • When tracking sun or moon, the time to next event (rise/set) will be shown in the status line at the bottom of LCD screen f.ex: "Track moon (S 07H 18M)" means that moon is being tracked and it will set in 7 hours and 18 minutes from now
    • Sending current status info out as UDP broadcast messages on port 30201 (10 times per second), used by SimpleCalc noise window
    • Added web server with support for SSI, HTTP GET etc.
    • Better handling of deadband in Axis controller, more precise arrival
    • mDNS added, lets you find a URC on the network by using "URC1234.local" where "1234" is the 4 last digits of the devices serial number (see back of URC unit).
    • In System tab, it is possible to enable only Az or El tracking (for Sun, Moon and REM modes). Default is both Az and El enabled. Useful for sun drift scans etc.
    • Added a lot of commands that can be sent with GET HTTP, f.ex HTTP://URC5607.local/index.html?gotoaz=180
    • Added support for settings.html page (parameters set via GET command(s))
    • Added support for "file_manager.html" page, allows listing, delete and upload of multiple files via HTTP POST (except a file with same name as the "file_manager.html" (or whatever name it is using) page)
    • Added "files.json" to web interface, returns all files and their size: "http://urc1554.local/files.json"
    • Added possibility to delete one or more files: "http://urc1554.local/files.json?delete=file64k.bin&delete=file128k.bin"
    • When starting tracking (REM, Sun, Moon) azimuth and elevation axis will be clamped to the soft limits if target is currently outside these limits
    • Added detection and alarm messages for "hunt/oscillation" detection on an exis (if f.ex the deadband or "minimum stopping speed" are too aggressive).
      This is overruled by "WDT grace period" (in mS) for movements in opposite direction (for taking up backlash)
    • Improved simulation mode (accessible via the "System" menu. It is now safe to activate/deactivate the simulation mode, the physical motors and encoders "stays in place". In simulation mode, also the motor current is simulated (PWM value * 6 in mA)
    • Added support for absolute encoders. Support for Solar-360M, Briter single/multiturn and MOD-URC (supports HH12, HH12-INC, AS5048 and potentiometer), all via RS-485 modbus.

    • Added "disengage" motors on "System" menu. Motors will not move, useful for checking absolute encoders etc.
    • Sends out "R R" on CW during poweron
    • Added support for Rotctld protocol (via Socket). Interfaces to PstRotator etc.
    • Added "tooltip" help texts on all labels (setup etc).
    • Baud rate for modbus can be set in "Settings" window.


    2025-07-05 Version 1.06

    • Added PARK, PRESET1, PRESET2, PRESET3, STOP, MANAZ and MANEL commands on URC socket


    2025-06-13 Version 1.05

    • Fixed error when watchdog timeout on movement.


    2025-04-10 Version 1.04

    • Changed error on overcurrent, both axis are stopped if one of them sees overcurrent
    • On UDP remote interface, Az/El is returned with 2 decimal places (was 1 before)


    2025-02-26 Version 1.03

    • Added 2 decimals to values on "manual" tab.
    • Changed Az/El display to 0.01 deg resolution on all screens
    • Az and El can now be entered manually with decimals (before only integer values)


    2024-12-25 Version 1.00

    • Added socket remote communication protocol
    • New firmware downloads via HTTP now


    2024-07-27 Version 0.97

    • Added UDP responses to commands as well as "POLL" command.


    2023-12-25 Version 0.96

    • Added "stay in remote on LOS" setting. Stays in REM mode if a satellite/object has LOS. This allows URC to continue tracking a satellite/object once it again has AOS (will follow azimuth until rise). If stayInRemoteOnLOS is active, REM button will be pink when in remote mode, otherwise it is green


    2022-11-21 Version 0.93

    • Change in detection of overcurrent in AxisController.c


    2022-10-31 Version 0.91

    • First version


    Third-party open source software used in URC

    The URC uses a number of open source products in its firmware, details are here: