Discussion:
GSM localisation --> for John Henderson
(too old to reply)
gm
2016-01-04 22:08:16 UTC
Permalink
Hi John !

Am happy to inform you that everything is working as it should, and now
we have to arrange the triangulation part.

In best case am picking up 6 towers with MCC, MNC, LAC, CID signal
strength data.

Situation:
I have tested this in one garage ( with very weak signal ) and the
recorded data was around 200 - 800 meters away from right location.
So, am sending data from this 6 towers to web server where am planning
to make triangulation.

Question:
- what would be best way to make this triangulation ?
- for sake of simplicity, let's say we have just 3 towers. If this
towers are cca 800 meters apart and if i connect all those towers in
"triangle" i can define some "middle point". Doing program for this is a
tricky part.

Second problem is that this middle point is still few hundreds meters
away from real location. So, this is the idea that am planning to use :-)

If i have 3 towers and if i somehow define middle point i can check
signal strength of two towers and "move" this middle point ( in SW ),
100m closer to the strongest tower ? This is just stupid idea but it's
only one that i have for now :-). What do you think ?

Any idea is welcome !

GM
John Henderson
2016-01-05 09:39:11 UTC
Permalink
Post by gm
So, this is the idea that am planning to use :-)
If i have 3 towers and if i somehow define middle point i can check
signal strength of two towers and "move" this middle point ( in SW ),
100m closer to the strongest tower ? This is just stupid idea but it's
only one that i have for now :-). What do you think ?
Unless you can find an existing algorithm somewhere, that's as good an
approach as any.

There is going to be problems compensating for the different signal
strengths. Many factors can come into play here. Buildings, terrain and
vegetation all affect signal propagation.

And the antennas on towers are most often directional. So you may have
stronger signal from a tower further away.

Then there's frequency. The signal from higher frequency bands decays
faster (with distance) than lower frequencies.
Post by gm
Any idea is welcome !
Is this GSM (2G) you're dealing with? If so, try the command:

AT+CENG=2

and post the results if you can. There should be Timing Advance information
there which may allow us to put absolute limits on the distance between
phone and tower.

John
gm
2016-01-05 12:08:42 UTC
Permalink
Thank you for reply.
I will send you results later today..

70 % is 3G

30 % is 2G


GM
Post by John Henderson
Post by gm
So, this is the idea that am planning to use :-)
If i have 3 towers and if i somehow define middle point i can check
signal strength of two towers and "move" this middle point ( in SW ),
100m closer to the strongest tower ? This is just stupid idea but it's
only one that i have for now :-). What do you think ?
Unless you can find an existing algorithm somewhere, that's as good an
approach as any.
There is going to be problems compensating for the different signal
strengths. Many factors can come into play here. Buildings, terrain and
vegetation all affect signal propagation.
And the antennas on towers are most often directional. So you may have
stronger signal from a tower further away.
Then there's frequency. The signal from higher frequency bands decays
faster (with distance) than lower frequencies.
Post by gm
Any idea is welcome !
AT+CENG=2
and post the results if you can. There should be Timing Advance information
there which may allow us to put absolute limits on the distance between
phone and tower.
John
gm
2016-01-06 13:10:11 UTC
Permalink
Post by gm
Thank you for reply.
I will send you results later today..
70 % is 3G
30 % is 2G
GM
Post by John Henderson
Post by gm
So, this is the idea that am planning to use :-)
If i have 3 towers and if i somehow define middle point i can check
signal strength of two towers and "move" this middle point ( in SW ),
100m closer to the strongest tower ? This is just stupid idea but it's
only one that i have for now :-). What do you think ?
Unless you can find an existing algorithm somewhere, that's as good an
approach as any.
There is going to be problems compensating for the different signal
strengths. Many factors can come into play here. Buildings, terrain and
vegetation all affect signal propagation.
And the antennas on towers are most often directional. So you may have
stronger signal from a tower further away.
Then there's frequency. The signal from higher frequency bands decays
faster (with distance) than lower frequencies.
Post by gm
Any idea is welcome !
AT+CENG=2
and post the results if you can. There should be Timing Advance information
there which may allow us to put absolute limits on the distance between
phone and tower.
John
AT+CENG=2 ---> 3
Can you explain a bit more this timing advance system and how can i
implement it ?

Gm
John Henderson
2016-01-06 20:01:19 UTC
Permalink
Post by gm
AT+CENG=2 ---> 3
Can you explain a bit more this timing advance system and how can i
implement it ?
2G/GSM uses TDMA (Time Division) on the air interface to keep users'
transmissions from interfering with each other. Everyone is allocated a
timeslot periodically in which they're permitted to transmit. We all get a
turn. In very busy times, if all timeslots are allocated, no more calls are
possible.

