Архивы автора: ipse

Первая настоящая инсталляция OpenBTS!

Итак, вот и первый реальный ответ тем, кто не понимает, как и зачем использовать OpenBTS в реальных приложениях. Дэвид Бёрджес (David Burgess), Харвинд Самра (Harvind Samra) и Тим Пантон (Tim Panton) по заказу «Ниуэ Телеком» (Telecom Niue) запустили в закрытую тестовую эксплуатацию вышку с OpenBTS на острове Ниуэ.
Без приключений, конечно, не обошлось, и об этом можно почитать в блогах Дэвида и Тима.

Индикация шифрования на мобильных телефонах

Я пока ещё ни разу не видел, чтобы телефон показывал отсутствие шифрования в сети. Даже при тестировании OpenBTS, которая шифрование пока не поддерживает. Собственно, до недавнего времени я даже не знал, что по спецификации телефонам рекомендуется это делать. Узнал об этом я на 26C3 из нашумевшего доклада Карстена Нола (Kartsen Nohl) и Криса Пэйджа (Chris Paget) и последующих за этим обсуждениях. Говорят, что некоторые телефоны вообще не умеют показывать значок отсутствия шифрования, а остальные не показывают, потому что эта возможность блокируется подавляющим большинством операторов при помощи установки специального бита на SIM-карте. Вот как это описано в спецификации GSM 02.07 Normative Annex B.1.26:

Ciphering Indicator
The ciphering indicator feature allows the ME to detect that ciphering is not switched on and to indicate this to the user,
as defined in GSM 02.09.
The ciphering indicator feature may be disabled by the home network operator setting data in the «administrative data»
field (EFAD) in the SIM, as defined in GSM 11.11.
If this feature is not disabled by the SIM, then whenever a connection is in place, which is, or becomes unenciphered, an
indication shall be given to the user.
Ciphering itself is unaffected by this feature, and the user can choose how to proceed.

Ciphering Indicator

The ciphering indicator feature allows the ME to detect that ciphering is not switched on and to indicate this to the user, as defined in GSM 02.09.

The ciphering indicator feature may be disabled by the home network operator setting data in the «administrative data» field (EFAD) in the SIM, as defined in GSM 11.11.

If this feature is not disabled by the SIM, then whenever a connection is in place, which is, or becomes unenciphered, an indication shall be given to the user.

Ciphering itself is unaffected by this feature, and the user can choose how to proceed.

В моём вольном переводе:

Индикатор шифрования

Индикатор шифрования позволяет ME (Mobile Equipment, мобильное оборудование, т.е. мобильный телефон) определять, что шифрование не включено и сообщать об этом пользователю, как определяется в спецификации GSM 02.09.

Инликатор шифрования может быть заблокирован домашним оператором связи (т.е. оператором, который выпускает SIM-карту) установкой значения поля «административные данные» (EFAD) на SIM-карте, как определяется спецификацией GSM 11.11.

Если индикатор не заблокирован SIM-картой, то соединение, которое уже или только будет не зашифровано, должно сопровождаться индикатором отсутствия шифрования.

Само шифрование не затрагивается этой

Индикатор не влияет на шифрование само по себе, и пользователь сам решает, как ему действовать.

Так же эта «фича» упоминается в GSM 02.09 Section 3.3.3:

Functional requirements

...

The ME has to check if the user data confidentiality is switched on using one of the seven algorithms as defined in GSM 02.07.  In the event that the ME detects that this is not the case, or ceases to be the case (e.g. during handover), then an indication is given to the user.

This ciphering indicator feature may be disabled by the SIM (see GSM 11.11).

In case the SIM does not support the feature that disables the ciphering indicator, then the ciphering indicator feature in the ME shall be enabled by default.

The nature of the indicator and the trigger points for its activation are for the ME manufacturer to decide.

During the establishment of a call the trigger point shall be at call initiation at the latest. In the case of handover the trigger point shall be the completion of handover at the latest.

The manufacturer may provide the means to enable the user to temporarily disable the feature. This should be done in such a way that the user can protect it from misuse.

В моём вольном переводе:

Функциональные требования

...

