Найти сотовую вышку по cell id. Как найти базовую станцию на карте

Существует множество способов определения местоположения, такие как спутниковая навигация (GPS), местоположение по беспроводным сетям WiFi и по сетям сотовой связи.

В данном посте мы попытались проверить, насколько хорошо работает технология определения местоположения по вышкам сотовой связи в городе Минске (при условии использования только открытых баз данных координат передатчиков GSM).

Принцип действия заключается в том, что сотовый телефон (или модуль сотовой связи) знает, каким приемопередатчиком базовой станции он обслуживается и имея базу данных координат передатчиков базовой станции можно приблизительно определить своё местоположение.

Теперь немного о том, что такое передатчик в понимании OpenCellID и каким образом наполняется база данных OpenCellID. Эта БД наполняется различными способами, наиболее простой - это установка на смартфон приложения, которое записывает координаты телефона и обслуживающую базовую станцию, а затем отсылает на сервер все измерения. На сервере OpenCellID происходит вычисление приблизительного местоположения базовой станции на основании большого числа измерений (см. рисунок ниже). Таким образом, координаты беспроводной сети вычисляются автоматически и являются очень приблизительными.


Карта Участники OpenStreetMap

Теперь перейдем к вопросу о том, как использовать эту базу данных. Есть два варианта: использовать сервис перевода Cell ID в координаты, который предоставляется сайтом OpenCellID.org , либо выполнять локальный поиск. В нашем случае локальный способ предпочтительней, т.к. мы собираемся проехать по 13-километровому маршруту, и работа через веб будет медленной и неэффективной. Соответственно нам необходимо скачать базу данных на ноутбук. Это можно сделать, скачав файл cell_towers.csv.gz c сайта downloads.opencellid.org .

База данных представляет собой таблицу в CSV-формате, описанном ниже:

  • - код страны;
  • - код оператора;
  • - код зоны;
  • - идентификатор передатчика;
  • - долгота передатчика;
  • - широта передатчика.
С базой данных все понятно, теперь можно переходить к определению Cell ID.

Все сотовые модули поддерживают следующие команды: AT+CREG, AT+COPS (обслуживающая базовая станция), AT+CSQ (уровень сигнала от базовой станции). Некоторые модули позволяют узнать кроме обслуживающего передатчика также и соседние, т.е. выполнять мониторинг базовых станций с помощью команд AT^SMONC для Siemens и AT+CCINFO для Simcom. У меня в распоряжении был модуль SIMCom SIM5215Е.

Соответственно мы воспользовались командой AT+CCINFO, ее формат приведен ниже.

Нас интересуют следующие параметры:

  • - индикатор обслуживающего передатчика;
  • - индикатор соседнего передатчика;
  • - код страны;
  • - код оператора;
  • - код зоны;
  • - идентификатор передатчика;
  • - мощность принимаемого сигнала в дБм.
Подключив сотовый модуль к ноутбуку, мы получили следующий лог:

Мониторинг работает – можно ехать.

Маршрут пролег в западной части Минска по ул. Матусевича, пр. Пушкина, ул. Пономаренко, ул. Шаранговича, ул. Максима Горецкого, ул. Лобанка, ул. Кунцевщина, ул. Матусевича.


Карта Участники OpenStreetMap

Запись лога велась с интервалом в 1 секунду. Выполняя преобразование CellID в координаты, выяснилось что 6498 обращений к базе данных OpenCellID были результативными, а 3351 обращений не нашли соответствий в БД. Т.е. hit rate для Минска составляет примерно 66 %.

На рисунке ниже показаны все передатчики, которые встречались в логе и были в БД.


Карта Участники OpenStreetMap

На рисунке ниже показаны все обслуживающие передатчики, которые встречались в логе и были в базе данных. Т.е. подобный результат можно получить на любом сотовом модуле или телефоне.


Карта Участники OpenStreetMap

Как видим, в один из моментов нас обслуживал передатчик, находящийся за транспортной развязкой на пересечении ул. Притыцкого и МКАД. Скорее всего, это загородная базовая станция, обслуживающая абонентов на расстоянии в несколько километров, что ведет к значительным ошибкам в определении местоположения по Cell ID.

