How to upgrade NB-IoT Firmware?

I see that in SARA has Firmware version C10B655SP2.
However i need the newer C10B656.
I do have the tools, NUEL code loader etc.
I do follow the manual, set COM port. etc.
The codeloader start. print “Please reset the UE.”
What ever i do i never pass this point.
What i tried:

  • Shield on Arduino Leopard (with serial pass tru code)
  • Shield on Arduino Uno (direct serial to the SARA)
  • Separate serial dongel. (Pin 7 high, i do have 9600 baud communication to the SARA) Reset via bringing power down / up. Reset via Pin 7 down / up).

Do not know how to pass the the next step.

When flashing the baud rate should be set to 115200. Also check for the bootloader message in a serial terminal.

Oke, i made some major steps. (not complete yet.)

  • Connect the module to external Serial.
  • Pin 7 high (enable SARA).
  • Start the upgrade code.
  • Wait for the message… Reset the module
  • Than bring reset pin to GND. You can find the RESET ping with Jumper JP201 Label: “SARA-N2 RST On Switch”. (Do NOT reset the modul, this does not work.)
  • now the code loader should continue.

This works to load FW C10B655SP2.
How ever to load FW C10B656 this does not work, the batch file hangs somewhere in the middle. again with the announcement “Reset the module”, but what ever i try this does not work anymore.

Did someone ever made a good firmware update?
Please help to get newer FW on the board.

Where did you get the neul code loader tool?
I also need to upgrate FW version from 655SP to newer, but haven’t found the code loader tool anywhere.
Thanks in advance

The CodeLoader should come from the supplier. however Sodaq does not provide ANY support on this. I think it is a big shame on them.

PS. I was NOT able to do any upgrade on the SARA-N200 on the Sodaq board.

Hi Christiaan,

My apologies, it seems that this post was overlooked!

I’ll try to explain the steps here that we generally take to update the firmware on a SARA-N2xx (on a NB-IoT shield).

Like you mentioned, using a USB-to-Serial converter is the way to go. We’ve tried using a serial pass-through sketch, but it seems this only works with some firmware-versions and only with a 32-bits microcontroller. Instead of using separate wires to all the necessary pins of the shield, you can plug the shield into an Arduino and connect the RX, TX and the GND of the USB-to-Serial converter to the top of the shield (RX=D0, TX=D1).

The sketch on the Arduino should do the following:

  pinMode(7, OUTPUT); 
  digitalWrite(7, HIGH);
  pinMode(0, INPUT);
  pinMode(1, INPUT);

I’m setting pin 0 and 1 (serial connected to SARA-N2xx) to input, so that we’re sure it will not conflict with the serial converter. This way you should be able to start the firmware uploading process. As you also mentioned, when it requests a reset, the best way is to use a jumper wire to connect the GND to the reset-pad (TP2):

After this it should start uploading the binaries to the module. It is also important to note that for uploading B656 you need CodeLoader v2.14.0.30687 (while B655SP2 needs v2.14.0.31779).

Also, with the information above, I’m assuming you have all the necessary files from ublox (codeloader installations, firmware, UART codeloader manual, etc.). I’m unsure if we can provides these directly to our customers.

Hopefully this helps you a bit. If you still have questions, please let us know!

Code loader V2.14.0.30687 / SARA-N2xx-01B_FW_V100R100C10B656
Start Bat file --> CodeLoadSARA-01B COM14 N200

  • Reset Pin to GND
  • Waiting after “Updating Protocol Core” (“C:\Program Files (x86)\Neul\Code Loader\CodeLoader.exe” manual connected UpDateProtocol COM14 protocol.bin 155648)
  • What every i try, i do not come after this point. (Reset pin --> no luck / Power down - up --> No luck / Reset Arduino --> No luck.)
  • I see that when the unit restart, there are byte coming on the screen but never continued.

Codeloader-Erase.bat works fine. (finisched with OK)

Again same command above. --> waiting on same point.
I did “Power down - Power up” between all above. to make sure i started with a blank cycle.

