The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Раздел полезных советов: Настройка 4G WiMAX-модема на чипах ..."
Отправлено auto_tips, 25-Окт-10 11:32 
Недавно в инете появился Sprint 4G Depelopment Pack, содержащий исходники драйверов и API для модемов на чипсете Beceem, а также документацию и различные тестовые утилиты.

К сожалению, поставляемая документация местами не соотвествует, описывает прежнюю версию драйверов и многое пришлось додумывать по ходу. В частности, там заявлено ядро версии от 2.6.9 и выше. На самом же деле, требуется ядро минимум 2.6.29 т.к. используются некоторые функции USB Core API, которых нет в прежних ядрах. В этом был первый долгий затык - попытка установить на CentOS 5.5.

Необходимые требования для сборки и корректной работы:
- Ядро Linux версии не ниже 2.6.29
- Административный доступ с правами root
- Пакеты linux-source, kernel-headers, openssl 0.9.8, С-compiler, usb-modeswitch и др.

В этой статье описывается установка на Ubuntu-server-10.10 i386 с ядром 2.6.35.
Используется 4G-модем Huawei BM338 на чипсете Beceem BCSM250 от провайдера byfly (Белтелеком). Модем позиционируется как решение Mobile-WiMAX и работает на частоте 3,5 ГГц.

Сссылка на архив Sprint 4G Depelopment Pack: http://developer.sprint.com/getDocument.do?docId=101032


++ 1. Подготовка ядра

Устанавливаем все необходимые пакеты:


   apt-get install linux-source linux-headers-$(uname -r) openssl unzip dos2unix patch
   cd /usr/src
   tar xvfj linux-source-2.6.35.tar.bz2
   cd linux-source-2.6.35
   make oldconfig && make prepare
   make modules_prepare

++ 2. Установка  и настройка usb-modeswitch

Утилита usb_modeswitch необходима для автоматического переключения устройства из режима ZeroCD (на котором драйвера для Windows) в режим модема. Если запустить lsusb, то увидим устройство в режиме ZeroCD:

   Bus 001 Device 003: ID 198f:bccd Beceem Communications Inc.

Устанавливаем:

   apt-get install usb-modeswitch
   cat /etc/usb_modeswitch.d/198f\:bccd >> /etc/usb_modeswitch.conf

Редактируем файл /lib/udev/rules.d/40-usb_modeswitch.rules - можно удалять описания всех устройств, кроме Beceem. Должно остаться что-то вроде:

   LABEL="modeswitch_rules_begin"
   # Beceem BCSM250
   ATTRS{idVendor}=="198f", ATTRS{idProduct}=="bccd",  RUN+="usb_modeswitch '%b/%k'"
   LABEL="modeswitch_rules_end"

Перезапускаем udev:

   service udev restart


Теперь, если снова вставить модем, вывод lsusb должен быть такой:

   Bus 001 Device 003: ID 198f:0220 Beceem Communications Inc.
- 198f:bccd поменялся на 198f:0220


++ 3. Установка модуля ядра и Beceem API Library

Распаковываем скачанный архив:

   tar xvfz Sprint4GDeveloperPack-1.1.tar.gz
   cd Sprint4GDeveloperPack-1.1

Собираем:

   ./install.sh

Скрипт задаст ряд вопросов по поводу расположения директорий, главное указать правильную директорию с исходниками ядра. В моем случае это /usr/src/linux-source-2.6.35

Скрипт соберет модуль ядра drxvi314.so, библиотеку libxvi020.so и копирует прошивку девайса в /lib/firmware. После чего выдаст ошибку - остальные компоненты будем собирать позже вручную. Нам еще потребуется конфиг устройства от провайдера, берем его из папки с установленной программой в винде (Program files/Wimax Connection Manager/Driver/Firmware/macxvi.cfg) и кладем в /lib/firmware. Теперь загружаем модуль ядра:

   modprobe drxvi314

Если все прошло удачно - на модеме должен загореться красный светодиод. Также стоит глянуть вывод dmesg -c, там должно быть что-то типа

   ...
   [    6.240000]
   [    6.240035] register_networkdev:Beceem Network device name is eth1!
   ...
   ...
   [    7.197554] usbcore: registered new interface driver usbbcm
   [    7.197562] Initialised usbbcm

Для автозагрузки добавляем drxvi314 в /etc/modules
Поднимаем eth1:

   ifconfig eth1 up


