RTK EXPRESS PLUS: firmware updates and other issues

Hello everyone. I will try to keep a long story short.

Order #: 9544921
Purchase date: 2022-12-21
Device: SparkFun RTK Express Plus GPS-18590
RMA # 31152
Sent to SparkFun for repairs: 2023-11-13
Returned by SparkFun to incorrect mailing address: 2023-12-06

Two years ago I purchased an RTK Express Plus directly from SparkFun. It worked well for almost a year. Then the front panel power button failed, turning on the unit at random intervals. I returned it for repair or replacement under the warranty. After repair the unit was returned by SparkFun to an incorrect mailing address. I was eventually able to recover the unit after several months delay, by when the warranty period had expired.

The power button on the repaired unit worked well, but there were several new issues. Foremost among them, the unit did not detect any GNSS satellites. I also own an RTK Express which worked perfectly using the same antenna and cable as the Express Plus, while the latter, in the same location, did not detect any satellites after 15 minutes.

The original Express Plus originally came with the following firmware:

rtkIdentifier=34
rtkFirmwareVersion=v2.2-Jun 8 2022
zedFirmwareVersion=HPS 1.00

The repaired unit had been changed to:

rtkIdentifier=58
rtkFirmwareVersion=v3.10
zedFirmwareVersion=HPS 1.00

The new firmware did not allow me to change NAV message settings (such as UBX_NAV_HPPOSLLH and UBX_NAV_PVT), which I need for my application. Thinking that a firmware glitch might also be responsible for the general malfunction of the unit I attempted to re-install firmware v2.2 obtained from

using the SD Method described in

Firmware v2.2 installed without difficulty but, after reboot, the unit displays:

SparkFun
RTK
Surveyor
[note “Surveyor” not “RTK Express+”]
v2.2

followed by:

Accel
Failed

and immediately shuts down.

I then attempted to force firmware loading of v3.1 as described in the above documentation using the corresponding .bin file from the above releases page.

The unit displays:

SparkFun
RTK
Surveyor
v2.2

followed by

Firmware
Update
5%

and immediately shuts down. (The battery is fully charged.)

I realize the warranty period has long expired and I am not writing to moan, these things do happen. Under the unfortunate combination of circumstances however, I would be most grateful for any assistance to:

  1. load firmware v2.2, if possible, or another fully functional version of RTK EXPREESS PLUS firmware

  2. restore overall function of the unit

Thanks in advance!

You can install the firmware again and restore factory setting.

I would try loading 2.2 Release Fix L-Band WiFi AP Config bug · sparkfun/SparkFun_RTK_Firmware · GitHub using the SD card method and see how that goes?

Thank you both for your replies and suggestions.

How can I load (or re-load) v2.2 if the unit always shuts down a few seconds after power-on? I have tried several times with RTK_Surveyor_Firmware_v2_2.bin on the SD card and also with the same file re-named to RTK_Surveyor_Firmware_Force.bin. Neither works.

As per my original post, when powered-on without an SD card or with an SD card containing RTK_Surveyor_Firmware_v2_2.bin, the unit displays:

SparkFun
RTK
Surveyor
[note “Surveyor” not “RTK Express+”]
v2.2

followed by:

Accel
Failed

and immediately shuts down.

When powered-on with RTK_Surveyor_Firmware_Force.bin on the SD card, the unit displays:

SparkFun
RTK
Surveyor
v2.2

followed by

Firmware
Update
5%

and immediately shuts down.

I welcome further thoughts and suggestions.

That shouldn’t matter if you use the Firmware Uploader GUI. It’s worth a try.
Firmware_Uploader App

Save RTK_Surveyor_Firmware_v2_2.bin locally and point the Uploader App to that bin file.

I cant swear to you it will work, but I’ve had a RTK Express, and others, all scrambled-up several times (from purposely stress testing) and the Uploader GUI always saved them, so far.

Serial is always my first choice, but I go straight to the Uploader GUI/App if anything gets wonky with the MCU’s FW…and let the magic happen :wink:

Many thanks @rftop for your excellent advice!

Using the Firmware Uploader GUI I have been able to try various versions of firmware. That’s a big step forward but unfortunately the unit is not yet functioning properly.

