Usb modeswitch как пользоваться

Обновлено: 07.07.2024

Переключаем USB 3G модем из режима накопителя в режим GSM modem на Raspbery Pi 3 Model B+.

Теория

Обычно USB модемы имеют 2 режима инициализации в OS - Mass Storage (виртуальный накопитель с драйверами) и GSM модем. Нам нужно указать OS правило - при инициализации, переключать USB модем с определенным VendorId:ProductId в режим GSM modem.

Установка usb-modeswitch

Для одних USB модемов достаточно просто установить утилиту usb-modeswitch и usb-modeswitch-data, которая содержит правила и конфиги переключения режимов для большинства USB устройств. Примечательно, что в OS Raspbian Stretch эта утилита уже установлена.

После установки usb-modeswitch и подключения USB модема, он может определиться правильно - как GSM modem:

Также будут доступны по 3 интерфейса /dev/ttyUSB* на каждый модем:

Но, попадаются модемы с номерами vendor ID и product ID, для которых нужно прописывать правила переключения режима из Mass Storage в GSM modem.

Настройка usb-modeswitch

Внимание!

Если совсем ничего не получается, попробуйте очистить логи, перезагрузить сервер и пролистать все новые логи:

Параметры запуска usb-modeswitch

Переключение режима работы модема можно запускать вручную.

Примеры запуска утилиты для ручного переключения режима USB девайса:

Файлы конфигурации usb-modeswitch

Основной файл конфигурации (активация утилиты, логирование):

Примечание

Каталог /etc/usb_modeswitch.d теперь используется для дополнительных файлов конфигурации.

Архив /usr/share/usb_modeswitch/configPack.tar.gz не распакован! Так должно быть?

Правила переключения из пакета usb-modeswitch-data

Дефолтные правила переключения режима USB модемов находятся здесь:

Добавить собственное правило для переключения режима USB модема:

Драйвер

Загрузить другой драйвер и отключить накопитель (как с этим работать?):

Поначалу никакой документации на этот счет не существовало и говорить о какой-либо поддержке Linux не приходилось.
Но, с другой стороны, большинство известных гаджетов нормально работают в обоих режимах с обычными Linux драйверами типа "usb-storage" и "option" (улучшенный драйвер последовательного порта, стандарт Linux для скоростных 3G модемов).
Остается только проблема переключения режима гаджета из накопителя в модем, или в какой-либо иной прибор.

USB_ModeSwitch позволяет легко управлять этим процессом, получая важные параметры из конфигурационного файла и проводя всю работу по связи и инициализации, все при мощной помощи "libusb".
Обычно все происходит автоматически ≈ через события udev и его правила ≈ и не требует вмешательства пользователя. Но можно применять его и как инструмент командной строки, обычно когда нужно запустить незнакомый прибор.

USB_ModeSwitch входит в состав основных дистрибутивов, поэтому нет нужды устанавливать его из исходников, за исключением случая, когда что-то не ладится и потребуется последняя версия программы.

Пожалуйста, прочтите эту статью внимательно, прежде чем начнете постить вопросы! Если у вас незнакомый гаджет, она поможет вам понять суть происходящего, каковое понимание, в свою очередь, поможет найти нужную переключающую команду и добавить ее в конфигурационный файл.

О том как проводить собственные исследования смотрите раздел Сотрудничество.

Загрузки

Последний на сегодняшний день релиз программы ≈ 1.2.6. tar архив содержит только исходник. Я применял libusb-0.1.12, но и "compat" версия библиотеки libusb-1.0 тоже будет работать.

    Загрузите usb-modeswitch-1.2.6.tar.bz2 датированный 2013-06-02; Debian пакет скоро появится в репозиториии Debian . Поддерживаются многие архитектуры (как amd64 или ia64).
    Имейте ввиду, что Deb-пакет не на 100% совместим с последними версиями Ubuntu.

Новость: Если у вас есть андроидный планшет с USB хост-портом и Андроид по крайней мере 2.2, то можете попробовать новый "PPP Widget" (тестовая версия 0.8). Он состоит из USB_ModeSwitch и PPPD и может установить выход в Интернет при помощи USB модема или телефона.