Поскольку наш SIMCom SIM5215Е в каждый момент времени показывает не только обслуживающий передатчик, но также соседние и уровни сигнала от них, то попробуем рассчитать координаты аппарата на основании всех данных, имеющихся в конкретный момент времени.

Расчет координат абонента будем выполнять как взвешенное среднее координат передатчиков:
Latitude = Sum (w[n] * Latitude[n]) / Sum(w[n])
Longitude = Sum (w[n] * Longitude[n]) / Sum(w[n])

Как известно из теории распространения радиоволн, затухание радиосигнала в вакууме пропорционально квадрату расстояния от передатчика до приемника. Т.е. при удалении в 10 раз (например, с 1 км до 10 км) сигнал станет в 100 раз слабее, т.е. уменьшится на 20 дБ по мощности. Соответственно вес при каждом слагаемом определяется как:
w[n] = 10^(RSSI_in_dBm[n] / 20)

Здесь мы допустили, что мощность всех передатчиков одинаковая, это допущение ошибочно. Но ввиду отсутствия информации о мощности передатчика базовой станции приходится идти на заведомо грубые допущения.

В результате получаем более подробную картину местоположений.


Карта Участники OpenStreetMap

По итогу маршрут оказался неплохо прочерчен за исключением выброса в сторону развязки на МКАД, по ранее описанной причине. Кроме того, со временем база данных координат будет наполнятся, что также должно повысить точность и доступность технологии определения местоположения по Cell ID.

Спасибо за внимание. Вопросы и комментарии приветствуются.

Существует множество способов определения местоположения, такие как спутниковая навигация (GPS), местоположение по беспроводным сетям WiFi и по сетям сотовой связи.

В данном посте мы попытались проверить, насколько хорошо работает технология определения местоположения по вышкам сотовой связи в городе Минске (при условии использования только открытых баз данных координат передатчиков GSM).

Принцип действия заключается в том, что сотовый телефон (или модуль сотовой связи) знает, каким приемопередатчиком базовой станции он обслуживается и имея базу данных координат передатчиков базовой станции можно приблизительно определить своё местоположение.

Теперь немного о том, что такое передатчик в понимании OpenCellID и каким образом наполняется база данных OpenCellID. Эта БД наполняется различными способами, наиболее простой - это установка на смартфон приложения, которое записывает координаты телефона и обслуживающую базовую станцию, а затем отсылает на сервер все измерения. На сервере OpenCellID происходит вычисление приблизительного местоположения базовой станции на основании большого числа измерений (см. рисунок ниже). Таким образом, координаты беспроводной сети вычисляются автоматически и являются очень приблизительными.


Карта Участники OpenStreetMap

Теперь перейдем к вопросу о том, как использовать эту базу данных. Есть два варианта: использовать сервис перевода Cell ID в координаты, который предоставляется сайтом OpenCellID.org , либо выполнять локальный поиск. В нашем случае локальный способ предпочтительней, т.к. мы собираемся проехать по 13-километровому маршруту, и работа через веб будет медленной и неэффективной. Соответственно нам необходимо скачать базу данных на ноутбук. Это можно сделать, скачав файл cell_towers.csv.gz c сайта downloads.opencellid.org .

База данных представляет собой таблицу в CSV-формате, описанном ниже:

  • - код страны;
  • - код оператора;
  • - код зоны;
  • - идентификатор передатчика;
  • - долгота передатчика;
  • - широта передатчика.
С базой данных все понятно, теперь можно переходить к определению Cell ID.

Все сотовые модули поддерживают следующие команды: AT+CREG, AT+COPS (обслуживающая базовая станция), AT+CSQ (уровень сигнала от базовой станции). Некоторые модули позволяют узнать кроме обслуживающего передатчика также и соседние, т.е. выполнять мониторинг базовых станций с помощью команд AT^SMONC для Siemens и AT+CCINFO для Simcom. У меня в распоряжении был модуль SIMCom SIM5215Е.

