Приобрел новый модем от мтс.
Взял модель Huawei Vodafone K 3806 (14.4 Мбит/с).
Все свои предыдущие модемы я сразу же переводил в режим only modem, где не получалось — отключал zeroCd.
Первая проблема с которой мне пришлось столкнуться с новым модемом: отсутствие возможности отключить zeroCd либо перевести в режим «только модем».
Нужные AT команды неизвестны, прочесал весь интернет. Залезть внутрь модема тоже не получается QPST не поддерживает данный чипсет.
Выход был прост: воспользоваться стандартной утилитой — usb_modeswitch.
Установил. Вставляю модем — ttyUSB в каталоге /dev/ не появляются.
Начал разбираться:
Изначально устройство подключается как cd-rom и имеет следующие параметры:
v (vendor) 12d1, собственно он не меняется и обозначает производителя.
p (product id) — 1449
После запуска usb_modeswitch (а точнее после того как она автоматически сработала) id продукта стал равен 1448.
Необходимые файлы в каталоге /dev/ не появились.
Smart Switch Перенос всех данных с телефона на телефон
Посмотрел в Windows после смены режима модема с cd-rom на модем id продукта стал 1001.
На лицо ошибка работы утилиты usb_modeswitch.
В файле /lib/udev/rules.d/40-usb_modeswitch.rules встречается упоминание моего модема следующими строками:
# Vodafone (Huawei) K3806
ATTRS==»12d1″, ATTRS==»14ad», RUN+=»usb_modeswitch ‘%b/%k'»
Но в реальности idProduct моего модема не соответствует указанному 14ad.
К тому же если посмотреть содержимое файла /usr/share/usb_modeswitch/12d1:14ad (который будет использоваться как файл конфигурации для usb_modeswitch при подключении устройства с idVendor = 12d1 и idProduct = 14ad), то указанный TargetProduct, который должен появиться после использования usb_modeswitch не соответствует тому, что я получил в Windows.
DefaultVendor= 0x12d1
DefaultProduct=0x14ad
TargetVendor= 0x12d1
TargetProduct= 0x14ae
Т.к. в файле /usr/share/usb_modeswitch/12d1:1449 (который используется для моего модема) указана модель Huawei E352, то и MessageContent для моего модема не подходит.
Поиски готового MessageContent для Huawei Vodafone K 3806 положительных результатов не дали.
Где-то на официальном сайте нашел пост в котором предлагалось выяснить необходимый MessageContent с помощью программы USBSnoop.
Данная затея омрачилась тем, что USBSnoop не поддерживает ОС Windows позднее XP.
Имея под рукой только Windows 7 поискал аналоги и выбрал USBlyzer.
Дальше делал так:
Для того чтобы выловить нужный мне запрос пришлось удалить мтс-коннект менеджер, т.к. он автоматически запускается при подключении модема и переводит его в режим модема.
Запустил USBlyzer, подключил модем. Он определился как cd-rom. В списке usb-устройств нашел свой модем и выбрал его для сканирования. Нажал «Capture» и нажал «Извлечь» на cd-rom’е моего модема.
Как только USBlyzer посыпал красными сообщениями нажал «Stop».
Smart Switch. Перенос данных со старого смартфона на Galaxy
Т.к. я не знал какой именно запрос мне нужен, выбрал несколько последних, перед тем как потерялась связь с модемом. MessageContent запросы можно посмотреть на вкладке «Raw Data» внизу окна. Я выбирал только 32-битные сообщения, потому что они соответствовали нужному формату.
Долго тестировать не пришлось. Подставил в настройки usb_modeswitch MessageContent из последнего запроса к модему, установил правильный TargetProduct.
Вставил модем и счастью моему небыло предела. usb_modeswitch правильно обработал модем, после чего необходимые ttyUSB появились в /dev/.
В итоге мой конфигурационный файл (/usr/share/usb_modeswitch/12d1:1449) принял следующий вид:
DefaultVendor= 0x12d1
DefaultProduct=0x1449
TargetVendor= 0x12d1
TargetProduct= 0x1001
Источник: dergyury.wordpress.com
День солнечный!
1) Чтобы проверить имеется ли эта программа в системе Android вашего устройства, наберите в эмуляторе терминала команду: usb_modeswitch . Если появилась краткая справка к этой программе — всё отлично. Если нет, можете установить usb_modeswitch по рекомендациям на сайте программы.
2) Проследить работу usb_modeswitch, переключение режимов модема, можно с помощью программы /system/bin/u3gmonitor. В терминале введите команду: u3gmonitor . И после этого подключите модем к устройству. В случае успешного переключения режима модема, появляются подобные строки:
В этом примере видно, что при переключении режима модем изменил свои идентификаторы VID_PID с 19d2_2000 на 19d2_0031.
Но так как при проверке ранее не отобразились строки с «GSM modem», вероятнее всего необходимый для переключения файл конфигурации отсутствует. И у вас отобразится всего одна строка. Например:
19d2_2000 — это идентификаторы производителя VID = 19d2 и продукта PID = 2000 модема в режиме виртуального CD-ROM или флэш-памяти.
3) Если в системе отсутствует программа u3gmonitor, определяем идентификаторы VID и PID в терминале командой lsusb (или busybox lsusb ). Выполнив её до подключения модема и после.
Появилось устройство «Bus 002 Device 003: ID 19d2:2000». Это и есть модем в данном случае находящийся в режиме виртуального CD-ROM. 19d2:2000 — соответственно VID и PID модема.
Примечание: При отсутствии в системе программы u3gmonitor, проследить работу usb_modeswitch можно посмотрев журнал. Введите с правами Root в эмуляторе терминала команду logcat .
4) Теперь необходимо узнать идентификаторы модема после переключения из режима «Виртуальный CD-ROM» в режим «Модем». Это можно сделать на «большом» компьютере (ноутбуке) с установленными драйверами необходимыми для работы данного модема.
В ОС Windows. Нажимаем на клавиатуре кнопки «Windows» + «Pause/Break» или другим способом открываем Панель управления, раздел «Система». Запускаем Диспетчер устройств. В разделе «Модемы» через контекстное меню или двойной клик мышкой открываем окно свойств вашего модема. На вкладке «Сведения» в выпадающем списке выбираем свойство «ИД оборудования».
И смотрим необходимые идентификаторы VID и PID.
5) Далее необходимо создать файл конфигурации с именем 19d2_2000 (у вас имя будет другое, соответствует идентификатору модема в режиме виртуального CD-ROM или флэш-памяти). Но, лучше скопировать похожий файл из /system/etc/usb_modeswitch.d (или /etc/usb_modeswitch.d), переименовать и изменить содержимое «правильным» текстовым редактором, способным использовать символ перевода строки LF (0Ah). Например, AkelPad или Notepad++. Блокнот не подходит.
Примечание: В некоторых устройствах данный файл находится в каталоге /etc/ppp/setup/ и имеет имя подобное E3131.setup. Где «E3131» — название вашего модема (Huawei E3131). Или же может использоваться файл конфигурации /etc/usb_modeswitch.conf.
######################################################## # ZTE MF100 (Beeline RU) DefaultVendor= 0x19d2 DefaultProduct=0x2000 TargetVendor= 0x19d2 TargetProduct= 0x0031 MessageContent=»5553424312345678000000000000061e000000000000000000000000000000″ MessageContent2=»5553424312345679000000000000061b000000020000000000000000000000″ NeedResponse=1 CheckSuccess=20
Значения DefaultVendor и DefaultProduct изменяем в соответствии с VID и PID модема в режиме виртуального CD-ROM полученными в пунктах 2) или 3).
Значения TargetVendor и TargetProduct изменяем в соответствии с VID и PID модема полученными в пункте 4). Определить MessageContent — шестнадцатеричный код команды, которой переключается режим модема (обычно это команда «извлечь диск») достаточно сложно. Поэтому ищем в этом файле или других источниках конфигурацию с такими же значениями Default/Target Vendor/Product. Или подбираем от аналогичных модемов.
6) Помещаем созданный файл в директорию /system/etc/usb_modeswitch.d или /etc/ppp/setup в зависимости от вашего устройства.
Источник: lexaleon.blogspot.com
Mode switch что это за программа
Библиотека сайта rus-linux.net
WAN устройств, созданных на основе сотовых чипсетов) имеют встроенные драйвера MS Windows; будучи подключенными к компьютеру в первый раз, они ведут себя как флеш-накопители и начинают установку своего программного обеспечения. По окончании установки (и при всех последующих подключениях) драйвер переключает режим гаджета, накопитель исчезает, и можно увидеть новое устройство (например USB модем). Производитель модемов «Option» называет такой механизм «ZeroCD (TM)» так как он позволяет обойтись без отдельного носителя с драйверами.
Поначалу никакой документации на этот счет не существовало и говорить о какой-либо поддержке Linux не приходилось.
Но, с другой стороны, большинство известных гаджетов нормально работают в обоих режимах с обычными Linux драйверами типа «usb-storage» и «option» (улучшенный драйвер последовательного порта, стандарт Linux для скоростных 3G модемов).
Остается только проблема переключения режима гаджета из накопителя в модем, или в какой-либо иной прибор.
К счастью, на свете есть здравый смысл, программы прослушивания шины USB и «libusb». Возможно отследить сообщения MS Windows драйвера, выделить команду или действие, переключающие режим, а потом воспроизвести подобный сценарий по правилам Linux или BSD.
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 -«).
-
/lib/udev/rules.d/40-usb_modeswitch.rules ≈ правила udev, запускающие оболочку при подключении прибора с указанным ID (vendor/product).
Если прибор после переключения режима создает последовательные порты, второе правило снова запускает оболочку и создает символическую ссылку на правильный порт (см. ниже).
При работе с беспроводными устройствами, возможны проблемы с 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 и конфигурационный файл. Но не поленитесь сообщить об этом, чтобы и другие могли последовать по вашему пути!
См. Сотрудничество
Поддерживаемые гаджеты
Очень важное замечание: Лично я физически не могу протестировать большинство приборов и вынужден полагаться на сообщения других людей. Поэтому возможно возникновение препятствий даже если ваш прибор есть в списке.
Но в последнее время аудитория пользователей данной программы значительно увеличилась, так что всякие ошибки обычно скоро вылезают наружу.
- Отключить накопительное устройство (в том числе SCSI) какой-либо редкой командой, например «eject» (немного непонятно написано; оказалось, что автор имеет ввиду управляющую команду (она же последовательность) 5553424312345678000000000000061b000000020000000000000000000000. Джошуа пишет на форуме : ≈ «Я всегда пытаюсь использовать Команду «извлечь» («eject»), если ничего не помогает).
- Послать на устройство одну из вендор-специфичных управляющих команд.
- Насильно отключить от устройства драйвер накопителя (только для некоторых ранних гаджетов).
Еще раз скажу: даже если вы не нашли ваш гаджет в списке, он может все равно поддерживаться.
Важно чтобы ваш 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_.
Если вы выставили правильные параметры вашего устройства и проделали все фокусы из раздела Поддерживаемые гаджеты, 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». Не бойтесь повредить устройство, применение неправильной последовательности не может сломать девайс. Не забудьте только переподключать прибор после каждой попытки!
Коли ничто не помогает, попробуйте такой подход: Заметьте Vendor и Product ID прибора из /proc/bus/usb/devices (или из вывода команды «lsusb»); обычно соответствующий драйвер ≈ «usb-storage». Затем прошпионьте USB-коммуникации устройства с данным ID под M$ Windoze, после инсталляции им своих драйверов. Там ведь тоже произойдет переключение режима и вы можете поймать этот момент в логах. Рекомендую следующую программу: «SniffUSB»( http://www.pcausa.com/Utilities/UsbSnoop/default.htm).
Я кратко объяснил. Очень хороший пример Mark A. Ziesemer опубликовал в Alltel UM175AL USB EVDO under Ubuntu Hardy Heron
Все ваши наработки и открытия, информацию по новым гаджетам и отчеты об ошибках прошу постить на форуме ModeSwitchForum !
Если вам не нужна огласка, можете прислать мне старомодное и конфиденциальное (при желании) e-mail. Адрес найдете на сайте оригинала данной статьи в конце /прим. переводчика/.
Источник: rus-linux.net