3G/WCDMA/UMTS used CDMA (Code Division). Everybody talks at the same time,
and the resulting noise gets untangled according to embedded coding
information.

GSM timeslots are small. Because the speed of light is finite, distant
devices must transmit before their allocated time in order for the signal to
reach the tower precisely in its allocated timeslot (to avoid interference
with other users). Therefore the tower must be aware of how far away each
active device is so that it can tell it when to transmit.

The result of this process is the tower giving the user device a Timing
Advance value to time its transmissions. This is a number between 0 and 63,
with each step representing an increase in distance of 553.5 metres. It is
continuously updated whenever the device is interacting with the tower.

The device will know the last TA value it was given. AT+CENG=2 is
documented to be able to report these values.

John
gm
2016-01-06 22:20:23 UTC
Permalink
John, i can not thank you enough for your tutorial and help !
I will try AT+CENG=2 tommorow.

This is what am getting so far:
-------------------------------------------------------------
ID MCC MNC LAC CID BSIC SIG_STRENGTH
0 219 02 0456 246a 31 29
------------------------------------------------------------

Am picking up from 3 - 6 towers.

GM
Post by John Henderson
Post by gm
AT+CENG=2 ---> 3
Can you explain a bit more this timing advance system and how can i
implement it ?
2G/GSM uses TDMA (Time Division) on the air interface to keep users'
transmissions from interfering with each other. Everyone is allocated a
timeslot periodically in which they're permitted to transmit. We all get a
turn. In very busy times, if all timeslots are allocated, no more calls are
possible.
3G/WCDMA/UMTS used CDMA (Code Division). Everybody talks at the same time,
and the resulting noise gets untangled according to embedded coding
information.
GSM timeslots are small. Because the speed of light is finite, distant
devices must transmit before their allocated time in order for the signal to
reach the tower precisely in its allocated timeslot (to avoid interference
with other users). Therefore the tower must be aware of how far away each
active device is so that it can tell it when to transmit.
The result of this process is the tower giving the user device a Timing
Advance value to time its transmissions. This is a number between 0 and 63,
with each step representing an increase in distance of 553.5 metres. It is
continuously updated whenever the device is interacting with the tower.
The device will know the last TA value it was given. AT+CENG=2 is
documented to be able to report these values.
John
gm
2016-01-10 12:01:31 UTC
Permalink
I found interesting command but i can not execute it correctly. Its
AT+KCELL command. I get OK when i run AT+KCELL? but when i set
AT+KCELL=0 i get ERROR.

If i try AT+CIND i get correct values.
Like: 4,4,1,0,0,1,1
Would this be enough to get some TA values.?
--------------------------------------------
CENG:
I have read few data sheets about AT+CENG command set but as far as i
understand, there is no way to get TA info.

And ideas ?






//-----------------------------
Post by gm
John, i can not thank you enough for your tutorial and help !
I will try AT+CENG=2 tommorow.
-------------------------------------------------------------
ID MCC MNC LAC CID BSIC SIG_STRENGTH
0 219 02 0456 246a 31 29
------------------------------------------------------------
Am picking up from 3 - 6 towers.
GM
Post by John Henderson
Post by gm
AT+CENG=2 ---> 3
Can you explain a bit more this timing advance system and how can i
implement it ?
2G/GSM uses TDMA (Time Division) on the air interface to keep users'
transmissions from interfering with each other. Everyone is allocated a
timeslot periodically in which they're permitted to transmit. We all get a
turn. In very busy times, if all timeslots are allocated, no more calls are
possible.
3G/WCDMA/UMTS used CDMA (Code Division). Everybody talks at the same time,
and the resulting noise gets untangled according to embedded coding
information.
GSM timeslots are small. Because the speed of light is finite, distant
devices must transmit before their allocated time in order for the signal to
reach the tower precisely in its allocated timeslot (to avoid
interference
with other users). Therefore the tower must be aware of how far away each
active device is so that it can tell it when to transmit.
The result of this process is the tower giving the user device a Timing
Advance value to time its transmissions. This is a number between 0 and 63,
with each step representing an increase in distance of 553.5 metres.
It is
continuously updated whenever the device is interacting with the tower.
The device will know the last TA value it was given. AT+CENG=2 is
documented to be able to report these values.
John
------------------
John Henderson
2016-01-10 23:01:37 UTC
Permalink
Post by gm
I found interesting command but i can not execute it correctly. Its
AT+KCELL command. I get OK when i run AT+KCELL? but when i set
AT+KCELL=0 i get ERROR.
I'm not familiar with that command. What is the list of supported values?
The command:

