> Внимание!

Новые темы необходимо создавать только в корневом разделе! В дальнейшем они будут обработаны модераторами.



Подключение "неподдерживаемых" модемов к устройствам с ОС Android | Huawei, ZTE, МТС, Мегафон и т.д.



Реп: (84)
Подключение "неподдерживаемых" модемов к устройствам с ОС Android

Пока ещё окончательно всё не забыто, хочу поделиться усвоенной информацией на тему подключения практически любых USB 3G-модемов и некоторых сотовых телефонов в режиме модема к устройствам с системой Android (планшетам, электронным книгам, навигаторам и т.д.) в спецификации имеющие возможность подключения ограниченного числа подобных модемов. На форуме разбросано немало публикаций касающихся этой темы. Но большинство из них решают проблемы только отдельно взятых устройств без подробностей. Что не даёт возможности разобраться с другими устройствами.

Скажу сразу, я не профессионал. В терминологии и некоторых понятиях могу быть не точным.


Исправленная и дополненная инструкция находится по этой ссылке.
Здесь исправлю позже. Пока времени не хватает с BB Code возиться.

Сначала необходимо выделить некоторые моменты по отношению к модему:
1) Далеко не всегда нужно принудительно переводить модем в режим "Только модем" (отключать ZeroCD). Как это "строго-настрого" советуют в большинстве публикаций. И при этом терять в модеме автозагрузку в Windows. А иногда и функцию чтения карт памяти.
2) Рекомендуется проверить работу модема на обычном компьютере с данной SIM-картой и отключить запрос PIN-кода.
3) Следует понимать, что показывает индикатор на вашем модеме.
Примечание: На ZTE обычно: горит красным - модем включен, в сети не зарегистрирован; горит зеленым или синим - модем зарегистрирован в сети оператора мобильной связи; индикатор мигает - модем подключен к сети Интернет.
На Huawei наоборот: мигает - зарегистрирован в сети оператора; просто горит - подключен к сети Интернет. Но могут быть варианты.

4) Все нижеследующие действия выполняются, если при подключении к устройству модем автоматически регистрируется в сети оператора сотовой связи.

По отношению к Android устройству:
1) Необходимо установить эмулятор терминала. Например, Better Terminal Emulator Magic или Android Terminal Emulator.
2) На Android устройстве должны быть получены права пользователя Root. Например, с помощью программы Unlock Root
Примечание: Если после ввода в эмуляторе терминала команды su символ "$" в строке сменился на "#", то права Root уже получены.
3) Для работы с системными файлами нужен файловый менеджер для Root пользователя. Например, Root Explorer или ES File Explorer (в разделе настроек "Root-права" включить Root-эксплорер, доступ к корневой и системным папкам).
4) Список команд, которые можно выполнить в вашем устройстве, можно посмотреть, набрав в терминале: ls /system/bin, ls /system/xbin и ls /sbin. Если в этих списках нет программы busybox, возможно, вам понадобится её установить.
Примечание: Также проверить наличие программы BusyBox, можно введя в эмуляторе терминала команду busybox. Должна появиться краткая справка к этой программе.

По отношению ко всему остальному:
1) Так как Android является Unix-системой, при редактировании файлов на компьютере с ОС Windows необходимо использовать "правильный" текстовый редактор, способный использовать символ перевода строки LF (0Ah). Например, AkelPad или Notepad++. Блокнот не подходит.
2) Сохраняйте копии оригиналов всех файлов, которые будете редактировать!
3) Возможно, при замене или добавлении файлов в Android понадобится изменить права доступа к ним командой "chmod". Например: chmod 777 /etc/3g_dongle.cfg. Или через меню файлового менеджера открыв свойства файла.
4) Ну и как принято говорить: "Всё, что вы делаете, вы делаете на свой страх и риск!"

Примеры приведены при подключении модема ZTE MF100 от Билайн с SIM-картой МТС к электронной книге Wexler.Book T7008 с версией ОС Android 4.0.3 (ICS). >>

Первичное подключение:

1) В Android-устройстве в Настройках отключаем Wi-Fi, включаем "Беспроводные сети (Ещё...) - Мобильная сеть - Передача данных" (Беспроводные сети - WCDMA).
2) Подключаем модем к устройству.

Симптомы.
Определяются после регистрации модема в сети оператора мобильной связи (показывает индикатор на модеме):

а) В Настройках устройства в разделе "Система" пункт "О планшетном ПК - Общая информация" отображается информация о сети и видно, что производится попытка подключения. Но доступ к сети Интернет не появляется.
Лечение:
1) В Настройках пункт "Беспроводные сети (Ещё...) - Мобильная сеть - Точки доступа (APN)". Или выбираем готовую запись, взятую системой из файла /system/etc/apns-conf.xml по идентификаторам MCC/MNC сети оператора, или создаём и сохраняем новую. (Для сохранения настроек в Android 4 нужно нажимать кнопку "Назад" в левом нижнем углу экрана!)
2) Вероятно, системой используется для подключения не тот порт. (При этом часто после неудачной попытки подключения информация о сети пропадает, индикатор на модеме становится красным. Через некоторое время процесс повторяется.) В эмуляторе терминала введите команду su, затем logcat и исследуйте журнал. Ищем строки содержащие pppd и ttyUSB (или ttyACM). Нужный порт определяем в разделе "Определение файлов устройств (порта) в Android через который работает модем". Если значения отличаются, смотрим раздел "Добавление записи в файл 3g_dongle.cfg". Если такого файла в системе нет, можно изменить значение ttyUSB (ttyACM, ttyS...) в файлах запуска pppd (например: /system/etc/init.gprs-pppd, файлы в /system/etc/ppp, /system/etc/ppp/peers или др.).
3) Для поиска причины необходимо исследовать лог "radio". В эмуляторе терминала с правами Root (сначала введя su) введите команду: logcat -b radio.