Сверх того, я предлагаю статический бинарник для ARM: usb_modeswitch-1.1.9-arm-static.bz2.
Скомпилировано при помощи gcc (arm-none-linux-gnueabi 3.4.4) без специальных настроек. Libusb 0.1.12 вкомпилирован.

Если вы мантейнер пакетов, то следующий XML файл поможет вам сверять новые релизы:
usb-modeswitch-versions.xml

Установка

Если у вас уже установлена более ранняя версия, рекомендуется деинсталляция ее ("make uninstall"). Начиная с версии 1.1.0 изменилось местоположение некоторых файлов, если у вас версия новее 1.1.0, то достаточно обновиться и переписать все файлы.

Распакуйте архив с исходником. В свежесозданной директории выполните от имени суперпользователя программу:

Команда установит небольшой shell-скрипт для udev, большой скрипт оболочки, конфигурационный файл, страницу мана и скомпилированный бинарник.
Важно: при установке программы данным способом, потребуется пакет "tcl" для работы большого управляющего скрипта. Есть другие способы установки, которые не требуют этого пакета. Для ознакомления с другими возможностями установки читайте файл README.

Такая же точно процедура с пакетом data package. Он установит конфигурационные файлы в директории "/usr/share/usb_modeswitch" и файл правил udev в директории "/lib/udev/rules.d". Прежняя директория "/etc/usb_modeswitch.d" зарезервирована для пользовательских конфигурационных файлов (новых или отредактированных).
Теперь все готово для работы; если ваш гаджет есть в базе данных, вы сможете использовать его сразу после подключения. Если он не работает как следует, то мы выясним отчего.

Для работы в ручном режиме просто нужно установить программу. Работать можно из командной строки, либо редактировать конфигурационный файл. В файле "device_reference" (см. "Загрузки") вы найдете отправные данные для создания собственной конфигурации. Этот файл обильно комментирован и подскажет вам что делать.
Ваш пользовательский конфигурационный файл может располагаться где угодно и называться как вам угодно; просто нужно указать его имя и местоположение в командной строке при помощи параметра -c.

Ручной режим предназначен для тестирования и исследования. Смотрите следующий раздел.

Использование

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

Если вы полагаете, что ваш прибор поддерживается, но почему-то не работает, первым делом подключите функцию ведения лога, как описано в разделе Диагностика.

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

Чтобы получить список параметров команды запустите "usb-modeswitch -h".
Конфигурационный файл задается параметром -c.
Следует иметь ввиду, что если не подключены опции -W, -D, -I и -q, то конфигурационный файл, заданный параметром -c игнорируется, и все необходимые параметры нужно явно указывать в командной строке.

Для работы с конфигурационным файлом используйте один из файлов в директории "/usr/share/usb_modeswitch" или создайте его сами. Задайте имя и местоположения конфигурационного файла при помощи опции -c . В файле device_reference.txt смотрите подсказки по различным семействам модемов и объяснение параметров.

Важно: USB_ModeSwitch, как и все программы, использующие libusb, запускается в командной строке от имени суперпользователя (или через "sudo"). В противном случае появляются непонятные предупреждения, и работа не идет. Так как придется постоянно пробовать новые варианты команды, то имеет смысл работать с ней в оболочке root shell ("sudo bash" or "su -").

При работе с беспроводными устройствами, возможны проблемы с NetworkManager (или его компонентом ModemManager), который до сих пор часто ошибается при определении правильного порта.
Хорошо зарекомендовали себя программы wvdial, UMTSmon и несколько других, обеспечивающих графический интерфейс для запуска PPP, например kppp; правда, эти программы требуют некоторых знаний.

Также появилась новая ≈ необычная и интригующая ≈ концепция, которая сокращает утомительный путь настройки различных компонентов для подключения беспроводной связи. Sakis3G ≈ это самодостаточная программа (включающая в себя, среди прочего, и новейший USB_ModeSwitch бинарник). Программа уже поддерживает большое число провайдеров и стремительно развивается. В противоположность NetworkManager она действительно работает. Ищите ее на блоге ToDo Forever . Там же и инструкции по установке, в идеале она запускает ваш модем как только он подключен.