Code loader V2.14.0.30687 / SARA-N2xx-01B-and-02B-B656SP2
I also recieved “SARA-N2xx-01B-and-02B-B656SP2” Firmware.
I tried to use the before (with CodeLoaderV2.14.0.31779, that did not work)
Now tried again with “Code loader V2.14.0.30687”
CodeLoadSARA-01B COM4

  • Reset Pin to GND

  • wait… wait… wait (2 or 3 minute while all kind of code runs over the screen)

  • OK !!!


                  @@@   @@@  @@
                 @@ @@   @@  @@
                @@   @@  @@ @@
                @@   @@  @@ @@
                @@   @@  @@@@
                @@   @@  @@ @@
                @@   @@  @@ @@
                 @@ @@   @@  @@
                  @@@   @@@  @@

    Press any key to continue . . .

Disconnect all.
Load “SerialPassthroughNB-IoT”
AT+CGMR --> V100R100C10B656SP2
That is GOOD !!!

at+cgsn=1				// ask for IMEI?
However this gave ERROR (it was expected a bit :-))

You need to do the following commands
at+nrb						// reboot
at+ntsetid=1,<imei>			// Set IMEI (See the SARA module, it is writen on top)
 - Should return "OK"
at+nrb						// reboot AGAIN !!
at+cgsn=1					// ask for IMEI?
 - Now you should see the IMEI.

I did not do any other testing, but for now promising.
I hope this helps other to upgrade.
I will check how / if i can link the file’s for upgrade.
for not please talk to the supplier where you got your hardware. that should be the first point to supply you with the needed firmware & tools.

With the upgrade that is working.
I used an Arduino Leonardo and the prog below.

#include "Arduino.h"
// Pin to turn on/off the nb-iot module
const int powerPin=7; 
const int RxPin=0;
const int TxPin=1;

const int ledPin =  LED_BUILTIN;      // the number of the LED pin
unsigned long previousMillis = 0;     // will store last time LED was updated
const long interval = 1000;           // interval at which to blink (milliseconds)
int ledState = LOW;                   // ledState used to set the LED

void setup() 
  // Turn the SARA module on
  pinMode(powerPin, OUTPUT); 
  digitalWrite(powerPin, HIGH);
  pinMode(RxPin, INPUT); 
  pinMode(TxPin, INPUT); 
  pinMode(ledPin, OUTPUT);

void loop() 
  unsigned long currentMillis = millis();
  if (currentMillis - previousMillis >= interval) {
    // save the last time you blinked the LED
    previousMillis = currentMillis;

    // if the LED is off turn it on and vice-versa:
    if (ledState == LOW) {
      ledState = HIGH;
    } else {
      ledState = LOW;
    // set the LED with the ledState of the variable:
    digitalWrite(ledPin, ledState);

Great to hear you got it working. Thanks for sharing your results!

1 Like

Where can i download code loader ?

Same question, where can i download ‘code loader’ ?

Hey @Kamiel_Straatman,

Did you try our support page? Follow the instructions and you will see how to do it and from where to download it.

it worked out (after a few restarts) but only with serial directly connected to module by a separate USB-serial cable. Passtrough seems no option not even with crowduino. Libs are working perfectly now

Thanks a lot!

1 Like

I received the Sodaq NB-IoT shield with V100R100C10B656 and now I am going to attempt to upgrade to 06.57, A03.02

This thread seems to imply that Passthrough with Crowduino may not work.
However, the support site ( ) seems to recommend using Passthrough.

Is it safe to assume that the site has the latest/correct information on this topic?

I have upgraded a multiple nb-iot shield with a crowduino.
Let me know if you have any issues with this board.

Thanks for that Jan. Just did the upgrade with the crowduino and it was seamless. Thanks again.

1 Like

When trying to update with the crowduino and the pass through sketch the UEUpdaterUI the always fails : Timed out trying to establish connection.

The pass through sketch works fine for sending AT commands…

Any ideas?


Try the reset pin Gregory mentioned