ME должен проверять, включена ли защита конфиденциальности пользователя одним из семи алгоритмов, определённых в спецификации GSM 02.07. В случае если это не так, или перестало быть так (например, в случае передачи соединения (handover'а)), пользователю показывается индикатор.

Возможность показа индикатора фишрования может быть запрещена SIM-картой (см. спецификацаию GSM 11.11).

В случае, если SIM-карта не поддерживает возможность запрета индикатора шифрования, возможность показа индикатора шифрования должна быть включена по умолчанию.

Сущность индикатора и точки его включения определяются производителем ME.

В ходе установки соединения, точка включения индикации должна быть не позднее инициализации звонка. В случае передачи содинения точка включения индикации должна быть  не позднее завершения передачи соединения.

Производитель может дать опльзователю возможность временно отключить эту возможность Это должно быть таким образом, чтобы пользователь мог защитить её от неправильного (не авторизованного?) использования.

Ну и в спецификации GSM 11.11 Section 10.3.18 описан собственно формат хранения этого флага на SIM-карте. Он называется OFM и хранится в младшем бите третьего байта поля EFAD (Administrative data). В спецификациях на GSM его значение почему-то не рашифровывается, а в более позних спецификациях, например в 3GPP TS  31.103 Section 4.2.5 его значение чётко прописано:

The OFM bit is used to control the Ciphering Indicator as specified in TS 22.101 [21].

Т.е.

Бит OFM используется для контроля Индикатора Шифрования, как описано в спецификации TS 22.101.

Значит, имея адаптера для чтения SIM-карт или смарт-карт должно быть можно проверить наличие этого бита, а при наличии программируемой SIM-карты — снять его, и проверить, будет ли телефон показывать отсутствие шифрования при подключении к OpenBTS. Что я и собираюсь сделать в скором времени.

Если у вас есть SIM-адаптер, попробуйте прочитать этот бит на вашей SIM-карте. Давайте посмотрим, все ли операторы скрывают индикатор шифрования?

PS Спасибо Sylvain Munaut за то, что дал чёткие ссылки на места в стандарте, где эта «фича» описана.

OpenBTS 2.5.3

Некоторое время назад вышел bug-fix релиз OpenBTS 2.5.3. Всем пользующимся предыдущими версиями настоятельно рекомендуется обновиться. Архивы с исходным кодом традиционно доступны на странице скачивания SourceForge.

Всем хорошей связи :)

Beelilne ZM?

(И снова не про 26С3)

Похоже наши сотовые операторы серьёзно решили расширяться на развивающиеся рынки.

С театральным опозданием в 5 минут консорциум Вымпелкома (бренд Билайн) и Альфа-Групп подал заявку на участие в конкурсе по приватизации Zamtel (Cell-Z) — третьего по размеру сотового оператора Замбии с 200 тыс. подписчиков против 700 тыс. у MTN и 3 млн. у Zain.

При этом общее население страны почти 12 млн человек, уровень грамотности очень даже приличный — 80 % (по оценке 2003), а вот средний доход всего US$1150 в год, хотя бОльшая часть населения живёт менее чем на US$360 в год. С электричеством традиционно проблемы — многие базовые станции питаются от дизель-генераторов, и Хуавей очень гордится тем, что смог в два раза уменьшить потребление дизеля на базовых станциях своего производства в Замбии.

Получается практически идеальная картина для внедрения решений на OpenBTS. При таком небольшом охвате существующей сети стыковка с SIP не должна вызвать больших проблем. Использование правильной аппаратуры c OpenBTS позволит обойтись без дизель-генераторов вообще, исключительно за счёт солнечных батарей и ветряков. Ну а использование открытых продуктов и модульной архитектуры даст превосходную гибкость.

PS Да, сейчас OpenBTS ещё не готов к массовому внедрению. Но через год, когда он обрастёт всеми необходимыми возможностями и когда подоспеет та самая «правильная аппаратура», лучшего решения для подобных внедрений будет не найти. «Правильная аппаратура» уже разрабатывается несколькими командами (в том числе и нашей), а возможности добавляются с завидной скоростью. Так что ждите, скоро на ваших экранах...

PS Интернет-домен Замбии — ZM.

Сила локальных сообществ

Помните, ещё совсем недавно даже в Москве подключиться к интернету можно было только через домашние локальные сети, которые создавались энтузиастами? И первое время только энтузиасты ими и пользовались, а обычным людям до интернета не было дела. Видимо это естественных ход истории, когда доступный доступ в интернет появляется сначала в локальных сообществах, «для друзей».

Вот пара примеров из отдалённых (от нас) мест, где интернет — это всё ещё роскошь, а не «средство передвижения». Marcelo Balisteri в списке рассылки Village Telco представил своё видео про Parque On Line — маленького «провайдера», предоставляющего интернет в трущобах Бразилии:

Parque On Line

Второй пример — из свежей записи в блоге Дэвида Роу: Baboons, Mesh networks, and Community. Он рассказывает про mesh-сеть в Scarborough (недалеко от Кейптауна, ЮАР), благодаря которой люди из этого небольшого города имеют возможность получить доступ в интернет. Даже бесплатно, если ты согласен иметь меньший приоритет, чем у платных подписчиков.

Интересно, что в обоих случаях это бизнес, но бизнес не жадный, думающий не только о деньгах, но и о людях. Социально-ориентированный бизнес.

PS В следующей записи поделюсь впечатлениями о нашей крайне интересной поездке на CCC.

Приближается Chaos Communication Congress

C 27 по 30 декабря мы Берлине — на 26-м Chaos Communication Congress (26C3). Мероприятие обещает быть интересным и насыщенным. Будет там и с кем поговорить про GSM вообще и OpenBTS в частности — Harald Welte (лидер проекта OpenBSC) обещает запустить на время конгресса локальную GSM сеть, для любителей GSM будет выделено специальное место для общения, экспериментирования и совместной работы, а в списке лекций есть такие лекции:

  1. Playing with the GSM RF Interface
  2. Using OpenBSC for fuzzing of GSM handsets
  3. GSM: SRSLY?

Я также выступлю там с Lightning Talk и представлю наш опорный генератор на суд публики.

Все, кто остаётся в это время дома смело могут нам завидовать. ;)