в) В Настройках устройства в разделе "Система" пункт "О планшетном ПК - Общая информация" информация о сети не отображается.
Лечение:
1) Вероятно, системой USB-устройство не определяется как модем, не создаются файлы устройств /dev/ttyUSB* или /dev/ttyACM*. Смотрите раздел "Переключение режима модема. Отключение автозагрузки, ZeroCD" и "Особенности подключения отдельных устройств" пункт б).
2) Возможно, в системе нет нужных модулей ядра. Например, при подключении вашего модема или телефона в Unix-системах создаются файлы устройств ttyACM. Тогда для подключения в Android должен существовать и загружаться при запуске командой insmod модуль cdc-acm.ko.

Разделы:
1. Определение файлов устройств (порта) в Android через который работает модем
а) Определение списка файлов устройств модема;

При подключении модема создаются файлы устройств ttyUSB или ttyACM. В эмуляторе терминала набираем команду: ls /dev/ttyUSB* (или ls /dev/ttyACM*). Получаем список:
app_46@android:/ $ export PATH=/data/local/bin:$PATH:.
app_46@android:/ $ ls /dev/ttyUSB*
/dev/ttyUSB0
/dev/ttyUSB1
/dev/ttyUSB2
app_46@android:/ $

Если таких файлов устройств в системе не обнаружено, посмотрите выше решение при симптоме б).

Примечание: К шине USB кроме модема могут быть подключены другие устройства. Тогда вводим команду до подключения модема и после. Определяем, какие файлы устройств (порты) появились.
В зависимости от того, когда подключается модем, до включения устройства или после. Или произошёл какой-то сбой в работе. Номера портов могут изменяться.


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

1) Для каждого порта в терминале отправляем команду "AT" (смотрите раздел "Отправка в модем AT-команд" пункт а)). Если на экране появился ответ "ОК", запоминаем номер этого порта. И при необходимости выполняем следующий пункт. Иначе, переподключаем модем и отправляем AT-команду в следующий порт.

2) Необходимый для соединения (PPP) порт можно точно определить, производя попытки подключения. Для этого после отправки команды "AT" и получения ответа "OK" для GSM, 3G модемов вводим в терминале:

echo "ATDT*99#" > /dev/ttyUSB0

Примечание: Если ранее, используя этот модем, с этой SIM-картой, вы НЕ подключались к Интернету на компьютере, первой нужно ввести в терминале команду: echo "AT+CGDCONT=1,\"IP\",\"internet.mts.ru\"" > /dev/ttyUSB0. Где internet.mts.ru - точка доступа вашего провайдера (Мегафон - internet, Билайн - internet.beeline.ru или home.beeline.ru). Вместо ttyUSB0 в командах - ваш проверяемый порт. У редких операторов номер дозвона *99# и команда ATDT у некоторых модемов могут отличаться. Для LTE-модемов используется команда ATDT#777.

Если на введенные выше команды модем ответил "ОК" и "CONNECT", это нужный для PPPD порт.

2. Отправка в модем AT-команд
а) В Android
1) Если ещё не известно, определите порт модема, в который будете отправлять AT-команды в разделе "Определение файлов устройств (порта) в Android через который работает модем".
2) Команды отправляются в эмуляторе терминала. Пример, отправить в порт модема ttyUSB0 команду "AT":

cat /dev/ttyUSB0 &
echo AT > /dev/ttyUSB0


Примечание: Команда "cat /dev/ttyUSB0 &" используется, чтобы увидеть на экране ответ модема. После использования её желательно или остановить комбинацией кнопок "Ctrl + C", или командой "killall cat" ("killall -9 cat", "busybox killall cat"), или командой "kill $PPID" (где $PPID - номер, который выводится в терминале справа от числа в квадратных скобках после запуска команды "cat...").
Вместо "
cat /dev/ttyUSB0 &" можно использовать "tr -s "" < /dev/ttyUSB0 &" (или "busybox tr -s "" < /dev/ttyUSB0 &").


После завершения работы с AT-командами необходимо перезагрузить устройство!
б) В Windows
1) Подключаем модем к компьютеру (ноутбуку).
2) Если программное обеспечение модема ещё не установлено, ждём окончания процесса автоматической установки.
3) Обязательно закрываем программу для работы с модемом (проверить в трее)!

Далее можно использовать любую Telnet-программу. Например Hyper Terminal имеющийся в Windows XP (Все программы - Стандартные - Связь). Для Windows Vista, Windows 7 нужно загрузить программу отдельно. Выполняем следующее:

4) Нажимаем на клавиатуре кнопки "Windows" + "Pause/Break" или другим способом открываем Панель управления, раздел "Система". Запускаем Диспетчер устройств. В разделе "Модемы" через контекстное меню или двойной клик мышкой открываем окно свойств вашего модема. На вкладке "Модем" смотрим номер порта COM.
Прикрепленное изображение

5) Запускаем Hyper Terminal. Название подключения вводим любое. Выбираем порт, определённый в предыдущем пункте. В окне свойств порта можно изменить такие параметры: Скорость - 115200; Управление потоком - Нет.

6) Вводим команду: AT. Ждём ответ: OK.
Примечание: Если вводимые символы не отображаются. Вслепую введите команду ATE1 и нажмите Enter. Или в меню "Файл" выбираем "Свойства" (или правая иконка на панели инструментов). В окне свойств на вкладке "Параметры" нажимаем кнопку "Параметры ASCII". В окне параметров ставим галочку "Отображать введенные символы на экране".
Прикрепленное изображение

