Стільниковий зв'язок що таке CID. Як дізнатися координати базової станції GSM по MCC, MNC, LAC та CellID (CID)

Існує безліч способів позиціонування, такі як супутникова навігація (GPS), місцезнаходження по бездротовим. мережам WiFiта по мережах стільникового зв'язку.

На цьому посту ми спробували перевірити, наскільки добре працює технологія визначення місця розташування за вежами стільникового зв'язку в місті Мінську (за умови використання тільки відкритих баз даних координат передавачів GSM).

Принцип дії полягає в тому, що стільниковий телефон(або модуль стільникового зв'язку) знає, яким приймачем базової станції він обслуговується і маючи базу даних координат передавачів базової станції можна приблизно визначити своє місцезнаходження.

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


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

Тепер перейдемо до питання, як використовувати цю базу даних. Є два варіанти: використовувати сервіс перекладу Cell ID у координати, який надається сайтом OpenCellID.org, або виконувати локальний пошук. У разі локальний спосіб кращий, т.к. ми збираємося проїхати 13-кілометровим маршрутом, і робота через Інтернет буде повільною і неефективною. Відповідно нам необхідно завантажити базу даних на ноутбук. Це можна зробити, завантаживши файл cell_towers.csv.gz з сайту 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 з сайту 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).

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