CellLocate implementation


Do you have an API for using CellLocate for U260/U270?
I’m trying to get the SIMCOM equivalent of AT+CIPGSMLOC=1,1 utilized by Adafruit Fona Library

UBlox has this CellLocate AT commands but there’s no end-to-end example on how to do a Cell Location.
I tried the following sequence but I had a problem executing the final command to extract the location for DASH:

AT+UPSD=0,1,“myapn.setting.com” ===> OK
AT+UPSDA=0,3 ===> OK
AT+UPSND=0,8 ===> +UPSND: 0,8,1
AT+UPSND=0,0 ===> +UPSND: 0,0,""
AT+ULOC=2,2,0,120,1,1 ===> OK
AT+ULOC? ===> +ULOC: 2,2,0,120,1,1
AT+ULOC=? ===>

What’s next? I’m seeing the URC +UULOC but I don’t have any idea how to proceed.


I posted this same question to UBLOX forum and the only recommendation I got is to increase the TIMEOUT to a couple of minutes. But even I do a AT+ULOC=2,2,0,360,100,1 the Arduino Serial Monitor just displays OK and ends there.

I noticed that other AT commands usually returns URC then OK in that sequence.
+UPSND: 0,8,1 ======> OK
+UPSND: 0,0,“” ======> OK
+CSQ: 18,99: ======> OK

However, +ULOC is expected to return OK then URC (reverse sequence):
OK ======> +UULOC: 07/11/2016,20:28:44.000,41.3989758,-79.4511917,0,399

Now I’m thinking about the possibility that URC of +ULOC is not being processed correctly by SerialCloud.available() and/or SerialCloud.read(). I hope this can be ruled out so I can proceed with my debugging.

Here is the code block I used to execute the above:

void setupGPRS() {
Serial.println(“1 = AT”);
sendAT(10, “AT\r\n”);
Serial.println(“2 = AT+UPSD=0,1”);
sendAT(3000, “AT+UPSD=0,1,“my.apn.com”\r\n”);
Serial.println(“3 = AT+UPSDA=0,1”);
sendAT(3000, “AT+UPSDA=0,1\r\n”);
Serial.println(“4 = AT+UPSDA=0,3”);
sendAT(5000, “AT+UPSDA=0,3\r\n”);
Serial.println(“5 = AT+UPSND=0,8”);
sendAT(1000, “AT+UPSND=0,8\r\n”);
Serial.println(“6 = AT+UPSND=0,0”);
sendAT(1000, “AT+UPSND=0,0\r\n”);
Serial.println(“7 = AT+CSQ”);
sendAT(1000, “AT+CSQ\r\n”);
Serial.println(“8 = Get Cell Location”);
sendAT(360000, “AT+ULOC=2,2,0,360,100,1\r\n”); “AT+ULOC=2,2,0,360,100,1\r\n”);

void sendAT(int timeout, char *ATCommand) {
returnChar = “”;
while (SerialCloud.available()) {
inputChar = (char)SerialCloud.read();
returnChar += inputChar;
Serial.print("Return value = ");


It’s almost 2 weeks since I posted this issue.

So far, what I got from UBlox forum is that I need to have the +UGSRV configured and tested.
Executing AT+UGSRV? returned this response:
+UGSRV: “cell-live1.services.u-blox.com”,“cell-live2.services.u-blox.com”,"",14,4,1,65,0,1
Notice that the 3rd parameter is missing, which is the auth-token that is needed to be able to access the AssistNow server.

A couple of email exchanges with UBlox support have clarified that I can only get the code through HOLOGRAM because it is the MODULE Purchaser and I am the PRODUCT Purchaser.

Please let me know how to aquire this AssistNow Authorization Code.



Thanks for pulling this together. We’re working on an API call for the basic CellLocate function on the Dash which should help streamline the process of this for now in the next few weeks without using the AssistNow Auth code but we’re following up on our end for that token and will keep you posted.



Hi Ryan,

I have a few questions about the API you’ll create for CellLocate:

  1. What will be the quota usage for every DASH board? and charges above quota?
  2. Will that be available for Non HOLOGRAM SIM? I hope it’s not a web-hook approach that requires DASH to pass through the Hologram server.

Hope to get the Auth Code as soon as possible. I have 4 prototypes/projects in the pipeline


Arnold - I reached out to uBlox directly on this. Are you using a ublox GNSS receiver in addition to the Dash? The authorization code for Assist Now is only required for use with a Dash and ublox GNSS connected to the cell module via I2C.


Hi Ryan,

The end result I’m trying to do is to use DASH to get geo location without GNSS receiver. I’m looking at built-in feature of UBlox to do this… else I’m forced to do cell site triangulation.

My first approach is to use AT+ULOC. I read that it can be used without GNSS by specifying the mode to be CellLocate. I would like to test if CellLocate can be exlusive if GNSS receiver is not available (not connected at all and not just having a hard time getting a fix).

I’m concluding that CellLocate is a triangulation computation module service of UBlox… and it could have better accuracy compared to OpenCellID… and this will save me (code level and server access) a lot of efforts.

If Hologram has a working API to do geo-location without GNSS, or at least a working AT Command sequence, then it would be of great help.