
Навигация
Transreceiver

Все началось в 2010 году, когда разработчики Osmocom закончили основную часть OpenBSC. Возникла необходимость в реализации клиентской части протокола GSM. Тогда было два пути развития: либо реализовать приемопередающее устройство на базе нового оборудования, либо воспользоваться уже готовым решением. В качестве аппаратной платформы были выбраны телефоны Motorola на базе чипсета Calypso: C123, C118, C121. Почему именно Calypso? Дело в том, что спецификации данного чипсета в свое время благополучно утекли в Интернет и доступны по сей день.
Начался процесс дизассемблирования прошивок, и в этом же году в репозитории проекта появился первый коммит. Позже проект был портирован на телефоны с этим же чипсетом, такие как Sony Ericsson J100i, Pirelli DP-L10, Neo 1973, Neo Freerunner и еще некоторые телефоны Motorola серии C и V. Подробнее о поддерживаемых платформах можно прочитать на странице проекта Hardware/Phones.

Передача данных от сотового телефона (ms) к базовой станции (BTS) осуществляется в несколько этапов. Сначала событие передачи генерируется центральным процессором и передается на процессор обработки сигналов (DSP), который захватывает сигнал напрямую с микрофона и передает на аппаратный модулятор. После модуляции сигнал преобразуется из цифрового в аналоговый, усиливается и через switch поступает на антенну, с помощью которой и передается в эфир. Процесс приема сигнала обратный, только в данном случае сигнал проходит фильтрацию, а демодуляция выполняется программно на DSP.
Возникает вопрос: можно ли запустить OsmocomBB на современных телефонах?
К сожалению, нет. Первая проблема — это secure boot. Ни для кого не секрет, что во многих устройствах есть загрузчик, который запускает прошивку, и сотовые телефоны — не исключение. В большинстве случаев загрузчик «заблокирован» и не позволяет грузить сторонние прошивки. Существует возможность разблокировки загрузчика, но есть более серьезная проблема. Драйверы и спецификации DSP-процессоров закрыты и доступны лишь немногим.
Итак, ложка дегтя номер два. Данные телефоны не так-то просто найти. Выпускались они во второй половине нулевых годов, и на данный момент их можно найти либо на aliexpress, либо на ebay, либо на avito в соседних городах. Третий вариант наиболее актуален, так как вместо заказанного осмофона может прийти поделка. Мне удалось добыть лишь три совместимых телефона: два С118 и один С115, поэтому я буду рассказывать о работе с ними. С118 построен на платформе E88, С115 — на E87. Обе идентичны на 99,9%, как утверждают разработчики проекта. Немного фотосессии:


Еще одна важная деталь. В США, Канаде, Африке и некоторых странах Латинской Америки GSM работает в диапазонах 850/1900 МГц. Для них выпускались телефоны стандарта US. Для стандартных диапазонов частот выпускался стандарт EU. Проект OsmocomBB изначально рассчитан на стандарт EU, однако некоторым умельцам удавалось модифицировать исходный код и запускать прошивки на телефонах стандарта US. В любом случае рекомендую придерживаться стандарта EU. Как их отличить? Смотрим на географическое положение продавца. Можно так же просто проверить работоспособность телефона в наших сетях, просто позвонив кому-нибудь.
Провода и преобразователи

У рассматриваемых телефонов есть последовательный порт, выводы которого расположены на плате. Что довольно забавно, порт гарнитуры тоже выступает в роли последовательно порта и может быть использован для отладки оригинальной прошивки (сервисное меню **16379#) и общения с загрузчиком. При запуске телефона встроенный загрузчик посылает запрос на загрузку прошивки через последовательный порт, и если ему никто не отвечает, то загружается прошивка из flash-памяти.

Наиболее подходящими являются конверторы на базе чипсета FT232. Они «из коробки» позволяют использовать нестандартные скорости передачи данных и работают довольно стабильно. Следующий рекомендуемый чипсет — CP2102, которым пользуюсь я сам. Преобразователи на его основе не дорогие и после прошивки тоже позволяют использовать нестандартные скорости. Инструкцию по прошивке можно найти в разделе Hardware/CP210xTutorial. PL2303 подойдет для ограниченного круга задач, так как не умеет работать на высоких скоростях, да и прошивку иногда грузит через раз.
Что касается джека, дальний контакт является TxD, средний — RxD, а оставшийся является GND. Паять нужно аккуратно, чтобы не ничего перегреть, а по завершении проверить сопротивление каждого контакта мультиметром. После этого можно проверить работоспособность кабеля.
# 1. Выключаем телефон
# 2. Соединяем его с компьютером
# 3. Если у Вас нет minicom, устанавливаем:
$ sudo apt-get install minicom
# 4. Запускаем в режиме настройки
$ sudo minicom -s
# 5. Идем в "Настройка последовательного порта".
# Выбираем свой порт, который можно найти в выводе команды ls /dev/ | grep tty
# Скорость 115200, стоповые биты: 8-N-1.
# После этого нажимаем "Enter", затем "Esc".
# 6. Однократно (не зажимая) нажмите кнопку включения телефона.
# Если появится строка @ftmtoolerror, значит Вы готовы идти дальше.
Список возможных ошибок:
- Контакты джека сгорели при пайке. Такое возможно, поэтому лучше приобрести сразу несколько джеков и проверять сопротивление каждого контакта.
- Не тот преобразователь. Проверьте маркировку чипсета: FT232 и FT232RL — это не всегда одно и то же. Если чипсет тот, что нужен, можно выполнить небольшую диагностику, замкнув Rx и Tx между собой. При этом все, что Вы отправляете на последовательный порт, должно возвращаться обратно.
- Телефон завис на стадии загрузки. Вытащите, а затем снова вставьте батарею.
Несколько телефонов
Для работы основных модулей OsmocomBB достаточно одного телефона. Однако, для запуска BTS Вам понадобится как минимум два. Базовая станция должна рассылать beacon-пакеты, которые сигнализируют о ее присутствии и помогают телефонам подключаться к ней. Производительность сети при одновременной рассылке beacon-пакетов и обработке пользовательских соединений на одном телефоне катастрофично мала. Также при сниффинге GSM-трафика лучше обзавестись минимум двумя телефонами: один слушает служебные сообщения для прослушиваемого абонента, другой переключается на его частоты и записывает разговор.
Bonus!
