Настраиваем SkyLink модем на Android-планшете
Удивительно, но когда у меня возник вопрос — как подключить SkyLink-модем (AnyData ADU-310A) к китайскому планшету на Android 1.5 (увы), я ничего не смог найти в Интернет.
Но вот — время потрачено, проблема решена и сейчас хочу поделиться каким образом мне удалось это сделать.
Но вот — время потрачено, проблема решена и сейчас хочу поделиться каким образом мне удалось это сделать.
Суть метода в кратце
- Подключение с помощью pppd
- Для этого создается скрипт подключения /system/etc/ppp/peers/cdma и скрипт управления модемом /system/etc/ppp/cdma.chat
- Прописывается логин\парол подключения в /system/etc/ppp/pap-secrets (chap-secrets)
- Редактируется скрипт установки сетевых параметров /system/etc/ppp/ip-up
Теперь по пунктам и подробно
Нам потребуется Android SDK, в состав него входят необходимые утилиты — ADB и DDMS.Я предполагаю, что вы знаете что такое Android SDK и как его настроить на компьютере, а планшет у вас рутованый и в настройках подключения на планшете стоит галка «USB Debug», поэтому не буду акцентировать внимание на этих деталях.Итак, за работу.1. Подключаем планшет к компьютеру, выполняем команду «adb remount». Этой командой мы переводим системный раздел (он еще называется "/system partition") из режима «read-only» в «read-write». Это нужно, т.к. нам придется править и создавать файлы в системной области.Если вы видите сообщение «error: device not found», увы, придется разбираться с драйверами и настройкой SDK.2. Теперь нужно определить, по какому адресу наш модем распознается системой. Для этого подключаем CDMA модем в USB-Host нашего планшета, ждем секунд 10, запускаем «adb shell»и видим линуксовую консоль.Набираем в консоле команду «dmesg», чтобы посмотреть системные события. Нас интересуют последние строки, они будут примерно такие:<6>usb 1-1.2: new full speed USB device using pxa27x-ohci and address 3
<3>usb 1-1.2: device v16d5 p6501 is not supported
<6>usb 1-1.2: configuration #1 chosen from 1 choice
<6>option 1-1.2:1.0: GSM modem (1-port) converter detected
<6>usb 1-1.2: GSM modem (1-port) converter now attached to ttyUSB0
<6>option 1-1.2:1.1: GSM modem (1-port) converter detected
<6>usb 1-1.2: GSM modem (1-port) converter now attached to ttyUSB1
Как видно из примера, наш модем смонтировался по двум адресам — ttyUSB0 и ttyUSB1. Почему так, надеюсь, мне расскажут более знающие читатели. Нам же принципиальны сами эти адреса, вернее даже только один — ttyUSB0. 3. Запускаем ddms.bat, в блоке «devices» должно отображаться ваше устройство, выберите его. Открываем меню Device/File Explorer.Скачиваем на компьютер файл "/system/build.prop". Теперь открываем его текстовым редактором (файл наверняка будет заблокирован, поэтому нужно в ddms встать на другой каталог, чтобы файл освободился на компьютере) и ищем примерно такие строки:rild.libpath=/system/lib/libhuawei_ril.so
rild.libargs=-d /dev/ttyUSB5
Первая строка — это путь к драйверу RIL (Radio Interface Layer), который является прослойкой между установленным оборудованием и телефонными функциями Android.Вторая строка — это параметр драйвера RIL, который определяет по какому адресу общаться с оборудованием.Поскольку есть мнение, что драйвер RIL полностью перехватывает управление оборудованием, а нам нужно будет обращаться к модему, не мудрствуя лукаво укажем заведомо неправильный адрес устройства (например, ttyUSB5, как у меня). 4. Создаем у себя 2 файла: «cdma» и «cdma.chat» (если хотите по-другому назвать — пожалуйста, это не принципиально).Содержимое файла «cdma» должно быть таким:debug
ttyUSB0
115200
modem
noipdefault
defaultroute
ipcp-accept-local
lcp-echo-interval 60
lcp-echo-failure 5
usepeerdns
nopcomp
noauth
noaccomp
nodetach
user "mobile"
connect "chat -s -S -v -f /system/etc/ppp/cdma.chat"
Обратите внимание на вторую строку — ttyUSB0 — это тот адрес, который мы определили на 2 шаге.Содержимое файла «cdma.chat»:'' ATZ OK ATE0X1V1&C0 OK AT+IPR=230400 OK AT$QCDMR=115200 OK AT+CRM=1 OK AT+CTA=20 OK AT+CQD=255 OK AT+CSQ? OK AT+CSS? OK ATDT#777 CONNECT
Все в одну строку. Первые два символа — две одинарные (а не двойные!) кавычки.5. Теперь укажем под какими пользователями нужно авторизовываться. Для этого из каталога "/system/etc/ppp/" скачаем два файла: «chap-secrets» и «pap-secrets». (вообще говоря, как я понимаю, достаточно пользователей указать только pap-secrets).В оба файла добавляем последней строкой следующий текст:mobile * internet *
6. Теперь сделаем так, чтобы автоматически заполнялись параметры подключения (DNSы, там и пр.). Скачаем же файл "/system/etc/ppp/ip-up" (кстати, этот файл выполняется каждый раз после успешного установления соединения) и поправим его таким образом:#!/system/bin/sh
#это что было до редактирования (строки закомментировал):
#/system/bin/setprop "net.interfaces.defaultroute" "gprs"
#/system/bin/setprop "net.gprs.dns1" "$DNS1"
#/system/bin/setprop "net.gprs.dns2" "$DNS2"
#/system/bin/setprop "net.gprs.local-ip" "$IPLOCAL"
#/system/bin/setprop "net.gprs.remote-ip" "$IPREMOTE"
#это добавленные строки:
/system/bin/setprop "net.interfaces.defaultroute" "ppp0"
/system/bin/setprop "net.ppp0.dns1" "$DNS1"
/system/bin/setprop "net.ppp0.dns2" "$DNS2"
/system/bin/setprop "net.ppp0.local-ip" "$IPLOCAL"
/system/bin/setprop "net.ppp0.remote-ip" "$IPREMOTE"
/system/bin/setprop "net.dns1" "$DNS1"
/system/bin/setprop "net.dns2" "$DNS2"
exit 0
7. Все измененные файлы загрузим обратно в планшет:/system/build.prop/system/etc/ppp/ip-up/system/etc/ppp/cdma.chat/system/etc/ppp/pap-secrets/system/etc/ppp/chap-secrets/system/etc/ppp/peers/cdmaКстати, проверьте, что у файла ip-up есть права на выполнение.8. Теперь открываем консоль (adb shell), подключаем модем и выполняем команду «pppd call cdma». Если вы видите ответ типа:send (AT+CSS?^M)
expect (OK)
^M
^M
?, 0^M
^M
OK
-- got it
send (ATDT#777^M)
expect (CONNECT^M)
^M
^M
CONNECT^M
-- got it
А на модеме зажегся синенький светодиод и любимый Хабр стал открываться в Opera Mini при выключенном WiFi соединении — значит, у вас все получилось.Что дальше?
Успешное подключение к сети через CDMA-модем — это лишь первый шаг, потому что дальше нужно решать следующие задачи:1. Удобный запуск скрипта подключения. Тут могу поделиться опытом — нужно поставить Gscript Lite, создать там скрипт подключения и вынести ярлык на рабочий стол.2. Правильное отключение. Hint: использовать автоматически выполняемый при разрыве соединения скрипт ip-down. 3. Автоматическая переустановка соединения при разрыве. Нужно разбираться, как это сделать. Принципиально — можно.4. Отображение уровня сигнала и прочие прелести, свойственные интерфейсу Android. Как это сделать — я не знаю. Вероятно, нужно где-то найти или написать собственный RIL-драйвер для AnyData-модема. Найти пока не удалось.
0 комментариев