7) Далее вводим нужные вам AT-команды, смотрим ответы.

3. Переключение режима модема. Отключение автозагрузки, ZeroCD
Примечание: Большинство USB 3G-модемов являются составными USB-устройствами. Помимо функции модема выполняют функцию устройства для чтения карт памяти. Кроме того испольуется технология ZeroCD, суть которой заключается в том, что при первом подключении к компьютеру новое USB-устройство подключает виртуальный CD-ROM (флэш-память), на котором находятся необходимые драйверы для Windows, но редко для других ОС. После установки драйвер переключает USB-устройство в режим модема.

Проверить в каком режиме находится модем, можно после подключения модема к устройству и определения его системой. В эмуляторе терминала с правами Root (сначала введите su) введите команду: dmesg. И внизу списка ищите подобные строки (для 3G-модемов содержащие "GSM modem"):
<6>[ 71.366413] option 2-1:1.0: GSM modem (1-port) converter detected
<6>[ 71.379932] usb 2-1: GSM modem (1-port) converter now attached to ttyUSB0
<6>[ 71.394260] option 2-1:1.1: GSM modem (1-port) converter detected
<6>[ 71.402965] usb 2-1: GSM modem (1-port) converter now attached to ttyUSB1
<6>[ 71.413425] option 2-1:1.3: GSM modem (1-port) converter detected
<6>[ 71.422902] usb 2-1: GSM modem (1-port) converter now attached to ttyUSB2

Если строки найдены, модем в нужном режиме и ничего переключать не нужно. Иначе, идем дальше.

а) Автоматическое переключение;
Раньше UNIX-системы не могли работать с такими устройствами. Но, спасибо Josua Dietze и программе usb_modeswitch, это больше не является проблемой.

1) Чтобы проверить имеется ли эта программа в системе вашего устройства, наберите в эмуляторе терминала команду: usb_modeswitch. Если появилась краткая справка к этой программе - всё отлично. Если нет, можете установить usb_modeswitch по рекомендациям на сайте программы. Или обращаемся к пункту "Принудительное переключение".

2) Проследить работу usb_modeswitch, переключение режимов модема, можно с помощью программы /system/bin/u3gmonitor. В терминале введите команду: u3gmonitor. И после этого подключите модем к устройству. В случае успешного переключения режима модема, появляются подобные строки:
app_52@android:/ $ export PATH=/data/local/bin:$PATH
app_52@android:/ $ u3gmonitor

Reading config file: /system/etc/usb_modeswitch.d/19d2_2000

* usb_modeswitch: handle USB devices with multiple modes
* Version 1.2.0 © Josua Dietze 2011
* Based on libusb0 (0.1.12 and above)

! PLEASE REPORT NEW CONFIGURATIONS !

DefaultVendor= 0x19d2
DefaultProduct= 0x2000
TargetVendor= 0x19d2
TargetProduct= not set
TargetClass= not set
TargetProductList="0001,0002,0015,0016,0017,0031,0037,0052,0055,0063,0064,0066,0091,0108,0117,
0128,2002"

DetachStorageOnly=0
HuaweiMode=0
SierraMode=0
SonyMode=0
QisdaMode=0
GCTMode=0
KobilMode=0
SequansMode=0
MobileActionMode=0
CiscoMode=0
MessageEndpoint= not set
MessageContent="5553424312345678000000000000061e000000000000000000000000000000"
MessageContent2="5553424312345679000000000000061b000000020000000000000000000000"
MessageContent3="55534243123456702000000080000c85010101180101010101000000000000"
NeedResponse=1
ResponseEndpoint= not set

InquireDevice disabled
Success check enabled, max. wait time 20 seconds
System integration mode disabled


usb_set_debug: Setting debugging level to 15 (on)
usb_os_find_busses: Found 005
usb_os_find_busses: Found 004
usb_os_find_busses: Found 003
usb_os_find_busses: Found 002
usb_os_find_busses: Found 001
usb_os_find_devices: Couldn't open /dev/bus/usb/005/001
usb_os_find_devices: Couldn't open /dev/bus/usb/004/002
usb_os_find_devices: Couldn't open /dev/bus/usb/004/001
usb_os_find_devices: Couldn't open /dev/bus/usb/003/001
usb_os_find_devices: Couldn't open /dev/bus/usb/002/002
usb_os_find_devices: Couldn't open /dev/bus/usb/002/001
usb_os_find_devices: Couldn't open /dev/bus/usb/001/001
Looking for target devices ...
No devices in target mode or class found
Looking for default devices ...
No devices in default mode found. Nothing to do. Bye.

/system/etc/usb_modeswitch.d/19d2_0031 does not exist.

В этом примере видно, что при переключении режима модем изменил свои идентификаторы VID_PID с 19d2_2000 на 19d2_0031.

Но так как при проверке ранее не отобразились строки с "GSM modem", вероятнее всего необходимый для переключения файл конфигурации отсутствует. И у вас отобразится всего одна строка. Например:
app_52@android:/ $ export PATH=/data/local/bin:$PATH
app_52@android:/ $ u3gmonitor
/system/etc/usb_modeswitch.d/19d2_2000 does not exist.

19d2_2000 - это идентификаторы производителя VID = 19d2 и продукта PID = 2000 модема в режиме виртуального CD-ROM или флэш-памяти.