Главное препятствие полностью автоматического запуска вновь подключенного модема программой NetworkManager и иже с ним ≈ это определение правильного порта. Зачастую, после переключения режима, создается более одного порта (в некоторых случаях до 5 штук). Вообще-то не все они являются действительно последовательными портами (драйвер не может понять какие), хотя некоторые весьма похожи и даже отвечают на AT-команды, но только правильный порт является точкой передачи данных. К сожалению, NetworkManager руководствуется иными критериями проверки и иногда ошибается. Стоит заметить, что упомянутый выше Sakis3G находит истинный порт играючи.

Начиная с версии 1.1.2, usb_modeswitch добавляет символическую ссылку на правильный порт, обеспечивающий передачу данных, если устройство создает последовательные порты. Эта ссылка носит имя /dev/gsmmodem (с соответствующим номером, в случае подключения нескольких устройств).
Можно использовать эту ссылку при настройке программ дозвона типа wvdial. В большинстве случаев их конфигурация правится вручную.

Когда удалось вручную запустить переключение режима нового или плохо поддерживаемого гаджета, можно прописать соответствующее правило udev и конфигурационный файл. Но не поленитесь сообщить об этом, чтобы и другие могли последовать по вашему пути!
См. Сотрудничество

Поддерживаемые гаджеты

  1. Отключить накопительное устройство (в том числе SCSI) какой-либо редкой командой, например "eject" (немного непонятно написано; оказалось, что автор имеет ввиду управляющую команду (она же последовательность) 5553424312345678000000000000061b000000020000000000000000000000. Джошуа пишет на форуме : ≈ "Я всегда пытаюсь использовать Команду "извлечь" ("eject"), если ничего не помогает).
  2. Послать на устройство одну из вендор-специфичных управляющих команд.
  3. Насильно отключить от устройства драйвер накопителя (только для некоторых ранних гаджетов).

Еще раз скажу: даже если вы не нашли ваш гаджет в списке, он может все равно поддерживаться.
Важно чтобы ваш USB ID был в числе имен файлов в директории конфигурационных файлов /usr/share/usb_modeswitch. Загляните в новейший пакет usb-modeswitch-data (см. Загрузки).

Вот этот список поддерживаемых гаджетов вместе с их производителями:
device_reference.txt

Диагностика

Если, после знакомства со всем вышесказанным, вам все еще нужна поддержка, добро пожаловать на форум ! Электронная почта предназначена для обсуждения вопросов сотрудничества.

Известные проблемы:

    Только ядра начиная с 2.6.27 и выше назначают 3G-оптимизированный драйвер последовательного порта. Если у вас более старое ядро и ваш модем после переключения режима не опознан ни одним драйвером, тогда используется универсальный драйвер "usbserial".

Для диагностики первым делом следует подключить функцию ведения логов. Как суперпользователь отредактируйте файл /etc/usb_modeswitch.conf в текстовом редакторе и замените строку

Программа начнет записывать отчет о своей деятельности в директории /var/log/usb_modeswitch_<device>.

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

Первое подозрение падает на системные правила для модемов, которые могут быть прописаны не вполне корректно.
Если ваш прибор до переключения режима имеет ID 05c6:1000, то в старых системах он может получать неверную переключающую команду. Существует четыре различных бистабильных прибора с этим ID, в больших дистрибутивах они все указываются как устройства от производителя "Option", что неверно в четырех случаях из пяти. Есть даже мобильные телефоны с этим ID, которые также неверно интерпретируются при подключении по USB.

Чтобы решить проблему, можно попытаться удалить файлы правил из директории "/lib/udev/rules.d", содержащие обращения к "modem-modeswitch". После удаления, USB_ModeSwitch произведет дополнительное расследование вне USB ID и обработает подозрительные устройства должным образом. Например, не будет рассматривать неизвестные устройства с ID 05c6:1000.

Другой печально известный "подозреваемый" ≈ снова 19d2:2000. Он может нормально подключаться по существующим правилам udev, но, если модель у вас новая и ее ID еще не прописан в модуле "option", драйвер к нему не загружается.
Нужно дать команду "eject" и тогда usb_modeswitch "подхватит" устройство с этим ID.

Проблемы связанные с ядром

Некоторые новейшие ядра обрабатывают определенные устройства таким образом, что переключения режимов не требуется. Для этих устройств больше не нужна USB_ModeSwitch; но, с другой стороны, уже не получится заглянуть в "CD-ROM" такого гаджета. Больше того, бывали случаи, когда подобного рада обработка не удавалась сама и препятствовала программе USB_ModeSwitch правильно сработать (случалось с гаджетами ZTE, error "-2").

Если у вас происходит подобное, загляните в "unusual_devs.h" в папке "drivers/usb/storage" исходника вашего ядра. Если там есть ваш ID (вендора и продукта в режиме накопителя) и USB_ModeSwitch генерирует ошибки, первым делом попробуйте занести "usb-storage" в черный список (blacklist).
Если это помогло, остается перекомпилировать ядро с дезактивированным пунктом "unusual_devs.h". После этого накопитель usb-storage будет работать в обычном режиме (а не в особом как до того). В Russian Gentoo wiki я нашел совет проделывать именно такие манипуляции с ZTE MF626.
Между прочим, разработчиками USB была достигнута договоренность не включать кода переключающего режимы в ядро, если возможно проделать это в пользовательском пространстве "user space".

Другим параметром, влияющим на поведение ядра является"delay_use" из "usb-storage", который устанавливает отрезок времени (в секундах после подсоединения) в течении которого устройство будет использоваться (и, возможно, автомонтироваться). По умолчанию задано 5 секунд; при определенных условиях это может влиять на результат переключения режимов.
Для изменения параметра добавьте в /etc/modprobe.conf:

options usb-storage delay_use=1 (или 10, или сколько хотите)

Старые системы (например CentOS 5 или Xandros 6)

Если вы пользуетесь не самой свежей системой (с ядром ниже 2.6.27), то можете натолкнуться на несовместимость между версиями "udev" (менеджера устройств). Если у вас не видно деятельности никаких компонентов usb_modeswitch (совсем нет его логов), то проделайте следующие шаги:

    Проверьте, нет ли в директории "/lib/udev/rules.d" других файлов кроме "40-usb_modeswitch.rules". Если нет, то переместите этот файл в директорию "/etc/udev/rules.d".

Сотрудничество

USB_ModeSwitch оставляет простор для экспериментов с неподдерживаемыми пока гаджетами.

Стоит попытаться использовать для новых гаджетов широко применяемые методы переключения режимов от уже известных устройств, как скажем, последовательность "eject" из файла "12d1:1446" устройства BandLuxe. Если же есть намеки, что ваш девайс сработан Huawei, то попробуйте последовательность из файла "12d1:1446". Не бойтесь повредить устройство, применение неправильной последовательности не может сломать девайс. Не забудьте только переподключать прибор после каждой попытки!

Я кратко объяснил. Очень хороший пример Mark A. Ziesemer опубликовал в Alltel UM175AL USB EVDO under Ubuntu Hardy Heron

Все ваши наработки и открытия, информацию по новым гаджетам и отчеты об ошибках прошу постить на форуме ModeSwitchForum !
Если вам не нужна огласка, можете прислать мне старомодное и конфиденциальное (при желании) e-mail. Адрес найдете на сайте оригинала данной статьи в конце /прим. переводчика/.

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

Перезапускаем 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

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

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

unzip CSCM_v1.1.6.0_source.zip
cd CSCM

и кладем заголовочные файлы в нужные места:
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
После изучения документации, а также методом проб и ошибок получилось вот такое содержимое:

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

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

Должно появится приглашение
Beceem CM Server Version 1.1.6.0
>

Начинаем сканирование:
> 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

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.

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

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



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

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

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


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

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

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

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

n0mad ★★ ( 16.01.14 20:56:24 )
Последнее исправление: n0mad 16.01.14 20:57:29 (всего исправлений: 1)

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


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

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

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


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

Переключение в режим модема, работает практически для всех модемов от 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.

Читайте также: