Usb mode switch windows

usb_modeswitch и USB модем — Как переключить?

Приветствую о глубокоуважаемый олл!

Есть USB Модем на котором написано W120
по #lsusb он говорит:
Bus 001 Device 009: ID 20a6:f00e
Добился того что после:
#eject /dev/sr0
#lsusb Говорит:
Bus 001 Device 010: ID 20a6:1105
и появляются порты /dev/ttyUSB*

Нужно чтобы устройство переключалось само.
Сделал: /etc/usb_modeswitch.d/20a6:f00e
——
TargetVendor=0x20a6
TargetProduct=0x1105
——

Однако переключения не происходит. Где может быть косяк?
Как добиться переключения в 1105?

У меня не х№;вей а W120
Сделал:
# cat W120.conf
DefaultVendor= 0x20a6
DefaultProduct= 0xf00e
TargetVendor= 0x20a6
TargetProduct= 0x1105

MessageContent не знаю откуда брать и какой именно — потому убрал.

Исполнил:
#/usr/sbin/usb_modeswitch —config-file W120.conf

Looking for target devices .
No devices in target mode or class found
Looking for default devices .
found matching product ID
adding device
Found device in default mode, class or configuration (1)
Accessing device 005 on bus 001 .
Getting the current device configuration .
OK, got current device configuration (1)
Using first interface: 0x00
Using endpoints 0x01 (out) and 0x81 (in)
Inquiring device details; driver will be detached .
Looking for active driver .
No driver found. Either detached before or never attached

И что с этим делать?

Вы сперва выясните на каком чипе построено Ваше устройство, либо попробуйте по её ID поискать пример конфигурации, например http://www.draisberghof.de/usb_modeswitch/device_reference.txt
Актуальные версии usb_modeswitch и базы к нему http://www.draisberghof.de/usb_modeswitch/#download

НУ НЕТ КОНФИГОВ ДЛЯ МОЕГО УСТРОЙСТВА.

Еще раз: Если сделать #eject /dev/sr0 — оно переключается.
Как это сделать автоматом? После переключения появляются порты.
вывод minicom:

ati
Manufacturer: QUALCOMM INCORPORATED
Model: HSUPA
Revision: WUP_1.10.040
IMEI: 359769029585756
+GCAP: +CGSM,+DS,+ES

Как узнать название чипа? Какой командой?

Неужели невозможно принудительно модем перевести в 20a6:1105?

Ну повесьте правило в udev что бы при подключении устройства он вызывал для него eject, в чём тогда вопрос?

Ну повесьте правило в udev что бы при подключении устройства он вызывал для него eject, в чём тогда вопрос?

Вопрос в том что не знаю как.
Пробовал так:
#lsusb
Bus 001 Device 002: ID 20a6:f00e

cat /etc/udev/rules.d/80-USBGSM.rules
SUBSYSTEM==«usb», ACTION==«add», ATTRS==«f00e», ATTRS==«20a
6», MODE:=«0666», RUN+=«/usr/bin/eject /dev/sr0»

Ни при вставлении ни при загрузке не происходит eject.
Нигде в логах не вижу запуска /usr/bin/eject хотя если в скрипте
меняю на просто eject без пути то в логе появляется:
——
udevd[3027]: failed to execute ‘/lib/udev/eject’ ‘eject /dev/
sr0′: No such file or directory
——

Когда меняю на полный путь — тишина и нет результата.
Если руками исполняю — всё отрабатывает как надо.

А в ответ тишина.

Видимо задача нерешаемя и придется выкинуть модем из линукса. не судьба линуксу работать с этим модемом.
Придется использовать оффтопик.

Читайте также:  Macbook pro a1278 mac os mojave

Всё решаемо

1) В windows переключить модем в режим только модем at-командой AT+MDTFLAG=00000000 2) В linux делаем следующее Для определения модема и появления устройств /dev/ttyUSBx нужно дать команду или прописать её в правила udev: sudo modprobe -v usbserial vendor=0x20a6 product=0x1105 3) Настраиваем pppd и радуемся http://4pda.ru/forum/index.php?showtopic=474527&st=0

Переключить в режим модема из под Linux

Мое устройство определилось как 20a6:f00e # eject /dev/sr0 теперь как 20a6:0x1105

Переключение в режим модема, работает практически для всех модемов от Huawei: usb_modeswitch -H -v 20a6 -p 1105

теперь устройство представляется как 20a6:0x1106 в lsusb В базе udev такого устройства нет — нужно вручную запустить драйвер modprobe usbserial vendor=0x20a6 product=0x1106

Вооля: ls /dev/ttyUS* /dev/ttyUSB0 /dev/ttyUSB1 /dev/ttyUSB2 /dev/ttyUSB3

Возможно, что 2-ой шаг можно выполнить без 1-го, указам первоначальный product_id.

Настройка 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

Читайте также:  Сколько компьютеров можно установить windows

Если все прошло удачно — на модеме должен загореться красный светодиод. Также стоит глянуть вывод 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

#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

Читайте также:  Переименовать пользователя mac os big sur

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

Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.

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