3) Если в системе отсутствует программа u3gmonitor, определяем идентификаторы VID и PID в терминале командой lsusb (или busybox lsusb). Выполнив её до подключения модема и после.
app_52@android:/ $ export PATH=/data/local/bin:$PATH
app_52@android:/ $ busybox lsusb
Bus 001 Device 001: ID 1d6b:0001
Bus 002 Device 001: ID 1d6b:0002
Bus 003 Device 001: ID 1d6b:0001
Bus 004 Device 001: ID 1d6b:0002
Bus 005 Device 001: ID 1d6b:0001
Bus 004 Device 002: ID 0bda:8176
app_52@android:/ $ busybox lsusb
Bus 001 Device 001: ID 1d6b:0001
Bus 002 Device 001: ID 1d6b:0002
Bus 003 Device 001: ID 1d6b:0001
Bus 004 Device 001: ID 1d6b:0002
Bus 005 Device 001: ID 1d6b:0001
Bus 004 Device 002: ID 0bda:8176
Bus 002 Device 003: ID 19d2:2000
app_52@android:/ $

Появилось устройство "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), переименовать и изменить содержимое "правильным" текстовым редактором.
Примечание: В некоторых устройствах данный файл находится в каталоге /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) Помещаем созданный файл в директорию /etc/usb_modeswitch.d (/system/etc/usb_modeswitch.d) или /etc/ppp/setup в зависимости от вашего устройства.
б) Принудительное переключение;
1) Переключить режим модема можно отправив в порт модема соответствующую AT-команду. Нужную для вашей модели модема команду узнайте у производителя. Примеры:
Модемы | В "Только модем" | В обычный режим
-------------------|--------------------------|----------------------------------
HUAWEI | AT^U2DIAG=0 | AT^U2DIAG=255 (268 для E1750)
-------------------|--------------------------|----------------------------------
HUAWEI E367, E392, | AT^SETPORT="A1,A2;1,2,3" | AT^SETPORT="A1,A2;1,2,3,7,A1,A2"
E352, E353, E171 | | AT^SETPORT="A1,A2;1,16,3,2,A1,A2"
-------------------|--------------------------|----------------------------------
ZTE | AT+ZCDRUN=8 | AT+ZCDRUN=9
-------------------|--------------------------|----------------------------------
ZTE MF192, MF652 | AT%USBMODEM=0 | AT%USBMODEM=1
(процессор ICERA) | |

Примечание: Команда AT+ZCDRUN=8 в модемах ZTE удаляет флаг AUTORUN.FLG (или CD_STARTUP_FLAG) в файловой системе модема. Это же можно сделать в Windows программой QPST с EFSExplorer. Или с помощью плагина EFS (Embedded file system) для Total Commander.

Если в системе Android USB-устройство не определяется как модем. То и не создаются соответствующие файлы устройств, и АТ-команду отправить невозможно. Поэтому режим переключаем на "большом" компьютере.

Для Windows cмотрите раздел "Отправка в модем AT-команд" пункт б). Вводим соответствующую вашему модему AT-команду для переключения в режим "Только модем".
Прикрепленное изображение

2) Для переключения режима модема можно использовать готовые приложения. Например, программу 3G Modem Mode Switcher (ссылка 1, ссылка 2).
Подключите модем к компьютеру. Если программное обеспечение модема ещё не установлено, ждём окончания процесса автоматической установки. Обязательно закройте программу для работы с модемом. Запустите 3gsw.exe. Нажмите кнопку требуемого режима ("Только модем"). Удачи!

4. Добавление записи в файл 3g_dongle.cfg
Файл 3g_dongle.cfg используется модулями слоя RIL (Radio Interface Layer) системы. С помощью него можно указать, через какие порты будет происходить взаимодействие с вашей моделью модема, устанавливаться соединение, какой номер дозвона использовать. Если в вашей системе этого файла нет, добавлять его самостоятельно нет никакого смысла.

а) Запись добавляемая в конец файла /etc/3g_dongle.cfg (/system/etc/3g_dongle.cfg) имеет такую структуру:
[MF100]
dongle_name=MF100
production_name=MF100
vendor_name=zte
network_type=GSM_MODE
pid_vid_origin=0x19d22000
bcdDevice_origin=0x0
pid_vid_now=0x19d20031
bcdDevice_now=0x0
at_port=1
ppp_port=2

Определим значения параметров. Значения не должны содержать символы пробела, табуляции, комментария (#).

1) Значение параметра production_name узнаем, отправив в модем AT-команду: AT+CGMM. Как это сделать смотрим в разделе "Отправка в модем AT-команд";
2) Заголовок в квадратных скобках и параметр dongle_name можно заполнить тем же значением, что и production_name;
3) Значение vendor_name - название производителя модема одним словом (huawei, zte, ASB, ation...);
4) Значение network_type для сотовой сети GSM и 3G заполняем GSM_MODE. Другие возможные параметры: CDMA_MODE, TD_MODE;
5) pid_vid_now соответствует написанным слитно: приставка "0x", значение VID, затем PID модема в режиме "Только модем". (Смотрите раздел "Переключение режима модема. Отключение автозагрузки, ZeroCD");
6) pid_vid_origin - аналогично предыдущему пункту, но в обычном режиме модема (можно заполнить тем же значением, что и pid_vid_now или "0x0");
7) Значения bcdDevice_origin и bcdDevice_now можно заполнить просто "0x0";
Примечание: bcdDevice соответствуют значениям версии USB модема. Для USB 2.0 bcdDevice - 0x0200, для USB 1.1 - 0x0110.
8) Значения номеров портов at_port и ppp_port определяем в разделе "Определение файлов устройств (порта) в Android через который работает модем". Возможно, экспериментально подбираем, какой из номеров портов, отозвавшийся на AT-команду, соответствует at_port, какой ppp_port. Перезагрузив устройство, делать попытки подключения к сети Интернет.
Примечание: В модеме ZTE MF100 только один порт ttyUSB2 дал ответ на отправленную AT-команду. Он соответствует значению ppp_port=2. Значение at_port подбирал экспериментально из оставшихся номеров портов 0 и 1 (файлов устройств ttyUSB0 и ttyUSB1).
Если в разделе "Подключение к сети Интернет сторонними средствами" удалось установить соединение, то значение ppp_port соответствует номеру интерфейса ttyUSB в файле conf-pppd.


