Control commands for the GNSS receiver UM982

category: gnss
tags: rtk um982


Unicore Communications’ GNSS (global navigation satellite system) receiver UM982 can estimate the direction of travel (heading) even when stationary with two antenna inputs, and can simultaneously receive 1408 channels of satellite signals, but is relatively inexpensive.

However, since there is almost no official documentation on receiver control commands, and the support software uSTAR does not fully utilize the functions of this UM982, I didn’t enjoy it very much.

I happened to find a control command manual for another Unicore receiver, so I will try applying the commands to this UM982.

Control commands for UM4B0 receivers

I found the documentation, High precision commands and logs, on the Internet. On page 6 of this document, the target receivers are UM4B0, UM847, UB4B0, and so on. These are two generations older than the UM982 receiver, but I thought they might work with the UM982 as well.

The experiment is performed by connecting the UM982 receiver and a microcomputer (Raspberry Pi or Latte Panda) via USB. Then, execute the RTKLIB 2.4.3b34 CLI (command line interface) command str2str on the microcomputer to control this receiver from another computer via the network. I have two antennas (Beitian BT-200 and BN-345AJ) connected to the UM982 receiver.

Microcomputer with UM982 receiver connected

On this microcomputer, I would like to access with the same device name (ttyUM982) regardless of reboot (Reference: USB device port identification on Linux). I performed the following operations on the microcomputer.

First, as a root user, write the following content in the directory /etc/udev/rules.d/ with a file name such as 00-um982.rules.

# Unicore Communications UM982 (Prolific Technology)
    ATTRS{idVendor}=="067b", ATTRS{idProduct}=="23a3",\

If we connect the UM982 receiver to the USB port and run udevadm control --reload-rules && udevadm trigger as the root user, /dev/ttyUM982 will be created as an alias of such as /dev/ttyUSB0.

If we have the screen command installed on your microcontroller, we can view the receiver’s NMEA-0183 text messages by running the following command. The default baud rate is 115200 bps.

screen /dev/ttyUM982 115200

To exit the screen command, enter CTRL+A (hold down the control key and press the A key), then K (capital letter).

In order to enter a control command, we enter CR (carriage return) and LF (line feed) at the end of the line in that order. However, on the screen command, pressing the return key only sends CR. We also need entering CTRL+J to send LF after pressing the return key, which is very troublesome.

Therefore, I will make it possible to remotely connect to this receiver via the network, and have the connection software automatically input CR LF. Compile the str2str application from RTKLIB 2.4.3b34 to look like this:

str2str -in serial://ttyUM982:115200 -out tcpsvr://:2001 -b 1

Now we can access this receiver on TCP port 2001. To access it with netcat’s nc command, do the following:

nc -c localhost 2001

The -c (lowercase c) option sets the end of line to CR LF when the return key is pressed. Depending on your netcat version, you may have to use -C (uppercase C).

Now we can access this UM982 receiver via TCP/IP connection locally or remotely.

UM982 receiver control

Try all the commands in “High precision commands and logs” above.

A large amount of NMEA-0183 text messages are displayed from the receiver on the console screen connected to the receiver, and control command responses cannot be determined as they are. First, turn off all receiver message output with the unlog command. Control commands are not case sensitive.

$command,unlog,response: OK*21

The UM982 receiver doesn’t have an Ethernet interface, but it accepts Ethernet related commands (such as config eth1 dhcp).

config eth1 dhcp
$command,config eth1 dhcp,response: OK*03

Receiver settings use the config command. Unfortunately there is no command to check all settings like log rxconfig once for NovAtel receivers.

$command,config,response: OK*54

To display a specific NMEA-0183 message, give the message name and the display time in seconds, separated by a space. For example, to display GNGGA (GNSS multi-system positioning output) messages once every 10 seconds, send gngga 10.

gngga 10
$command,gngga 10,response: OK*17

With gngga 0.05, we were able to output positioning results at a rate of 20 times per second (20 Hz).

Here, the comma-separated 7th value (GPS quality) is 1, indicating that this is the result of single point positioning.

Therefore, let’s turn on the use of SBAS (satellite based augmentation system) for aviation, which is broadcast by the quasi-zenith satellite (QZS) 3, which is a geostationary satellite.

config sbas enable msas
$command,config sbas enable msas,response: OK*7A

