Знакомство с OsmocomBB: 0x02 Hardware

    Привет %username%! Для работы с OsmocomBB необходимо определенное оборудование, на базе которого работает программная часть, а именно: приемо-передающее устройство, Ваш компьютер, выступающий в роли сервера, и кабель, соединяющий их между собой. В роли приемо-передающего устройства (transreceiver) чаще всего выступает обычный сотовый телефон, на котором запущена кастомная прошивка. Для соединения телефона с компьютером может потребоваться преобразователь TTL-USB. Следую инструкциям, опубликованным на сайте проекта, точнее, собирая информацию по кусочкам, можно собрать рабочий аппаратный комплекс, однако на данном этапе начинающему исследователю GSM сетей может встретиться множество подводных камней. Давайте разберемся со всем по порядку.

    Навигация



    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-памяти.

    Можно приобрести уже готовый кабель на сайте sysmocom, но это не интересно, ведь его можно собрать самому. Вам понадобится 2,5 миллиметровый джек (около 5р), три провода, преобразователь (около 150р на aliexpress) и умение паять. Все это добро стоит не более 200р и гораздо дешевле 13 евро. И тут вспоминается Arduino, у которой на борту уже есть USB-TTL конвертор. Так я и сделал, когда только начинал знакомиться с проектом. На моей freeduino (отечественный клон) был распаян FT232RL, который верно служил моим восстановителем роутеров (иногда и убийцей). Он успешно принимал сообщения загрузчика, но не позволял загрузить прошивку. Поэтому лучше всего приобретать отдельный преобразователь из списка, опубликованного в разделе Hardware/SerialCable.

    Наиболее подходящими являются конверторы на базе чипсета 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!




    Навигация


    Share post

    Comments 14

      0
      Итак, ложка дегтя номер два. Данные телефоны не так-то просто найти.

      Знаете, я в начале тоже так думал. Облазил разные барахолки в поисках именно этих моделей, а продавцы пальцем у виска крутили. Потом посмотрел на алибабе и там их продают в больших количествах (явно новые, но для данного проекта подходят точно также).
        0
        Далеко не факт, что это не подделка. Во времена работы в СЦ встречал даже копию 1100 с процессором MTK.
        Естественно, при таких раскладах, они не подойдут.
          0
          Заказывал не одну штуку и не у одного продавца. Накладок не было. Но, честно говоря, не задумывался, что их могут перевыпустить с другой начинкой.
            0
            не задумывался, что их могут перевыпустить с другой начинкой
            Этоне самое страшное, на что способны китайцы.
          0
          на авито легко находятся
          +4
          Буквоедства ради: для разъемов, которые вы называете «джек» есть общепринятое обозначение TRS (в случае трехконтактного), что соответствует «tip, ring, sleeve» — конец, кольцо, корпус («рукав»). Употребление обозначений контактов T,R,S избавляет от неоднозначностей.
            0
            Обычно в народе этот соединитель называется 3.5 jack, либо mini-jack (так сразу понятнее), TRS — Это джек стерео, то есть с тремя контактами.
              +1
              Для большего числа контактов (по крайней мере для 4 и 5 контактов) просто увеличивается число колец, и коннектор начинает зваться TRRS или TRRRS :-)
            0
            и может быть использован для отладки оригинальной прошивки (сервисное меню **16379#) и общения с загрузчиком

            А можно его использовать со стандартной прошивкой для отправки например СМС от ардуины? И на какой скорости эта трасировка работает — перепробовал 115200,9600,38400 — выдаёт мусор (при это осмоком нормально загружает hello world)
              0
              Попробуйте 57600 8N1. У меня на ней что-то вроде этого:


              В этом режиме при отправке любой команды будет появляться сообщение "[AT CMD]", вместо заветного OK. Если переключиться в режим «Tool», в выводе последовательного порта появится "[EARPIECE_MODEM] type=2". Лог останавливается, и все — модем не реагирует ни на что. Посылаю AT, а в ответ тишина.

              Я думаю, использовать его с родной прошивкой в качестве модема все-таки можно. Знать бы как. Если что-нибудь получится, пишите. Самому интересно.
                0
                Я думаю, что тут используются бинарные команды (судя по крякозябрам в начале строк). Возможно, поскольку такое подключение планировалось сугубо для сервисных целей, он и не поддерживает AT команды, но у него есть какие-то свои сервисные команды для, например, СМС.
                Ещё вопрос: Вы писали по поводу лицензии на передачу. У меня есть радиолюбительская лицензия 4 категории (УКВ, мощностью до 5 ватт — хватает с запасом). Теперь мне надо телефон в РКН зарегистрировать так же как я рацию регистрировал? (или есть свои тонкости?)
                  0
                  К сожалению, я не являюсь экспертом в данном вопросе. Если, например, в Германии довольно просто получить тестовую лицензию, то в России, я вообще сомневаюсь, что это возможно. Каждому оператору в определенной области выдается один или несколько диапазонов частот, на которых они не только вещают, но и отслеживают постороннюю активность.

                  Если Вы передаете данные на Uplink-диапазонах, не создавая помех другим MS/BTS, то Вы ничего не нарушаете. Если же в планах использование телефона в качестве BTS, то лучше обзавестись клеткой Фарадея. :)
                    0
                    Если еще актуально, или просто интересно, то это протокол RVTMUX.
                    bitbucket.org/falconian/freecalypso-tools/src/default/doc/RVTMUX
                0
                del

                Only users with full accounts can post comments. Log in, please.