With v2.2 loaded the unit displays the same messages as before (including “RTK Surveyor” instead of “RTK Express+”) and shuts down. This seems particularly odd as this was the version it ran prior to being sent in for repair of the front panel button.

With version 3.3 loaded the unit displays “RTK Express+”, boots properly, stays on, and allows setting of the UBX_NAV messages I need. It does not however pick up any GNSS satellites. I reset to factory settings using the serial interface but this made no difference.

This is the SFE_Express_Plus_Settings_0.txt file which the unit writes to the SD card when booted with v3.3:

sizeOfSettings=5456
rtkIdentifier=51
rtkFirmwareVersion=v3.3-Mar 11 2023
zedFirmwareVersion=HPS 1.00
printDebugMessages=0
enableSD=1
enableDisplay=1
maxLogTime_minutes=1440
maxLogLength_minutes=1440
observationSeconds=60
observationPositionAccuracy=5.00
fixedBase=0
fixedBaseCoordinateType=0
fixedEcefX=-1280206.568
fixedEcefY=-4716804.403
fixedEcefZ=4086665.484
fixedLat=40.090294790
fixedLong=-105.185057610
fixedAltitude=1560.0890
dataPortBaud=230400
radioPortBaud=57600
surveyInStartingAccuracy=1.0
measurementRate=250
navigationRate=1
enableI2Cdebug=0
enableHeapReport=0
enableTaskReports=0
dataPortChannel=0
spiFrequency=16
sppRxQueueSize=2048
sppTxQueueSize=512
dynamicModel=0
lastState=0
enableSensorFusion=0
autoIMUmountAlignment=1
enableResetDisplay=0
enableExternalPulse=1
externalPulseTimeBetweenPulse_us=900000
externalPulseLength_us=100000
externalPulsePolarity=1
enableExternalHardwareEventLogging=0
profileName=Profile1
enableNtripServer=0
ntripServer_StartAtSurveyIn=0
ntripServer_CasterHost=rtk2go.com
ntripServer_CasterPort=2101
ntripServer_CasterUser=test@test.com
ntripServer_CasterUserPW=
ntripServer_MountPoint=bldr_dwntwn2
ntripServer_MountPointPW=WR5wRo4H
enableNtripClient=0
ntripClient_CasterHost=rtk2go.com
ntripClient_CasterPort=2101
ntripClient_CasterUser=test@test.com
ntripClient_CasterUserPW=
ntripClient_MountPoint=bldr_SparkFun1
ntripClient_MountPointPW=
ntripClient_TransmitGGA=1
serialTimeoutGNSS=1
pointPerfectDeviceProfileToken=
enablePointPerfectCorrections=1
autoKeyRenewal=1
pointPerfectClientID=
pointPerfectBrokerHost=
pointPerfectLBandTopic=
pointPerfectCurrentKey=
pointPerfectCurrentKeyDuration=0
pointPerfectCurrentKeyStart=0
pointPerfectNextKey=
pointPerfectNextKeyDuration=0
pointPerfectNextKeyStart=0
lastKeyAttempt=0
updateZEDSettings=0
LBandFreq=1556290000
enableLogging=1
timeZoneHours=0
timeZoneMinutes=0
timeZoneSeconds=0
enablePrintWifiIpAddress=1
enablePrintState=0
enablePrintWifiState=0
enablePrintNtripClientState=0
enablePrintNtripServerState=0
enablePrintPosition=0
enableMarksFile=0
enablePrintBatteryMessages=1
enablePrintRoverAccuracy=1
enablePrintBadMessages=0
enablePrintLogFileMessages=0
enablePrintLogFileStatus=1
enablePrintRingBufferOffsets=0
enablePrintNtripServerRtcm=0
enablePrintNtripClientRtcm=0
enablePrintStates=1
enablePrintDuplicateStates=0
radioType=0
espnowPeerCount=0
enableRtcmMessageChecking=0
bluetoothRadioType=0
enableTcpClient=0
enableTcpServer=0
espnowBroadcast=1
antennaHeight=0
antennaReferencePoint=0.00
echoUserInput=1
uartReceiveBufferSize=2048
gnssHandlerBufferSize=4096
enablePrintBufferOverrun=0
forceResetOnSDFail=0
wifiNetwork0SSID=
wifiNetwork0Password=
wifiNetwork1SSID=
wifiNetwork1Password=
wifiNetwork2SSID=
wifiNetwork2Password=
wifiNetwork3SSID=
wifiNetwork3Password=
wifiConfigOverAP=1
wifiTcpPort=2947
minElev=10
constellation.GPS=1
constellation.SBAS=1
constellation.Galileo=1
constellation.BeiDou=1
constellation.QZSS=1
constellation.GLONASS=1
message.UBX_NMEA_DTM.msgRate=0
message.UBX_NMEA_GBS.msgRate=0
message.UBX_NMEA_GGA.msgRate=1
message.UBX_NMEA_GLL.msgRate=0
message.UBX_NMEA_GNS.msgRate=0
message.UBX_NMEA_GRS.msgRate=0
message.UBX_NMEA_GSA.msgRate=1
message.UBX_NMEA_GST.msgRate=1
message.UBX_NMEA_GSV.msgRate=4
message.UBX_NMEA_RMC.msgRate=1
message.UBX_NMEA_VLW.msgRate=0
message.UBX_NMEA_VTG.msgRate=0
message.UBX_NMEA_ZDA.msgRate=0
message.UBX_NAV_ATT.msgRate=0
message.UBX_NAV_CLOCK.msgRate=0
message.UBX_NAV_DOP.msgRate=0
message.UBX_NAV_EOE.msgRate=0
message.UBX_NAV_GEOFENCE.msgRate=0
message.UBX_NAV_HPPOSECEF.msgRate=0
message.UBX_NAV_HPPOSLLH.msgRate=0
message.UBX_NAV_ODO.msgRate=0
message.UBX_NAV_ORB.msgRate=0
message.UBX_NAV_POSECEF.msgRate=0
message.UBX_NAV_POSLLH.msgRate=0
message.UBX_NAV_PVT.msgRate=0
message.UBX_NAV_RELPOSNED.msgRate=0
message.UBX_NAV_SAT.msgRate=0
message.UBX_NAV_SIG.msgRate=0
message.UBX_NAV_STATUS.msgRate=0
message.UBX_NAV_SVIN.msgRate=0
message.UBX_NAV_TIMEBDS.msgRate=0
message.UBX_NAV_TIMEGAL.msgRate=0
message.UBX_NAV_TIMEGLO.msgRate=0
message.UBX_NAV_TIMEGPS.msgRate=0
message.UBX_NAV_TIMELS.msgRate=0
message.UBX_NAV_TIMEUTC.msgRate=0
message.UBX_NAV_VELECEF.msgRate=0
message.UBX_NAV_VELNED.msgRate=0
message.UBX_RXM_MEASX.msgRate=0
message.UBX_RXM_RAWX.msgRate=0
message.UBX_RXM_RLM.msgRate=0
message.UBX_RXM_RTCM.msgRate=0
message.UBX_RXM_SFRBX.msgRate=0
message.UBX_MON_COMMS.msgRate=0
message.UBX_MON_HW2.msgRate=0
message.UBX_MON_HW3.msgRate=0
message.UBX_MON_HW.msgRate=0
message.UBX_MON_IO.msgRate=0
message.UBX_MON_MSGPP.msgRate=0
message.UBX_MON_RF.msgRate=0
message.UBX_MON_RXBUF.msgRate=0
message.UBX_MON_RXR.msgRate=0
message.UBX_MON_TXBUF.msgRate=0
message.UBX_TIM_TM2.msgRate=0
message.UBX_TIM_TP.msgRate=0
message.UBX_TIM_VRFY.msgRate=0
message.UBX_RTCM_1005.msgRate=0
message.UBX_RTCM_1074.msgRate=0
message.UBX_RTCM_1077.msgRate=0
message.UBX_RTCM_1084.msgRate=0
message.UBX_RTCM_1087.msgRate=0
message.UBX_RTCM_1094.msgRate=0
message.UBX_RTCM_1097.msgRate=0
message.UBX_RTCM_1124.msgRate=0
message.UBX_RTCM_1127.msgRate=0
message.UBX_RTCM_1230.msgRate=0
message.UBX_RTCM_4072_0.msgRate=0
message.UBX_RTCM_4072_1.msgRate=0
message.UBX_ESF_MEAS.msgRate=0
message.UBX_ESF_RAW.msgRate=0
message.UBX_ESF_STATUS.msgRate=0
message.UBX_ESF_ALG.msgRate=0
message.UBX_ESF_INS.msgRate=0
messageBase.UBX_RTCM_1005Base.msgRate=1
messageBase.UBX_RTCM_1074Base.msgRate=1
messageBase.UBX_RTCM_1077Base.msgRate=0
messageBase.UBX_RTCM_1084Base.msgRate=1
messageBase.UBX_RTCM_1087Base.msgRate=0
messageBase.UBX_RTCM_1094Base.msgRate=1
messageBase.UBX_RTCM_1097Base.msgRate=0
messageBase.UBX_RTCM_1124Base.msgRate=1
messageBase.UBX_RTCM_1127Base.msgRate=0
messageBase.UBX_RTCM_1230Base.msgRate=10
messageBase.UBX_RTCM_4072_0Base.msgRate=0
messageBase.UBX_RTCM_4072_1Base.msgRate=0