б) Проверьте в файле 3g_dongle.cfg раздел [DIAL_NUMBER]. Для GSM, 3G модемов должна быть строка: wcdma=ATDT*99#. Для некоторых операторов сотовой связи иногда требуется "wcdma=ATDT*99***1" или другой номер дозвона.

После изменения файла 3g_dongle.cfg нужно перезагрузить ваше устройство!

5. Подключение к сети Интернет сторонними средствами
Если не удаётся подключиться к Интернету стандартными средствами вашего устройства, можно попробовать установить соединение, например с помощью программы Josua Dietze PPP Widget. Или создать собственные скрипты для подключения на примере описанном ниже.
Сразу стоит заметить, что в стандартных средствах взаимодействие с модемом происходит через слой RIL (Radio Interface Layer): демон rild, библиотеки libril.so, lib<companyname>-ril.so. Где <companyname> - название производителя планшета. Или libreference-ril.so. А при подключении сторонними средствами RIL не используется, поэтому программы Google Play Маркет, Skype и некоторые другие работать не будут.

Для установки соединения используем демон протокола PPP /system/bin/pppd и программу для взаимодействия с модемом /system/bin/chat. Создадим четыре файла:

/etc/ppp/peers/conf-pppd
/etc/ppp/peers/conf-chat
/sdcard/gscript/inet-ON.sh
/sdcard/gscript/inet-OFF.sh

Все файлы в архиве.

а) Параметры демона pppd. Содержимое файла conf-pppd:
ttyUSB2
460800
defaultroute
noauth
noipdefault
user "mts"
password "mts"
connect "/system/bin/chat -f /etc/ppp/peers/conf-chat"

1) Параметр ttyUSB2 узнаём в разделе "Определение файлов устройств (порта) в Android через который работает модем". Возможно, придётся экспериментальным путём подобрать подходящий;
2) Параметры user "mts" и password "mts" соответствуют оператору сотовой связи МТС. Имя пользователя и пароль для доступа в Интернет согласно инструкции вашего оператора. Для Билайн user и password будет "beeline", для Мегафон - "gdata". Также строки с этими параметрами можно удалить вообще. Операторы сотовой связи и так без проблем "узнают" своих абонентов;
3) Поместите файл в каталог /etc/ppp/peers. При отсутствии папку peers нужно создать.

Примечание: Обычно этих параметров достаточно для установки стабильного соединения. При необходимости измените или дополните набор согласно руководству pppd(8).
Информацию о параметрах сценария, автоматизирующего взаимодействие с модемом chat можно посмотреть в руководстве chat(8).


б) Строки сценария chat. Содержимое файла conf-chat:
TIMEOUT 3
ABORT 'BUSY'
ABORT 'ERROR'
ABORT '+CME ERROR:'
TIMEOUT 3
'' 'AT'
OK 'ATZ'
OK 'AT+CGDCONT=1,"IP","internet.mts.ru"'
OK 'ATDT*99#'
CONNECT ''

Здесь "internet.mts.ru" соответствует оператору сотовой связи МТС. Для Мегафон просто "internet". Для Билайн - "internet.beeline.ru". Или для "Билайн Интернет Дома" - "home.beeline.ru". Для редких операторов и модемов номер дозвона "*99#" и команда "ATDT" могут отличаться.

в) Скрипт запуска соединения. Содержимое файла inet-ON.sh:
#!/system/bin/sh
pppd call conf-pppd
sleep 5
setprop net.dns1 8.8.8.8
setprop net.dns2 8.8.4.4

Примечание: Если при вызове pppd используется параметр usepeerdns, строки с "setprop net.dns..." не нужны.

Запускать подключение лучше, когда модем зарегистрирован в сети оператора мобильной связи. (Индикатор на модеме зеленый или синий)!

При желании, можно подойти к запуску соединения творчески и усложнить скрипт:
#!/system/bin/sh

echo "Waiting ttyUSB1"
for i in 1 2 3 4 5 6 7 8 9 10; do
if [ -c /dev/ttyUSB1 ]; then
echo "Starting pppd"
pppd call conf-pppd
echo "Connecting..."
for i in 1 2 3 4 5 6 7 8 9 10; do
if ifconfig ppp0 2>/dev/null; then
setprop net.dns1 8.8.8.8
setprop net.dns2 8.8.4.4
echo "DNS servers: 8.8.8.8, 8.8.4.4"
break 2
else
sleep 3
fi
done
break
else
sleep 3
fi
done

sleep 5
ping -c 2 google.com && exit 0 || exit 1

Здесь ttyUSB1 можно заменить на другой, стабильно создающийся системой. "ifconfig ppp0" можно заменить на "ip a s ppp0". Строку с "ping" можно убрать.

г) Скрипт разрыва соединения. Содержимое файла inet-OFF.sh:
#!/system/bin/sh

busybox killall pppd

Здесь команда зависит от программ имеющихся в вашей системе. Может быть просто "killall pppd" или "pkill pppd" и другие.
Примечание: А можно просто выдернуть модем из USB. )))

д) Для запуска скриптов подключения и отключения можно использовать программу GScript. Поместите файлы скриптов в папку /sdcard/gscript. Установите и запустите GScript. Добавьте скрипты в меню программы. При добавлении необходимо установить галочку "Needs SU?". При желании, в виджетах Android можно добавить ярлыки на рабочий стол для запуска скриптов.

6. Особенности подключения отдельных устройств
В разных системах для создания подключения обычно используются одни и те же приложения: usb_modeswitch, pppd, chat. Но разные скрипты, расположенные в разных местах.

а) Возможно, при подключении предусмотрено использование только файлов устройств /dev/ttyUSB. А для вашего модема создаются /dev/ttyACM (например ZTE MF192). Можно создать символьные ссылки. Добавить в начало скрипта запуска подключения подобные строки:

ln -s /dev/ttyACM0 /dev/ttyUSB0
ln -s /dev/ttyACM1 /dev/ttyUSB1


б) Иногда если не создаются файлы устройств /dev/ttyUSB, нужно ввести в эмуляторе терминала команды:

su
echo "19d2 2000" > /sys/bus/usb-serial/drivers/option1/new_id


Здесь 19d2 необходимо заменить на VID вашего модема, 2000 - на PID.

Эти команды нужно вводить после каждого включения (перезагрузки) устройства. Для автоматизации, можно, например, добавить эту строку в конец скрипта /system/bin/preinstall.sh. Или в другой, имеющийся в вашей системе и запускающийся при загрузке системы или подключении модема. Например: /system/etc/usb_modeswitch.sh. Как вариант, ищите в вашей системе папку "/system/etc/init.d/" и создавайте файл с подобным содержанием:

#!/system/bin/sh
echo "12d1 1506" > /sys/bus/usb-serial/drivers/option1/new_id


Где вместо "12d1 1506" ваши VID, PID.
А вот с каким именем этот файл сохранять, зависит от вашего устройства. Может быть "11modem" или другим.

в) Если скрипты у вас автоматически не переключают режим модема используя usb_modeswitch, используйте команды:

su
usb_modeswitch -W -I -c /etc/usb_modeswitch.d/19d2_2000


Где 19d2_2000 соответствующий вашему модему файл. Смотрите раздел "Переключение режима модема. Отключение автозагрузки, ZeroCD" пункт а).

Или командой:
su
usb_modeswitch –v 12d1 –p 14fe –V 12d1 –P 1506


Где параметры "-v" и "-V" определяют VID модема до и после переключения режима, "-p" и "-P" определяют PID.

Решённые проблемы подключения
Это копия моей публикации в блоге lexaleon.blogspot.com


Сообщение отредактировал Будь здоров! - 25.02.13, 12:38



Реп: (2810)
M
Переезжаем в Личный опыт



Реп: (84)
Подключение модема ZTE MF100 от Билайн с SIM-картой МТС к электронной книге Wexler.Book T7008 с версией ОС Android 4.0.3 (ICS).

Как выяснилось, система пытается установить соединение, используя ttyUSB0, а нужно ttyUSB2. Для исправления ситуации нужно добавить запись в файл 3g_dongle.cfg.
[MF100]
dongle_name=MF100
production_name=MF100
vendor_name=zte
network_type=GSM_MODE
pid_vid_origin=0x19d22000
bcdDevice_origin=0x0
pid_vid_now=0x19d20031
bcdDevice_now=0x0
at_port=1
ppp_port=2

Но есть ещё одна проблема. Модем от Билайн, а SIM-карта используется МТС. Из-за этого связь через пару минут обрывается. Для решения проблемы можно или прошить модем "польской" прошивкой, или удалить в файловой системе модема флаг NODOWNLOAD.FLG. Но при этом перестает работать встроенный кард-ридер. VID и PID модема меняется на 19d2 0016.
Удалить NODOWNLOAD.FLG можно АТ-командой "AT+ZCDRUN=E". Например, в эмуляторе терминала ввести:
cat /dev/ttyUSB2 &
echo AT+ZCDRUN=E > /dev/ttyUSB2

Прикрепленное изображение

Для восстановления NODOWNLOAD.FLG служит команда "AT+ZCDRUN=F".

В конец файла /etc/3g_dongle.cfg добавляются следующие строки:
[MF100]
dongle_name=MF100
production_name=MF100
vendor_name=zte
network_type=GSM_MODE
pid_vid_origin=0x19d20016
bcdDevice_origin=0x0
pid_vid_now=0x19d20016
bcdDevice_now=0x0
at_port=1
ppp_port=2

Перезагружаем книгу, выключаем Wi-Fi, включаем "Передача данных - Мобильный трафик", подключаем модем. В Настройках в разделе "Беспроводные сети" пункт "Ещё - Мобильная сеть - Точки доступа (APN)" выбираем нужную запись. Всё. Примерно через полминуты-минуту мы в Интернете.

Сообщение отредактировал Будь здоров! - 24.09.12, 21:37



Реп: (8)
Доброго времени суток Вам!

Подскажите....Имею планшет DNS E72 Airtab... Танцую с бубном вокруг него уже неделю, пытаясь прикрутить ZTE MF192+

Вручную на компе перевел модем режим только модем....
AT%USBMODEM=0


Вроде как прозвонил порты...на команды AT и ATDT*99# отозвался на ttyUSB1

узнал id модема

Busybox lusb показало id устройства 19d2:1217


Прописал в preistall.sh
echo "19d2 1217" > /sys/bus/usb-serial/drivers/option1/new_id



Правлю конфиг 3g-dongle.cfg добавляю запись

MF[192+]
dongle_name=MF192+
production_name=MF192+
vendor_name=zte
network_type=GSM_MODE
pid_vid_origin=0x19d21217
bcdDevice_origin=0x0
pid_vid_now=0x19d21217
bcdDevice_now=0x0
at_port=1
ppp_port=0



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

Подскажите че делать????

Сообщение отредактировал nitroski - 24.09.12, 19:33



