This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Bad NB-IoT signal strength in UK

Hi!

    We are developing a board with nRF9160 and want to use it on NB-IoT mode.

    The development is made in Romania, Cluj-Napoca and here we have no problem with it. Even at -120 dBm we can connect to the network and change data with our UK server. Here we usually have -80 dBm inside the building and everything works just fine. We use a Vodafone UK SIM in Romania with the roamin enabled.

    When we try to use the same hardware and software in UK things start changing. Inside the building (in central London), it never connects to the network. Outside things are better, but only when we have a straight line to the signal towers. But when this happen RSSI is very good, like -54 dBm. It is a strange behavior because for example, once we had -65 dBm near a building, but when we cross the corner it disconnected and never connected again in that spot, like the building absorbed all the signal from the cellular tower. The same behavior resulted when tested in Liverpool.

    I should tell that Vodafone Romania used B20 for NB-IoT and Vodafone UK use B8 and B20 for NB-IoT according with this website https://halberdbastion.com/technology/iot/iot-protocols/nb-iot-lte-cat-nb1.

    Also I will post few AT commands and the answers here just to clarify some things.

                          SENT: AT%XCBAND=?
                          %XCBAND: (1,2,3,4,5,8,12,13,17,19,20,25,26,28,66)

                          SENT: AT%XDATAPRFL?
                          %XDATAPRFL: 4

                          SENT: AT%XSYSTEMMODE?
                          %XSYSTEMMODE: 0,1,0,0

     Vodefone UK recommended us to enable deep search using AT%XDEEPSEARCH=1, but with no changes (I don't understand exactly if we should enable it or not). Also they told us to search for neighbor networks using AT%NBRGRSRP, but from what I see this works only after a connection with the tower was established and we can't connect. Also when calling AT%COPS=? and the network mode is set to NB-IoT we get no results, or maybe sometime +CEREG: 2,"FFFE","FFFFFFFF",9,0,0,"11100000","11100000" is returned. When I send this command (AT%COPS=?) in Romania even without the SIM, it finds Vodafone. If we change to LTE-M in London and use AT%COPS=? a network is returned which I think is O2, but not sure because we are interested mainly on NB-IoT.

    The hardware was reviewed by an engineer on DevZone and he found no problem. And we tested this with few external antennas and one chip antenna with the same results. Also nRF9160 DK is unable to connect to network when using the AT firmware and last modem firmware.

     I hope we are setting something bad otherwise we should change the chip and this will cost us a lot because we already developed the code for this in Romania where everything worked fine, but the client is from UK.

     Today I will test the board in different places in Cluj-Napoca just to eliminate the possibility that our office is placed very favorable and I will write a comment here if something is getting bad in Romania too.

     Is there anyone that had the same problem? We done a lots of tests and we found nothing.

Thank you!

    

Parents Reply Children
  • Hm, why are there multiple HEX files in the "File memory layout"? Did you make sure to remove the HEX file already in that space before adding the new one? 

  • Hi! I didn't removed the file that's why programmer looked so strange and I supposed it is the problem. But anyway when I flash with version 1.3.0 after I add the file you specified to the project i receive this on the terminal.

    *** Booting Zephyr OS build v2.1.99-ncs1  ***
    [00:00:00.002,593] [1B][0m<inf> mcuboot: Starting bootloader[1B][0m
    [00:00:00.008,300] [1B][0m<inf> mcuboot: Primary image: magic=unset, swap_type=0x1, copy_done=0x3, image_ok=0x1[1B][0m
    [00:00:00.017,578] [1B][0m<inf> mcuboot: Boot source: none[1B][0m
    [00:00:00.022,521] [1B][1;33m<wrn> mcuboot: Failed reading image headers; Image=0[1B][0m
    [00:00:00.029,357] [1B][1;31m<err> mcuboot: Unable to find bootable image[1B][0m
    
    And this is how it looks on the programer when i add merged.hex file.

    This is also the second flash:

    *** Booting Zephyr OS build v2.1.99-ncs1  ***
    [00:00:00.002,593] [1B][0m<inf> mcuboot: Starting bootloader[1B][0m
    [00:00:00.008,300] [1B][0m<inf> mcuboot: Primary image: magic=unset, swap_type=0x1, copy_done=0x3, image_ok=0x1[1B][0m
    [00:00:00.017,578] [1B][0m<inf> mcuboot: Boot source: none[1B][0m
    [00:00:00.022,552] [1B][1;33m<wrn> mcuboot: Failed reading image headers; Image=0[1B][0m
    [00:00:00.029,388] [1B][1;31m<err> mcuboot: Unable to find bootable image[1B][0m
    
    Or I should not flash the firmware after I add the file and it is only for FOTA?

    If i delete pm_static I get a undeclared macro even if before adding this file everything worked.

    I might do something wrong, but I really hope I can switch to 1.3.0 and be able to do FOTA on the older devices.

  • Hi, I'm a little confused. 

    You said you were updating the firmware OTA, but you are using the Programmer application and flashing directly to the board? 

    What happens when you try to update via FOTA?

  • Hi,

    I want to update OTA, but I also need to develop the app on 1.3.0 and be able to flash the board from Segger using the programmer and it doesn't work with the new layout.

    I tried to update OTA and it seems to work, but as long as pm_static file is in the project, I can't work on the development. Is there a way to keep the same flash layout for 1.3.0. or I should remove pm_static when I develop with 1.3.0 then add it back to build for FOTA file. It means, I should target separately the devices on the field that were flashed with 1.2.0 layout and I can't flash with the same layout the new devices as long as pm_static works only for app_update.hex.

    I think that after I add pm_static it builds without bootloader.

    This is what I receive after flashing with pm_static in the folder. If i remove it ,restart the project and flash, it works.

    *** Booting Zephyr OS build v2.3.0-rc1-ncs1  ***
    [00:00:00.002,838] [1B][0m<inf> mcuboot: Starting bootloader[1B][0m
    [00:00:00.008,514] [1B][0m<inf> mcuboot: Primary image: magic=good, swap_type=0x2, copy_done=0x1, image_ok=0x1[1B][0m
    [00:00:00.017,761] [1B][0m<inf> mcuboot: Boot source: none[1B][0m
    [00:00:00.022,827] [1B][0m<inf> mcuboot: Swap type: none[1B][0m
    [00:00:00.221,893] [1B][0m<inf> mcuboot: Bootloader chainload address offset: 0xc000[1B][0m
    [00:00:00.229,003] [1B][0m<inf> mcuboot: Jumping to the first image slot[1B][0m
    [00:00:00.235,107] [1B][1;31m<err> mcuboot: Protect mcuboot flash failed, cancel startup.[1B][0m

    Thank you!

  • AndreiBaciu said:
    Is there a way to keep the same flash layout for 1.3.0. or I should remove pm_static when I develop with 1.3.0 then add it back to build for FOTA file.

     Do the latter. Remove the file when developing and add it back when you want to build for the FOTA file. 

Related