Ежемесячные архивы: сентября 2009

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

Надо сказать, что не смотря на то, что все 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 связи и вам есть о чём рассказать — мы с удовольствием пригласим вас к участию в этом блоге. Пишите!