Реп: (84)
nitroski, так на ATDT*99# в порт ttyUSB1 был ответ CONNECT? Если да, то в 3gdongle.cfg нужно точно написать ppp_port=1, а вот at_port подбирать экспериментально. Из оставшихся портов, которые выводятся по команде в терминале: ls /dev/ttyUSB*. После каждого редактирования 3gdongle.cfg нужно перезагружать планшет!!!
И ещё, по команде: echo AT+CGMM > /dev/ttyUSB1 точно ответ был MF192+ ? C плюсом то есть?
Если порты ttyUSB сразу появились, в preinstall.sh строку возможно и не надо было добавлять.



Реп: (8)
Отвечаю без порядка...порты сами не создались, потому строчку и добавил в preinstall.h портов создалось аж 10 штук с 0 по 9

Планшет я естесссно перезагружал после каждого изменения 3g-dongle

Да на порту ttyUSB1 был ответ ОК и CONNECT

Пробовал поставить ppp-port 1 и подбирать at port... перебрал все возможные варианты....Ловит сеть только когда АТ порт указан 1....хорошо...пробовал ppp порт и at порт указать 1 и 1....сеть ловит..попытка подключения..сеть пропадает...рекурсия

Да модем точно mf192+

ПиЧаЛьКа((((((

ВООООООО....зато получилось подключиться сторонними средствами, как указано в первом посте.....предварительно почистив 3g-dongle.cfg от предыдущих настроек модема 192+

НО встает вопрос...почему тогда нормально без использования скриптов не подключается???

И почему в скриптах нигде не указывается АТ порт????

Вот....Я их выложил сюда

Прикрепленные файлы

Прикрепленный файлppp.rar ( 988 байт )


Сообщение отредактировал nitroski - 24.09.12, 22:07
Причина редактирования: ПаЛуЧиЛаСь!!!!



Реп: (0)
По инструкции выше подключил MF112 (МТС) к Wexler 7008 (не был указан в списке совместимых).



Реп: (84)
nitroski @ 24.09.2012, 22:48 *
НО встает вопрос...почему тогда нормально без использования скриптов не подключается???

nitroski, а после того, как сеть стала определяться, в настройках не забыл точку доступа APN выбрать и сохранить?
10 портов для модема как-то многовато! )) Часть - это другие устройства в планшете создают. Посмотри до подключения модема и после. А лучше подключи модем и в терминале введи: dmesg. Там внизу будет информация, какие порты модема.
at_port используется демоном rild в Андроиде для связи телефонных (модемных :)) программ с модемом. А через ppp устанавливается это соединение. Поэтому в сторонних скриптах этот порт RIL и не используется.
Раз уж точно at_port=1, можно попробовать ppp_port подобрать экспериментально. Чтобы попробовать понять, почему не соединяется, нужно логи смотреть. Набери в терминале su, потом logcat -b radio. Да и просто logcat.



Реп: (8)
Точка доступа выбрана mts-rus
APN "internet.mts.ru"
Login "mts"
Pass "mts"
mcc"250"
mnc"01"

10 портов да...многовато... но если в терминале написать команду не из под супер юзера cat /dev/ttyUSB , то порты ttyUSB с по 9 пишет acces denied..Соответственно думается что используются только порты ttyUSB0-4

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

Dmesg не показывает порты...т.к. в информации dmesg мой модем упоминается не как модем, а просто usb устройство:
USB Host power ON



Реп: (10)
Народ у меня такой вопрос если у меня нет файла 3g_dongle.cfg то у мня инета нормального не будет? Или все же можно попытаться чтото предпринять? сторонними средствами я подключался, но такое соединение не видят многие приложения. В том числе и маркет... вот и ищу способы на андр 4 сделать нормальное подключение... подскажите...



Реп: (84)
kayfoduff, чтобы все программы сеть видели, нужно чтобы работал демон /system/bin/rild. Есть такое в вашей системе?



Реп: (10)
Будь здоров!,
Да такой демон есть. Только вот я не знаю работает ли он. Как это отследить? У меня планшет с кастомной прошивкой, без встроенного модема, есть такая же версия планшета со встроенным модемом 3g , прошивки одинаковые и соответственно как я понимаю к нему можно прикрутить внешний модем, ну и кроме того как я уже писал через скрипты он подключается... но хотелось бы чтоб было нормальное соединение и все приложения его воспринимали, а то даже тот е дол фин браузер не скачивает файлы, хотя странички загружает.



Реп: (84)
kayfoduff, Ну раз в девайсе и прошивке предусмотрена работа с 3G сетью. И даже в настройке есть такие разделы, то теоретически внешний модем подключить можно и встроенными средствами. И не обязательно, что системой будет использоваться 3g_dongle.cfg. Ищите, через какие скрипты происходит подключение в вашей системе. В них для начала попробуйте изменить номер порта ttyUSB на тот, что использовали в сторонних скриптах (в pppd-conf).

Сообщение отредактировал Будь здоров! - 03.10.12, 10:36



Реп: (10)
Не силен я в линуксе, пока еще на начальной стадии изучения. Подскажите как искать эти скрипты? Как понять что должно запускаться? Pppd-conf не нашел такого файла, но есть в каталоге етс что-то вроде gprs.pppd.... какого хоть содержания должен быть этот файл?

Добавлено 28.09.2012, 14:48:

Не силен я в линуксе, пока еще на начальной стадии изучения. Подскажите как искать эти скрипты? Как понять что должно запускаться? Pppd-conf не нашел такого файла, но есть в каталоге етс что-то вроде gprs.pppd.... какого хоть содержания должен быть этот файл?



Реп: (84)
Ну вот gprs.pppd скорее всего он и есть. Откройте его прямо в вашем девайсе текстовым редактором и посмотрите, есть ли там ttyUSB?
kayfoduff @ 28.09.2012, 07:44 *
... сторонними средствами я подключался ...

Вот какой порт ttyUSB в этих "сторонних средствах" у вас используется, на такой и в gprs.pppd (или ещё какие там файлы) замените. Но, если модем поменяете, вероятно опять редактировать придется.



Реп: (0)
Спасибо, только при помощи скриптов появился интернет. Только каждый раз при запуске скрипта планшетник перезагружается. Самое плохое, что не даёт авторизоваться в гугле. В результате не работает маркет и не устанавливаются проги из гугля. Подскажите пожалуйста как гугль обмануть чтобы маркет заработал?



Реп: (0)
Здравствуйте подключил 3г модем к планшету аинол ельф2, модем mf180 но прошивка mf 190 все сделал по инструкции, но модем даже не определяется системой не ищет сеть но после установки программы umts manager модем подключился к интернету, браузер интернет видит а програма skype ругается что нет сети. При попытке в настройках нажать поиск сети ничего не ищет. Помогите как сделать что бы андроид увидел модем

Сообщение отредактировал Gridzilla - 30.09.12, 18:34
Причина редактирования: Удалил дубль.



Реп: (3)
Помогите плиз подключить Huawei E303 к планшету YeahPad A13
Прописывал в /etc/usb_modeswitch.d VID и PID из файла по ссылке в п. 3 (там нашел строку для модема E353, VID и PID подошел).
После этого по команде u3gmonitor получаю:

app_29@android:/ $ export PATH=/data/local/bin:$PATH
app_29@android:/ $u3gmonitor

Reading config file: /system/etc/usb_modeswitch.d/12d1_1f01

* usb_modeswitch: handle USB devices with multiple modes
* Version 1.2.0 © Josua Dietze 2011
* Based on libusb0 (0.1.12 and above)

! PLEASE REPORT NEW CONFIGURATIONS !

DefaultVendor= 0x12d1
DefaultProduct= 0x1f01
TargetVendor= 0x12d1
TargetProduct= 0x14db
TargetClass= not set
TargetProductList=""

DetachStorageOnly=0
HuaweiMode=0
SierraMode=0
SonyMode=0
QisdaMode=0
GCTMode=0
KobilMode=0
SequansMode=0
MobileActionMode=0
CiscoMode=0
MessageEndpoint= not set
MessageContent="55534243123456780000000000000a11062000000000000100000000000000"
NeedResponse=0
ResponseEndpoint= not set

InquireDevice disabled
Success check disabled
System integration mode disabled


usb_set_debug: Setting debugging level to 15 (on)
usb_os_find_busses: Found 003
usb_os_find_busses: Found 002
usb_os_find_busses: Found 001
usb_os_find_devices: Couldn't open /dev/bus/usb/003/001
usb_os_find_devices: Couldn't open /dev/bus/usb/002/002
usb_os_find_devices: Couldn't open /dev/bus/usb/002/001
usb_os_find_devices: Couldn't open /dev/bus/usb/001/002
usb_os_find_devices: Couldn't open /dev/bus/usb/001/001
Looking for target devices ...
No devices in target mode or class found
Looking for default devices ...
No devices in default mode found. Nothing to do. Bye.

/system/etc/usb_modeswitch.d/12d1_14db does not exist.


Но! PID 14DB соответствует режиму модема NDIS (сетевая карта).
Если его переключить в режим "Только модем" принудительно, PID становится 1с05 (в свойствах модема в диспетчере устройств посмотрел), и при подключении к планшету он определется правильно.

Но нету ничего похожего на ttyUSB, т.е. и скрипт не могу написать для поключения.

Куда копать, помогите кто-нить.

Сообщение отредактировал Gridzilla - 01.10.12, 18:53
Причина редактирования: Убрал часть текста под спойлер.



Реп: (84)
Oleg.GromoV, раз готового решения нет. Придется самому экспериментальным путем команду подбирать. Попробуйте кроме созданного вами файла ещё и этот в /etc/usb_modeswitch.d поместить. Прикрепленный файл12d1_14db.zip ( 289 байт )
Или заменить на этот: Прикрепленный файл12d1_1f01.zip ( 289 байт )
Или на этот: Прикрепленный файл12d1_1f01(2).zip ( 299 байт )

Если ttyUSB не создаются, значит модем в системе не определяется, как собственно "модем".

gazosvarka, Edward2, да, при подключении сторонними средствами, программами скорее всего ни Маркет, ни Скайп и некоторые другие программы работать не будут. Помимо установки соединения с помощью pppd, для связи с программами используются другие средства. В том числе RIL. И реализация этих средств у разных производителей отличается. Поэтому нужно разбираться со встроенными скриптами, файлами конфигурации используемыми в вашем девайсе. Часто в них достаточно всего лишь изменить номер порта ttyUSB если модем системой уже определяется.

Edward2 @ 03.10.2012, 11:12 *
...Только каждый раз при запуске скрипта планшетник перезагружается...

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

Сообщение отредактировал Будь здоров! - 03.10.12, 10:46



Реп: (1)
(Oleg.GromoV)

Тоже пытаюсь подключить модем hyawei e303 к планшету с чипом A10! Не как не создает файлы tyyUSB и ttyACM!



Реп: (1)
Наконец создал порты аж три штуки после добавления в фаил /system/bin/preinstall.sh вот такую надпись echo "19d2 1217" > /sys/bus/usb-serial/drivers/option1/new_id теперь он судя по логу даёт пароль и логин мтс но номер до звона 777 как поменять на 99 не догоняю?


Полная версия   Текстовая версия

Помощь   Правила

Сейчас: 28.03.24, 12:24