++ 4. Установка Beceem Connection Manager и библиотек

   unzip CSCM_v1.1.6.0_source.zip
   cd CSCM

Т.к. в составе исходников не оказалось заголовочных файлов OpenSSL, качаем нужную версию с сайта:

   wget http://www.openssl.org/source/openssl-0.9.8o.tar.gz
   tar xvfz openssl-0.9.8o.tar.gz

и кладем заголовочные файлы в нужные места:

   cp -R openssl-0.9.8o/include/openssl wpa_supplicant/openssl
   cp -R openssl-0.9.8o/crypto crypto
   cp -R openssl-0.9.8o/ssl ssl
   cp -R openssl-0.9.8o/e_os2.h e_os2.h
   cp -R openssl-0.9.8o/include/openssl BeceemEAPSupplicant/BeceemEngine/openssl
   cp -R openssl-0.9.8o/crypto BeceemEAPSupplicant/crypto
   cp -R openssl-0.9.8o/e_os2.h BeceemEAPSupplicant/e_os2.h
   ln -s /lib/libssl.so.0.9.8 /lib/libssl.so
   ln -s /lib/libcrypto.so.0.9.8 /lib/libcrypto.so

Конвертируем build.sh в UNIX-формат и собираем:

   dos2unix build.sh
   chmod +x build.sh
   ./build.sh pc_linux

В конце скрипта должно быть написано SUCCESS по всем компонентам.

Кладем библиотеки, демон и клиент в нужные места:

   cp bin_pc_linux/bin/lib* /lib/
   cp bin_pc_linux/bin/wimax* /usr/local/bin/


++ 5. Конфигурирование демона wimaxd

Тут есть одна непонятная вещь, над которой тоже пришлось долго "плясать с бубном".

Ранее, при сборке модуля ядра, мы уже скопировали конфиг устройства (файл macxvi.cfg), поставляемый провайдером. Такой же файлик есть и в архиве Sprint'а, но с ним модем ведет себя странно (не работают светодиоды, поиск БС происходит очень долго и т.д.). Но при этом, демон wimaxd, наоборот, корректно работает именно с конфигом Sprint'а (с родным провайдерским конфигом были проблемы с TLS-аутентификацией).

В общем, в /lib/firmware/ должно быть 2 файла:

macxvi.cfg - конфиг провайдера, его использует модуль ядра.

macxvi-sprint.cfg - конфиг Sprint'а из архива (лежит в Sprint4GDeveloperPack-1.1/Rel_5.2.7.3P1_USB/Tools/config/CFG_files_for_VSG_testing/macxvi_VSG_2.6-3.5_FLASH_r37.cfg) - он нужен для демона wimaxd

Создаем конфиг wimaxd, например /etc/wimaxd.conf
После изучения документации, а также методом проб и ошибок получилось вот такое содержимое:

/etc/wimaxd.conf:

   BandwidthMHz                    10
   CenterFrequencyMHz              3416 3426 3436 3446 3516 3526 3536 3546

   AuthEnabled                     Yes
   EAPMethod                       4
   UserIdentity                    '6816C0B1C045@wimax.beltel.by'

   ValidateServerCert              Yes
   CACertPath                      '/usr/local/beceem/certs'
   CACertFileName                  '/usr/local/beceem/certs/ca.pem'
   TLSDeviceCertFileName           '/usr/local/beceem/certs/cpecert.pem'
   TLSDevicePrivateKeyFileName     '/usr/local/beceem/certs/cpekey.pem'
   InnerNAIChange                  Yes

   BeceemEngineFileName            '/lib/libengine_beceem.so'

   #AuthLogLevel                   4
   #AuthLogFileName                '/tmp/CM_Auth.log'

   FirmwareFileName                '/lib/firmware/macxvi200.bin'
   ConfigFileName                  '/lib/firmware/macxvi-sprint.cfg'

Немного пояснений.

Параметры BandwidthMHz и CenterFrequencyMHz взяты из настроек виндошной программы.

EAPMethod 4 - EAP-TLS

UserIdentity - логин. Первая часть логина до символа @ - это МАС-адрес устройства без двоеточий. Также взят из настроек виндошной программы.

CACertPath, CACertFileName, TLSDeviceCertFileName, TLSDevicePrivateKeyFileName - пути к файлам сертификатов и ключей. Их нужно взять из папки с установленной программой в винде (Program Files/Wimax Connection Manager/cert/) и положить в указанную конфигом директорию.