PS Впрочем, все выступления будут доступны в онлайн видеотрансляциях в ходе Конгресса, а через пару месяцев — в хорошем качестве доступны для скачивания на сайте.

Стив Сонг об инновациях, связи и африканском континенте

Выложена в сеть видеозапись выступления Стива Сонга (Steve Song) на TEDx, в котором он рассказывает о Village Telco и Mesh Potato, инновациях в современном мире, телекоммуникационных операторах и о том, почему именно сейчас есть возможность радикально изменить ситуацию со связью на африканском континенте. Свой анализ современных трендов развития коммуникаций он сводит к 4 фразам:

1)  Tinkering is the new Inventing
2)  Emergence is the new Order
3)  Quantity is the new Quality
4)  Atoms are the new Bits

http://www.vimeo.com/7924369 (video, English)

http://www.slideshare.net/ssong/village-telco-tedx-newtown (slides, English)

О Village Telco

Village Telco — это некоммерческий открытый проект, финансируемый Shuttleworth Foundation, и нацеленный на радикальное снижение стоимости связи для обитателей африканского континента. Тут он конкурирует с OpenBTS, ставящим аналогичные цели, но на мой взгляд эти проекты скорее комплементарны. И это подтверждается тёплыми отношениями между представителями обоих проектов.

Вышел Kalibrator 0.2

Это уже не совсем новость, но пусть будет. :)

С милостивого разрешения автора (Joshua Lackey), я релизнул kal-0.2. Kalibrator, в народе известная как 'kal', — это утилита для проверки точности и стабильности опорного генератора вашей USRP. В качестве эталонной частоты используется синхросигнал соседней с вами базовой станции. Правда частоту базовой станции вам придётся подобрать самостоятельно. ;) Для этого можно использовать либо телефон с включённым NetMonitor, либо USRP в режиме спектроанализатора (usrp_fft.py).

Отличие kal-0.2 от kal-0.1 в возможности выбрать сторону USRP (A или B) и антенну (RX/TX или RX2).

Вышел OpenBTS 2.5.1

Вышел новый релиз OpenBTS 2.5.1. Архивы с исходным кодом традиционно доступны на странице скачивания SourceForge. Релиз 2.5 содержал несколько багов и был практически сразу же заменён на 2.5.1, так что не удивляйтесь. :)

Кроме исправления большого количества проблем, в этом релизе OpenBTS присутствует SMS-сервер smqueue, написанный Джоном Гилмором (John Gilmore), со-основателем EFF.  Сервер реализует RFC3428 store-and-forward SIP-сервер.

Обратите внимание, что при апгрейде с 2.4 необходимо обновить данные регистрации Asterisk. Теперь SIP-имена, под которыми регистрируются мобильные телефоны, начинаются с букв «IMSI». Т.е. телефон с IMSI 310410186585295 будет регистрироваться под SIP-именем «IMSI310410186585295».

Релиз содержит трансивер как для работы со стандартными USRP с 64МГц опорными часами, так и для работы с опорными часами 52МГц. Всем настоятельно рекомендуется использовать именно 52МГц опорные часы, так как трансивер для 64МГц развиваться дальше не будет и хранится только для того, чтобы людям проще было начать экспериментировать.

Universal Clocking Unit for USRP — PCBs are ready!

(русская версия поста тут)

Some time ago at OpenBTS and GnuRadio mailing lists we announced a new universal clocking board for USRP. One of it's ample features is an ability to drive USRP at 52MHz with enough stability to run OpenBTS smoothly. This week we finally received manufactured PCBs and are in process of preparing testing samples. Main batch of PCB will be passed to population soon and we hope to make them available for shipping in the beginning of December.

Here are some PCB pictures for now:

Universal Clocking Unit for USRP - PCB

Universal Clocking Unit for USRP - PCB


Universal Clocking Unit for USRP is so tiny!

Universal Clocking Unit for USRP is so tiny with all its features!


Universal Clocking Unit for USRP - positioning

Universal Clocking Unit for USRP - positioning

Опорный генератор для OpenBTS и USRP

(native English version is here)

Некоторое время назад в списках рассылки OpenBTS и GnuRadio мы анонсировали универсальный опорный (тактовый) генератор для USRP, который можно использовать, в том числе, и для тактирования USRP на 52МГц — рекомендованный режим работы для OpenBTS. На этой неделе мы, наконец-то, получили с завода платы и скоро приступим к монтажу первых тестовых экземпляров. Готовые платы, надеюсь, мы сможем предложить всем желающим где-то в начале декабря. :)

А пока — несколько фотографий:

Опорный генератор для USRP - PCB

Опорный генератор для USRP - PCB


Опорный генератор для USRP получился совсем крохотным

Опорный генератор для USRP получился совсем крохотным


Опорный генератор для USRP - примерно так он будет располагаться на USRP.

Опорный генератор для USRP - примерно так он будет располагаться на USRP.

Настоящий телефон

Объявив по всем знакомым сбор старых телефонов, мы стали собирать свою колекцию. И вот, принесли к нам такое чудо. Автомобильный GSM-телефон от Motorola, судя по интернету такие ставились в старые BMW. А может и в другие автомобили. Но выглядит впечатляюще: цельно металлический корпус, обилие дискретных компонентов, силовые компоненты. Мощность судя по всему у него была максмальная — 8Вт. SIM-карта используется ещё полноразмерная, размером со стандартную смарт-карту (приёмник для ней расположен на фотографии справа, под платой, поукруглый выступ в корпусе — это выемка для пальцев, чтобы удобнее было ей доставать).

Жаль, что нам он достался без трубки. Так как кнопки и дисплей расположены на ней, то без трубки телефон совершенно не функционален. Друзья, если у кого-то завалялась трубка к такому телефону — милости просим с ней к нам в гости! :)

А теперь фотографии:

Motorola SUF1321A car-phone inside

Motorola SUF1321A car-phone inside


Motorola SUF1321A car-phone bottom

Motorola SUF1321A car-phone bottom

Вышел OpenBTS 2.4.1

