Как стать автором
Обновить

Opensource разработка на примере реализации поддержки меш-сети стандарта IEEE802.11s для интернет-планшета Nokia N810

Время на прочтение3 мин
Количество просмотров2K
В статье рассказывается о личном опыте реализации небольшого opensource проекта и о вопросах, возникших в ходе.

Я был на собрании Open Source Linux Lab осенью 2008 года, на котором прозвучала идея реализовать поддержку IEEE802.11s для Nokia N810. Прозвучала как одно из безумных предложений о том, что можно сделать с этим замечательным устройством.

Произошло это чуть позже того, как Nokia опубликовала под GPL код драйвера stlc45xx, способного управлять wi-fi адаптером встроенным в N810 и организовала проект stlc45xx.garage.maemo.org.

Что интересно, сама Nokia за прошедшие пол года не выпустила прошивки с обновленным ядром или сетевым драйвером.
Почему — это первый вопрос без ответа.


На первый взгляд задачка, как мне показалось, для опытного администратора — сборка правильного ядра, сборка stlc45xx, настройка запуска. Но нет, оказалось, stlc45xx поддерживает только работу в режиме клиента wi-fi точки доступа. С правильным ядром тоже оказалось не всё просто. README из stlc45xx отсылал к ветке linux-omap, специфичной для процессоров TI OMAP 2420, на которых построены N800 и N810. Но с течением времени stlc45xx стал заметно отклоняться в своих требованиях к библиотеке mac80211 от того, что предоставляет linux-omap. Kalle Valo, основной разработчик stlc45xx, объяснил это тем, что ему нужны изменения, появляеющиеся в ветке linux-wireless. Для чего он периодически объединяет головы linux-omap и linux-wireless. А linux-wireless имеет список рассылки, в который приходит порядка 1000 сообщений за месяц, из которых около трети — патчи. Простая на первый взгляд задача стала напоминать стрельбу по подвижной мишени.

Я не стану описывать деталей разборок с технической частью драйвера, перечислю только основные возникшие вопросы и ответы.
Первый вопрос — конечно, что такое меш? Как он относится к другим режимам работы сетей стандарта IEEE802.11? Что требуется от драйвера чтобы поддержать его?

Создалось впечатление, что, не смотря на частое упоминание термина, мало кто знаком с технической стороной дела. Стандарт находящийся в состоянии черновика нашей группе не удавалось получить в течение нескольких месяцев. И это при том, что проект за это время был зарегистрирован во FRUCT и за помощью мы обращались в Nokia. Многое прояснили существующие в linux драйвера с поддержкой режима mesh, например p54, многое — анализ работы адаптеров, для которых качество реализации черновика находится на должном уровне, например b43. Но только получив черновик стандарта мы приобрели какую-то уверенность в своей разработке. В итоге мы реализовали режим ad-hoc, как основу для IEEE802.11s в драйвере stlc45xx и отправили серию патчей в рассылку stlc45xx-devel@garage.maemo.org.

На маленьком шаге от ad-hoc к mesh, мы столкнулись, как потом оказалось, с известной особенностью firmware для нашего wi-fi адаптера — пакеты, длина которых не кратна 4 укорачиваются до ближайшей кратной 4 длины. Однако, вопрос об этом, заданный в stlc45xx-devel в январе 2009, оставался без ответа больше полумесяца. После чего Kalle Valo сказал, что не слышал ни о чем похожем на нашу проблему.

Таким образом, маленькое сообщество на garage.maemo.org оказалось бессильным перед лицом этой проблемы.
Отсюда ещё один вопрос: почему opensource проекты не ищут наибольшей возможной для себя аудитории, а ютятся по частным форумам? Это единичная ошибка, или распространенное явление?

Так или иначе, не получив ни поддержки ни тестирования на garage.maemo.org, мы решили попробовать вошедший к тому моменту в linux-wireless p54spi предназначенный для тех же wi-fi адаптеров. «Ядро», думал я, «один шаг до дерева Линуса». Опять все не так просто. До дерева Линуса p54spi еще не добрался, а в linux-wireless его, похоже, никто не тестировал. Факт: в начале марта 2009 p54spi в дереве linux-wireless был неработоспособен, из-за элементарных опечаток в коде. Несколько патчей отправленных в linux-wireless@vger.kernel.org решили эти мелкие проблемы. Здесь же очень быстро прояснился статус упомянутой ошибки firmware. Однако более существенные трудности, связанные с неустойчивостью драйвера под нагрузкой, присутствующие как в stlc45xx, так и в p54spi разрешить до сих пор не удалось. Причина — недостаток информации, теперь — о функционировании firmware. Спецификацию состава регистров, назначения их битов и временных диаграмм для адаптера stlc4560 оказалось очень сложно найти. Официально она не поставляется. И даже случайно найденная неофициально, она оставляет свободу для догадок.

Здесь еще один вопрос: почему некоторые производители оборудования так относятся к своим спецификациям? Почему они, по-видимому, не заинтересованы в доступности и качестве драйверов для своей продукции?

Итог такой: 12 апреля мы записывали демо-ролик с гетерогенной меш-сетью между N810 и OLPC XO для выступления OSLL на пятом семинаре FRUCT, который состоится 29-30 апреля. Патчи p54spi приняты в linux-wireless. Вторая стадия проекта близится к завершению. OSLL продолжает улучшать драйвер.

Присоединяйтесь к нам, мы открытая группа. У нас есть интересные проекты.

Я верю, opensource победит. (:
Теги:
Хабы:
Всего голосов 46: ↑39 и ↓7+32
Комментарии7

Публикации

Истории

Ближайшие события

AdIndex City Conference 2024
Дата26 июня
Время09:30
Место
Москва
Summer Merge
Дата28 – 30 июня
Время11:00
Место
Ульяновская область