Соответственно мы воспользовались командой AT+CCINFO, ее формат приведен ниже.

Нас интересуют следующие параметры:

  • - индикатор обслуживающего передатчика;
  • - индикатор соседнего передатчика;
  • - код страны;
  • - код оператора;
  • - код зоны;
  • - идентификатор передатчика;
  • - мощность принимаемого сигнала в дБм.
Подключив сотовый модуль к ноутбуку, мы получили следующий лог:

Мониторинг работает – можно ехать.

Маршрут пролег в западной части Минска по ул. Матусевича, пр. Пушкина, ул. Пономаренко, ул. Шаранговича, ул. Максима Горецкого, ул. Лобанка, ул. Кунцевщина, ул. Матусевича.


Карта Участники OpenStreetMap

Запись лога велась с интервалом в 1 секунду. Выполняя преобразование CellID в координаты, выяснилось что 6498 обращений к базе данных OpenCellID были результативными, а 3351 обращений не нашли соответствий в БД. Т.е. hit rate для Минска составляет примерно 66 %.

На рисунке ниже показаны все передатчики, которые встречались в логе и были в БД.


Карта Участники OpenStreetMap

На рисунке ниже показаны все обслуживающие передатчики, которые встречались в логе и были в базе данных. Т.е. подобный результат можно получить на любом сотовом модуле или телефоне.


Карта Участники OpenStreetMap

Как видим, в один из моментов нас обслуживал передатчик, находящийся за транспортной развязкой на пересечении ул. Притыцкого и МКАД. Скорее всего, это загородная базовая станция, обслуживающая абонентов на расстоянии в несколько километров, что ведет к значительным ошибкам в определении местоположения по Cell ID.

Поскольку наш SIMCom SIM5215Е в каждый момент времени показывает не только обслуживающий передатчик, но также соседние и уровни сигнала от них, то попробуем рассчитать координаты аппарата на основании всех данных, имеющихся в конкретный момент времени.

Расчет координат абонента будем выполнять как взвешенное среднее координат передатчиков:
Latitude = Sum (w[n] * Latitude[n]) / Sum(w[n])
Longitude = Sum (w[n] * Longitude[n]) / Sum(w[n])

Как известно из теории распространения радиоволн, затухание радиосигнала в вакууме пропорционально квадрату расстояния от передатчика до приемника. Т.е. при удалении в 10 раз (например, с 1 км до 10 км) сигнал станет в 100 раз слабее, т.е. уменьшится на 20 дБ по мощности. Соответственно вес при каждом слагаемом определяется как:
w[n] = 10^(RSSI_in_dBm[n] / 20)

Здесь мы допустили, что мощность всех передатчиков одинаковая, это допущение ошибочно. Но ввиду отсутствия информации о мощности передатчика базовой станции приходится идти на заведомо грубые допущения.

В результате получаем более подробную картину местоположений.


Карта Участники OpenStreetMap

По итогу маршрут оказался неплохо прочерчен за исключением выброса в сторону развязки на МКАД, по ранее описанной причине. Кроме того, со временем база данных координат будет наполнятся, что также должно повысить точность и доступность технологии определения местоположения по Cell ID.

Спасибо за внимание. Вопросы и комментарии приветствуются.

Обнаружение вышек связи - это не криминальная деятельность, а довольно распространенная задача в отдаленных регионах и деревнях, где качество покрытия оставляет желать лучшего. Как понять, почему у этого столба берет лучше, чем от той калитки? Сориентироваться тебе могут помочь следующие инструменты и сайты.

Из англоязычных сервисов, пожалуй, лучше всего opensignal.com, где можно выбрать оператора и необходимое местоположение. Карта не отображает вышки, но показывает области покрытия. Из русских могу порекомендовать netmonitor.ru - в его базе содержится немало информации о вышках операторов.

Интересны и некоторые приложения для Android. К примеру, OpenSignal отображает карту сотовых вышек и точек Wi-Fi (еще на карте помечены места с плохой связью), имеет встроенный компас и средство проверки скорости.

