Skip to content

How-To Guides

Practical step-by-step instructions for common RTK Base operations using the REST and MQTT APIs.


Update Firmware over 4G (MQTT)

When the RTK Base is connected via 4G and HTTP access is not available, firmware updates can be triggered over MQTT using the generic command topic.

Command:

aws_pub -t "base/EURB1000066/cmd" -m '{"cmd_type":"updateBase","cmd_param":{"url":"http://base-update.yamabiko.eu/static/3.0.20.bin"}}'

What happens:

  1. The base downloads the firmware from the provided URL
  2. Progress can be monitored via base/{SN}/info or GET /get-info under base.update
  3. The base automatically reboots into the new firmware after a successful download and verification

Check update status:

# Via MQTT
aws_pub -t "base/EURB1000066/info/get" -n
# Response on: base/EURB1000066/info

Change SVIN to Manual and Set XYZ

Switch the reference position source from survey-in to manual, and provide fixed ECEF coordinates.

Via REST

curl 192.168.4.1/change --data '{
  "gnss-ref-chosen": "manual",
  "gnss-ref-manual-x": 4027734.8896,
  "gnss-ref-manual-y": 323515.0065,
  "gnss-ref-manual-z": 4918530.3819,
  "gnss-ref-manual-acc": 0.5000
}'

Via MQTT

# Send configuration change
aws_pub -t "base/EURB1000066/change/post" -m '{
  "gnss-ref-chosen": "manual",
  "gnss-ref-manual-x": 4027734.8896,
  "gnss-ref-manual-y": 323515.0065,
  "gnss-ref-manual-z": 4918530.3819,
  "gnss-ref-manual-acc": 0.5000
}'

# Wait for response on: base/EURB1000066/change/resp
# Expected: {"result":"ok","leftover":{}}

Field reference:

Field Type Description
gnss-ref-chosen string Set to "manual" to use manual reference
gnss-ref-manual-x float X coordinate (ECEF, meters)
gnss-ref-manual-y float Y coordinate (ECEF, meters)
gnss-ref-manual-z float Z coordinate (ECEF, meters)
gnss-ref-manual-acc float Accuracy estimate (meters)

Verify the change:

# Check gnss.ref.chosen is now "manual"
curl 192.168.4.1/get-info | jq '.gnss.ref'

Change 4G Operator

Manually select a mobile network operator when the base is equipped with a 4G modem.

Step 1: Scan for available operators

aws_pub -t "base/EURB1000066/cmd" -m "mobile-scan"

Wait approximately 200 seconds for the scan to complete. You will loose communication during this time

Step 2: Retrieve scan results

aws_pub -t "base/EURB1000066/info/get" -n

Read the response on base/EURB1000066/info and locate the modem.scan section:

{
  "modem": {
    "scan": [
      {"plmn": 20601, "name": "Proximus", "act": 258},
      {"plmn": 20610, "name": "Orange B", "act": 258},
      {"plmn": 20620, "name": "BASE", "act": 258},
      {"plmn": 20612, "name": "206 12", "act": 256}
    ]
  }
}

Fields:

  • plmn: Public Land Mobile Network code (use this to select)
  • name: Human-readable operator name
  • act: Access technology (256 = GSM, 258 = LTE) (!! Bitmask)

Step 3: Select the desired operator

aws_pub -t "base/EURB1000066/change/post" -m '{"mobile-operator":20601}'

Response on base/EURB1000066/change/resp:

{"result": "ok"}

Alternative: Via REST

# Trigger scan
curl -X POST "192.168.4.1/system?mobile-scan"

# Wait ~200 seconds, then get info
curl 192.168.4.1/get-info | jq '.modem.scan'

# Select operator
curl 192.168.4.1/change --data '{"mobile-operator":20601}'

Quick Reference

Operation REST MQTT
Update firmware POST /system?firmware=URL or POST /update-firmware?esp base/{SN}/cmd with {"cmd_type":"updateBase",...}
Change SVIN to manual POST /change with gnss-ref-chosen=manual and XYZ base/{SN}/change/post with same JSON
Scan operators POST /system?mobile-scan base/{SN}/cmd with "mobile-scan"
Select operator POST /change with {"mobile-operator":PLMN} base/{SN}/change/post with same JSON

For the complete list of configuration fields, see the REST API reference. For the full topic listing, see the MQTT API reference.