After a while, the GPS quality became 2 and the pseudorange differential/SBAS position was enabled. Here, MSAS (MTSAT satellite-based augmentation system) is an augmentation signal broadcast by the multi-functional transport satellite (MTSAT), which is the successor to the Japan’s meteorological satellite, Himawari. Operation of this augmentation signal has been shifted to QZS-3 in April 2020](

In addition, I tried to inject the RTCM 3 message of the RTK (realtime kinematic) reference station into this UM982 with the str2str command on this microcomputer.

str2str -in ntrip:// -out tcpcli://localhost:2001

Immediately the GPS quality was 4 and the RTK fixed ambiguity solution (centimeter order positioning) display. I’m happy to see the blue LED with the RTK stamp on the UM982 board light up.


UM982 RTK positioning

To suppress this GNGGA message display, give the unlog gngga command.

unlog gngga
$command,unlog gngga,response: OK*69

Other NMEA-0183 messages (such as travel velocity GPVTG and travel direction GPHDT) can be output in a similar manner. However, I had to say gphdt2 onchanged instead of gphdt2 1 for gphdt 1 for direction of travel. In some ways it seems to behave differently between what is described in this manual and what the UM982 does.

This manual also had a description of the receiver raw data (Unicore mode data output command). For example, versiona displays the version in ASCII format because it ends with an a, and versionb displays the version in binary format because it ends with b (the latter output garbled characters).

$command,versiona,response: OK*45
$command,versionb,response: OK*46

It can also be configured to output RTCM 3 messages to the receiver. RTCM message types (MT) 1005 (antenna info and coordinates), 1006 (antenna info, coordinates, offset), 1033 (receiver info), 1077 (GPS MSM7 pseudoranges), 1087 (GLONASS MSM7 pseudoranges), 1097 (Galileo MSM7 pseudorange), 1104 (SBAS MSM4 pseudorange, MSM7 ones were not accepted), 1117 (QZS MSM7 pseudorange), 1127 (BeiDou MSM7 pseudorange), 1019 (GPS ephemeris), 1020 (GLONASS ephemeris), 1042 (BeiDou Ephemeris), 1044 (QZS Ephemeris), 1045 (Galileo F/NAV Ephemeris), 1046 (Galileo I/NAV Ephemeris) were accepted. Since RTCM messages are in binary format, they are garbled on the console screen.

rtcm1077 10
$command,rtcm1077 10,response: OK*76
Q!=���6� ��0  o6T0O~k�o���8:ك�z����Ig���q�3 ��c�p��BT��@x�B��E>������'��R�R_|�3<�p�g��Y�X�i�Ω�@��f�<����=:��B*@��;�����O�

On the other hand, RTCM MT1230 (GLONASS L1-L2 code bias) output settings were not accepted.

rtcm1230 10
$command,rtcm1230 10,response: PARSING FAILD NO MATCHING FUNC  RTCM1230*61

The obsvm command can also output pseudoranges. Frequency (GLONASS only), PRN, pseudorange, carrier phase, standard deviation of pseudorange, standard deviation of carrier phase, Doppler frequency, value proportional to radiowave strength C/N0, continuous tracking seconds (lock time), tracking state, and CRC (cyclic redundancy check) are lined up for reception with the main antenna. For the sub-antenna, we can use obsvh command.

$command,obsvma,response: OK*5A

The command to output GPS ionospheric parameters is gpsion.

gpsiona onchanged
$command,gpsiona onchanged,response: OK*70

There are other ionospheric parameters, bdsion from BeiDou and galion from Galileo, but there seems to be no other ionospheric parameters.

Also, there seems to be no one that outputs navigation messages as they are (we cannot observe OSNMA and SSP included in Galileo’s navigation message F/NAV), but there are some that can decode ephemeris. The command to show GPS’s navigation message is gpsephemeris, gloephem for GLONASS, bdsephem for Beidou, and galephem for Galileo. For Galileo, it seems that the receiver decodes both F/NAV (free navigation) and I/NAV (integrity navigation) messages.

gpsephemerisa 10
$command,gpsephemerisa 10,response: OK*02

It’s not in the manual, but by analogy, I found a command that outputs the ephemeris of QZS. It is qzssephemeris.

qzssephemerisa 10
$command,qzssephemerisa 10,response: OK*6D

I couldn’t find a command to output NavIC’s ephemeris.

navicephema 10
$command,navicephema 10,response: PARSING FAILD NO MATCHING FUNC  NAVICEPHEMA*41
navicephemerisa 10
$command,navicephemerisa 10,response: PARSING FAILD NO MATCHING FUNC  NAVICEPHEMERISA*41
irnssephema 10
$command,irnssephema 10,response: PARSING FAILD NO MATCHING FUNC  IRNSSEPHEMA*41
irnssephemerisa 10
$command,irnssephemerisa 10,response: PARSING FAILD NO MATCHING FUNC  IRNSSEPHEMERISA*41

The positional relationship between the two antennas can be set with config heading. We can use the reset command when we want to undo all operations. The settings can be saved with saveconfig command, and the freset command can be used to restore the factory settings. This UM982 doesn’t seem to have any horrible control commands that remove some of the receiver functionality, so I’ll try it out.


I tried the Unicore Communications UM982 receiver control command. It seems that pseudoranges are output for all satellites that can be received. On the other hand, we were able to obtain navigation messages from GPS, GLONASS, Galileo, BeiDou, and QZS. I was able to output RTCM3 messages as well. We look forward to official documentation from Unicore Communications.

CQ Publishing accepts sales reservations of Septentrio’s mosaic-CLAS receiver. It is scheduled to be released on March 10, 2023. In addition to the high reliability of positioning, it is also possible to use Galileo navigation message authentication OSNMA and output raw data of navigation messages. I’m happy to see many fun GNSS receivers on the market in the last few years.

Related article(s):