Сотовая связь что такое cid. Как узнать координаты базовой станции GSM по MCC, MNC, LAC и CellID (CID)

Существует множество способов определения местоположения, такие как спутниковая навигация (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.

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

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 практически совпали, а значит можно предположить, что БС построены на карте достаточно точно.

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

Из англоязычных сервисов, пожалуй, лучше всего 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 и получить информацию о ее местонахождении. В крупных городах не помешает попробовать найти народные карты с расположением вышек, но стоит понимать, что вышки принадлежат разным операторам. Плюс базовые станции ставят не только на столбы, но и на крыши домов.