Вышел bug-fix релиз OpenBTS 2.4.1, включающий в себя пачку моих исправлений ошибок обращения к памяти и патч от Christian Meier с исправленим бага в формировании SMS.

Версия доступна для скачивания архивом или через SourceForge svn.

А мы переходим к отлову багов в грядущей 2.5, чтобы ускорить её выпуск в открытый доступ.

Об открытых и не очень кодах

Надо сказать, что не смотря на то, что все GPL-проекты равны, некоторые из них ровнее. Иначе говоря, GPL-проекты могут быть более открытыми и менее открытыми.  И OpenBTS является как раз менее открытым проектом. Как же так, ведь в лицензии написано, что все исходные коды должны быть доступны? Да, доступны, но только когда вы начинаете распространять продукт на основе этих исходны кодов. Т.е. пока вы ведёте разработку, вы можете держать свои изменения при себе и никому не показывать. Или показывать, но ограниченно. И это будет в рамках лицензии. Такие условия логичны, но иногда могут приводить к странным последствиям.

Если вы заглянете на страницу закачек OpenBTS, то найдёте там версию 1.6 (New Iberia) — это версия, которую Kestrel SP выпустили в апреле этого года, то есть почти полгода назад. Из официального блога проекта можно узнать, что на Burning Man 2009 они использовали версию 2.5, которая у них хорошо работала и которую они за время фестиваля хорошенько отладили. Более того, на официальной вики проекта приводится список совместимости с телефонами для версии 2.4.

Где же эти версии 2.4 и 2.5? А они доступны только «активным разработчикам» из сообщества и коммерческим клиентам Kestrel SP. Почему так? Дэвид объясняет — компании требуются средства на существование и клиенты готовы платить за то, чтобы первыми получить доступ к той или иной функциональности. Активные разработчики же могут быть приравнены к клиентам, потому что экономят время и деньги компании. Кроме того, — Дэвид об этом не говорит, но это очевидно, — таким образом несколько затрудняется жизнь тем, кто хочет взять софт на халяву и продать под своим брендом. В принципе, всё выглядит достаточно логично, если бы не несколько «но». Допустим, человек начинает осваиваться в проекте, делает первые тесты и тут же находит и первые баги в проекте. У него есть варианты — (1) игнорировать баг, если он не сильно мешает, (2) сообщить о нём в рассылку или в трекер проекта и (3) исправить его и отправить в проект патч. Для проекта наиболее полезен вариант (3) — проект совершенно бесплатно получает исправление, до которого у основных разработчиков не дошли руки или который редко встречается. От вариантов (1) и (2) проекту по большому счёту ни холодно, ни жарко. Но вспомним, что человек работает со старой версией и знает об этом. И в этом случае у него очень слабая мотивация исправлять найденный баг — раз разработчики пишут, что у них всё прекрасно работает, значит они, наверное, его уже исправили и можно просто подождать, пока они не выложат в общий доступ новую версию. Не делать же, действительно, двойную работу, которая будет потом никому не нужна — разработчики наверняка предпочтут своё исправление бага, чем какое-то стороннее. В итоге, многие ошибки, которые могли бы быть исправлены силами сообщества, разработчики вынуждены исправлять сами, тратя своё время (и деньги).

Есть ещё и другая сторона проблемы. Получается, что сообществу дают версию, в которая заведомо хуже работает, и при этом говорят, что всё работает отлично (но в новой версии!). Люди ставят эту версию, пытаются заставить её работать, и у них это не очень получается, они тратят на это большое количество времени и сил, в попытках понять, что же не так — ведь писали, что всё работает. Потом им говорят: «Вот вам версия поновее, мы её скоро выложим в открытый доступ, она может будет лучше работать». Они пробуют — и всё действительно начинает лучше работать. Как после этого чувствуют себя эти люди? Так, как будто их кинули. Не самое полезное ощущение, когда работаешь с open-source проектом.

PS Да, мы получили от Дэвида на тестирование версии 2.4 и 2.5. Первые результаты обнадёживают — теперь все наши тестовые Siemens'ы спокойно подключаются и работают. Более подробно о новых результатах тестирования — в следующих постах.

