Main page
The main web page of the URC allows you to control the operating mode, execute "goto" commands, monitor motor current etc.
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.
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:
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.
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.
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.
A number of parameters can be configured on the URC. Below are screenshots of the various screens, all parameters ,with a few exceptions, can also be set from the web interface (see above).
The values shown are those that I use on my 4.8m EME dish. The dish is controlled by a SVH7 slewdrive from Coresun.
At the top of the screen, you can select the different windows. Swiping left and and right lets you also scroll thru the different windows. Some of the windows are higher than the screen, on these you can pan up and down with your finger (navigation is similar to how you navigate a normal smartphone).
At the bottom of the screen a status line is shown. This will show the current mode the URC is in (stopped, tracking remote, tracking sun/moon etc. The current azimuth and elevation is shown as well as the last commanded destination. Local date/time is also shown.
The statusline will also show special modes, in the example below is shown that the sun is being tracked (the sun sets in 11 hours and 13 minutes) and the system is running in "Simulation" mode (enabled via the "System" window).
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".
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).
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.
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).
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!
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.
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!
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:
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:
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):
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.
The URC supports a number of absolute encoders, including:
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.
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:
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.
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.
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:
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"
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!
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")
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.
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.
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
There are different ways to communicate with the URC:
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:
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"
stat_rawaz, stat_rawel, this is the raw azimuth/elevation position, "123.33"
_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
_minStopSpeed, minimum stopping speed, "20"
_minStartSpeed, minimum starting speed, "40"
_azNumDegreeAccelDeaccel, _elNumDegreeAccelDeaccel, number of ° for ramp up/down of movement, "1.0"
_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.
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:
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
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:
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
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.
{
"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:
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)
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:
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.
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
20261008 Version 1.16
More precise calculation of the indicated "self doppler" on the main page (index.html), should be accurate within 1 Hz of WSJT
20261004 Version 1.15
Added two new selections for SINDT02 inclinometer for elevation (X Reverse and Y Reverse), these will reverse the readings (Thanks Bent OZ1CT)
20261001 Version 1.14
2026-09-28 Version 1.13
UDP broadcast setting in "Setup" page
2026-09-23 Version 1.12
Error when timezone are negative, fixed (Thanks Dave KG0D)
2026-09-11 Version 1.11
2026-09-01 Version 1.10
Added support for remote support (via system tab, ONLY when instructed by OZ9AAR !!)
Acceleration/Deacc. distance in degrees are now separate for azimuth/elevation
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.
Baud rate for modbus can be set in "Settings" window.
2025-07-05 Version 1.06
2025-06-13 Version 1.05
2025-04-10 Version 1.04
2025-02-26 Version 1.03
2024-12-25 Version 1.00
2024-07-27 Version 0.97
2023-12-25 Version 0.96
2022-11-21 Version 0.93
2022-10-31 Version 0.91
The URC uses a number of open source products in its firmware, details are here:
Projects and information on this website is licensed under Creative Commons Attribution-NonCommercial 4.0 International (CC BY-NC 4.0).
To view a copy of this license, visit https://creativecommons.org/licenses/by-nc/4.0/