Запуск собственной GSM-сети за 5 минут с помощью SDR: полное руководство

  • Автор материала: MaFrance351

Приветствую всех!

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

В этом руководстве я подробно расскажу владельцам SDR-устройств, как развернуть свою полноценную сотовую сеть. Вы потратите всего около пяти минут на изучение необходимого ПО, после чего сеть буквально заработает. Мы также активируем GPRS и совершим небольшое путешествие в прошлое, в 2007 год. Впереди много интересного.

❯ В чем суть метода?

Многие помнят знаменитый пост о сборке базовой станции из двух телефонов и компьютера. Однако у той конфигурации было множество недостатков, которых лишена станция на основе SDR. Главный и, пожалуй, единственный минус обсуждаемого сегодня метода — относительно высокая стоимость оборудования.

На просторах интернета можно найти руководства по запуску Osmocom в Docker-контейнерах, но за десятилетие это ПО серьезно устарело. Сейчас доступны новые версии с улучшенным функционалом и повышенной стабильностью.
Появление у меня полнодуплексного SDR стало сигналом: пора запускать с его помощью сеть и исследовать все возможности.

❯ Преимущества сети на базе SDR


Использование SDR позволяет избежать целого ряда проблем, характерных для решения на телефонах:

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

  • Генератор тактовой частоты. Встроенный генератор SDR обладает достаточной точностью для стабильной работы сети. Телефону же приходилось синхронизироваться по сигналу от коммерческих вышек.

  • Подключение к ПК. С SDR не нужно паять провода или следить за зарядом батареи. Достаточно подключить устройство к компьютеру, и можно не беспокоиться о проблемах на физическом уровне.

  • Производительность. В отличие от телефона, на SDR можно гибко настраивать конфигурации, обеспечивая одновременную работу звонков, SMS и интернета.

  • Стабильность. Правильно настроенная сеть на SDR не будет неожиданно «падать» или зависать.

  • Совместимость с устройствами. При запуске сети на телефонах некоторые устройства (например, Nokia) подключались с трудом или вообще не находили сеть. С SDR все протестированные телефоны подключались без проблем. Коллега предположил, что дело в форме сигнала: телефон пытается синхронизироваться с сетью оператора, а самодельная «лабораторная» сеть его не распознает. В моем случае проблему иногда решал простой перезапуск телефона.


Таким образом, если вы хотите глубоко изучить архитектуру и принципы работы сотовых сетей, покупка полнодуплексного SDR — ваш первый и необходимый шаг.

❯ Необходимое оборудование

Ключевой компонент — сам SDR. Для подобных экспериментов отлично подойдет, например, USRP B200mini-i. Естественно, потребуется и компьютер для управления. Виртуальные машины или маломощные одноплатные компьютеры вроде Raspberry Pi для этой задачи не годятся.

Также понадобится телефон для подключения к вашей сети. Нужна SIM-карта, но подойдет абсолютно любая, даже неактивная. На фото — Samsung Galaxy M12, который уже участвовал в экспериментах с LTE.

Три легендарных кнопочных телефона: Nokia 3310, Siemens CX75, Sony Ericsson K750i.

Nokia E90 — уникальный гибрид кнопочного телефона, коммуникатора на Symbian и КПК с клавиатурой.

❯ Программное обеспечение


Как и в предыдущих экспериментах с SDR, мы будем использовать дистрибутив DragonOS. Все необходимые для запуска сети компоненты уже в него включены, поэтому останется лишь немного подкорректировать конфигурационные файлы. Не придется компилировать ПО из исходников или искать рабочие примеры конфигов. Все нужные ссылки я, как обычно, оставлю в конце статьи.

❯ Настройка сети


После загрузки ОС можно приступать к конфигурации.
Откройте папку Osmo-nitb-scripts (ее ярлык есть в меню «Пуск» в разделе «Дополнительно»), а внутри нее — папку configs. Нам нужен файл openbsc.cfg.

Сеть в целом заработает и с настройками по умолчанию, но SMS могут не проходить из-за некорректных параметров тайм-слота и протокола SMPP. Поэтому сократим файл до следующего вида:

!
! Конфигурация OpenBSC, сохраненная из режима vty
gprs нет
phys_chan_config SDCCH8
!
!
password foo
!
line vty
no login
!
e1_input 0
e1_line 0 driver ipa
network
network country code 250
mobile network code 10
short name MaFrance
long name MaFrance
accept all auth policies
location updating reject cause 13
encryption a5 0
neci 1
no rrlp mode
mm info 1
absorb 0
handover rxlev averaging window 10
handover rxqual averaging window 1
handover neighbour rxlev averaging window 10
handover power budget interval 6
handover power budget hysteresis 3
handover maximum distance 9999
subscriber ram storage 0
bant ban 0
type mobile
gsm band 900
cell id 1087
location area code 13415
training sequence code 7
base station identity code 56
ms max power 30
rxlev access min 0
periodic location update 1000
cell reselection hysteresis 14
cell reselection offset 120
time offset 0
penalty time 20
channel allocator ascending
rac 9
max transmission rack 7
ip.access device-id 1801 0
oml ip.access stream-id 255 line 0
no gprs mode
trx 0
rf_lock 0
arfcn 25
nominal power 34
max power reduction 20
rssi e1 te 0
timeslot 0
phys_chan_config CCCH+SDCCH4
handover enabled 0
timeslot 1
phys_chan_config TCH/H
handover enabled 0
timeslot 2
phys_chan_config TCH/H
handover enabled 0
timeslot 3
phys_chan_config TCH/H
handover enabled 0
timeslot 4
phys_chan_config TCH/H
handover enabled 0
timeslot 5
phys_chan_config TCH/H
handover enabled 0
timeslot 6
phys_chan_config TCH/H
handover enabled 0
timeslot 7
phys_chan_config TCH/H
handover enabled 0
pg
assign-tmsi
subscriber create-on-demand random 100 199
smpp
local-tcp-port 2775
system-id OSMO-SMPP
accept all rules
esme osmocom
password 1234
osmocom extension

Кратко разберем ключевые параметры:

  • ARFCN — самый важный параметр. Это номер радиочастотного канала, на котором будет работать ваша базовая станция. С помощью приложения вроде Net Monitor нужно узнать, какие каналы заняты операторами в вашей местности, и выбрать свободный.

  • LAC (Location Area Code) — код местоположения. На работу сети напрямую не влияет, но некоторые телефоны могут не подключиться, если значение равно 0 или 1.

  • CID (Cell ID) — идентификатор соты. Подбирается аналогично LAC.

  • MCC (Mobile Country Code) — код страны. Для России это 250. Можно указать и другой, но учтите, что не все телефоны смогут подключиться к «иностранной» сети.

  • MNC (Mobile Network Code) — код сети. Нужно свериться со списком операторов (например, на специализированных сайтах).

  • long name и short name — имя сети, которое будет отображаться на экране телефона. Можете задать любое.

    Обратите внимание: Признаки, указывающие на то, что ваш партнер следит за вами при помощи вашего же мобильника.


Далее идут настройки тайм-слотов (timeslots). Каждый из них конфигурируется под определенный тип канала. Подробнее об этом можно почитать в документации.

После внесения изменений запускаем сеть командой:

sudo ./main.py

Если у вас не LimeSDR, а USRP, команда будет такой:

sudo ./main.py -d uhd

Если все сделано верно, на экране появится примерно следующее:

А через несколько секунд:

Это означает, что сеть запущена. Весь процесс, не считая загрузки ОС, занял менее пяти минут. Теперь можно пробовать подключаться.
В этом окне отображаются IMSI подключенных абонентов и их количество.

В моих тестах все телефоны подключались к сети без каких-либо проблем.

В игру вступили две новые легенды. Теперь можно совершать звонки и отправлять SMS — всё как в настоящей сети.

❯ А как насчет интернета?


Конечно, с Osmocom можно настроить и GPRS. Более того, с SDR вы получаете полноценную сеть со всеми работающими сервисами: голосовые вызовы, SMS, USSD и пакетная передача данных. В решении на телефонах для звонков требовалась дополнительная Motorola, иначе функционал был ограничен.
Теперь давайте запустим GPRS.

