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 guess you can use the AT+CEREG? command to figure this out too. You will only ever be connected to one base station, so I am not sure you can find the values required (mcc, mnc, etc) for neighboring cells without somehow connecting to each one at a time. The only command I could find in the at_client documentation that mentions neighboring cells is the %NBRGRSRP command. I have asked about this internally & will get back to you when I know more.

Reply
  •  I guess you can use the AT+CEREG? command to figure this out too. You will only ever be connected to one base station, so I am not sure you can find the values required (mcc, mnc, etc) for neighboring cells without somehow connecting to each one at a time. The only command I could find in the at_client documentation that mentions neighboring cells is the %NBRGRSRP command. I have asked about this internally & will get back to you when I know more.

Children
Related