Jomel.Tr

QuectelScan — Go

QuectelScan — Go

Аппаратно-программный комплекс для аудита мобильных сетей. Связка железа и софта, которая в полевых условиях снимает радиообстановку сотовых сетей 2G/3G/4G и привязывает каждое наблюдение к GPS-координатам — основа для инвентаризации базовых станций, оценки покрытия и поиска источников излучения.

Исходный код: github.com/JohnCamelTry/QuectelScan.

Состав комплекса

  • Аппаратная часть — модем Quectel EG25-G: приёмник сотовых сетей (2G/3G/4G) и GNSS-приёмник в одном модуле. Управляется AT-командами через последовательный порт (/dev/ttyUSB* в Linux, COM в Windows).
  • Программная часть — десктопное приложение на Go (фреймворк Wails v2: бэкенд на Go + веб-фронтенд), работает на Linux и Windows. SQLite-драйвер на чистом Go, внешних C-зависимостей для хранилища нет.

Сбор данных

  • Сканирование сот командой AT+QOPS в режимах: все сети / только 2G / 3G / 4G; одиночный замер или непрерывный с заданным интервалом.
  • Параллельный поток GNSS: разбор NMEA (GPRMC/GPGGA), автопереподключение, конфигурация модуля через PMTK, опционально встроенный GPS модема (AT+QGPS).
  • Каждая найденная сота привязывается к координатам, числу спутников, HDOP, высоте и метке объекта (РЭО).
  • Цветовая индикация уровня сигнала по типу сети.

Какие данные собираются

По каждой соте сохраняется:

  • Идентификация сети: оператор и PLMN (MCC + MNC), тип сети (2G/3G/4G).
  • Идентификаторы соты: LAC/TAC (Location/Tracking Area Code), CID (Cell ID).
  • Радиоканал: ARFCN/FREQ (номер канала/частота), BW (полоса).
  • Метрики сигнала: уровень сигнала (dBm), качество, RSSI.
  • Геопривязка: широта, долгота, число спутников (плюс HDOP и высота из GNSS), время замера и комментарий (РЭО).

Анализ радиообстановки

  • Карта на Leaflet + OpenStreetMap: маркеры станций, антенные секторы и отдельный слой оценённых вышек.
  • Оценка положения базовых станций по серии измерений одной соты из разных точек: взвешенный по сигналу центроид (1–2 точки) или геомедиана (≥3 точек, устойчива к выбросам), с радиусом уверенности. Замеры без фикса и с плохой точностью (HDOP > 20) отбрасываются, близкие точки объединяются.
  • Параллельно ведётся журнал сырых измерений — исходные данные для геолокации вышек, без дедупликации.

Оценка осмысленна только при измерениях в движении вокруг соты (drive-test): AT+QOPS не даёт Timing Advance, а сила сигнала не равна расстоянию из-за направленности антенн, рельефа и переотражений.

Хранение и экспорт

  • SQLite (netscan.db, режим WAL): дедуплицированная сводка по сотам (UPSERT — запись обновляется при более сильном сигнале или раз в 24 часа) и отдельная таблица сырых измерений.
  • Экспорт всей базы или отдельного объекта в XLSX, GPS-трек в CSV.

Стек

Go · Wails v2 · SQLite (modernc.org/sqlite) · Leaflet + OpenStreetMap · последовательный порт (AT-команды, NMEA). Сборка под Linux и Windows (включая NSIS-установщик), покрыта go vet / go test / govulncheck.