InnerNAIChange Yes - не знаю что это, но без этой опции ошибка аутентификации при подключении.

FirmwareFileName, ConfigFileName - пути к файлам прошивки и конфига от Sprint'a


++ 6. Подключение

Запускаем демон:

   wimaxd -D -c /etc/wimaxd.conf

Результатом правильной работы будет непрерывный вывод сообщения  Link status = WAIT FOR PHY SYNC CMD - это значит, что демон готов принимать команды от клиента. Открываем другую консоль и запускам клиент:

   wimaxc -i

Должно появится приглашение

   Beceem CM Server Version 1.1.6.0
   >

а в консоли демона сообщение

   Client socket 00000006 lock Beceem API: SUCCESS (wait = 0 ms)
   Client socket 00000006 unlock Beceem API: Success

Начинаем сканирование:

   > search

Через секунд 30 клиент выдаст найденные BSIDs, что-то вроде такого:
Network search returned 4 base stations.

   Idx BSID Pre      Freq      BW  RSSI  CINR
    0  01:01:00:00:02:00:17:00 0x05 3416.000  10.000   -70    26
    1  01:01:00:00:02:00:17:20 0x05 3426.000  10.000   -76    17
    2  01:01:00:00:02:00:17:10 0x05 3436.000  10.000   -74    20
    3  01:01:00:00:02:00:17:30 0x05 3446.000  10.000   -72    24

Подключаемся к той, у которой соотношение сигнал/шум максимальное, в данном случае 0

   > connect 0

и если параметры аутентификации заданы верно, соединение будет установлено, а светодиод модема сменится на зеленый с мигающим желтым. В консоли демона можно увидеть такую информацию:

   =============== Received Message Start (2010/09/24 18:03:10.622) ===========
   u32State = Network Entry completed
   Service flow response received  (Type = 6 - Subtype = 1 - Length =    8476)
   Service Flow Add Indication:
   Type               = 13
   Direction          = Uplink
   Connection ID      = 10039
   Virtual CID        = 4
   Service flow ID    = 513
   Max sustained rate = 512 kbps
   Traffic priority   = 0
   =============== Received Message End (type=6 sub-type=1) ===============
   Device status indication: Layer 2 connected

   =============== Received Message Start (2010/09/24 18:03:10.682) ===========
   u32State = Network Entry completed
   Service flow response received  (Type = 6 - Subtype = 1 - Length =  8476)
   Service Flow Add Indication:
   Type               = 13
   Direction          = Downlink
   Connection ID      = 10040
   Virtual CID        = 5
   Service flow ID    = 512
   Max sustained rate = 2680 kbps
   Traffic priority   = 0
   ================
   Link status = LINKUP ACHIEVED

Здесь видны параметры скорости даунлинка/аплинка (2680/512 kbps - ограничение провайдера).

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


++ 7. Финальные шаги

После того, как все будет правильно настроено - демон можно запустить в фоне:

   wimaxd -c /etc/wimaxd.conf

и занести в стартовые скрипты системы.

Клиентскую часть тоже можно автоматизировать, в документации есть пример скрипта на Python. Но я не силен в программировании на Python, поэтому оставляю это за рамками статьи.

Осталось настроить PPPoE-соединение к провайдеру. Тут уже все стандартно - запускаем pppoeconf и отвечаем на вопросы. Обратите внимание, что интерфейс eth1 изначально не поднят, перед запуском PPPoE его нужно активировать (ifconfig eth1 up)

Стартуем:

   pon dsl-provider
   ... и вуаля! Проверяем, поднялся ли ppp0:
   ifconfig ppp0

   ping ftp.mgts.by
   --- ftp.mgts.by ping statistics ---
   177 packets transmitted, 177 received, 0% packet loss, time  176214ms
   rtt min/avg/max/mdev = 42.551/59.213/71.809/8.631 ms

Работает все хорошо, проблем замечено не было. Скорость - максимальная, ограниченная провайдером. Субъективно, пинг стал меньше и ровнее, чем под Windows.

При подготовке статьи была использована документация из Sprint 4G Depelopment Pack.

P.S. Выражаю благодарность человеку под ником amod-cccp за предоставленный линк на этот пак (месяц назад искал какую-либо информацию - ничего не нашел).


URL:
Обсуждается: https://www.opennet.ru/tips/info/2468.shtml

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру