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

NRF9160 DK geolocation through LTE

Hey NordicSemi.
In my new project, I use DK NRF9160 and I need to determine the location. Since hardware GPS does not work, I decided to use the detection of coordinates through LTE towers.
Used of at_client and LTE Link Monitor, I received coordinates, which have an error of 500 meters.
But I need to know more precisely the position of my device.
When reading your documentation, I realized that this can be done with the command AT% NBRGRSRP.
Could you tell me how I can use the data that I receive in response to this command in conjunction with http://locationapi.org?

I tried the AT%NBRGRSRP command and got this result...
%NBRGRSRP: 334,5815,47,380,5815,38,488,5815,38,17,5815,36

http://locationapi.org for 4 LTE towers has next format:
{
"token": "XXXXXXXXXXXXX",
"radio": "lte",
"mcc": AAA,
"mnc": BBB,
"cells": [{
"lac": CCC,
"cid": DDD
}, {
"lac": EEE,
"cid": FFF
}, {
"lac": GGG,
"cid": KKK
}, {
"lac": LLL,
"cid": MMM
}],
"address": 1
}

Parents
  • I believe the MCC & the MNC can be found via the %XOPNAME AT command in the <oper> field. In the example given in the AT command documentation, the MCC is 3 digits & the MNC is 2 or 3 digits long. In the example given in the AT commands document (i.e. 556776), I believe the MCC is 556 & the MNC is 776. Take a look at the link monitor app to confirm this.

    The LAC is the area code, which is +47 for Norway for example (i.e. I think you can just input the number without the + sign).

    The CID should be the different cell IDs you receive from the NBRGRSRP command (i.e. <cellID>1, <cellID>2, etc). 

    This below may also be helpful:

    I believe the testing method should be very similar to the one for finding "1 Cell Tower".

    1) Sign up for the free trial here.

    2) Once you have completed the registration, you should receive your own Location API token. It should be the same token that you sign in with to the service.

    3) Try putting that token in the field here in the Link Monitor app:

    I am not sure whether you need "pk." in front or not. So try both pk.token value or just the token value. If your token were 1234, you would try pk.1234 or just 1234.

    4) Then, press the "Show serving station location" button. If that does not return a position, go to this link.

    5) Choose the request "1 Cell - LTE & fill out the information. Leave the "radio" at "lte", the mcc & mnc can be found by in the link monitor app & by looking at this link. The lac is the area code, which is +47 for Norway. The CID can be found in the Link Monitor app. Lastly, I believe you can leave the psc & address at 0 & 1 respectively. You may receive the same output as me, which means that location API does not know the location to your nearest cell tower. See the snapshot below:

  • Hi Bjørn Kvaale.

    I checked %XOPNAME command and this command returned error.

    AT+XOPNAME
    +CME ERROR: 0

    I'm know how receive MCC & the MNC from the NRF9160 DK. I did it through AT+CEREG? command.

    AT+CEREG?
    +CEREG: 2,1,"D6E2","0842120E",7
    OK

    {
        "token": "*******************",
        "radio": "lte",
        "mcc": 302,
        "mnc": 610,
        "cells": [{
            "lac": 1,
            "cid": 138547726,
            "psc": 0
        }],
        "address": 1
    }

    I received this data from the tower to which NRF9160 connected. Using this data I can receive GPS location but with big error about 800 meters away... This location I received from http://locationapi.org.

    I assume if I can see at least 3 towers a triangulation process will determine a more exact location but the app only gives me information on a single tower.

    How can I receive CID and paramets from nearest towers for use triangulation for better location detection?

    Because the accuracy of 800 meters is unacceptable.

  • I'm now running v0.6.8 and get the same results as you (and the same as with 0.6.6). The ID I get from AT%NBRGRSRP only returns the Pysical-cell-id, and for positioning purposes I need a set of cell-id (not physical) for doing position requests (https://locationapi.org/api#documentation). 

    I might be misunderstanding the limitations of the cellular network, that it is only possible to get the cell-id from the currently connected tower?

  • I am not sure if this is a limitation of the LTE spec itself or our implementation, but it seems there is a current limitation that you can only receive the cell ID of the base station you are currently connected to. Like you mention, the physical cell ID is not the same as the set of cell IDs found from the AT%NBRGRSRP command. I have searched through the AT command pdf, but I only found the CEREG command that returns the cell ID of the base station it is attached to.

  • Is there a plan (or ticket in the system) to remove this limitation?

  • Not sure. I would recommend you contact your local Regional Sales Manager and ask about this. In general, you will not get a very accurate position by using the base station. I recommend you use the GPS functionality on the nRF9160 instead.

  • We need LTE-positioning when the GPS cannot fix indoor.

    Nordic, have you made any updates to this needed implementation yet?

Reply Children
Related