❯ Принцип работы GPRS


Прежде чем переходить к практике, кратко разберемся, как пакетный трафик в сети 2G попадает во внешний мир.

GPRS — это надстройка над GSM, добавляющая возможность обмена данными в пакетном режиме.

Соответственно, сеть с поддержкой GPRS включает дополнительные компоненты:

  • PCU (Packet Control Unit) — блок управления пакетами, обычно интегрированный с контроллером базовых станций (BSC).

  • SGSN (Serving GPRS Support Node) — обслуживающий узел, отвечающий за коммутацию пакетов, биллинг, проверку APN (имени точки доступа) и распределение ресурсов между абонентами.

  • GGSN (Gateway GPRS Support Node) — шлюзовой узел, соединяющий мобильную сеть с внешними сетями передачи данных (например, интернетом).


Для работы GPRS на телефоне должна быть создана точка доступа (APN) с соответствующими настройками. Обычно операторы делают это автоматически при регистрации в сети.

❯ Настройка GPRS


Как и в предыдущем случае, начинаем с конфигурации сети.

Сначала нужно узнать имя сетевого интерфейса, через который ваш компьютер выходит в интернет. Для этого используйте команды ifconfig или iwconfig.

Затем откройте файл opengts_egprs.cfg из папки configs и приведите его к следующему виду:

!
! Настройки OpenBSC, сохраненные из vty
!
!
password foo
!
line vty
no login
!
e1_input 0
e1_line 0 driver ipa
e1_line 0 port 0
e1_line 0 no keepalive
network
network country code 250
mobile network code 10
short name MaFrance
long name MaFrance
accept all auth policies
allowed regexp .*
location updating reject cause 13
encryption a5 0
neci 1
no rrlp mode
mm info 1
absorb 0
handover rxlev averaging window 10
handover rxqual averaging window 1
handover neighbour rxlev averaging window 10
handover power budget interval 6
handover power budget hysteresis 3
handover maximum distance 9999
subscriber ram storage 0
bant ban 0
type mobile
gsm band 900
cell id 7229
location area code 7619
training sequence code 7
base station identity code 63
codec support fr efr amr
ms max power 15
rxlev access min 0
periodic location update 1000
cell reselection hysteresis 14
cell reselection offset 120
time offset 0
penalty time 20
radio link timeout 32
channel allocator ascending
rac 9
max transmission rack 7
channel description attach 1
channel description bs-pa-mfrms 5
channel description bs-ag-blks-res 1
ip.access device-id 1801 0
oml ip.access stream-id 255 line 0
gprs mode
gprs routing area 1
gprs cell bvci 1234
gprs nsei 1234
gprs nsvc 0 nsvci 1234
gprs nsvc 0 local udp port 23001
gprs nsvc 0 remote udp port 23000
gprs nsvc 0 remote ip 127.0.0.1
no force attach
trx 0
rf_lock 0
arfcn 100
nominal power 34
max power reduction 20
rssi e1 te 0
timeslot 0
phys_chan_config CCCH+SDCCH4
handover enabled 0
timeslot 1
phys_chan_config SDCCH8
handover enabled 0
timeslot 2
phys_chan_config TCH/H
handover enabled 0
timeslot 3
phys_chan_config TCH/H
handover enabled 0
timeslot 4
phys_chan_config TCH/H
handover enabled 0
timeslot 5
phys_chan_config TCH/H
handover enabled 0
timeslot 6
phys_chan_config PDCH
handover enabled 0
timeslot 7
phys_chan_config PDCH
handover enabled 0
pg
assign-tmsi
subscriber create-on-demand random 100 199
smpp
local-tcp-port 2775
system-id OSMO-SMPP
accept all rules
esme osmocom
password 1234
osmocom extension

Здесь активирован режим GPRS, а также изменена конфигурация двух тайм-слотов под передачу пакетных данных (PDCH). Параметры сети (имя, канал, коды) нужно изменить, как и в предыдущем разделе.

На телефоне необходимо вручную создать точку доступа (APN). В случае с srsRAN имя APN может быть любым, так как оно не проверяется сервером и нужно лишь для инициации соединения самим телефоном.
Теперь запускаем сеть с поддержкой GPRS. Команда будет выглядеть так:

sudo ./main.py -d uhd --gprs -i [имя_сетевого_интерфейса]

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

Для теста использовался тот же Samsung-смартфон. После подключения к сети и включения мобильных данных в строке состояния появилась надпись «EDGE». Отлично, это работает!

Стоит отметить, что пользоваться интернетом было не всегда просто. Во-первых, многие приложения настойчиво пытаются получить доступ к сети. Во-вторых, скорость на узких каналах далека от современных стандартов, и «тяжелые» сайты грузятся медленно. Однако легковесные ресурсы вроде old-dos.ru открываются вполне приемлемо.

Затем я подключил к сети кнопочный телефон. Он также успешно зарегистрировался в сети и обнаружил GPRS.

❯ Возвращение в 2007 год


Мобильный интернет — пожалуй, один из немногих аспектов «тех времен», по которому я не испытываю ностальгии.

За совершенно заоблачные по тем временам деньги (несколько рублей за мегабайт) мы получали очень медленное соединение. Мобильные версии сайтов тоже сильно отличались от современных. Было два основных протокола: WAP (специально созданный для GSM и работающий через шлюз по GPRS или даже SMS), который использовал страницы в формате WML, и обычный HTTP, но с префиксом «wap.». Многие сайты имели мобильные версии.

Эти сайты были особенными. На типичной странице можно было найти всё: от новостей и софта (с обязательными разделами под J2ME, Windows Mobile и Symbian) до знакомств и дешевого контента для взрослых. Многие телефоны того времени до сих пор хранят на картах памяти картинки, скачанные по 5 рублей за штуку.

Тогда же появилось и понятие «сайтов премиум-класса». Их суть была в том, что посещение, казалось бы, обычной страницы могло не только опустошить баланс, но и увести его в серьезный минус. Тарифы на них были завышены (до сотен рублей за мегабайт), а доступ — платным при любых условиях. Использовались и грязные SEO-приемы вроде «невидимых» изображений, нагружающих трафик.

Кстати...

Нечто подобное существует и сегодня, но в меньших масштабах (например, страницы с ошибкой 404 у некоторых операторов).
Случайный клик по рекламе (иногда стилизованной под видеоплеер) может привести к списанию 20-30 рублей в день. Отписаться от такой услуги бывает очень сложно.

Для полноценной работы WAP потребуется WAP-шлюз, поэтому в рамках этой статьи ограничимся HTTP.

К сожалению, Siemens не смог загрузить ни один сайт. Возможно, проблема в настройках точки доступа, или его браузер поддерживает только WML. Максимум, что удалось получить — сообщение «Подключение...».

Поэтому на помощь пришла Nokia E90, которая успешно загрузила old-dos.ru…

...и другие старые мобильные сайты.

А это экран Nokia N95.

Интересно, эта лента новостей обновлялась? Или «что нового сегодня» было таким же и десять лет назад?

Поищем в Google список старых сайтов, которые еще живы. И вот еще один пример…

Любопытно: это программа для Windows Mobile, а иконка — из Windows 8/Windows Phone…

lankost.net — один из крупнейших сохранившихся сайтов той эпохи.

> Продолжение материалов, связанных с Habr. К сожалению, все фотографии не уместились (их было очень много), но я постарался выбрать самые показательные и интересные. :)

  • Материал подготовлен специально для читателей Timeweb Cloud и Pikabu. Подписывайтесь на наш блог, чтобы не пропустить новые интересные статьи.

  • Также подписывайтесь на наш эксклюзивный Telegram-канал, посвященный техническим, познавательным и юмористическим материалам об IT, технологиях и электронике. Будет интересно!

  • Timeweb Cloud — это реферальная ссылка на облачный сервис, которая помогает поддерживать проект.

[мой]GsmSdrTimewebЭлектроникаМобильный телефонТехнологияИнтернетСвязьAndroidДлинные сообщения 136

Больше интересных статей здесь: Гаджеты.

Источник статьи: Как запустить собственную GSM-сеть за пять минут при помощи SDR.