AT+KCELL=?

should tell you (note the "=" in this syntax).

I have not found documentation for it.
Post by gm
If i try AT+CIND i get correct values.
Like: 4,4,1,0,0,1,1
Would this be enough to get some TA values.?
No. AT+CIND is a 3GPP (industry-standard) command. To read TA, you'll need
to use a proprietary command.
Post by gm
I have read few data sheets about AT+CENG command set but as far as i
understand, there is no way to get TA info.
What does AT+CENG=2 return? I need to see the output.

Documentation I have says it returns:

[+CENG:
<cell>,"<arfcn>,<rxl>,<rxq>,<mcc>,<mnc>,<bsic>,<cellid>,<rla>,<txp>,<lac>,<TA>"

I'm not sure if you said what your device is. If you did, I've forgotten.

John
gm
2016-01-30 22:39:17 UTC
Permalink
Hi John !
Am sorry i could not reply sooner but i was on the business trip.
I will send you detailed infos asap.

The module that am using is from company called Tinysine.
http://www.tinyosshop.com/index.php?route=product/product&product_id=464


GM
Post by John Henderson
Post by gm
I found interesting command but i can not execute it correctly. Its
AT+KCELL command. I get OK when i run AT+KCELL? but when i set
AT+KCELL=0 i get ERROR.
I'm not familiar with that command. What is the list of supported values?
AT+KCELL=?
should tell you (note the "=" in this syntax).
I have not found documentation for it.
Post by gm
If i try AT+CIND i get correct values.
Like: 4,4,1,0,0,1,1
Would this be enough to get some TA values.?
No. AT+CIND is a 3GPP (industry-standard) command. To read TA, you'll need
to use a proprietary command.
Post by gm
I have read few data sheets about AT+CENG command set but as far as i
understand, there is no way to get TA info.
What does AT+CENG=2 return? I need to see the output.
<cell>,"<arfcn>,<rxl>,<rxq>,<mcc>,<mnc>,<bsic>,<cellid>,<rla>,<txp>,<lac>,<TA>"
I'm not sure if you said what your device is. If you did, I've forgotten.
John
John Henderson
2016-01-31 23:49:03 UTC
Permalink
Post by gm
The module that am using is from company called Tinysine.
http://www.tinyosshop.com/index.php?route=product/product&product_id=464
It says "Based on SIMCom's SIM900 Module".

So you should be able to read TA using that command.

John
gm
2016-02-14 07:58:10 UTC
Permalink
Hi !
This is the full result:

+CENG:0,"0713,38,99,219,02,18,263f,00,00,456,3"
+CENG:1,"0730,23,20,219,02,456"
+CENG:2,"0062,39,22,219,01,3f16"
+CENG:3,"0717,20,16,219,02,456"
+CENG:4,"0064,33,56,219,01,3f16"
...

Sometimes it can pick up to 6 towers.
The full list is just in first row...

GM
Post by John Henderson
Post by gm
The module that am using is from company called Tinysine.
http://www.tinyosshop.com/index.php?route=product/product&product_id=464
It says "Based on SIMCom's SIM900 Module".
So you should be able to read TA using that command.
John
gm
2016-02-14 07:59:16 UTC
Permalink
Btw. in this mode, we get this whole list every 3 seconds.
Post by gm
Hi !
+CENG:0,"0713,38,99,219,02,18,263f,00,00,456,3"
+CENG:1,"0730,23,20,219,02,456"
+CENG:2,"0062,39,22,219,01,3f16"
+CENG:3,"0717,20,16,219,02,456"
+CENG:4,"0064,33,56,219,01,3f16"
...
Sometimes it can pick up to 6 towers.
The full list is just in first row...
GM
Post by John Henderson
Post by gm
The module that am using is from company called Tinysine.
http://www.tinyosshop.com/index.php?route=product/product&product_id=464
It says "Based on SIMCom's SIM900 Module".
So you should be able to read TA using that command.
John
John Henderson
2016-02-15 00:17:21 UTC
Permalink
Post by gm
+CENG:0,"0713,38,99,219,02,18,263f,00,00,456,3"
The twelfth (and last) argument is 3.

That's the TA value from the last interaction the device had with the tower.

Each value (range 0 through 63) puts the device a further 553.5 metres away
from the tower. That puts you between 1.7 and 2.2 km away.

TA from to
0 0 0.6
1 0.6 1.1
2 1.1 1.7
3 1.7 2.2
4 2.2 2.8
5 2.8 3.3

and so on.

The limitation of this method is that TA gets calculated by the tower during
any interaction with the device, and the value given to the device to
control its timing.

So you'll be reading the last value used. If the device has moved, or has
camped on a cell on a different tower since then the value will be stale.

You can overcome this limitation by forcing an interaction with the tower,
and checking that the cell ID is the same before and after.

Back when I was chasing cell location information, I used the command:

AT+CLIP?

to force a suitable interaction, and get a fresh TA value.

John
gm
2016-02-16 13:34:40 UTC
Permalink
Thank you for your input !.
So how should i make the triangulation, if i know the TA value.
Should i send the data to server and make the data processing there, or
should i make some kind of basic calculation directly on the MCU unit.

Am asking this because i dont know how or what should be the best way to
make the triangulation.

I saw some samples on the net but there are many different approaches.
As far as i can understand, each tower is sending data in some
predefined radius. If the mobile device crosses 3 or more "circles" i
should get the data and based on TA i can move it closer to tower.
Is the the general idea ?

GM
Post by John Henderson
Post by gm
+CENG:0,"0713,38,99,219,02,18,263f,00,00,456,3"
The twelfth (and last) argument is 3.
That's the TA value from the last interaction the device had with the tower.
Each value (range 0 through 63) puts the device a further 553.5 metres away
from the tower. That puts you between 1.7 and 2.2 km away.
TA from to
0 0 0.6
1 0.6 1.1
2 1.1 1.7
3 1.7 2.2
4 2.2 2.8
5 2.8 3.3
and so on.
The limitation of this method is that TA gets calculated by the tower during
any interaction with the device, and the value given to the device to
control its timing.
So you'll be reading the last value used. If the device has moved, or has
camped on a cell on a different tower since then the value will be stale.
You can overcome this limitation by forcing an interaction with the tower,
and checking that the cell ID is the same before and after.
AT+CLIP?
to force a suitable interaction, and get a fresh TA value.
John
John Henderson
2016-02-16 20:01:50 UTC
Permalink
Post by gm
Thank you for your input !.
So how should i make the triangulation, if i know the TA value.
Should i send the data to server and make the data processing there, or
should i make some kind of basic calculation directly on the MCU unit.
TA will just give you your absolute location in the shape of a a donut.

To locate yourself using only TA values would require you to have TA values
from different towers (and know their locations). In general, you cannot
choose which tower you want to use.

So triangulation will usually mean weighing-up signal strengths from known
towers. as an overlay onto that donut.

John
gm
2016-02-29 09:51:43 UTC
Permalink
Hi John.
This is the situation after few tests:
- i can not get "exact" position. The closest position is 50 meter away
and that is quite hard to get. In my opinion this is because strength of
the signal varies according the reading. If i run command for data
"catch" more often, i get different signal strength ( module is on fixed
place and not moving). Mostly in the range +- 3 which is range from
around 4 - 9 dbm. So around 50 - 150 meters.

Funny thing, but maybe would be easier to locate this module if it's on
the move :-)
Post by John Henderson
Post by gm
Thank you for your input !.
So how should i make the triangulation, if i know the TA value.
Should i send the data to server and make the data processing there, or
should i make some kind of basic calculation directly on the MCU unit.
TA will just give you your absolute location in the shape of a a donut.
To locate yourself using only TA values would require you to have TA values
from different towers (and know their locations). In general, you cannot
choose which tower you want to use.
So triangulation will usually mean weighing-up signal strengths from known
towers. as an overlay onto that donut.
John
John Henderson
2016-03-01 08:49:43 UTC
Permalink
Post by gm
- i can not get "exact" position. The closest position is 50 meter away
and that is quite hard to get. In my opinion this is because strength of
the signal varies according the reading. If i run command for data
"catch" more often, i get different signal strength ( module is on fixed
place and not moving). Mostly in the range +- 3 which is range from
around 4 - 9 dbm. So around 50 - 150 meters.
When dealing with signal strength, so much depends on the alignment of
antennas on the tower, and on the terrain and topography.

You're never going to get very good accuracy. The exception is TA, which
will give you absolute limits to work with.
Post by gm
Funny thing, but maybe would be easier to locate this module if it's on
the move :-)
Yes, that will sometimes be the case, I'm sure.

John

Loading...