The following questions therefore come to mind:

@TS-Russell, would you be able to look through your files to see if you have a version of RTK_Surveyor_Firmware_v2_2.bin tested on an Express Plus, just in case the one in Releases · sparkfun/SparkFun_RTK_Firmware · GitHub is corrupt or incorrect?

Is rtkFirmwareVersion 3.3 compatible with zedFirmwareVersion HPS 1.00?

Following an extended period without use and in a completely different part of the world, what is the maximum time to wait before the unit should start picking up satellites?

Thanks to everyone for helping me work through this.

Hi @rku - My apologies for all the hassle! This is very indicative of a failed accelerometer. We stopped producing units with accelerometers quite awhile ago, but you seem to have gotten an unfortunate unit. If I may ask you to return it, we will immediately replace it once we’ve received it.

1 Like

Thanks for your reply @sparky and the apology. I likewise appreciate your kind offer of a replacement unit. Allow me to update you on developments since my last post.

Having been unable to get the unit to receive GNSS signals by trying various versions of the firmware, I took a different approach. Testing the voltage across antenna connector shroud and center pin, I got 0.005V instead of the 3.3V that should have been there. So I took the unit to a local electronics technician to look for a discontinuity in the antenna circuit. He found a burnt resistor (sorry, not sure which one) , replaced it, and the unit now receives satellites perfectly. So that explains one of the issues.

