Does single-cell location nrfcloud API work in India for Jio network?

Hi,

We are unable to get the correct location (even approximate) using the nrfCloud API for Location based on Single-Cell.
For the given
"mcc", "mnc", "tac" and "eci" combination, it seems to always return some location in Mumbai for a SIM being testing in Bangalore.

Could you please confirm Jio's NB-IoT tower network in India is mapped on your cloud?

Thanks.

- Anupam

Parents
  • Hi Anupam,

    A Mumbai result for a Bangalore SIM usually means one of two things.

    1. Wrong number format. The modem reports TAC and Cell ID in hex, but the API needs decimal. Send the wrong format and the cloud can't find the tower, so it returns a rough default point for India.

    +CEREG: 5,1,"9C4B","0A12C303",9
    TAC  9C4B     → 40011
    ECI  0A12C303 → 169166595
    

    2. The tower isn't mapped. Cell databases come mostly from phones, and phones don't use NB-IoT — so Jio's NB-IoT cells in India are often missing.

    How to check: look at uncertainty in the response. A few km = the lookup worked. Tens of thousands of metres = it's guessing, ignore that result. Also try 3–4 towers; the same coordinate every time means the lookup is failing.

    Suggestion: fix the hex → decimal conversion first. If the values are correct and it still fails, use GPS with nRF Cloud A-GNSS as your main source and keep cell location as a rough fallback.

    Which sample code are you using? (e.g. nrf_cloud_rest_cell_location, location, nrf_cloud_multi_service, or your own.) Please also share your nRF Connect SDK version and one full request/response JSON including uncertainty.

    Thanks,

  • Making a Cloud-to-cloud API call via
    api.location.nrfcloud.com/.../cell

    Heres a sample request:
    {"nbiot":[{"mcc":405,"mnc":874,"tac":49167,"eci":20370}]}

    Response:
    {"lat": 19.07999039,"lon": 72.91115284,"uncertainty": 2902,"fulfilledWith": "SCELL"}

Reply Children
  • Hi Anupam,

    Your response came back with uncertainty: 2902 and fulfilledWith: "SCELL", which means the database did find a matching cell — so this isn't a Jio coverage gap. The issue is most likely the eci value.

    The eci must be the full 28-bit E-UTRAN Cell Identifier (range 0–268435455), where ECI = (eNodeB-ID × 256) + Sector-ID. In hex that's normally 7–8 characters. Your value 20370 is only 0x4F92 — 4 characters. A partial ID can match the wrong cell and return an erroneous location.

    To get the correct values, use the Cellular Monitor app in nRF Connect for Desktop: connect the device, click Start, and open the Dashboard tab. Under LTE Network you'll see:

    • PLMN ID → first three digits are MCC, the rest are MNC
    • Cell ID → the full 28-bit ECI
    • TAC → tracking area code

    After you have the three values:

    1. Convert to decimal (Cellular Monitor may show them in hex). Example: Cell ID 0A12C303169166595, TAC 9C4B40011.

    2. Split the PLMN ID. e.g. 405874 → MCC 405, MNC 874.

    3. Rebuild the request with those exact values:

    {"nbiot":[{"mcc":405,"mnc":874,"tac":40011,"eci":169166595}]}
    

    4. Call the API again and check the result:

    thanks and regards

    Nishant

  • You were right Nishant, our eci was truncated to uint16 while testing, hence the error. Using the correct uint32 value gives us the correct approx location. Thanks a ton!

Related