Еще интересна утилита Netmonitor. Она умеет мониторить сети GSM и CDMA, показывает информацию об уровне сигнала, содержит базу данных сотовых вышек, поддерживает устройства с несколькими SIM-картами, а также умеет вести лог в формате CLF или KLM.

Обрати внимание, у Netmonitor есть ограничения при работе на устройствах некоторых производителей. На смартфонах Motorola, LG, Samsung, Acer и Huawei список соседей может быть пуст, а на устройствах Samsung к тому же может не отображаться уровень сигнала.

Также порекомендую приложение GSM Signal Monitoring, которое позволяет работать с сетями GSM, UMTS и LTE. Оно на графике отображает изменение уровня сигнала и показывает соседние соты (только в сетях GSM). Есть монитор скорости передачи данных и возможность отслеживать статус соединения, стандарт подключения, идентификаторы соты и текущей зоны (LAC/RNC/TAC) и уровень мощности принимаемого сигнала (RSSI, а также RSRP для LTE).

Зная данные базовой станции, можно пробить ее через сайт xinit.ru и получить информацию о ее местонахождении. В крупных городах не помешает попробовать найти народные карты с расположением вышек, но стоит понимать, что вышки принадлежат разным операторам. Плюс базовые станции ставят не только на столбы, но и на крыши домов.

nik2166 12-05-2013 23:40

Всем привет!

Метка в машине посылает сигналы о своем местонахождении в следующем виде:

MCC:250
MNC:02
LAC:1E7E
CID:4F0C
PW:-73
T:0

Автолюбитель 13-05-2013 12:46

Дано:
MCC:250 - Россия
MNC:02 - Мегафон
LAC:1E7E - зона местоположения
CID:4F0C - номер станции

Попробуем применить магию:
{"status":"ok","balance":17,"lat":59.88155,"lon":30.37293,"cid":"20236","lac":"7806","mnc":"02","mcc":"592"}

Вышечка нашлась, осталось найти машинку. В худшем случае придется облазать кружок радиусом в пару км. Но это уже без меня.

TWU55 13-05-2013 10:29

Да, поподробней пожалуйста, Автолюбитель?

Автолюбитель 13-05-2013 18:25

На самом деле я вот этим сайтом пользовался. Там какое-то нереальное количество станций по всему миру.
http://ayauto.in/aypi/index.php/site/page?view=api
Можно получить одноразовый токен на почту, можно зарегистрироваться и иметь 20 определений в день бесплатно. Только данные надо переводить из шестнадцатеричной систему в десятичную.

jacker2000 13-05-2013 18:42


Всем привет!
Подскажите, есть ли возможность определить реальное нахождение базовой станции сотовой сети (МегаФон, если что) по предоставленным данным онлайн?
Метка в машине посылает сигналы о своем местонахождении в следующем виде:

MCC:250
MNC:02
LAC:1E7E
CID:4F0C
PW:-73
T:0

