How to get the Ublox firmware version using Cellular.command

Hi Can anyone help me with the code of how to get the ublox firmware version from the modem ? I know there is an example of getting ICCID on Particle DOCS ,

int callbackICCID(int type, const char* buf, int len, char* iccid)
  if ((type == TYPE_PLUS) && iccid) {
if (sscanf(buf, "\r\n+CCID: %[^\r]\r\n", iccid) == 1)
  return WAIT;

void setup()
  char iccid[32] = "";
  if ((RESP_OK == Cellular.command(callbackICCID, iccid, 10000, "AT+CCID\r\n"))
    && (strcmp(iccid,"") != 0))
    Particle.publish("SIM ICCID = ", String(iccid));
    Particle.publish("SIM ICCID NOT FOUND!");

void loop()
  // your loop code

What changes need to be done in order to get the ublox firmware version of the model ?
Much appreciated !

I’d have to look it up myself, but you can download the AT commands list for your ublox module from the ublox website (BTW, you haven’t told us which Electron you are using)

Hi ScruffR ,

Thank you for your response .Since you probably aware that in the LTE version of u-blox had a TCP/IP issue with DDNS .For our IoT product we use particle E series board,and it supposed to fail when ever we send a data through TCP/IP .We informed Particle many times but they didn’t come up with a proper fix ,but later we figured out it’s the issue with U-blox and their older firmware .

U-blox fixed this issue with their new firmware which released in June 2019 .But the boards that we get from Particle still comes with the older firmware ,and some comes with the new U-blox firmware.
In this way (through Particle serial/ events )we can find the Ublox firmware version and upgrade to the new firmware using U-blox firmware upgrade tool .

I try to use the example given to get the firmware version info which the AT command for both 3G and LTE is : ATI9 ,but unable to callback the firmware version .May be it’s issue with parsing the call back value .

Appreciate if you can help me with this .
Thank you !

I’ll have a go, but what I’d do first is to purely dump the contents of buf to Serial without any additional logic (apart from checking the type and stating that via Serial and returning WAIT of course).

This will most likely be a mult part response, so you need to collect the data over multiple callbacks.

BTW, you can also have a look at this

Particularly this (which used AT+CGMR to request the firmware version)

1 Like

Thank you so much ScruffR ,I will look into that and let you know if its successful .

Thanks again ,