Programming problems with RTK Express via Arduino IDE

I’m attempting to modify the firmware of my RTK express to run moving base more easily, and I’m hitting some roadblocks with regards to programming. Namely, the device totally fails to self-configure on power on after I program from the IDE.

Because I ran in to problems with my modified code, I re-downloaded the code repository and have attempted to program the most recent version of the code base, only modifying the version number (so I can verify that my firmware was uploaded) in order to rule out problems with my code itself blocking configuration. As far as I can tell, even with a fresh code base I am unable to get the device to configure on power on after programming from the IDE.

When I program from the CLI using the provided .bin files on Github, I have no problem, but if I export the un-modified code from the IDE as a .bin, I have the same problem.

Below is my board configuration in the IDE:

https://i.imgur.com/sB7Z3mW.png

I do get a number of warnings while compiling, none of which seem fatal:

WARNING: library JC_Button claims to run on avr architecture(s) and may be incompatible with your current board which runs on esp32 architecture(s).
In file included from C:\Repos\sparkfunRTKfirmware\SparkFun_RTK_Firmware-main\Firmware\RTK_Surveyor\RTK_Surveyor.ino:121:
C:\Users\tksullivanpeters\Documents\Arduino\libraries\SdFat\src/SdFat.h:438:2: warning: #warning File not defined because __has__include(FS.h) [-Wcpp]
 #warning File not defined because __has__include(FS.h)
  ^~~~~~~
In file included from C:\Users\tksullivanpeters\Documents\Arduino\libraries\ESPAsyncWebServer-master\src/ESPAsyncWebServer.h:27,
                 from C:\Repos\sparkfunRTKfirmware\SparkFun_RTK_Firmware-main\Firmware\RTK_Surveyor\RTK_Surveyor.ino:301:
C:\Users\tksullivanpeters\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.2\libraries\FS\src/FS.h:30: warning: "FILE_READ" redefined
 #define FILE_READ       "r"
 
In file included from C:\Users\tksullivanpeters\Documents\Arduino\libraries\SdFat\src/ExFatLib/ExFatFile.h:821,
                 from C:\Users\tksullivanpeters\Documents\Arduino\libraries\SdFat\src/ExFatLib/ExFatVolume.h:27,
                 from C:\Users\tksullivanpeters\Documents\Arduino\libraries\SdFat\src/ExFatLib/ExFatLib.h:27,
                 from C:\Users\tksullivanpeters\Documents\Arduino\libraries\SdFat\src/SdFat.h:33,
                 from C:\Repos\sparkfunRTKfirmware\SparkFun_RTK_Firmware-main\Firmware\RTK_Surveyor\RTK_Surveyor.ino:121:
c:\users\tksullivanpeters\documents\arduino\libraries\sdfat\src\common\arduinofiles.h:31: note: this is the location of the previous definition
 #define FILE_READ O_RDONLY
 
In file included from C:\Users\tksullivanpeters\Documents\Arduino\libraries\ESPAsyncWebServer-master\src/ESPAsyncWebServer.h:27,
                 from C:\Repos\sparkfunRTKfirmware\SparkFun_RTK_Firmware-main\Firmware\RTK_Surveyor\RTK_Surveyor.ino:301:
C:\Users\tksullivanpeters\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.2\libraries\FS\src/FS.h:31: warning: "FILE_WRITE" redefined
 #define FILE_WRITE      "w"
 
In file included from C:\Users\tksullivanpeters\Documents\Arduino\libraries\SdFat\src/ExFatLib/ExFatFile.h:821,
                 from C:\Users\tksullivanpeters\Documents\Arduino\libraries\SdFat\src/ExFatLib/ExFatVolume.h:27,
                 from C:\Users\tksullivanpeters\Documents\Arduino\libraries\SdFat\src/ExFatLib/ExFatLib.h:27,
                 from C:\Users\tksullivanpeters\Documents\Arduino\libraries\SdFat\src/SdFat.h:33,
                 from C:\Repos\sparkfunRTKfirmware\SparkFun_RTK_Firmware-main\Firmware\RTK_Surveyor\RTK_Surveyor.ino:121:
c:\users\tksullivanpeters\documents\arduino\libraries\sdfat\src\common\arduinofiles.h:35: note: this is the location of the previous definition
 #define FILE_WRITE (O_RDWR | O_CREAT | O_AT_END)