Т.е., как я понимаю, указывает на ближайшую к себе базовую станцию.
В Гугле не нашел... может, не там искал((

погдскажите а как вы получили исходные данные?
подобное я видел когда входил в техническом меню на моём сименсе м35 в далёком 2003

Автолюбитель 13-05-2013 19:08

Когда вешали направленную антенну, то пользовались Netmonitor под андроид.
https://play.google.com/store/...etmonitor&hl=ru
У неё должны быть аналоги под все платформы.

nik2166 14-05-2013 12:34

quote: погдскажите а как вы получили исходные данные?

одна из функций противоугонки

nik2166 14-05-2013 12:40

То что надо!

jacker2000 14-05-2013 15:30

quote: Originally posted by nik2166:

отлично, эту ссылку я и искал!!!
ввел координаты БС - а тут тебе и ссылка на Яндекс-карты!!!
То что надо!

скажите а где вы исходыне данные взяли?

nik2166 14-05-2013 21:52

Я же говорю - в противоугонке законопачена сим-карта, завязана на мой телефон.
Посылаю СМС с командой - он мне в ответной СМС пишет координаты ближайшей БС

BlackMoon 15-05-2013 11:15

Эти данные можно получать нетмонитором в мобилах (каких точно, копайте в сети) или GSM-модулях.

В трекерах/сигналках эти данные передаются, если не получается определить координаты по GPS.

unname22 19-06-2013 10:02

Не обнадеживайтесь.
В мегафоне такой бардак.
Я просто одно время работал у их подрядчиков. Это звиздец, искали мы эти базы, вся инфа выдана но они сами толком не знают где у них что.
Сайт вполне может находится в паре кварталов от обозначенного места. И это бывало не раз.

Published 22.04.2015 by Johhny

Cellidfinder - это простой и удобный сервис по поиску местоположения базовых станций мобильной связи стандарта GSM и построению их на карте. В статье приведена подробная инструкция по поиску местоположения базовых станций GSM с помощью данного сервиса.

Какие данные необходимы для локализации БС?

Для того, чтобы найти координаты сектора базовой станции необходимо знать 4 параметра:

  • MCC (Mobile Country Code) — код, определяющий страну, в которой находится оператор мобильной связи. Например, для России он равен 250, США - 310, Венгрия - 216, Китай - 460, Украина — 255, Белоруссия — 257.
  • MNC (Mobile Network Code) — код, присваиваемый оператору мобильной связи. Уникален для каждого оператора в конкретной стране. Подробная таблица кодов MCC и MNC для операторов по всему миру доступна .
  • LAC (Location Area Code) — код локальной зоны. В двух словах LAC - это объединение некоторого количества базовых станций, которые обслуживаются одним контроллером базовых станций (BSC). Этот параметр может быть представлен как в десятичном, так и в шестнадцатеричном виде.
  • CellID (CID) — «идентификатор соты». Тот самый сектор базовой станции. Этот параметр также может быть представлен в десятичном, и шестнадцатеричном виде.

Где взять эти данные?

Данные берутся с нетмонитора. Нетмонитор - это специальное приложение для мобильных телефонов или других устрйств, которое позволяет узнать инженерные параметры мобильной сети. В сети существует огромное количество нетмониторов для различных устройств. Найти подходящий - не проблема. Кроме того многие современные GPS трекеры в условиях плохого приема спутников могут отсылать хозяину не координаты, а параметры базовой станции (МСС, MNC, LAC, Cellid) за которую они цепляются. Cellidfinder поможет быстро перевести эти параметры в приблизительное местоположение БС.

Откуда берутся координаты базовой станции?

Поиск координат базовых станций проводится в базах данных Google и Yandex, которые предоставили такую возможность. Следует отметить, что в результате поиска мы получаем не точное местоположения вышки, а приблизительное. Это то местоположение, в котором регистрировалось наибольшее количество абонентов, передавших информацию о своем местоположении на серверы Google и Yandex. Наиболее точно местоположение по LAC и CID определяется при использовании функции усреднения, при которой вычисляются координаты всех секторов (CellID) одной базовой станции, а затем вычисляется усредненное значение.

Как работать с CellIDfinder?

Для того, чтобы начать работать с сервисом поиска местоположения базовых станций CellIdfinder необходимо установить на смартфон любой нетмонитор. Вот один из неплохих вариантов . Включаем скачанное приложение и смотрим необходимые параметры.

В данном случае в окне нетмонитора мы увидели:
MCC = 257 (Белоруссия)
MNC = 02 (МТС)
LAC = 16
CID = 2224

Вводим эти параметры в форму поиска на . Т.к. LAC и CID могут выдаваться нетмонитором как в десятичном, так и в шестнадцатеричном виде, то форма поиска имеет автозаполнение для LAC и CID во втором виде. Выбираем "Данные Google", "Данные Yandex" и, если необходима высокая точность, "Усреднение". Нажимаем кнопку "Найти БС".

В результате получили координаты для данного сектора базовой станции. Более того координаты по базам Google и Yandex практически совпали, а значит можно предположить, что БС построены на карте достаточно точно.

В продолжение темы:
Разное

В драйверах для видеокарт NVIDIA, поставляемых в составе операционной системы Windows, поддержка OpenGL обычно отсутствует. Приложения будут использовать программный рендеринг...

Новые статьи
/
Популярные