Как собрать LTE-модем на базе SDR
Приветствую всех!
Пожалуй, самой закрытой технологией в пользовательском сегменте является сотовая связь. Очень немногие знают о том, как на самом деле работают телефоны и модемы, отчего им часто приписывают всякие мифические свойства. Как насчёт попробовать запустить полностью открытую реализацию модема стандарта 4G? Именно этим я и предлагаю заняться.
Итак, в сегодняшней статье поговорим о том, как взаимодействовать с мобильной сетью при помощи SDR. Попутно узнаем, какой софт для этого существует, и соберём самый дорогой 4G-модем в истории.
Традиционно будет много интересного.
❯ Суть такова
В начале года я рассматривал запуск домашней сети 4G на базе софта srsRAN и подключал к ней обычные телефоны. Сегодня мы посмотрим на эту задачу с противоположной стороны — создадим устройство, которое будет видеть сеть оператора и получать от неё данные. А заодно и подключим компьютер к мобильному интернету без использования заводского телефона или модема.
❯ Что за софт мы будем использовать?
Как я уже говорил, открытая реализация 4G не одна. Но по части «пользовательских» устройств всё несколько беднее — есть софт GR-LTE (который, правда, служит для декодирования сигналов LTE, а не для работы с сетью), а также srsUE от всё того же Software Radio Systems (srsRAN). Последний нам и нужен: это полноценная софтовая реализация LTE-модема. Изначально это ПО предназначалось для совместной работы с srsENB, то есть предполагалось, что у вас есть два ПК, на одном из которых запущена БС (eNodeB), а на другом — абонентское устройство (User Equipment). Такая связка позволяет анализировать всю работу сети полностью. Но второго SDR у меня нет, так что поговорим о самом интересном: как подключиться при помощи этого софта к обычной сети и, на этот раз, раздать интернет на компьютер.
Если у вас нет SDR, то можно воспользоваться эмулятором БС, который также описан на сайте srsRAN.Внимание!В данной статье описывается взаимодействие с коммерческими сотовыми сетями. Правильно настроенный софт никак не мешает их работе, но вы в любом случае должны иметь представление о том, что собираетесь сделать.
❯ Что нужно, чтобы запустить эмулятор модема?
Самое время определиться с оборудованием. Итак, для проведения опытов понадобится примерно следующий набор:
- Компьютер с Linux. Как и в прошлых опытах, машина должна быть достаточно мощной, чтобы обрабатывать данные с SDR. Также обязателен порт USB 3.0.
- SDR. Именно из-за него статья имеет класс «Сложный», так как подобные устройства весьма дороги и есть не у всех. Подойдут всё те же модели, что годятся для eNodeB: USRP, BladeRF или любой другой, совместимый с драйвером SoapySDR. Также srsRAN можно пересобрать под LimeSDR, но ввиду того, что такого девайса у меня нет, я не интересовался, как это сделать.
- Антенны для SDR. В идеале — те, которые специально рассчитаны на использование в сетях 3G/4G.
- Симка. Лучше, если их будет несколько, разных операторов, так как с какими-то работает стабильно, а с какими-то — не очень. Само собой, карта должна быть живая и с ненулевым балансом.
- Считыватель смарт-карт. Обязательно совместимый со стандартом PC/SC, иначе работать не будет. Всякие китайские «SIM card reader» с проприетарным софтом не подойдут.
- Телефон. Непосредственно в запуске он участия принимать не будет, но для подготовки понадобится.
GPS-DO или другой подобный источник стабильной частоты, в отличие от БС, использовать необязательно.
❯ Обзор оборудования
Перво-наперво идёт, конечно, сам SDR — USRP B200mini-i и комплект антенн к нему.
Считыватель.
Такой экземпляр можно встретить в любом месте, где есть какие-то СКЗИ или авторизация по смарт-карте, то есть практически повсеместно. Если под рукой такого нет, его можно легко купить, благо стоит он всего-ничего.
А вот пример тех, которые не подойдут — пин-пады со считывателями карт, а также проприетарные девайсы.
В общем-то, больше ничего примечательного сегодня не потребуется.
❯ Ставим софт
По умолчанию srsUE не поддерживает работу со считывателем смарт-карт, поэтому его необходимо пересобрать из исходников. Именно этим мы сейчас и займёмся.
Для начала устанавливаем зависимости:
Для запуска я рекомендую использовать дистрибутив DragonOS. Там уже установлены все необходимые зависимости. В случае использования именно его первую строчку надо пропустить. Второй строчкой устанавливаем библиотеки и софт для работы со смарт-картами.
Теперь клонируем и собираем:
Если у вас уже есть какие-то файлы конфигурации (в частности, по пути /etc/srsran), то перед началом опытов их надо снести. Как обычно, на случай, если у вас вдруг возникнут проблемы при компиляции, ссылку на уже готовый софт я оставлю тут.
Теперь подключаем к компьютеру SDR и делаем тестовый запуск:
Если после этого софт не вылетел, а в консоли появилось «Attaching UE...», значит, мы на правильном пути.
❯ Конфигурация
На сайте srsRAN всё описывается просто — запустить ПО с единственным параметром, и в путь. На деле этого недостаточно: если в srsEPC имеются некоторые допущения, то коммерческая сеть ошибок не прощает и криво сконфигурированный UE принимать не будет. Так что перед тем, как приступить к «боевому» запуску, нужно настроить параметры конфигурации. Лежат они по пути/root/.config/srsran/ue.conf.
Открываем этот файл и приводим его к следующему виду:
ue.conf :
Разберёмся с параметрами, которые нужно изменить.
- srate — частота дискретизации SDR. Ставим максимальную поддерживаемую для вашего устройства.
- dl_earfcn — номер канала, на котором UE будет искать вышку.
- mode — тип SIM-карты (soft — виртуальная, pcsc — настоящая). Устанавливаем pcsc.
- reader — считыватель. Если значение пусто, то будут проверены все имеющиеся.
- pin — PIN симки.
- imei — IMEI, которым будет представляться UE.
- apn — APN вашей точки доступа.
- login — логин.
- pass — пароль.
srsUE не проходится по всем доступным ему каналам, как это делает телефон. Поэтому для работы необходимо указать EARFCN, на котором работает вышка оператора.
На телефоне открываем Net Monitor и запоминаем номер канала от БС с хорошим сигналом, после чего заносим его в качестве значения параметра. Также надо отрубить запрос ПИНа у симки, либо ук��зать ПИН в соответствующем поле в конфиге.
Далее в телефоне открываем раздел «Точки доступа». Нас интересует APN, логин и пароль, которые тоже необходимо узнать и забить.
В моём случае параметры оказались такие: APN — internet.mts.ru, логин — mts, пароль — mts.
Также эти данные можно найти в интернете, они есть на сайте любого оператора.
Отдельным пунктом стоит упомянуть IMEI. Обычно он прошивается на заводе и не меняется (либо вообще, либо только с помощью специального софта). Но, как нетрудно догадаться, srsUE является этаким «сферическим в вакууме» девайсом, поэтому IMEI нужно задать самому, например, сгенерировать случайный для любой понравившейся модели телефона.
Другим вариантом будет использование IMEI от настоящего телефона. Набираем код *#06#, и на экране появляются заветные цифры.Очень важно: никогда не допускайте одновременной работы srsUE и телефона, IMEI которого вы взяли!
❯ Считыватель
Теперь разберёмся с подключением симки к компьютеру. Для этого понадобится ранее показанный считыватель смарт-карт.
Но есть один нюанс — большинство из них предназначены для полноразмерных карт, отчего потребуется специальный переходник, чтобы вставить в него симку. Если его нет, то берём новую симку и засовываем её вместе с пластмассовой картой.
Теперь подключаем считыватель к компу и выполняем следующую команду:
Если софт для работы со смарт-картами установлен правильно, а симка установлена в считыватель, то на экране отобразится примерно следующее:
Двигаемся дальше. Убедимся, что симка работает корректно и читается, для чего переходим в папку с собранным srsRAN и выполняем команды:
В консоли можно будет увидеть обмен данных с симкой.
❯ Запускаем
Ну что, самое время пробовать. На компьютере отрубаем Wi-Fi и LAN, после чего подключаем SDR и запускаем софт:
Начнётся стандартная процедуза загрузки прошивки в оперативную память SDR.
После этого srsUE перейдёт в рабочий режим. И, если всё было сделано правильно, через несколько секунд софт найдёт сеть, а компьютер получит IP-адрес. При этом ОС выдаст уведомление о новом подключении.
При подключении может возникнуть проблема, что при попытке подключения сеть отваливается. Мне неведомо, с чем это связано, в некоторых источниках удалось выяснить, что причина этому — нехватка пропускной способности SDR. В таком случае нужно попробовать другую вышку или другого оператора (по закону подлости МТС, с которого я только звоню, у меня подключался стабильно, а Теле2, симка которого у меня с пакетом гигабайт, только через раз).
Если в консоли сыпется бесконечное «Found cell...», значит, не проходит аутентификация. В моём случае это было вызвано специально — для проверки я вставил в считыватель дохлую симку.
❯ Доступ в интернет
Теперь, когда подключение работает, можно выйти в сеть.
Ping работает успешно.
Да и страницы тоже открываются отлично.
А вот и Speedtest, показывающий, что оператор у меня Tele2, а не домашняя «Интерсвязь».
Для проверки стабильности связи я, как и в случае с БС, открыл на компе YouTube и запустил часовое видео в хорошем качестве. Как оказалось, даже на Tele2 при успешном подключении сеть ловится весьма приемлемо.
❯ Вот как-то так
Как и ожидалось, подключить компьютер к интернету при помощи обычного SDR оказалось даже проще, чем поднять сеть. Коммерческие БС имеют хороший сигнал, поэтому сеть нормально ловится даже с не слишком хорошими антеннами. Впрочем, как оказалось, некоторые нюансы (увы, не зависящие от нас) всё равно есть, так что в идеале запастись симками сразу нескольких операторов: хоть один точно заработает. В остальном же это полностью рабочая реализация сотового модема, которую не составляет труда запустить при наличии оборудования.
Такие дела.
Автор текста: MaFrance351
Больше интересных статей в нашем блоге на Хабре.
Хочешь стать автором (или уже состоявшийся автор) и есть, чем интересным поделиться в рамках наших блогов — пиши сюда.