Первый массовый тест или Nokia vs others

Итак, позавчера, в субботу, мы провели первое тестирование собранной нами системы с разными моделями телефонов. До этого нам приходилось ограничиваться только теми телефонами, что есть у нас — несколькими старыми Siemens'ми, парой Nokia (N78 и 6021) и моим Asus P750 (на WM6). В домашних тестах:

  • Asus p750 подключаться отказывался (правда пробовали всего несколько раз).
  • Обе Nokia подключались и работали. 6021 мы подключали через стандартный поиск сети, а N78 через «BTS test» — блокировку канала (ARFCN) на используемый нашей станцией.
  • Однажды нам удалось подключить тестовый Siemens, он счастливо работал, ещё три или четыре раза отключился-подключился, нормально звонил. Мы обрадовались, пошли обедать, а когда вернулись — он уже не подключался.

В субботу проходила первая осенняя встреча Клуба ЗПШ и мы не преминули воспользоваться этим для тестирования нашей системы с более разнообразным набором телефонов. В тестах участвовали ещё несколько телефонов Nokia разной степени древности, два телефона Sony Ericsson, одна Motorola и два iPhone (2G и 3G). (спасибо всем, кто отдавал свои телефоны в наши руки! :) ) Результат — все телефоны Nokia успешно подключились и работали без проблем. Все остальные телефоны видели нашу сеть, но подключиться к ней не могли. Интересным исключением оказался iPhone 2G, который, к нашему удивлению, спокойно подключился к нашей сети. Однако при попытке позвонить на него с другого телефона (Nokia 6021) звук шёл только в одном направлении — на iPhone было хорошо слышно, что говорилось в Nokia, но в Nokia была полная тишина. К сожалению у нас не было времени подробно разбираться с этим глюком — может быть проблема на самом деле связана с SIP-частью и не имеет отношения к iPhone. При следующей возможности потестировать с iPhone попробуем разобраться в причинах такого поведения.

Вывод для тех, кто хочет поднять у себя OpenBTS — для первых тестов лучше использовать телефоны Nokia. Они не так привередливы к точности часов БС и с ними вы быстрее получите хоть что-то работающее. Можно попробовать использовать и iPhone 2G, но для них у нас пока нет большой статистики.

В целом создаётся впечатление, что мы столкнулись со знаменитой проблемой неточных часов, не смотря на то, что мы использовали стабильный малошумящий генератор собственной пайки. Нам пока не понятны причины возникших проблем — возможно виноваты какие-то наводки, которые вносят фазовый шум. К сожалению, аппаратура, на которой это можно проверить, достаточно дорога, чтобы иметь её дома «просто так» и нам приходится двигаться практически на ощупь. Если у вас есть осциллограф с полосой пропускания не меньше 500МГц, высокостабильный малошумящий генератор частот на 52Мгц или 64МГц (фазовые шумы <<-60dbc на 1khz, стабильность лучше 1ppm) или высокостабильный частотометр (точность <<0.1ppm) и вы не против пустить к ним двух человек с маленькой базовой станцией, :) вы сильно облегчите нам процесс отладки.

Напоследок, фотография с ещё одного нашего выездного теста — в подвале у меня на даче.

Тест в подвале

Тест в подвале

Идея заключалась в том, что в отсутствие сигналов других сетей телефон в первую очередь попробует подключаться к нашей БС и, соответственно, будет синхронизировать свои часы в первую очередь с ней, что должно уменьшить требования к точности часов БС. Но то ли изоляция сигнала вышки МТС, стоящей напротив, был слишком слабым, то ли наше предположение не верно, но за полчаса тестирования ни один телефон Siemens так и не смог к нам подключиться.

Что это?

Это блог, в котором мы будем писать о наших успехах в работе с OpenBTS, а так же обо всех интересных вещах, которые мы находим по дороге. Добро пожаловать в этот маленький русскоязычный островок открытой GSM связи. :)

PS Если вы тоже решили погрузиться в мир открытой GSM связи и вам есть о чём рассказать — мы с удовольствием пригласим вас к участию в этом блоге. Пишите!