Установка драйвера usb модема linux

Настройка 4G WiMAX-модема на чипе Beceem в Linux

Недавно в инете появился 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 ГГц.

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==»198f», ATTRS==»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

Скрипт задаст ряд вопросов по поводу расположения директорий, главное указать правильную директорию с исходниками ядра. В моем случае это /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

Читайте также:  Intel rapid storage technology linux drivers

Для автозагрузки добавляем 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

#AuthLogLevel 4
#AuthLogFileName ‘/tmp/CM_Auth.log’

Немного пояснений.
Параметры 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

Читайте также:  Root password linux file

Должно появится приглашение
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 > Virtual CID = 4
Service flow > 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 > Virtual CID = 5
Service flow > 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 за предоставленный линк на этот пак (месяц назад искал какую-либо информацию — ничего не нашел).

Читайте также:  What is better windows mac or linux

Источник

Как подключить 3g модем в Linux?

За те годы, что я использовал Linux совместно с 3G модемом, не было ни одной родной программы от самой Ubuntu. У 3G модемов фирмы Huawei есть свой 3G менеджер под Linux, но работать с другими модемами (да и с некоторыми своими) он отказывается.

Но вот в Ubuntu 12.04 я совершенно случайно обнаружил в менеджере пакетов программу, созданную как раз для управления 3G модемами. Как подключить 3g модем в Linux при помощи этой программы?

Как подключить 3g модем в Linux? 13 2022

Для начала давайте установим эту программу, чтобы подключить 3G модем. Вы можете найти её в менеджере пакетов Synaptic под именем modem-manager-gui

Вы также можете установить её из командной строки:

Если у вас нет нужного репозитория и программа не находится, то добавьте репозиторий .

Сделать это можно, открыв менеджер пакетов Synaptic — Настройки — Репозитории — Другое ПО — Добавить, и добавить так, как показано на снимке:

Как подключить 3g модем в Linux? 14 2022

Теперь обновите сведения о пакетах и устанавливайте эту программу.

В самом менеджере пакетов есть небольшое описание того, что эта программа умеет:

Давайте попробуем запустить эту программу и на личном опыте оценить её полезность и функциональность. Я буду использовать разлоченный модем ZTE 100 с сим картой от Мегафон.

Заходим в «Приложения» — «Системные утилиты» — «modem-manager-gui» и запускаем приложение.

Как подключить 3g модем в Linux? 15 2022

Как видите, программа определила мой модем. Нажимаю кнопку «Сети» и тут выскакивает рамочка:

Как подключить 3g модем в Linux? 16 2022

Нажимаем «Активировать» конечно. Перед нами появляется вкладка сеть, где есть кнопка «Начать сканирование сетей». Сканируем:

Как подключить 3g модем в Linux? 17 2022

Видим все доступные сети. Очень полезно, кстати, посмотреть, у каких операторов в данном месте есть 3G или UMTS. Видим, что есть у Мегафон и МТС. Так и есть на самом деле. Тперь

Теперь нам нужно подключить 3g модем в Linux. Но не тут то было, в программе нет кнопки «Подключить». Пришлось идти в сетевые подключения и подключать 3G модем обычным способом.

Как подключить 3g модем в Linux? 18 2022

Но не будем это считать серьёзным недостатком, возможно так было задумано. После подключения 3G модема в менеджере сети, программа окончательно оживает. Посмотрим вкладку «Трафик».

Как подключить 3g модем в Linux? 19 2022

Ну что же — не плохо. Особенно радует пункт «Остаток трафика» — найти бы как его настроить. Нажимаем»Установить ограничения», ставим галочку «Использовать ограничения трафика» и выставляем значение».

Судя по следующему полю, при достижении этого значения, программа оповестит о лимите. Можно поставить поменьше, и тогда можно узнать, что скоро трафик закончиться.

Как подключить 3g модем в Linux? 20 2022

Теперь перейдём на вкладку «Статус».

Как подключить 3g модем в Linux? 21 2022

Самое интересное тут: «Уровень сигнала». Его необходимо знать, если вы хотите усилить сигнал 3G модема. Так же через программу можно отправить смс:

Как подключить 3g модем в Linux? 22 2022

Я не стал пробовать, оно мне не надо. Но вот попробовать отправку USSD запросов, чтобы проверить тот же баланс, думаю стоит:

Как подключить 3g модем в Linux? 23 2022

У меня не получилось посмотреть баланс, программа не реагировала. А потом мне пришло SMS:

Источник

Оцените статью
Adblock
detector