Here is the serial port output from my Express after programing on power-on. Note that the FW version is 20.20, that’s the only thing I changed, again so I could identify that the code was correctly uploaded. I do not have an SD card installed, so I think the SD failures aren’t a concern, so I think my problems start when it gets to “Disable Survey Failed.” This seems to be in response to a failed call to disableSurveyMode() in one of the initial configuration functions. I believe disableSurveyMode() is a function from the SparkFun ublox GNSS library. Could this be a library installation issue? I’m on library version 2.2.8.

ZED-F9P firmware: HPG 1.12

SparkFun RTK Express v20.20-Apr  8 2022
SD init failed. Trying again 1 out of 1

SD init failed. Is card present? Formatted?
Settings are not valid for this variant of RTK Express. Default settings applied.

Config file read failed: SD offline
MAX17048 configuration complete
Batt (98%): Voltage: 4.20V Charging: 11.44%/hr Green

Disable Survey failed
getPortSettings failed
getPortSettings failed
Get Constellation failed
Constellation setting failed
Get Constellation failed
Get Constellation failed
getMessageSetting failed: Class-0xF0 ID-0x01

getMessageSetting failed: Class-0x01 ID-0x22

getMessageSetting failed: Class-0x01 ID-0x34

getMessageSetting failed: Class-0x01 ID-0x3C

getMessageSetting failed: Class-0x01 ID-0x24

getMessageSetting failed: Class-0x02 ID-0x14

getMessageSetting failed: Class-0x0A ID-0x36

getMessageSetting failed: Class-0x0D ID-0x06

getMessageSetting failed: Class-0xF5 ID-0x4D

getMessageSetting failed: Class-0xF5 ID-0x7C

getNMEASettings failed
getNMEASettings failed
getNMEASettings failed
getNMEASettings failed
getNMEASettings failed
getNMEASettings failed
Module failed initial config.
Module failed to save.
Failed to configure module. Trying again.
Disable Survey failed
getPortSettings failed
Get Constellation failed
Get Constellation failed
Get Constellation failed
Get Constellation failed
getMessageSetting failed: Class-0xF0 ID-0x0A

getMessageSetting failed: Class-0xF0 ID-0x06

getMessageSetting failed: Class-0xF0 ID-0x03

getMessageSetting failed: Class-0x01 ID-0x22

getMessageSetting failed: Class-0x01 ID-0x14

getMessageSetting failed: Class-0x01 ID-0x43

getMessageSetting failed: Class-0x01 ID-0x20

getMessageSetting failed: Class-0x02 ID-0x14

getMessageSetting failed: Class-0x0A ID-0x09

getMessageSetting failed: Class-0x0A ID-0x21

getMessageSetting failed: Class-0xF5 ID-0x54

getMessageSetting failed: Class-0xF5 ID-0x7F

getNMEASettings failed
getNMEASettings failed
getNMEASettings failed
Module failed initial config.
Module failed to save.
GNSS Error: Failed to configure module. Press 'r' to factory reset.
No user input received.

Any assistance is greatly appreciated!

Does the same error appear with an SD card inserted?

Just tried this with a fresh SD card and it still fails, but it fails slightly later in the configuration procedure. I hadn’t thought to do that until now, thanks for the input.

It looks like it’s successfully performing the first couple of GNSS configurations, but then failing once it tries to check the port settings. I will try to add some debug printing to determine where exactly it’s failing and report back.

SparkFun RTK Express v20.20-Apr  8 2022
microSD online
Settings are not valid for this variant of RTK Express. Default settings applied.

MAX17048 configuration complete
Batt (85%): Voltage: 4.19V Charging: 10.82%/hr Green

getPortSettings failed
getPortSettings failed
getPortSettings failed
Get Constellation failed
Constellation setting failed
Get Constellation failed
Get Constellation failed
Set Constellation failed
getMessageSetting failed: Class-0x01 ID-0x04

getMessageSetting failed: Class-0x01 ID-0x11

getSerialRate failed
Updating UART2 rate
Module failed initial config.
Module failed to save.
Failed to configure module. Trying again.
Set rate failed
Disable Survey failed
getPortSettings failed
Get Constellation failed
Set Constellation failed
Get Constellation failed
Get Constellation failed
getMessageSetting failed: Class-0xF0 ID-0x09

getMessageSetting failed: Class-0xF0 ID-0x08

Module failed initial config.
Module failed to save.
GNSS Error: Failed to configure module. Press 'r' to factory reset.
No user input received.
GNSS Error: Failed to configure module. Press 'r' to factory reset.
No user input received.

It might also be worth trying to input ‘r’ and perform a factory reset @ that last step in the log

Sorry, I should have mentioned, I have tried that with no luck! I will post the logs of what happens when I get to my PC later. Thanks again!

Here’s the logs after I run a factory reset. After it gets to the bottom of the output here, it just sits there indefinitely.

GNSS Error: Failed to configure module. Press 'r' to factory reset.
No user input received.
GNSS Error: Failed to configure module. Press 'r' to factory reset.
No user input received.
GNSS Error: Failed to configure module. Press 'r' to factory reset.

Resetting to factory defaults. Press 'y' to confirm:
Settings erased successfully. Rebooting. Good bye!
ets Jul 29 2019 12:21:46

rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0030,len:1324
ho 0 tail 12 room 4
load:0x40078000,len:13508
load:0x40080400,len:3604
entry 0x400805f0

An update and a new symptom:

I may have been mistaken that things were programming properly before via the .bin files. Now when I program from the command line using an un-modified .bin from Github, my device powers on, shows the splash screen, and then immediately jumps to show “Error: Display.” I don’t see any output on the serial port in this state.

Looking at the code, this seems to indicate that it does not have a properly configured state on power on. I’m wondering if somehow my modified code put things into a bad state that even re-programming has not been able to resolve? Currently investigating down that path.

Re-programming via the Arduino IDE returns me to my previously-described bad state.

I’ve spent the better part of the day debugging this and I think I know the source of my problem, but not how to solve it. It seems as if there’s an issue with my I2C interface.

A symptom I forgot to mention here is that when I program via the IDE, my OLED display does not come up correctly and instead just displays random dots. I can’t get it to display anything else. The code, however, all seems to be executing correctly. If I’m not mistaken, the OLED display is controlled by I2C.

I’m still getting failure warnings when I get to my GNSS configuration which is also performed over I2C. I enabled verbose debugging on the I2C bus and get a lot of errors shown below:

Failed to configure module. Trying again.
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
Checksum failed: checksumA: 0 checksumB: 216 rollingChecksumA: 2 rollingChecksumB: 37
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
Checksum failed: checksumA: 44 checksumB: 48 rollingChecksumA: 154 rollingChecksumB: 159
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
Checksum failed: checksumA: 48 checksumB: 44 rollingChecksumA: 70 rollingChecksumB: 183
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
Checksum failed: checksumA: 0 checksumB: 0 rollingChecksumA: 149 rollingChecksumB: 119
Disable Survey failed
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
getPortSettings failed
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
getPortSettings failed
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
Get Constellation failed
Set Constellation failed
getMessageSetting failed: Class-0xF0 ID-0x0A

getMessageSetting failed: Class-0xF0 ID-0x00

checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
Checksum failed: checksumA: 48 checksumB: 44 rollingChecksumA: 66 rollingChecksumB: 199
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
checkUbloxI2C: I2C error: requestFrom 0xFD returned 0
getMessageSetting failed: Class-0xF0 ID-0x01

I need to dive further into the library being used here as well as the Ublox module spec, but I feel confident this is the source of my problem, I’m just not sure what’s caused it. Again, I’m programming with basically un-modified code downloaded from GitHub.

I have tentatively solved my problem, though I’m not sure exactly why what I did solved it.

After banging my head against this yesterday, I erased the flash on my Express this morning and downloaded a fresh copy of the repo from GitHub (v1.11). After updating all my libraries , I compiled and flashed and everything worked as expected!

The only thing I can see that’s different is the library driving the OLED display. The previous version I had was using SFE_MicroOLED.h, this newer version is using SparkFun_Qwiic_OLED.h. Not sure of the differences, but since part of my problem was related to my display I assume this is at least part of my solution.

I’ll now proceed with modifying my firmware again and see if I break everything again!