++ ПредисловиеКогда-то давно купил себе данный модем (на чипсете Beceem BCS200) с тарифом без абонентской платы, в качестве резервного канала, с тех пор пользовался от случая к случаю, тем более тариф тому способствовал. А тут недавно мой проводной провайдер отвалился на целый день и решил проверить, а не появилось ли решения под Linux? Одно дело компьютер с WiMax, а другое дело домашний роутер обеспечивающий несколько компьютеров интернетом. Что интересно в сети уже с 2010 года лежат готовые решения но для других провайдеров, а для Комстар-а нет, либо не нашёл. Да и сам провайдер не заботиться о Linux пользователях. Попадались решения и для других модемов, но как-то не возникло желания покупать ещё один, когда этот достался по акции.
++ Введение
На одно из решений наткнулся [[http://www.opennet.dev/openforum/vsluhforumID3/71759.html здесь]]. Там кто-то в комментариях очень похожий конфиг для другого провайдера выложил. Информацию по настройке параметров для Комстар частично взял [[http://forum.yotatester.ru/showthread.php?t=3788 отсюда]]. Если кто-то знает где лежат параметры сети для Yota, сообщите, размещу ссылку. Там же можно по ссылке скачать необходимый сертификат (ca1.cer), либо вытащить его из Comstar Connection Manager (далее CCM), но об этом ниже.
++ Подготовка
Нам понадобится:
1. Компьютер с Linux, у меня был c Fedora 15 (x86), пробовал модули собирать и на x86_64.
2. Как советует автор [[http://www.opennet.dev/openforum/vsluhforumID3/71759.html одного из решений]], нужно установить пакеты linux-source linux-headers openssl unzip dos2unix patch gcc. Возможно у вас они будут называться немного иначе (у меня первые два такие kernel-debug kernel-headers), и это возможно не полный список.\
3. Самое главное [[http://developer.sprint.com/getDocument.do?docId=101032 Sprint 4G Depelopment Pack]], по данной ссылке всегда последняя версия, где взять предыдущие не знаю. Кстати, этот пакет, позволяет экспериментировать и под Windows, а затем можно немного отредактировав, перенести настройки в Linux, что я и сделал, так как не было уверенности в правильной работе драйверов под Linux. Модуль ядра, судя по коду, должен поддерживать VID=0x198F PID=0x0300, 0x0210, 0x0220, 0x15E, 0x015F, 0x0160. Под Lunix для своего модема VID и PID можно посмотреть командой lsusb, предварительно вставив его в USB.
Скачиваем Sprint 4G Depelopment Pack, распаковываем его в любой каталог.
В корне каталога Sprint4GDeveloperPack-1.6.1.2.2 (у вас может оказаться уже другая версия), находим там файл install.sh и немного его поправим.
Если не хотите потом вводить путь к исходникам ядра, это можно сделать до запуска инсталлятора, отредактировав соответствующую строчку в файле install.sh
KERNEL_SOURCES=${5:-/usr/src/linux};
На случай если в директории /usr/src/kernels/ будет несколько версий исходников ядра, уточнить текущую версия ядра можно командой uname -r или например так, в данном случае, версия ядра, будет подставляться автоматически:
KERNEL_SOURCES=${5:-/usr/src/kernels/`uname -r`};
Ещё изменил параметр POWER_SAVE на Off, это на ваш вкус, работало в обоих случаях.
POWER_SAVE_On_Off=${12:-On}
++ Установка
Запускаем install.sh
На вопрос о лицензии нажимаем "y", далее если вы отредактировали install.sh жмём Enter до вопроса о корректности настроек, там надо нажать "y", после чего начнётся копирование файлов и сборка пакета. Ждём результата либо ошибок. У меня если и возникали ошибки, только из-за нехватки того или иного пакета. После ошибки опять запускаем, после стандартной процедуры вопросов появиться ещё один, тут выбираем "A" затем Enter.
После сборки, нужно проверить загрузку и работу модуля, вставьте модем в USB разъём, затем выполните:
modprobe drxvi314
Теперь посмотрим появился ли у нас ещё один интерфейс
ifconfig -a
Если не помните какие у вас были интерфейсы, выгрузите модуль и сравните вывод
rmmod drxvi314
ifconfig -a
Запомните имя интерфейса, он понадобиться в файле конфигурации.
++ Конфигурация
Если модуль ядра загружается и работает, его можно вставить в "автозагрузку" в конец файла /etc/rc.d/rc.local, если такого нет, создайте. Понадобиться сертификат из CCM, если не хотите выковыривать, можно скачать но с другим именем [[http://forum.yotatester.ru/showthread.php?t=3788 здесь]]. Благодаря этой ссылке и были подобраны правильные параметры для конфига. В CCM надо найти файл ca1.cer и конвертировать его командой
openssl x509 -inform DER -in ca1.cer -outform PEM -out ca1.pem
положите его куда хотите, например чтоб директория зря не пропадала в
/etc/Sprint4G/ca1.pem
Туда же положим и конфиг /etc/Sprint4G/wimaxd.conf
# Частотный план, не уверен что стоит писать сюда лишнее,
# иначе модем в автоматическом режиме может долбиться к другому провайдеру.
BandwidthMHz 10
CenterFrequencyMHz 2540 2550 2560
AuthEnabled Yes
EAPMethod 0
UserIdentity 'ваш_логин@wimax.comstar-uts.ru'
UserPassword 'ваш_пароль'
ValidateServerCert Yes
CACertPath '/etc/Sprint4G/'
CACertFileName '/etc/Sprint4G/ca1.pem'
TTLSAnonymousIdentity 'Anonymous@wimax.comstar-uts.ru'
TLSDevicePrivateKeyPassword ''
PrivateKeyPasswordFormat 'Ascii'
AuthenticationTimeoutSec 10
InvertMSKByteOrder No
AlwaysIncludeTLSLength No
EAPFragmentMaxLength 1398
EAPPollingLoopIntervalMs 50
TLSDevicePrivateKeyPassword ''
InnerNAIChange No
NetworkSearchTimeoutSec 60
LPSearchInShutDownEnabled No
NetworkEntryTimeoutSec 10
NEToHighestCINRBaseStation No
BeceemEngineFileName '/usr/lib/libengine_beceem.so'
AuthEthernetToRADIUS No
# Автоподключение
AutoReConnectEnabled Yes
AutoReDisconnectEnabled No
SkipNetSearch No
AutoReConnectIntervalSec 1
AutoReDisconnectIntervalSec 20
LinkStatusRequestPeriodSec 2
# Скрипт выполняется после установки соединения
IPRefreshCommand '/etc/Sprint4G/wimaxup.sh'
# Можно заменить на такой вариант, естественно указав ваш интерфейс
#IPRefreshCommand 'dhclient eth0'
# Разрешает выполнять скрипт
NetEntryIPRefreshEnabled Yes
# Вроде должен убивать dhclient, у меня не работало
TerminateDHCPClient No
FirmwareFileName '/lib/firmware/macxvi350.bin'
ConfigFileName '/lib/firmware/macxvi.cfg'
# Управление логами
#CSCMDebugLogLevel 4
CSCMDebugLogLevel 1
#AuthLogLevel 5
AuthLogLevel 1
AuthLogFileName '/tmp/CM_Auth.log'
AuthLogFileMaxSizeMB 1
EngineLoggingEnabled Yes
EngineLogFileMaxSizeMB 2
EngineLogFileName '/tmp/CM_Engine.log'
Немного автоматизации не помешает, не забудьте заменить eth0 на свой интерфейс, который определили при тестировании модуля.
/etc/Sprint4G/wimaxup.sh
#!/bin/bash
varif=eth0
res=`ifconfig $varif | grep -c "UP"`
if [ ! "$res" == "0" ]; then
ifdown $varif
fi
ifup $varif
++ Проверка и использование
Проверку лучше проводить в режиме полной отладки, для выявления ошибок
CSCMDebugLogLevel 4
AuthLogLevel 5
Необходимо запустить демон в отладочном режиме и его клиент в разных консолях
Демон (Сервер)
wimaxd -D -c /etc/Sprint4G/wimaxd.conf
консоль клиента, через неё будем управлять демоном (Сервером).
wimaxc -i
Набор возможных команд консоли можно узнать запросом help.
В текущем конфиге, если есть сигнал, сразу начнётся попытка подключения, этого нам не надо, отредактируем секцию "Автоподключение". Так как автоподключение отключено, подключаться надо в ручном режиме:
Сначала ищем базовые станции
> search
Если найдены несколько, подключаемся с наилучшим сигналом, или к единственной, например
> connect 0
Для просмотра статуса соединения, нужно выполнять команды status, linkstats. Так команда status при установленном соединении содержит строчку "LINKUP ACHIEVED".
IP адрес можно менять перезапрашивая, не разрывая соединение, и установка самого соединения не значит автоматического получения адреса, настройки маршрутов и др., этим должен заниматься dhclient.
Для корректного выхода и выгрузки сервера надо сначала выключить модуль
> shutdown
Затем остановить и выгрузить сервер (демон)
> server stop
Если выгрузите сервер и не остановите работу модуля командой shutdown, соединение не будет разорвано и продолжит работать само по себе потребляя трафик.
Для нормальной работы, отключим отладку в логах
CSCMDebugLogLevel 1
AuthLogLevel 1
и запустим сервер в качестве демона
wimaxd -c /etc/Sprint4G/wimaxd.conf
Нормальных средств управления нет, хотя пишут что в сети гуляют какие-то скрипты. Но есть исходники клиента и сервера, при желании можно разобраться. Так сервер открывает порт 5200, если туда подключиться telnet-ом, можно увидеть текстовое приглашение, правда текстовые команды он от вас принимать не будет.
++ Безопасность
В отладочных логах сохраняются логин и пароль, поэтому не забывайте их удалять, а после экспериментов отключите отладочные логи. Не забывайте также что логин и пароль хранятся в открытом виде в файле конфигурации.
++ Нюансы, Недостатки, Ошибки
После обновления ядра, понадобиться пересобирать модуль.
Модуль ядра иногда работает не стабильно, например на Fedora 14 приходиться его выгружать, вставлять устройство загружать или в ином порядке плясать с бубном, пару раз система зависала, хотя может проблема с железом. На версии Fedora 15, работает без замечаний.
Если индикатор на модеме гаснет во время поиска сети, либо во время подключения, скорее всего ему не хватает питания, для исправления ситуации пришлось использовать USB-HUB с отдельным источником.
Сам модем плохо ловит сеть в помещении, хотя раньше работал, видимо работа сети стала хуже, работает только у окна.
Сервер (демон) иногда при завершении работы выдаёт ошибку и/или зависает, приходиться его "убивать".
Иногда если не выгружен dhclient который запускал сервер (демон) для его интерфейса, то сервер (Beceem Connection Manager Server) может повторно не запуститься, ругаясь на занятый сокет, приходиться dhclient "убивать" вручную.
После остановки сервера, остаётся "активным" интерфейс, его приходиться вручную деактивировать ifconfig eth0 down, хотя можно этого и не делать, если не мешает.
Нет возможности или не нашёл, запуска скрипта при отключении, для деактивации интерфейса.
URL:
Обсуждается: http://www.opennet.dev/tips/info/2637.shtml