Regarding the firmware, v2.2 still does not work and displays the “Accel Failed” message on power-up and then immediately shuts down. v3.1 (as well as various other versions) power-up correctly but do not allow me to set the UBX_NAV messages I need using serial configuration. A development version of v3.3 (RTK_Surveyor_Firmware_RC-Mar_11_2023.bin) does allow me to set these messages and, after initial testing, seems to work correctly overall.

So at least I am now up and running but it’s all a bit odd, don’t you think? The burnt resistor could be the result of the repair process for the malfunctioning power button and v2.2 firmware on the the releases page might not be exactly the same as what the unit was running when I first purchased it in 2022.

What do you make of all this?

We have seen that issue before: it was a broken inductor that feeds 3.3V DC into the antenna. I own your local repair person quite a gift! Nice fix!

The inductor likely failed because of thermal expansion of the PCB or shock. It could not have failed due to firmware or the power button.

Please use firmware v4.1. It should allow you to modify the more recent UBX messages.

More generally the ZED-F9R / HPS firmware’s can’t output RTCM3, or act as a Base Station.

Of inductors, seem to recall having a lot of problem with Coilcraft parts, to the point manufacturing (mine) want to use Murata.

Plus they obviously want to act as fuses at shorting currents…

Thanks for the latest posts. @sparky I will pass your congratulations along to Kevin, the technician who identified the damaged component. The overall picture is now starting to make more sense.

One more question. Is rtkFirmware v4.1 compatible with
zedFirmware HPS 1.00 or does the latter need to be updated first? Having arrived at a reasonably stable working configuration, you will understand that I am reluctant to make further changes for the time being.